• Sonuç bulunamadı

Yazılım Teknolojisiyle İlgili Temel Tartışma Konuları

ULUSAL SORUMLULUKLAR

ÖNGÖRÜ TEKNİKLERİ ÖNGÖRÜ YÖNTEMLERİ

3. Bölüm : Yazılım Teknolojis

3.5 Yazılım Teknolojisiyle İlgili Temel Tartışma Konuları

Yazılım teknolojisi ile ilgili tüm çalışma ve gelecek araştırmalarında ortak bir payda şeklinde ortaya çıkan ve gündemde sürekli yer alan temel konular, teknolojideki ve sektördeki kutuplaşmaları, temel tartışmaları göstermesi açısından önem taşımaktadır. Bu tartışma konuları, geleceği de şekillendirecek özellikte olduğundan, yazılımın geleceğini araştırmaya yönelik bu tez çalışmasında ayrı bir başlık olarak ele alınmıştır.

3.5.1 Yazılım Sürecinin Tanımı – Yazılım Bir Mühendislik midir?

Yazılım üretim sürecinin bir bilim, mühendislik ve hatta sanat olup olmadığı konusunda hala tartışmalar bulunmaktadır (Glass, 2006). 30 yıl önce Donald Knuth tarafından yazılan “Bilgisayar Programlama Sanatı” isimli eserde, yazılım geliştirmenin estetik boyutuna işaret etmiş, bilimin bu yaklaşım kadar esinleme ve yaratıcılığa izin vermeyeceğini iddia etmiştir.

Yazılımın bilim olduğunu savunanlar ise programlardaki yüksek hata oranları ve düşük güvenilirlik riskinin fazla yaratıcılığa izin vermeyeceğini ileri sürmüşlerdir. Ancak genel olarak yazılımın, bilimsel ve matematiksel ilkelerin pratik amaçlar olarak kullanılması anlamında gelen mühendislik kapsamında olduğu yönündeki görüşler çoğunluktadır. Çünkü yazılımda bilimsel olarak geliştirilmiş ve matematiksel olarak tanımlanmış algoritmalar, işlevsel tasarım metodları, nitelik ölçüm uygulamaları kullanılmaktadır. Yapısal tasarımın gereği mühendisliktir. Ancak tüm diğer mühendisliklerden daha fazla pratiklik gerektirmektedir (Mc Connel, 2002). Yazılım mühendisi, belli bir matematik temeline sahip olan yazılımla ilgili standartları bilen ve uygulayabilen kişiler için kullanılan bir terim olarak karşımıza çıkmaktadır (Güngören, 2000).

İlk uygulayıcılar yazılım üretme sürecinin, fizikteki kurallarla özdeş olduğuna inandıklarından bu süreci yazılım fiziği olarak isimlendirmek istemişler ancak bu terim zaten kullanılmakta olduğu için mühendislik terimini tercih etmişlerdir. Yazılımda mühendislik metotları, teknikleri, süreçleri ve ölçümlerinin kullanıldığı öne sürülmüştür. Ancak bu terimin geçerliliği için kalite ve veriminin standartlara dayanması ve ölçülebilmesi gereklidir

Yazılım mühendisliği kuşkusuz yapay bir bilimdir. Ancak gerçek bir bilim ve mühendislik disiplini ise deneyler ve tahminlerle doğrulanmış bazı kural ve teorilerinin olması gerekmektedir (Curran, 2000).

Bu anlamda, yaygın kanının aksine yazılım geliştirme, genellikle yalnızca kod yazımı değildir. Tüm dünyada 377.000 üyesi bulunan ve 150 ülkede faaliyet gösteren meslek örgütü IEEE'nin katkısıyla oluşturulan “Yazılım Mühendisliği Bilgi Tanımı” (Software Engineering Body of Knowledge - SWEBOK) on ayrı kategoriyi kapsamaktadır. Konfigürasyon yönetimi, üretim, tasarım, mühendislik altyapısı ve mühendislik yönetimini kapsayan bu kategorilerin tümü, ortaya sağlıklı bir yazılım çıkması açısından önem taşımaktadır.

Yazılım mühendisliğinde, diğer mühendisliklerden farklı olarak ekran tasarımı, maliyet tahmini, takım yönetimi, insan faktörü, risk yönetim ve kullanıcı arayüzü gibi daha soyut tanımlar/konular yer almaktadır. Bunlar kritik konular olmakla birlikte mühendislikten daha çok pazarlama, yönetim, bilişim teknolojisi ve psikoloji ile ilgilidirler. Yazılım üretimi bu anlamda mühendislikten farklılaşmakta ve mühendislikle yazılım süreci arasında paralellikler azalmaktadır. Hatta yazılım mühendisinin, bir romancının sözcük mühendisi olduğu derecede mühendis olduğu gibi abartılı eleştiriler dahi getirilebilmektedir.

Ancak yine de yazılım üretiminin karmaşık, amorf doğası ve zihinselliği mühendislik ilişkilendirmesini zorunlu kılmaktadır. Yazılım geliştiriciler ve yazılım programları aynı metot veya esasları kullanmadıklarından, disiplinin yazılım teorisi araştırması ve yazılım üretim teknikleri olarak iki ayrı başlıkta incelenmesi önerilmektedir (Curran, 2000). 1987’de Fred Brooks’un yayınladığı “Gümüş Kurşun Yoktur-Yazılım Mühendisliği’nde Esas ve Rastlantı” isimli makalesi yazılım mühendisliği yaklaşımında önemli bir kırılım noktası olmuştur. Burada sözü edilen öz ve rastlantı antik felsefe geleneğindeki özsel ve rastlantısal niteliklere işaret etmiş, kodlama ve testi yazılımın rastlantısal kısmı, tasarım ve doğrulamanın ise özünü oluşturduğunu savunmuştur. Yazılım geliştirmeyi zorlaştıranlar uygunluğu, özsel karmaşıklığı, değişebilirlik ve görünmezliği, bu içsel karmaşıklığın yanında izole olarak değil de gerçek dünya kısıtlarına uygun yaratılması gereğinden doğan karmaşıklığıdır. Bunlar yazılımı mühendisliğe yaklaştırmaktadır (Mc Connel, 1999).

Yazılım mühendisliği yaklaşımında gelişimler aşağıdadır (Boehm ve Sullivan, 2000): - Gereksinimlerle maliyetlerin konumlandırılması, gereksinimlerin tasarım ile ilişkisi konusunda bilinç artmıştır. Bu bilinç teknolojinin hızına göre de artmaktadır.

- Temel konu ve kavramların arasına nasıl bir ayrım konulacağı konusunda bir öğrenme süreci yaşanmış, alan ve evrim yönlendirmeli mimariler öne çıkmıştır. - Geleneksel kültürlerde yavaşça değişimler görülmektedir. Yazılım CMM’sine karşı CMMI ve SPICE ortaya çıkmış, yazılım sürecini mühendisliğe yaklaştırmıştır.

Yazılımın mühendislik olarak kabullenilmesine kadar geçen sürede, zanaatçi konumundaki bir çok yazılımcı, çok yüksek gelirler elde ederek ve disiplinsiz bir şekilde üretimde yer almıştır ve almaya devam etmektedir. Yazılım geliştirmenin düzeltilmesi ve kalitesinin artırılması taleplerinin artması ile bu durumun değiştirilerek yazılımın mühendislik olarak tanımlanması zorunlu hale gelecektir. Ancak öte yandan işin daha da karmaşık tarafı yazılımların mühendisler tarafından geliştirilmesi gerektiğine dair görüşün, her yazılım tipi ve alanı için de geçerli olamayabileceğidir. Basit yazılımlar basit süreçlerle ve teknisyen niteliğindeki yazılımcılarla da üretilebilmektedir (Mc Connel, 1998).

3.5.2 Lisanslama Sistemi

1960’larda ve 70’lerde yazılım geliştirme daha çok akademi, devlet ve işletme laboratuarlarında çalışan bilim adamları ve mühendisler tarafından gerçekleştirilmekte; bu kişiler yazılımlarını serbestçe değiş tokuş etmeyi, değiştirmeyi, kullanmayı, bireysel ve birlikte araştırma kültürlerinin doğal bir parçası olarak görmekteydiler. Bu kültür özellikle MIT’nin Yapay Zeka Laboratuvarı’nın programcılarında çok güçlüydü. Internetin ilk versiyonu olan ARPAnet’in ABD’de Savunma Projeleri Ajansı (DARPA) tarafından kurulması ile yazılım geliştiriciler bu ortak çalışmayı daha yaygın, kolay ve ucuz şekilde yapmaya başlamışlardır. MIT’nin 1980’lerin ortasında bu yazılımcıların ürettiği bazı kodları ticari bir firmaya satması ile, kaynak kodlarına erişim ilk kez bu kodları üretenlere dahi kısıtlanmış, bu firma dışındakilerin bu kodları öğrenmeleri ve geliştirmeleri engellenmiştir.

Yazılım lisanslaması bu şekilde başlamış ve tüm dünyada yaygınlaşmış, Business Software Alliance (BSA) vb yapılarda şirketleşmiş, küresel yazılım firmalarının uluslararası birlikler ve devletler nezdinde lobileri ile de yasalaşmış ve yazılım lisansları “Fikir ve Sanat Eserleri/Telif Kanunları” kapsamında yasal koruma altına alınmıştır. Lisanslama taraftarları, cezalar, basında teşhir gibi yaptırımlar dışında lisanslı yazılım kullanımı için aşağıdaki gerekçeleri ileri sürmektedirler:

- Lisanslı yazılımlar korsan yazılımın beraberinde getirebileceği virüslerden, bozuk diskler ve hatalı yazılımlar gibi faktörlerden etkilenilmemesi,

- Yeterli bir dokümantasyona sahip olunması,

- Yeni yazılımların daha düşük maliyetlerle geliştirilmesine, sektörün gelişimine, yeni istihdam olanaklarının yaratılmasına katkıda bulunulması,

- Kayıt dışı ekonominin büyümesini engelleyerek vergi gelirlerini arttırması, - Kopya yazılım kullananların, ürün teknik desteğinden yoksun kalması.

“Korsan Yazılım” kavramı lisanslanmamış şekilde kullanılan yazılımları ifade etmekte, BSA, lisans belgesi taşımayan, yasadışı yöntemlerle çoğaltılmış yazılımların ticaretini, dağıtımını yapmayı, kullanmayı yazılım korsanlığı olarak tanımlamaktadır. Korsan yazılım telif haklarını ihlal etmesi nedeniyle illegal olduğu gerekçesiyle BSA gibi şirketler tarafından takip edilerek caydırıcı yaptırımların uygulanması sağlanmaya çalışılmaktadır. Korsan yazılım yöntemleri BSA’in yaptığı tanımlamaya göre aşağıda özetlenmiştir (BSA, 2005):

- Kullanıcı Kopyalaması: Birkaç adet lisanslı yazılım yüklü bilgisayar satın alınıp bu bilgisayarlardaki lisanslı yazılımların diğer bilgisayarlara yüklenmesi; CD’lerin, programların sahip olunan lisanslardan fazla sayıda çoğaltılması, el değiştirmesidir. - Eşanlı Kullanım: Tek bir bilgisayar için lisanslanan bir yazılımın birden fazla bilgisayarda, yeterli sayıda lisans temin edilmeden paylaştırılarak kullanılmasıdır. - Sabit Disk Yüklemesi: Bilgisayarların, sabit disklerine kopya yazılım yüklenmiş şekilde satılmasıdır. Burada hem satıcı hem de kullanıcı eşit derecede sorumludur. - Sahtecilik: Orijinal ürünü kopya üründen ayırdeden hologram, paket, logo gibi belirgin özelliklerin taklit edilerek illegal yollardan ticaretinin yapılmasıdır.

- İnternet Yoluyla Kopyalama: Web sayfası aracılığıyla, yazılımın korsan olarak bilgisayarlara yüklenmesidir.

- BBS (Bülten Panolarından Yükleme) : Fikri haklara tabi yazılımların, bir elektronik bülten panosundan yüklenmesidir.

- Yazılım Kiralama: Kopya yazılımların, lisans sözleşmelerine aykırı olarak evlerde veya işyerlerinde kullanılmak üzere kiralanmasıdır.

İlk kez 2004’de internette kopyalanmış yazılım sunan warez sitelerine (bilgisayar korsanları tarafından şifreleri kırılarak, isteyenlerin kendi bilgisayarlarına indirmeleri için bu kırılmış programları internet üzerinden yayınlayan siteler) karşı uluslararası kapsamlı bir eylem başlatılmış ve 50 milyon Euro’luk korsan olarak nitelendirilen kopya bulunmuştur. İşletmelerde lisanssız yazılımın payı dünya çapında yaklaşık % 40 civarında ve yazılım üreticilerinin zararının yılda 13 milyar dolardan fazla olduğu iddia edilmektedir. Korsan yazılımın küresel düzeyde engellenmesi için yazılımın %90’ının yasadışı kaynaklı olduğu Çin ve Vietnam gibi ülkelerin de desteği gerekmektedir (Chip, 2004).

Dünyada korsan yazılım en yaygın olarak Ortadoğu ve Afrika’da kullanılmaktadır. BSA’ya göre korsan yazılımın dünya yazılım sektörüne etkileri Tablo 3.10’da gösterilmiştir. Bu tabloda korsan yazılımda 10 puanlık azalma ile yaratılacak sektör

büyüklüğünün 10 katı mevcut korsan yazılımın parasal değerini ifade edilmektedir. Örneğin Doğu Avrupa’da 260 milyon dolarlık korsan yazılım kullanılmaktadır.

Tablo 3.10 Korsan Yazılımın Dünya Yazılım Sektörüne Etkileri (BSA, 2005)