Software project cost estimation with artificial neural

Transkript

Software project cost estimation with artificial neural
ĠSTANBUL ÜNĠVERSĠTESĠ
FEN BĠLĠMLERĠ ENSTĠTÜSÜ
YÜKSEK LĠSANS TEZĠ
YAPAY SĠNĠR AĞLARI ĠLE YAZILIM PROJESĠ MALĠYET
TAHMĠNĠ
Elif KARTAL KARATAġ
Enformatik Anabilim Dalı
Enformatik Programı
DanıĢman
Doç.Dr. Sevinç GÜLSEÇEN
Haziran, 2011
ĠSTANBUL
Haziran, 2011
ĠSTANBUL ÜNĠVERSĠTESĠ
FEN BĠLĠMLERĠ ENSTĠTÜSÜ
YÜKSEK LĠSANS TEZĠ
YAPAY SĠNĠR AĞLARI ĠLE YAZILIM PROJESĠ MALĠYET
TAHMĠNĠ
Elif KARTAL KARATAġ
Enformatik Anabilim Dalı
Enformatik Programı
DanıĢman
Doç.Dr. Sevinç GÜLSEÇEN
Haziran, 2011
ĠSTANBUL
Bu çalıĢma Ġstanbul Üniversitesi Bilimsel AraĢtırma Projeleri Yürütücü Sekreterliğinin
6381 numaralı projesi ile desteklenmiĢtir.
ÖNSÖZ
Bu tez çalıĢmasını tamamlamamda bana yol gösteren, hiçbir zaman yardımını
esirgemeyen, her zaman bir öğretmenden öte bir anne Ģefkatiyle beni çalıĢmalarımda
motive eden ve en önemlisi lisans eğitimimi Matematik Bölümü‟nde tamamlayacağım
yıl “Bilgisayar Programlama” dersine gelerek, hangi mesleği seçmem gerektiğine karar
vermemi sağlayan değerli öğretmenim Doç. Dr. Sevinç GÜLSEÇEN‟e teĢekkür ederim.
Yüksek lisans öğrenimim boyunca, her zaman her konuda bana destek olan değerli
öğretmenlerim, Yrd. Doç. Dr. Zerrin AYVAZ REĠS, Yrd. Doç. Dr. Hulusi
GÜLSEÇEN, Doç. Dr. Zuhal TANRIKULU, Doç. Dr. Selim YAZICI ve Yrd. Doç. Dr.
Yasemin DERELĠOĞLU‟na teĢekkürü borç bilirim.
Enformatik Bölümü‟ndeki sevgili çalıĢma arkadaĢlarım, AraĢ. Gör. Dr. Çiğdem
EROL‟a, AraĢ. Gör. Zeki ÖZEN ve AraĢ. Gör. F. Önay KOÇOĞLU‟na teĢekkürler…
Tez çalıĢmam sırasında bölümdeki çalıĢma yükümü hafifleterek yardımcı oldukları,
birlikte geçirdiğimiz her gün tüm sevinç ve üzüntülerimi paylaĢtıkları için…
Tez konumu belirledikten sonra, Yapay Zeka ve Yapay Sinir Ağları ile ilgili temel
kavramlara hakim olabilmek için Boğaziçi Üniversiesi BiliĢsel Bilim Yüksek Lisans
programında okutulmakta olan “Yapay Sinir Ağları” dersine misafir öğrenci olarak
katıldım. Bu dersi veren Prof. Dr. Ethem ALPAYDIN‟a da ayrıca teĢekkür ederim.
Tezimle ilgili sorularımı cevapsız bırakmayan Yrd. Doç. Dr. Yalçın ÖZKAN‟a, Yrd.
Doç. Dr. Fatma ÇALIġKAN‟a, AraĢ. Gör. Utku YILMAZTÜRK‟e, Oğuz
AKBĠLGĠÇ‟e, AraĢ. Gör. Zafer ĠġCAN‟a, Murat AYYILDIZ‟a, Gülay KAPLAN
BÜYÜKAKSOY‟a, Meriç Merih AYKOL‟a içten teĢekkürlerimi iletirim.
Aynı zamanda çalıĢmamın uygulama kısmını destekleyen Ġstanbul Üniversitesi Bilimsel
AraĢtırma Projeleri Birimi‟ne teĢekkürü borç bilirim.
Son olarak, bu tezi ithaf ettiğim anneciğim Fatma Nurten KARTAL, babacığım Lütfi
KARTAL, bir tanecik kardeĢim Nihan KARASU, dedeciğim Turhan KARASU,
anneanneciğim Nihal KARASU, halacığım Emine ġĠRĠNLĠ, eniĢtem YaĢar ġĠRĠNLĠ ve
çok sevgili eĢim Togan KARATAġ‟a özellikle gösterdikleri sonsuz sabır için teĢekkür
ederim. Onlar sayesinde yüzümdeki gülümseme hiç eksik olmadı.
Beni “Benim Prof Kızım” diye seven, ne yazık ki bu çalıĢmamın tamamlanmasından
kısa bir süre önce kaybettiğim dedeciğimin sözlerini boĢa çıkartmayacağıma dair söz
veririm.
Elif KARTAL KARATAġ
i
ĠÇĠNDEKĠLER
ÖNSÖZ .......................................................................................................... i
ĠÇĠNDEKĠLER ........................................................................................... ii
ġEKĠL LĠSTESĠ ......................................................................................... iv
TABLO LĠSTESĠ ........................................................................................ v
ÖZET ........................................................................................................... vi
SUMMARY ............................................................................................... vii
1. GĠRĠġ ..................................................................................................... 1
2. GENEL KISIMLAR ............................................................................. 7
2.1
YAZILIM PROJELERĠNDE MALĠYET TAHMĠNĠ .................................. 7
2.2
YAZILIM PROJESĠ MALĠYET TAHMĠNĠ YÖNTEMLERĠ .................. 11
2.3
YAPAY ZEKA ve YAPAY SĠNĠR AĞI TEKNOLOJĠSĠ ........................... 13
2.3.1
2.4
Yapay Zeka ............................................................................................. 13
YAPAY SĠNĠR AĞLARI ............................................................................... 22
2.4.1
Yapay Sinir Ağları Nedir?...................................................................... 22
2.4.2
Doğal Nöron ve Özellikleri ..................................................................... 23
2.4.3
Yapay Sinir Ağları’nın Kısa Tarihçesi .................................................. 24
2.4.4
Yapay Sinir Ağlarının ÇalıĢma Prensibi .............................................. 26
2.4.5
Yapay Sinir Ağı Mimarisi ...................................................................... 30
2.4.6
Yapay Sinir Ağlarının Avantajları ve Dezavantajları ......................... 35
3. MALZEME ve YÖNTEM ................................................................. 38
3.1
YAZILIM PROJESĠ MALĠYET TAHMĠNĠ ĠÇĠN EN UYGUN YSA
MODELĠNĠN SEÇĠLMESĠ ...................................................................................... 38
3.1.1
Problemin Belirlenmesi .......................................................................... 38
3.1.2
Tahmin Aracının Belirlenmesi ............................................................... 39
3.1.3
Yapay Sinir Ağları için Veri Setinin Belirlenmesi ............................... 40
3.1.4
Verileri ĠĢleme Yönteminin Belirlenmesi .............................................. 42
3.1.5
Yapay Sinir Ağı Modelinin Belirlenmesi .............................................. 42
3.1.6
Yapay Sinir Ağları için Öğrenme Algoritmasının Belirlenmesi ......... 47
3.1.7
Yazılım Projesi Maliyet Kalemlerinin Belirlenmesi ............................ 50
ii
3.2
SEÇĠLEN MODELĠN BĠR ÖRNEK ÜZERĠNDE UYGULANMASI
(www.ysaann.com) ..................................................................................................... 52
3.2.1
www.ysaann.com Sistem Mühendisliği ÇalıĢmaları ............................ 53
3.2.2
www.ysaann.com Analiz ÇalıĢmaları .................................................... 53
3.2.3
www.ysaann.com Web Sitesinin Genel Tasarımı ................................. 54
3.2.4
www.ysaann.com Web Sitesinin Kodlanması....................................... 54
3.2.5
www.ysaann.com Web Sitesinin Test Edilmesi .................................... 55
3.2.6
www.ysaann.com Web Sitesinin Bakımı ............................................... 56
3.2.7
www.ysaann.com Web Sitesi GeliĢtirilirken Kullanılan Teknolojiler 60
3.2.8
www.ysaann.com Web Sitesinin Yazılım ġirketlerine Duyurulması . 62
4. BULGULAR ........................................................................................ 63
5. TARTIġMA ve SONUÇ ..................................................................... 66
5.1
“YAPAY SĠNĠR AĞLARI ĠLE YAZILIM PROJESĠ MALĠYET
TAHMĠNĠ” YOLCULUĞU ...................................................................................... 66
5.2
GELECEKTEKĠ ÇALIġMALAR ................................................................ 68
5.3
SONUÇ ............................................................................................................ 69
EKLER ....................................................................................................... 70
KAYNAKLAR........................................................................................... 84
ÖZGEÇMĠġ ............................................................................................... 91
iii
ġEKĠL LĠSTESĠ
ġekil 2.1: Yapay sinir ağı katmanlarının birbirleriyle iliĢkileri (Öztemel, 2006) ....................... 27
ġekil 2.2: Yapay sinir hücresinin yapısı...................................................................................... 27
ġekil 2.3: Bir YSA örneği ........................................................................................................... 29
ġekil 2.4: YSA'larında öğrenme stratejileri (Öztemel, 2006) ..................................................... 31
ġekil 2.5: YSA'larında Öğrenme Yöntemleri ............................................................................. 32
ġekil 2.6: Tek katmanlı ileri beslemeli bir ağ (Elmas, 2007)...................................................... 33
ġekil 3.1: Sigmoid fonksiyonu .................................................................................................... 43
ġekil 3.2: OluĢturulan YSA‟nın detaylı Ģekli.............................................................................. 45
ġekil 3.3: OluĢturulan YSA‟nın sadeleĢtirilmiĢ Ģekli ................................................................. 46
ġekil 3.4: Sistem geliĢtirmede klasik süreç ................................................................................. 52
ġekil 3.5: ysaann.com web sitesi diyagramı ............................................................................... 55
ġekil 3.6: ysaann.com web sitesi UML dağılım diyagramı ........................................................ 56
ġekil 3.7: ysaann.com web sitesinin Türkçe ana sayfasından bir görünüm ................................ 57
ġekil 3.8: ysaann.com web sitesinin Ġngilizce ana sayfasından bir görünüm ............................. 57
ġekil 3.9: ysaann.com web sitesinin Türkçe kayıt olma sayfasından bir görünüm..................... 58
ġekil 3.10: ysaann.com web sitesinin Türkçe YSA‟ları ile maliyet tahmini gerçekleĢtirme
sayfasından bir görünüm ........................................................................................... 58
ġekil 3.11: ysaann.com web sitesinin Türkçe proje listeleme sayfasından bir görünüm ............ 59
ġekil 3.12: ysaann.com Web Sitesinin Türkçe Kullanıcı Hesabı Sayfasından Bir Görünüm ..... 59
ġekil 3.13: ysaann.com web sitesinin Türkçe videolar sayfasından bir görünüm ...................... 60
iv
TABLO LĠSTESĠ
Tablo 1.1: YSA kullanarak yazılım maliyet tahminlemesi yapma konusunda yapılmıĢ çalıĢmalar
...................................................................................................................................................... 3
Tablo 2.1: Proje yönetim süreci grupları ve bilgi birikimi alanları haritalaması .......................... 7
Tablo 2.2: YZ'nin temelleri ......................................................................................................... 16
Tablo 2.3: YZ'nin tarihsel geliĢimi ............................................................................................. 19
Tablo 3.1: COCOMO maliyet faktörleri (Boehm, 1981) ............................................................ 40
Tablo 4.1: MAPE doğruluk tablosu ............................................................................................ 64
Tablo 4.2: YSA test sonuçları ..................................................................................................... 64
v
ÖZET
YAPAY SĠNĠR AĞLARI ĠLE YAZILIM PROJESĠ MALĠYET TAHMĠNĠ
Bu tezin amacı, insan beynindeki sinir ağlarının çalıĢmasından yola çıkılarak
oluĢturulan ve Yapay Zeka‟nın (YZ) bir alt dalı olan Yapay Sinir Ağları (YSA)‟nın,
yazılım projesi maliyet tahmininde nasıl kullanılabileceğini araĢtırmak ve yazılım
projelerinin maliyet tahminini yapmak için en uygun YSA modeline iliĢkin bir örnek
sunmaktır.
Bir yazılım projesini yürütme sürecinde; iĢgücü analizi ve proje süresi tahmini ile bu iki
unsuru kapsar nitelikte olan proje maliyet analizi projenin kaderini belirlemektedir.
Yazılım geliĢtirme maliyetlerini, ölçüm ve tahmin yöntemlerinin azlığından dolayı
genellikle kontrol altında tutmak zordur. Yazılım projesi maliyet tahmini COCOMO,
SLIM gibi algoritmik yöntemlerle yapılmasına rağmen, doğru maliyet tahmini için son
zamanlarda YSA modellerinden çokça yararlanılmaktadır. YSA, girdiler ve çıktılar
arasında karmaĢık bir iliĢki olduğunda iyi sonuçlar verebilen bir YZ yöntemi olarak
bilinmektedir.
Bu çalıĢmada öncelikle YZ ve YSA‟ları konularına ayrıntılı bir Ģekilde değinilmiĢtir.
Daha sonra tezin amacı doğrultusunda oluĢturulan model YSA‟ı anlatılmıĢ ve bu ağın
yazılım Ģirketleri tarafından kullanılabilmesi için, ağın da içine entegre edildiği bir web
sitesi oluĢturulmuĢtur. Model YSA‟ı COCOMO veri seti ile eğitilmiĢ ve tahminde
bulunması sağlanmıĢtır.
Elde edilen sonuçlar; oluĢturulan modelin kabuledilebilir tahminler ortaya koyduğunu
göstermiĢtir. Yazılım Ģirketleri YSA teknolojisinin kullanımına olumlu yaklaĢtıkları
taktirde, benzer modellerin kamuda ve özel sektördeki yazılım projesi yöneticilerine yol
gösterici nitelikte olacağı ve fayda sağlayacağı düĢünülmektedir. Yöneticilerin, karar
vermekte oldukça zorlandıkları yazılım projelerinin maliyetini tahmin ederken, YSA
gibi yeni bir yöntemi kullanarak, gerçek proje maliyetlerine çok yakın tahminler elde
etmesi mümkün olacaktır. Üstelik YSA‟ları ile maliyet tahmininin yanı sıra, yazılım
projesi süresi ve projedeki iĢgücü gibi yine yazılım projeleri için önemli iki temel unsur
için de tahmin yapmak kolaylaĢacaktır.
vi
SUMMARY
SOFTWARE COST ESTIMATION WITH ARTIFICIAL NEURAL NETWORKS
The aim of this thesis is to find out how can Artificial Neural Networks (ANN) - one of
the methods of Artificial Intelligence (AI) - be used in software projects cost estimation
and to give an example for one of the most appropriate models of ANN used for this
purpose.
The estimation of effort for software projects, which includes both time estimation and
cost estimation, determines the project‟s destiny in a project management process.
Generally costs of software development are out of control because of the lack of
measuring and estimation methods. Although software project cost estimation is usualy
done by algorithmic methods such as COCOMO (Constructive Cost Model) and SLIM
(Software Life Cycle Management), recently researchers tend to use ANN to make more
accurate estimation. ANNs can be thought of as functions in the sense that they map a
set of inputs to outputs.
After a detailed information about AI and ANNs, we present the proposed ANN model
that will be used as estimator and give explanation for the web site that integrate both
the model and the user interface created to be used for the input of companies project
data.
The results of this study show that the proposed ANN produce acceptable estimations.
If it will be trained and tested in order to be more precise, the results will be very close
to the actual project costs.
When this study was shared with some software companies, we saw that there is a
resistance in applying every new technology even among the software companies. But,
we believe that this study will be a starting point in applying AI and ANN methods to
real life applications, especially in software industry, in order to simplify the hard work
of project managers by reducing the time and effort in project cost estimation.
vii
1. GĠRĠġ
“… Türk milletinin karakteri yüksektir. Türk milleti çalışkandır, Türk milleti
zekidir. Çünkü, Türk milleti, milli birlik ve beraberlikle güçlükleri yenmesini
bilmiştir. Ve çünkü, Türk milletinin, yürümekte olduğu terakki ve medeniyet
yolunda, elinde ve kafasında tuttuğu meşale, müspet ilimdir.”
M. Kemal Atatürk (MEB, 2010)
Tarih boyunca dünya Tarım Çağı, Sanayi Çağı ve Bilgi Çağı gibi çeĢitli dönemlerden
geçmiĢtir. Bir yandan, günümüzde kamu ve özel sektör kalem-kâğıt ile yürütülen ofis
ortamından e-ofis ortamına geçme sürecinde, bir yandan da tüm bilgiler elektronik
ortama aktarılmakta bilgi yönetimi en iyi Ģekilde gerçekleĢtirilmektedir. Alican (2006)‟a
göre,
“Bilgi, bir işletmenin insan sermayesi (entelektüel varlık) olabilir. Bu sermaye,
müşterilerin tercih ve zevklerini ve işletmenin sistemlerini, süreçlerini,
ürünlerini ve fiziksel kapasitesini içerir.”
Bilgilerin düzgün bir biçimde depolanabilmesi, ihtiyaç duyulduğunda tekrar
kullanılabilmesi ve yöneticilerin, var olan bu bilgileri kullanarak hızlı bir Ģekilde karar
verebilmeleri önem taĢımaktadır. Tüm bunlar göz önünde bulundurulursa, Ģirketlerin
bilgisayarlar üzerinde bu iĢleri gerçekleĢtirebilecek yazılımlara ihtiyacı gün geçtikçe
artmaktadır.
Türkiye‟de yazılım sektörü dünyayla kıyaslandığında oldukça küçük ve önemsiz
gözükse de, yapılan projelerle birçok yazılım firması aslında bu konuda da ülkemizin ne
kadar baĢarılı olabileceğini ispatlamıĢtır (Alican, 2006). GeliĢtirilen yazılımların
maliyeti artmakta buna bağlı olarak yazılım projelerinde maliyet tahmini günden güne
önem kazanmaktadır. Maliyet, süre, efor gibi proje için önemli olan temel kavramların
yanlıĢ hesaplanması nedeniyle çöken birçok proje mevcuttur. Özellikle yazılım projeleri
1
için ölçülebilir hedefler konmadığı için baĢarı sağlanamamaktadır (Ayyıldız ve diğ.,
2007).
GeliĢtirme maliyeti temel olarak içerdiği proje iĢgücü maliyetidir ve bu yüzden iĢgücü
hesabı hem maliyet hem de yazılım projesi zamanlama tahmininde kullanılmaktadır.
Projeler için detaylı takvimler oluĢturmadan önce maliyet tahmini yapılmalıdır
(Sommerville, 2004).
Ölçüt kümesinin belirlenmesi, maliyet tahmininde önemli bir yer tutmaktadır. Bu
nedenle, yazılım projesi verileri ölçüt kümesi çerçevesinde toplanacaktır. Bu yolla,
yazılım projesinde daha verimli, bir baĢka deyiĢle gerçeğe daha yakın sonuçlar elde
edilmesi hedeflenmektedir.
Yazılım maliyet tahmini teknikleri Algoritmik Modeller ve Algoritmik Olmayan
Modeller olarak sınıflandırılabilmektedir. Algoritmik Modeller (COCOMO, SLIM) eski
proje bilgilerine dayanan geçmiĢ verilerin istatistiksel analizinden oluĢurken, algoritmik
olmayan teknikler Parkinson, Uzman GörüĢü, Makine öğrenmesi gibi yeni yaklaĢımlara
dayanmaktadır. Makine Öğrenmesi; Regresyon Ağaçları, Bulanık Sistemler, Genetik
Algoritmalar, Yapay Sinir Ağları (YSA) da insan beyninin çeĢitli yönlerini savunan
teknikler kümesi olarak kullanılmaktadır (Attarzadeh ve Ow, 2010).
YSA‟ları paralel olarak iĢleyen birçok basit iĢlem elemanından oluĢan ve öğrenme yolu
ile kendi kendini düzenleyebilen ileri bir bilgi iĢlem sistemidir (Gülseçen, 1993).
YSA‟larının öğrenme özelliği onları klasik bilgisayar yazılımlarından üstün kılmaktadır.
Bir baĢka önemli özellik ise, bir problemin giriĢ bilgisi ile çıkıĢ bilgisi arasında uygun
bir tasvir gerçekleĢtirerek en uygun sonucu üretebilmeleridir ve bu sebeple YSA‟ları
daha çok tahmin problemlerinde kullanılmaktadır (Gülseçen, 1993).
Özellikle,
ülkemizdeki
yazılım
Ģirketlerinin/yazılımcıların
dikkatini,
yazılım
projelerinde önem taĢıyan yazılım projesi maliyet tahmininde geleneksel tahmin
yöntemlerinden (matematiksel formüllere dayalı yöntemler) daha farklı olan YSA‟larına
çekebilmek için, bu tez çalıĢmasının konusu “Yapay Sinir Ağları ile Yazılım Projesi
Maliyet Tahmini” olarak belirlenmiĢtir.
2
Yazılım projelerinin YSA kullanılarak maliyetinin tahmini için çok çeĢitli çalıĢmalar
yapılmıĢtır. Bunları Tablo 1.1 (Ayyıldız ve diğ, 2007)‟de görmekteyiz.
Tablo 1.1: YSA kullanarak yazılım maliyet tahminlemesi yapma konusunda yapılmıĢ çalıĢmalar
KULLANILAN
VERĠ
PROJE
SONUÇ (Mean Magnitude
ALGORĠTMA
KÜMESĠ
SAYISI
of Relative Error - MMRE)
Wittig &
Back-
ASMA ve
136 ve
%17
Finnie
Propagation
Desharnai
81
ÇALIġMA
s
Venkatach
Back-
COCOMO
63
(-)
alm
Propagation
Jorgenson
Back-
Jorgenson
109
%100
Back-
Mermaid-
28
%76
Propagation
2
Kerunanit
Cascade-
(-)
(-)
(-)
hi
Correlation
Samson
Back-
COCOMO
63
%428
Back-
Kemerer
78
%70
Propagation
ve
33
%55
Propagation
Serluca
Propagation
Srinivasan
COCOMO
Hughes
Back-
Hughes
Propagation
Yazılım projelerinde özellikle maliyet tahmini büyük önem taĢımakta ve yazılım
Ģirketlerinin itibarını belirlemektedir. Bu konudaki baĢarısızlıklar, bilgi eksikliklerinden,
tecrübe yetersizliklerinden, doğru yöntem ve araçları kullanmamaktan ve yeniliklerin
takip edilmemesinden kaynaklanabilmektedir. Bu çalıĢma ile YZ‟nin bir alt dalı olan
YSA‟ları ile yazılım projesi maliyet tahmininin nasıl yapıldığı anlatılacak ve bir
uygulama ile desteklenecektir. ġirketlerin maliyet tahmininde YSA‟ları kullanım
tecrübesini yaĢayabilmeleri için gereken çatı hazırlanmıĢtır. Yazılım projesi maliyet
3
tahmini yapmak isteyen yurtiçi ve yurtdıĢındaki yazılım Ģirketlerinin yararlanması
hedeflenmiĢtir. Uygulamanın gerçekleĢtirilebilmesi için bir web sitesi hazırlanmıĢ ve
YSA ile yazılım projesi maliyet tahmini yapmak isteyen Türk ve yabancı yazılım
Ģirketlerinin kullanımına açılmıĢtır.
Tez, Genel Kısımlar, Malzeme ve Yöntem, Bulgular, TartıĢma ve Sonuç bölümlerinden
oluĢmaktadır.
Bu tez çalıĢmasında, yazılım projesi maliyet tahmininin en önemli unsurlarından biri
olan iĢgücü tahmini YSA‟ları yardımı ile elde edilmiĢtir. ĠĢgücünü tahmin etmek için
hazırlanan YSA, XOR probleminin çözümünden esinlenerek oluĢturulmuĢtur. Ağın
eğitim iĢlemi bitirildikten sonra test edilmiĢ, oluĢturulan ağın performansı hesaplanmıĢ
ve maliyet tahmini için ilgili program kodları, yazılım Ģirketleri için hazırlanan web
sitesine (ysaann.com) entegre edilmiĢtir. Web sitesi hazırlanırken, sistem geliĢtirme
süreci adımlarından Klasik Süreç (Waterfall Modeli) kullanılmıĢtır. Tezin “Malzeme ve
Yöntem Bölümü”nde Klasik Süreç hakkında geniĢ bilgi yer almaktadır.
Yazılım projelerinde YSA‟ları ile iĢgücü tahmininde YSA‟larını eğitmek ve test etmek
için, “Telecom”, “Kemerer”, “Finnish”, “Nasa93” (Promise 2011) gibi hazır bulunan
veri setleri kullanılmaktadır. Bu tez çalıĢmasında ise YSA‟larını eğitme ve test etme
sürecine katkı sağlaması hedeflenen proje bilgileri yazılım firmalarından tedarik
edilemediğinden, YSA‟larını eğitmek ve test etmek için yalnızca COCOMO
(Constructive Cost Model) (Boehm, 1981) kullanılmıĢtır.
Bu tezdeki temel kabul, yazılım projesi maliyet tahmini için geliĢtirilen web sitesine üye
olan kullanıcıların, büyük ya da küçük ölçekteki yazılım Ģirketi ya da yazılım projesi
gerçekleĢtiren birey/bireylerin olmasıdır. Ayrıca geliĢtirilen web sitesine kullanıcılar
tarafından eklenecek yazılım projesi örneklerinin, tamamlanmıĢ projeler olduğu kabul
edilmiĢtir.
Bu tez çalıĢmasının Genel Kısımlar bölümünde, yazılım projesi maliyet tahmini ve
yazılım projesi maliyet yöntemleri konuları hakkında bilgiler verilmiĢtir. YZ
4
kavramının anlaĢılabilirliği için öncelikle doğal zeka araĢtırılmıĢ, YZ ile doğal zeka
arasındaki farklılıklar ortaya konmuĢtur. YZ‟nın bir çalıĢma alanı olan ve bu tez
çalıĢmasında yazılım maliyet tahmini aracı olarak kullanılan YSA kavramının kısa
tarihçesi hakkında bilgiler sunulmuĢtur. YSA tanımları, biyolojik sinir sistemindeki
doğal nöron ve özelliklerinin açıklanması ile desteklenmiĢtir. Bunların yanı sıra
YSA‟larının çalıĢma prensibi ve YSA mimarisi incelenerek, YSA‟larının avantajları ve
dezavantajları belirtilmiĢtir.
ÇalıĢmanın Malzeme ve Yöntem bölümündeki, yazılım projesi maliyet tahmini için en
uygun YSA modelinin seçimi sırası ile; problemin belirlenmesi, tahmin aracının
belirlenmesi, YSA‟ları için veri setinin belirlenmesi, verileri iĢleme yönteminin
belirlenmesi, YSA modelinin belirlenmesi, YSA‟ları için öğrenme algoritmasının
belirlenmesi ve yazılım projesi maliyet kalemlerinin belirlenmesi aĢamalarından
oluĢmaktadır. Yine bu bölümde, seçilen modelin bir örnek üzerinde uygulanması yer
almaktadır. Bu kapsamda geliĢtirilen ysaann.com web sitesinin geliĢtirilme süreci,
yazılım mühendisliği yöntembilimlerinden Klasik Süreç (sistem mühendisliği, analiz,
genel tasarım, kodlama, test ve bakım çalıĢmaları) doğrultusunda ele alınmıĢtır. Web
sitesi geliĢtirilirken kullanılan yazlım teknikleri ve teknolojilere yer verilmiĢtir.
YSA‟ları kullanılarak ysaann.com web sitesi üzerinden gerçekleĢtirilen yazılım projesi
maliyet tahmini sonuçlara Bulgular bölümünde yer almakta olup, TartıĢma ve Sonuç
bölümünde, Bulgular bölümünde yer alan bilgiler, bugüne kadar yapılan çalıĢmalar göz
önünde bulundurularak değerlendirilmiĢtir.
Tezin ilk bölümü olan bu bölüm okurun, bu tez çalıĢması ve tezin yapısı hakkında genel
fikir edinebilmesi için hazırlanmıĢtır. Burada öncelikle bu tez konusunun seçimi ve
araĢtırma ile ilgili daha önce yapılan çalıĢmalar hakkında bilgi verilmiĢtir. Bu
çalıĢmanın amaçlarından söz edilmiĢtir. Tez çalıĢmasının araĢtırma yöntemi hakkında
bilgi verilerek çalıĢmanın sınırlılıkları ve teorik kabulleri yine bu bölümde tanıtılmıĢtır.
Bu bölümde son olarak, tezin yapısına yer verilmiĢtir.
GiriĢ Bölümü‟nün amacı, tezin sonraki bölümlerinde daha geniĢ halde yer alan tezin
hazırlanması aĢamalarını özetlemektir. Bir sonraki bölümde, yazılım projesi maliyet
5
tahmini, YZ ve YSA‟ları ile ilgili teorik bilgilere yer verilecektir. Bu bölüm, çalıĢma
konusunun kaynağı olan problemin çözümü için gereken alt yapıyı sağlamayı
amaçlamaktadır.
6
2. GENEL KISIMLAR
2.1
YAZILIM PROJELERĠNDE MALĠYET TAHMĠNĠ
GeliĢen teknoloji ile özel Ģirketler ve kamu kuruluĢları kâğıt odaklı iĢ akıĢ düzeninden
bilgisayar ve internet uygulamalarına ve hatta mobil uygulamalara geçiĢ yapmaktadır.
Bu doğrultuda masaüstü, web ve mobil yazılımlara olan ihtiyaç da artmaktadır. Yazılım
Ģirketleri, bu noktada çok büyük önem taĢımaktadır.
Proje, tek bir ürün, hizmet ya da sonuç yaratabilmek için giriĢilen belli bir süreyi
kapsayan çabalardır. Bir projenin sonucunda bir son ürün ya da baĢka bir ürünün bir
bileĢeni, bir hizmeti (üretim ya da dağıtımı destekleyen bir iĢ fonksiyonunu) sunmak
için gereken kapasiteyi, bir gider ya da doküman (bir mevcut eğilimin ya da yeni bir
sürecin mi toplumu etkileyebileceğine karar vermek için kullanılan bir bilgiyi geliĢtiren
bir araĢtırma projesi) gibi bir sonucu ortaya çıkarabilmektedir. Proje yönetimi ise proje
gereksinimlerinin bir araya getirilebilmesi için, bilgi birikiminin, yeteneklerin, araçların
ve tekniklerin, proje etkinliklerine uygulanmasıdır. Tablo 2.1‟de, bu çalıĢmada yazılım
projeleri için incelenen proje maliyet tahmininin, proje yönetim süreçlerinden hangisine
girdiğini görebilmekteyiz (ANSI/PMI, 2008).
Tablo 2.1: Proje yönetim süreci grupları ve bilgi birikimi alanları haritalaması
Proje Yönetim Süreci Grupları ve Bilgi Birikimi Alanları
Haritalaması
Bilgi
Alanları
Proje
Bütünleme
Yönetimi
Ġlklendirme
Süreci Grubu
Proje
sözleĢmesinin
geliĢtirilmesi
Planlama
Süreci
Grubu
Proje
yönetim
planının
geliĢtirilmesi
7
ÇalıĢtırma
Süreci
Grubu
Ġzleme ve
Kontrol
Süreci
Grubu
Kapatma
Süreci
Grubu
Projenin
çalıĢmasını
yönetmek
Proje
çalıĢmasını
izlemek ve
kontrol
etmek,
BütünleĢik
görev
kontrolü
Projeyi
kapatmak
Proje Yönetim Süreci Grupları ve Bilgi Birikimi Alanları
Haritalaması
Bilgi
Alanları
Ġlklendirme
Süreci Grubu
ÇalıĢtırma
Süreci
Grubu
Planlama
Süreci
Grubu
Ġzleme ve
Kontrol
Süreci
Grubu
sergilemek
Gereksinimle
ri toplamak
Proje
Kapsam
Yönetimi
Kapsamı
doğrulamak
Kapsamı
belirlemek
Kapsamı
kontrol
etmek
ĠĢ Aksama
Yapısı
yaratmak
Proje
Süresi
Yönetimi
Etkinlikleri
tanımlamak,
Etkinlikleri
dizmek,
Etkinlik
kaynaklarını
tahmin
etmek,
Etkinlik
sürelerini
tahmin
etmek,
Zaman
çizelgesi
geliĢtirmek
Zaman
çizelgesini
kontrol
etmek
Proje
Maliyet
Tahmini
Maliyetleri
tahmin
etmek,
Bütçeyi
belirlemek
Maliyetleri
kontrol
etmek
Proje
Kalite
Kaliteyi
planlamak
Kalite
Güvencesi
8
Kalite
kontrolü
Kapatma
Süreci
Grubu
Proje Yönetim Süreci Grupları ve Bilgi Birikimi Alanları
Haritalaması
Bilgi
Alanları
Ġlklendirme
Süreci Grubu
Planlama
Süreci
Grubu
Yönetimi
Ġzleme ve
Kontrol
Süreci
Grubu
sergilemek
sağlamak
Kapatma
Süreci
Grubu
Proje takımı
tedarik
Ġnsan kaynağı etmek,
Proje
planı
Takımı
geliĢtirmek
geliĢtirmek
Proje insan
Kaynağı
Yönetimi
Proje
ĠletiĢim
Yönetimi
ÇalıĢtırma
Süreci
Grubu
PaydaĢları
tanımlamak
Bilgiyi
dağıtmak,
Performansı
PaydaĢ
raporlamak
beklentileri
ni yönetmek
ĠletiĢimi
planlamak
Proje Risk
Yönetimi
Risk
Yönetimi
Planlamak,
Riskleri
belirlemek,
Nicel risk
analizleri
yapmak, Risk
geri dönüĢleri
planlamak
Proje
Tedarik
Yönetimi
Tedarikleri
belirlemek
Riskleri
izlemek ve
kontrol
etmek
Tedarikleri
yürütmek
Tedarikleri
yönetmek
Tedarik
kapatma
Proje maliyet tahmini, proje etkinliklerinin tamamlanabilmesi için gereken parasal
kaynaklar için yaklaĢım geliĢtirme sürecidir (ANSI/PMI, 2008). Elbette doğru proje
maliyet tahmini; hem Ģirket hem de istemci kuruluĢ açısından stratejik bir yere sahiptir.
9
Leung ve Fan (2002) yazılım projesi maliyet tahmininin önemini aĢağıdaki Ģekilde
ortaya koymuĢtur:

GeliĢtirme projelerini tüm iĢ planını esas alarak sınıflandırmaya ve önem
sırasına dizmeye yardım edebilmektedir.

Projede hangi kaynakların kullanılacağına ve bu kaynakların ne kadar iyi
kullanıldığına karar vermek için kullanılabilmektedir.

Yapılan değiĢikliklerin etkisine eriĢebilmeyi sağlamakta ve tekrar planlama
imkânı sunmaktadır.

Kaynaklar gerçek ihtiyaçlar ile daha iyi eĢleĢtirildiğinde projeler daha iyi
yönetilebilmekte ve kontrol edilebilmektedir.

MüĢteriler gerçek geliĢtirme maliyetinin, tahmin edilen maliyet doğrultusunda
olmasını beklemektedirler.
Yazılım projesi maliyeti tahmini yapılırken özellikle proje yürütücüsü ve ekibinin iyi bir
analiz yapması gerekir. Maliyet tahmininde yapılması gerekenleri Tronto ve diğ. (2008)
çalıĢmalarında geliĢtirilen ürünün boyutunun tahmin edilmesi, çalıĢan-ay ya da çalıĢansaat olarak iĢgücü tahmini, proje zaman çizelgelemesinin ay bazında yapılması ve yerel
para birimine göre maliyetin hesaplanması Ģeklinde ifade etmiĢlerdir. Yine Leung ve
Fan (2002) iyi bir yazılım maliyet tahmininde olması gereken özellikleri Ģöyle sıralar:

Proje, yöneticisi ve geliĢtirme takımı tarafından iyi tasarlanmıĢ olmalıdır.

Tüm paydaĢlar tarafından baĢarılabileceği kabul edilmelidir.

Güvenilir temeller ile iyi tanımlanmıĢ yazılım maliyet modeline dayanmalıdır.

Konu ile ilgili benzer veritabanına dayanmalıdır (benzer süreçler, benzer
teknolojiler, benzer ortam, benzer insanlar ve benzer gereksinimler)

Anahtar risk alanlarının iyi anlaĢılabilmesi ve baĢarı olasılığının objektif olarak
belirlenebilmesi için yeterince detaylandırılmalıdır.
10
Öte yandan Sommerville (2004), proje maliyet tahmini ve iĢ zaman çizelgelemesinin
genellikle birlikte ele alındığını, aslında geliĢtirme maliyetinin sarf edilen iĢ gücü
maliyeti olduğunu, bu yüzden de iĢ gücü tahmininin, maliyet tahmininde ve iĢ zaman
çizelgelemesinde de kullanıldığını vurgulamakta ve toplam yazılım projesi maliyeti
hesaplamasında kullanılan üç parametre olduğunu belirtmektedir.

Donanım ve yazılım giderleri (bakımı da içerir),

Seyahat ve eğitim giderleri,

ĠĢ gücü giderleri (yazılım mühendislerine yapılan ödemeler).
Yazar, birçok proje için bu üç parametreden en baskın olanının iĢ gücü giderleri
olduğunu ifade etmiĢtir.
Yapılan çalıĢmalarda (Mittas ve Angelis, 2010; Park ve Baek, 2008; Tronto ve diğ.,
2008; Grimstad ve diğ., 2006; Leung ve Fan, 2002) yazılım projelerinde kimi zaman
doğrudan kimi zaman ise dolaylı olarak maliyet tahmininin gerekliliği ve önemi ortaya
konmuĢtur. Yazılım Ģirketleri için büyük önem taĢıyan maliyet tahmininin ne yazık ki
çeĢitli güçlükleri de bulunmaktadır. Yine Sommerville (2004)‟e göre, iĢ gücü
tahmininin, projeye katılan elemanların yeteneklerinin bilinemeyiĢi, yeni teknolojilerin
kullanımı, yazılımın tanıdık olmayan bilgisayarlar üzerinde çalıĢıp çalıĢmaması gibi
sebeplerden bir projenin baĢlangıcında doğru bir Ģekilde yapılamayacağını belirtmiĢtir.
Üstelik çoğu projenin eksik kullanıcı istekleri ile baĢlaması (tahmin yapılmadan önce
çalıĢma hakkında çok az bilgiye sahip olunması) maliyet tahminini olumsuz yönde
etkilemektedir. Leung ve Fan (2002) çalıĢmalarında maliyet ölçümü ile ilgili geçmiĢ
proje verilerinin yer aldığı veritabanı eksikliği, yazılım geliĢtirmenin birbiri ile iliĢkili
birçok faktörü içermesi, yetiĢtirilen tahminleyicilerin eksikliği ve tahminleyicilerin
ihtiyaç duyulan uzmanlık eksikliği, zayıf tahmin ile ilgili az bilanço olarak belirtmiĢtir.
2.2
YAZILIM PROJESĠ MALĠYET TAHMĠNĠ YÖNTEMLERĠ
Bugüne kadar birçok farklı yazılım projesi maliyeti tahmin yöntemi geliĢtirilmiĢtir.
Yazılım maliyeti tahminlerinin çoğu algoritmik modellere, uzman değerlendirmesi ya
11
da makine öğrenmesine dayanmaktadır (Tadayon, 2005). Bu modeller birçok farklı
Ģekilde kategorize edilmektedir. Temelde, Algoritmik Modeller (Algorithmic Models)
ve
Algoritmik
Olmayan
Modeller
(Non-Algorithmic
Models)
olarak
gruplandırılabilmektedir (Attarzadeh ve Ow, 2010; Leung ve Fan, 2002). Bu bölümde,
bu güne kadar yazılım projesi maliyet tahmini için geliĢtirilmiĢ olan baĢlıca yöntemlere
ve yapılan çalıĢmalara yer verilecektir.
Algoritmik Modeller:
Yazılım maliyet tahmini yapmak için baĢlıca maliyete neden olan tüm unsurları göz
önünde bulunduran değiĢkenlerin fonksiyonu olarak bir ya da daha fazla algoritma
oluĢturan yöntemlerdir (Boehm, 1981). Proje maliyetini tahmin etmek için, proje
büyüklüğü, proje süresi, yazılım mühendisi sayısı, diğer süreç ve ürün etkenlerinin
tahminine dayanan bir matematiksel formül kullanılmaktadır. COCOMO (Boehm,
1981) ve SLIM (Software Life Cycle Management) (Putnam, 1978) bazı ünlü algoritmik
modellerdendir. Projenin farklı safhalarında iĢgücü tahminini kiĢi-ay bazında kolaylıkla
yapabildiğinden COCOMO II algoritmik modeller arasında en çok kullanılanıdır
(Tadayon, 2005). Tadayon (2005), istatistiksel maliyet tahmin modellerinin, kategorik
veri ya da eksik veri noktalarının üstesinden gelemediğini ve en önemlisi sorgulama
kapasitesinin eksikliğini vurgulamıĢ, bunun, geleneksel olmayan çalıĢmaların
azalmasını tetiklediğini öne sürmüĢtür.
Algoritmik Olmayan Modeller:
Bu modeller 1990 yılında ortaya çıkmıĢtır. Yazılım araĢtırmacıları YZ ile hesaplama
araçlarından YSA‟larına, bulanık mantık modellerine ve genetik algoritmalara
yönelmiĢtir (Atterzadeh ve Ow, 2010). Diğer algoritmik olmayan modeller ise aĢağıdaki
gibi sıralanabilir:

Uzman GörüĢü (Expert Judgement): Ġleri sürülen proje hakkında tecrübeli bir
ya da birkaç uzmana danıĢılabilmektedir (Boehm, 1981; Sommerville, 2004).
Her biri proje maliyetini tahmin ettikten sonra sonuçlar karĢılaĢtırılmakta ve
tartıĢılmaktadır. Kabul edilen tahmine ulaĢılana kadar süreç tekrar edilmektedir
(Sommerville, 2004).
12

BenzeĢim (Analogy):
Bir ya da daha fazla tamamlanmıĢ projenin gerçek
maliyetini, benzeri yeni bir projenin maliyetini tahmin edebilmek için benzeĢime
dayalı sorgulama ile iliĢkilendirilir (Boehm, 1981, Leung ve Fan, 2002).

Parkinson: Bir Parkinson Prensibi (“eriĢilebilir hacmi doldurmak için iĢ
yayılabilir”) ile, objektif değerlendirmelerden ziyade eldeki kaynaklara
dayanılarak maliyet belirlenmektedir (tahmin yapılmamaktadır) (Leung ve Fan,
2002). Örneğin, yazılım 12 ayda teslim edilecekse ve 5 kiĢi varsa, gereken
iĢgücü 60 adam/ay olarak hesaplanır (Sommerville, 2004).

Kazanmak için Fiyat (Price-to-Win): Bu yöntemde maliyet tahmini, iĢi
kazanmak için gerekli olduğuna inanılan fiyata eĢitlenir (Boehm, 1981). Maliyet
tahmini, yazılımın iĢlevselliği yerine müĢterinin bütçesine dayanmaktadır
(Leung ve Fan, 2002).

Yukarıdan AĢağı (Top-Down): Proje için tüm maliyet tahmini, yazılım
ürününün genel özelliklerinden türetilmekte, toplam maliyet çeĢitli bileĢenler
üzerinden ayrılmaktadır (Boehm, 1981).

AĢağıdan-Yukarı (Bottom-Up): Yazılım iĢinin her bileĢeni ayrı ayrı tahmin
edilmekte ve sonuçlar tüm iĢin tahminini çıkarmak için toplanmaktadır (Boehm,
1981).
2.3
2.3.1
YAPAY ZEKA ve YAPAY SĠNĠR AĞI TEKNOLOJĠSĠ
Yapay Zeka
2.3.1.1 Zeka
Zeka; sosyal ve fen alanlarında çalıĢanlar için bir buluĢma noktası, yıllardır üzerinde
çalıĢılan ve merak uyandıran soyut bir kavramdır. Zeka terimini Aristoteles dia-noesis
Ģeklinde ifade ederken, Cicero intelligence sözcüğünün Latince dilindeki karĢılığı olan
inter-legentia sözcüğünü Aristoteles‟in bu teriminin neredeyse birebir çevirisi olarak
ilk defa kullanmıĢtır. Zekayı ölçme çalıĢmaları Galton ile baĢlamıĢtır. Bu çalıĢmalarda
genellikle zekanın somut (sayısal) bir izdüĢümü alınmak istenmiĢtir. Ġlerleyen yıllarda
ise bir ölçek ya da bir test ile ölçülebilecek tek bir zekanın olduğundan bahsetmenin
13
yanlıĢ olduğu savunulmuĢtur. Zekaya karĢı geleneksel yaklaĢım, nöropsikoloji ve
geliĢim uzmanı Howard Gardner ile yeni bir anlayıĢa kavuĢmuĢtur (Bümen, 2004).
Howard Gardner (Gardner‟dan aktaran Bümen, 2004, s.4),
“Çocuklar ve beyin hasarlı yetişkinlerle yaptığım günlük çalışmalar beni insan doğası
ile ilgili bedensel bir olguyla derinden etkiledi. İnsanlar çok geniş, bir başka alandaki
gücüyle karşılaştırılabilecek ve tahmin edilebilecek kadar basit değil.”
sözleri ile “Çoklu Zeka Kuramı”nın adeta çıkıĢ noktasını dile getirmiĢtir. Zekayı
1993‟te “Frames of Mind” kitabında “Bir veya daha fazla kültürel yapıda değeri olan
bir ürüne şekil verme ya da problemleri çözme yeteneğidir.” (Gardner‟dan aktaran
Bümen, 2004, s.5) Ģeklinde tanımlamıĢtır. Çoklu zekada, zeka sayısallaĢtırma yerine
zekanın profilini çıkarma, zekayı ölçme yerine yorumlama ve betimleme yoluna
gidilmiĢtir.
Psikometrik
bir
aracın
sonuçlarına
dayanmak
yerine
beyin
araĢtırmalarından, insan geliĢiminden, evrimden ve kültürler arası kıyaslamalardan
yararlanarak zeka olarak düĢünebileceğimiz yetenekleri belirlemek üzere ölçüt
geliĢtirilmiĢtir. Bümen (2004), çok sayıda yetenek arasından sözel dil zekası, mantık –
matematik zekası, bedensel zeka, uzamsal (spatial) zeka, müziksel zeka, sosyal
(interpersonal) zeka, ötedönük (intrapersonal) zeka ve doğacı (naturalistic) zeka olarak
belirlendiğini; varoluĢsal (existential) zekanın bunlara ek olarak düĢünüldüğünü fakat
Gardner‟ın bu zekaya biyolojik bir alan bulamadığından, “yarım zeka” adını verdiğini
dile getirmiĢtir.
2.3.1.2 Yapay Zeka Kavramı
Yalnızca yarım asırlık bir geçmiĢe sahip olan bilgisayarları yaĢantımızın her alanında
görmek olanaklı hale gelmiĢtir. Kamu kuruluĢlarından özel sektöre, bireysel kullanımlar
da göz önünde bulundurulduğunda geniĢ bir kitle bilgisayar okur-yazarı haline
gelmiĢtir. Bu süreçte teknolojinin her geçen gün geliĢmesi karar vericilerin her iĢlerini
bilgisayarın tek bir tuĢuna basarak gerçekleĢtirmelerini mümkün kılmaktadır. Teknoloji
sektöründeki çalıĢmalar, herhangi bir matematiksel yöntem ile sonucu ifade edilemeyen
problemleri insan zekasının bilgisayarlar üzerine bir tür izdüĢümü yardımı ile çözmeyi
hedeflemektedir. Bilgisayarlara bu gibi özellikleri kazandırma çalıĢmaları, bir baĢka
14
deyiĢle “Makineler düĢünebilir mi?” sorusu, Yapay Zeka (YZ) kavramını ortaya
koymuĢtur. Bu bilim dalı hakkında zaman içerisinde çok çeĢitli tanımlamalar
yapılmıĢtır. Bu tanımlardan bazıları aĢağıda verilmiĢtir:
Haton (1991) YZ‟yı Ģöyle ifade etmiĢtir: YZ, bilgisayarı, genellikle insan zekasına özgü
kapasitelerle donatmak üzere bilgilerin edinilmesi, algılama (görme, iĢitme), düĢünme,
karar verme vs. ile ilgilidir.
YZ‟nin amaçları, normalde elektronik makineler aracılığıyla insanın ussal etkinliğini
olabildiğince taklit etmek ve belki de sonuçta, insanın ussal etkinlik yeteneğini
geliĢtirmektir (Penrose, 2004).
Whitby (2005)‟a göre YZ; insanlarda, hayvanlarda ve makinelerde zeki davranıĢın ne
olduğunu
inceleyen
ve
insan
yapımı
aygıtların
nasıl
bu
tip
davranıĢlar
sergileyebileceğini bulmaya çalıĢan bir bilim dalıdır.
Görz (2005) YZ‟ı, “hem biliĢsel sistemleri simule etmeyi (akılcı/insan gibi düĢünme)
hem de “akıllı” sistemler yapılandırmayı (akılcı/insan gibi davranma) kendine amaç
edinmiĢ bir bilimsel disiplindir” Ģeklinde ifade etmiĢtir.
Nabiyev (2005)‟e göre ise YZ kabaca bir bilgisayarın ya da bilgisayar denetimli bir
makinenin, genellikle insana özgü nitelikler olduğu varsayılan akıl yürütme, anlam
çıkartma, genelleme ve geçmiĢ deneyimlerinden öğrenme gibi yüksek zihinsel süreçlere
iliĢkin görevleri yerine getirme yeteneğidir.
Öztemel (2006); 50‟li yıllardan itibaren devam eden ciddi YZ çalıĢmaları ile Zeki
Sistemler olarak bilinen sistemler tasarlandığını belirtir. Zaman içinde zeki sistemler
geliĢerek YZ‟ya, YZ geliĢerek Zeki Sistemlere katkı sağlamıĢtır. ÇeĢitli olay, durum ve
problemler karĢısında çözüm üretmek için bilgi merkezli karar verebilmek, mevcut
bilgiler ile olayları öğrenerek sonraki olaylar hakkında karar verebilmek Zeki
Sistemlerin en karakteristik özelliklerinden sayılmaktadır (Öztemel, 2006).
15
Haton (1991); bir YZ programının her Ģeyden önce, klasik enformatikte olduğu gibi
sayılardan çok, sembolik enformasyonları kullanmakta olduğunu söyler. YZ
çalıĢmalarında “Heuristique” yöntemi sıkça kullanılmaktadır. “Heuristic Method” yani
“Sezgisel Yöntem” birkaç farklı yöntemi deneyen ve en iyi çözümü hangisinin verdiğini
kıyaslayan bir problem çözme yaklĢımıdır (Glossary of Technical Terms and Topics).
Özellikle klasik algoritmik yöntemler ile çözülemeyen ya da çözümü bu yöntemler ile
karmaĢık olan problemleri YZ ele almaktadır ve proje yönetimi, bankacılık, borsa, vb.
sektörlerde sıkça yaĢanan eksik veri ile çalıĢabilme özelliğine de sahiptir. Haton (1991)
aynı zamanda YZ‟yi oluĢturan temel kavramlardan birinin de bilgi olduğunu, tıpkı
bugün alanında uzman bir bireyin önceki deneyimlerinden yararlandığı gibi, bu
bilgilerin YZ sistemine aktarıldıktan sonra katkısının yadsınamayacağını savunur.
Rusell ve Norvig (2010), YZ‟nin temellerini aĢağıdaki gibi belirtmiĢtir.
Tablo 2.2: YZ'nin temelleri
YAPAY ZEKANIN TEMELLERĠ
Felsefe
Mantık, öğrenme fiziksel sistemin temeli olarak akıl, dil, mantık,
düĢünce yöntemleri
Matematik
Algoritmaları usulüne uygun bir Ģekilde yazma ve ispat etme, kolay
iĢlenebilirlik, olasılık
Ġktisat
Yenilik, karar teorisi
Sinirbilim
Beynin bilgiyi iĢlemesi
Psikoloji
Ġnsan ve hayvanların düĢünce ve eylemleri
Bilgisayar
Verimli bilgisayarlar yapabilme
Mühendisliği
Dilbilim
Dilin düĢünce ile olan iliĢkisi
2.3.1.3 YZ’nin Doğal Zeka ile KarĢılaĢtırılması
YZ‟nin doğal zekaya karĢı avantajlarını Yıldız (2009) aĢağıdaki gibi sıralamıĢtır:
1. YZ kalıcıdır.
2. Doğal Zeka‟yı kopyalamak mümkün değildir.
3. YZ daha kolay belgelendirilebilir.
16
4. YZ daha istikrarlıdır.
5. YZ daha objektiftir.
6. YZ daha verimlidir.
Yıldız‟ın ortaya koyduğu bu avantajları daha ayrıntılı ele almak gerekirse;
Zeki sistemlerin bilgi tabanını oluĢturmak için alanında uzman bir kiĢiden
faydalanabilmekteyiz. Bilgi tabanında saklanan, veri tabanında olduğu gibi pasif
kayıtlardan meydana gelmemekte, bilgiler zeki sistemde yer alan çıkarım makinesinin
iĢleyebileceği düzende sembolik olarak temsil edilebilmektedir (Gülseçen, 1993).
Uzman kiĢiler, çeĢitli sebeplerden, bulunduğu iĢten ayrılmakta ya da yaĢamın bir parçası
olan ölüm ile karĢılaĢabilmektedir. Tüm bu nedenlerden dolayı sahip oldukları bilgiler
de onlarla birlikte yok olup gitmektedir. Oysa uzman kiĢilerin bu bilgi birikimleri YZ
sistemlerini oluĢturan donanımlara aktarıldığında bilginin ömrü uzamaktadır.
Ġnsan beyni uzun yıllardır incelenmekte fakat hala çalıĢma prensibi ve ne iĢe yaradığı ile
ilgili açıklanamayan bölümleri bulunmaktadır. Ġnsan beyni iĢte böyle bir yapıda iken,
doğal zekanın aynen bir baĢka yere kopyalanabilmesinden oldukça uzağız; ancak
YZ‟nın bilgisayar ortamındaki yazılımlar vasıtası ile kopyalanması mümkündür; üstelik
çok büyük maliyetler gerektiren YZ teknolojileri için bu düĢük maliyet sağlamak
anlamına da gelmektedir. Yine insan beyninin bu karmaĢık yapısı yüzünden bir kararı
nasıl aldığımızın belirlenmesi ve sürecin belgelendirilmesi olanaksızdır; oysaki bir YZ
sisteminde gereken belgelendirmeler kolaylıkla sağlanabilir.
Ġnsan sosyal bir varlıktır. Sürekli çevresi ile etkileĢim halindedir. ÇeĢitli sebepler
yüzünden (iĢ/mesleki sorumluluk, akraba iliĢkileri vb.) uykusuz kalabilmekte, yorgun,
halsiz ya da bir konu ile ilgili çalıĢırken baĢka bir konu dikkatini dağıtabilmektedir;
dolayısı ile her olaya aynı gücü sarf edemeyebilmektedirler. YZ sistemlerinin
uykusuzluk, yorgunluk ya da dikkat dağınıklığı gibi problemleri olmayacağından insan
zekasına
göre
daha
istikrarlıdırlar,
üstelik
yararlanılabilmektedir.
17
bir
YZ
sisteminden
tüm
gün
Ġnsanlar yaradılıĢları gereği kimi zaman karĢılarına çıkan bir olayda duyguları ile
hareket edebilmektedirler. Bu bazen iyi sonuçlar doğursa da kimi zaman yanlıĢ kararlar
alınmasına neden olabilmektedir. Bilgisayarlar yardımı ile insanların bu gibi
durumlarda duyguları ile hareket etmelerinden kaynaklanan hataları ortadan kaldırabilen
ve karar verme sürecine hız katan YZ teknolojisidir.
Geleneksel bilgisayar yazılımları daha önceden hazırlanmıĢ algoritmalar çerçevesinde
son derece kısıtlı bir çalıĢma alanına sahiptirler. Fakat YZ teknolojileri öğrenebilen
teknolojiler olduğundan geleneksel bilgisayar yazılımlarının gerçekleĢtiremediği
çıkarsama yapma iĢlemini tatmin edici bir düzeyde gerçekleĢtirebilirler. Bununla
birlikte, YZ‟nin doğal zekaya karĢı birtakım dezavantajları da bulunmaktadır. Yıldız
(2009) bu dezavantajları Ģöyle açıklamıĢtır:
1. Doğal zeka daha yaratıcıdır.
2. Doğal zeka geniĢ kapsamlıdır.
3. Doğal zeka algıya dayalıdır.
Ġnsanlar hayatları boyunca çok değiĢik problemlerle, olaylarla ve durumlarla
karĢılaĢmaktadır. Doğal zeka daha önce hiç görülmemiĢ problemlere çözüm yaratmakta
çok daha yaratıcıdır. Oysaki YZ‟nın yaratıcılığı oldukça kısıtlıdır. Üstelik YZ sistemleri
belirli alanlar için geliĢtirildiklerinden, geniĢ kapsamlı konularda kararlar veremezler.
Doğal zekanın oluĢumuna katkıda bulunan beĢ duyu (görme, duyma, iĢitme, tat alma,
dokunma)
aynı
Ģekilde
YZ‟yı
etkilememektedir.
YZ
sembolik
girdiler
ile
ilgilenmektedir.
2.3.1.4 Yapay Zeka’nın Kısa Tarihçesi
YZ‟nin hedefini; insanoğlunun doğadaki canlılar gibi kendi baĢlarına hareket edebilen,
kendi baĢlarına karar verebilen ve çevresindeki hareketlere göre davranıĢta bulunabilen
nesneler (otomatlar) yaratmak olarak görürsek, tarihini M.Ö. 4. Yüzyıla kadar
götürebiliriz. Antik Yunan devrinde (M.Ö. 400-350) (Cedimağar, 2009), Tarantolu
matematikçi Archytas, tahtadan, havada insan eli değmeden, buharlı bir mekanizma
sayesinde ucuna tutturulduğu çubuğun çevresinde dönebilen bir otomat güvercin inĢa
etmiĢtir. Memluk döneminde 12. Yüzyılda Diyarbakırlı bilim adamı El- Cezeri
18
mekanik-hidrolik ilkelere göre çalıĢan ve konuklara içki getirip bardaklarına
doldurabilen mekanizmalar geliĢtirmiĢtir (Güzeldere, 1998). Bu gibi örneklerin yanı sıra
insanoğlunun YZ‟ya (her ne kadar o yıllarda YZ olarak anılmıyorsa da) olan merakını
1769 yılında Macar asıllı Wolfgang von Kempelen‟in Avusturya Kraliçesi Maria
Theresa‟yı ĢaĢırtmak için “The Turk” isminde satranç oynayan bir “Osmanlı Robotu”
icat etmesinden de görebilmekteyiz (URL1). Kırıkkanat (2004)‟ın “Türk iĢi Ģah mat!”
adlı yazısına göre:
Satranç oynayan bu otomatın, içine monte edilen bir mekanizma ile birkaç kelime
Almanca konuĢabilmesi sağlanmıĢtır (oyunu bitiren son hamlesini yaparken „Schach!‟
diyebilmesi gibi). Rakibinin uygunsuz bir hareketinde kafasını sallayabilen, kurgulu bir
mekanizma ile satranç taĢlarını hareket ettirebilen bu icat Viyana Sarayı‟ndan sonra
Avrupa‟ya, özellikle Alman sosyetesine açılmıĢ, Napolyon Bonapart, Benjamin
Franklin, Edgar Allan Poe gibi isimler ile karĢılaĢıp onları yenmiĢtir. Elbetteki Macar
asıllı dahi, satranç oynayan bir robot icat etmemiĢtir. Masanın altında gizli bir
oyuncunun bulunduğunu, bu oyuncunun kimi zaman Wolfgang von Kempelen kimi
zaman ise bir baĢka kiĢi olduğunu çözebilmek Stefan Stein ve Bernard Fromme‟un bir
buçuk yılını almıĢtır. 1840 yılından sonra Philedephia‟daki Çin Müzesine alınan “The
Turk” 1950‟de çıkan yangın ile yok olmuĢtur. Padernborn‟da bir bilgisayar müzesi olan
Heinz Nixdorf Müzesi küratörü Stefan Stein da bir buçuk yüzyıl sonra yangında yok
olan eserin aynısını, müze restoratörü Bernard Fromme'la birlikte yapmıĢlardır ve bugün
HNF müzesinde sergilenmektedir.
Tok (2010), YZ ile ilgili geliĢmeleri aĢağıdaki gibi sıralamıĢtır:
Tablo 2.3: YZ'nin tarihsel geliĢimi
“YAPAY ZEKA”NIN TARĠHSEL GELĠġĠMĠ
1623
Alman matematikçi Wilhelm Schickard ilk mekanik hesap makinesini
yaptı
1672
Gottfired Leibniz günümüz bilgisayarlarında da kullanılmakta olan ikili
sayı sistemini geliĢtirmiĢtir.
1822-1859
Charles Babbage ve Ada Lovelace, programlanabilir mekanik hesaplama
makineleri yaptılar. Ada Lovelace delikli kartlar kullanarak Babbage‟ın
19
“YAPAY ZEKA”NIN TARĠHSEL GELĠġĠMĠ
makinelerini yeniden programladığı için ilk programcı olarak kabul
edilir.
1923
Karel Čapek‟in R.U.R. (Rossum's Universal Robots) adlı tiyatro oyunu
robot sözcüğünün ilk kez telaffuz edildiği oyun olmuĢtur.
1931
Kurt Friedrich Gödel ünlü eksiklik teoremini ortaya atmıĢtır.
1936
Konrad Zuse Z1 adını verdiği programlanabilir 64K hafızaya sahip bir
bilgisayar yapmıĢtır.
1946
ENIAC adlı oda büyüklüğündeki bilgisayar çalıĢmaya baĢlamıĢtır.
1948
John von Neumann kendini kopyalayabilen bilgisayar programı fikrini
ortaya atmıĢtır ki günümüzdeki bilgisayar virüslerinin temelinde bu
yatmaktadır.
1950
Alan Turing, kavramını ortaya atmıĢtır.
1951
Ġlk YZ programları Ferranti Mark 1 adlı aygıt için Manchester
Üniversitesinde yazılmıĢtır.
1956
Bugün Carnegie Mellon Üniversitesi olarak bilinen Carnegie Teknoloji
Enstitüsü‟nde Allen Newell, John Clifford Shaw ve Herbert Simon‟un
yazdığı Logic Theorist (Mantık Teorisyeni- LT) adlı program
tanıtılmıĢtır. Matematik problemleri çözmeye yarayan bu program ilk
YZ programı olarak kabul edilmektedir.
50‟lerin sonu Margaret Masterman ve çalıĢma arkadaĢları Cambridge Üniversitesi‟nde
60‟ların baĢı
makine çevirisi için semantik ağları geliĢtirmiĢtir.
1958
MIT‟den John Mc Carty LISP dilini yaratmıĢtır.
1960
Joseph Carl Robnett Licklider yazdığı bir makalede insan – makine
simbiyozunu anlatmıĢtır.
1962
Endüstriyel robot üreten ilk Ģirket Unimation kurulmuĢtur.
1965
ELIZA adındaki YZ programı yazılmıĢtır.
1966
Stanford Üniversitesi‟nde ilk hareketli robot “Shakey” üretilmiĢtir.
1973
DARPA‟da TCP/IP olarak adlandırılan protokolde geliĢtirme çalıĢmaları
baĢlamıĢtır.
1974
Ġnternet sözcüğü ilk olarak Vint Cerf ve Bob Kahn tarafından bir yazıda
kullanılmıĢtır.
20
“YAPAY ZEKA”NIN TARĠHSEL GELĠġĠMĠ
1978
Herbert Simon YZ alanındaki önemli adımlardan biri olan “Sınırlı
Rasyonalite” teorisi ile ekonomi dalında Nobel ödülü kazanmıĢtır.
1979
Stanford YZ Laboratuvarı‟ndan Hans Moravec, Stanford arabasını
baĢarıyla denenmiĢtir.
1981
IBM ilk kiĢisel bilgisayarı piyasaya sürmüĢtür.
1993
MIT‟de Cog adlı insan biçimli bir robotun yapımına baĢlanmıĢtır.
1997
Deep Blue adlı süper bilgisayar satrançta dünya Ģampiyonu Gary
Kasparov‟u yenmiĢtir.
1998
Tiger Electronics firması evlere girmeyi baĢaran ilk YZ oyuncağı
Furby‟yi piyasaya sürdü.
1999
Robot köpek AIBO ilk robot evcil hayvan tanıtımıyla piyasaya sürüldü.
2000
Cynthia Braezeal “Kismet” adını verdiği robotunu tanıttı. Bu robot
karĢısındaki
kiĢiyle
konuĢurken
mimikler
ve
yüz
ifadeleri
kullanabilmekteydi.
2005
Honda Firması Asimo adını verdiği YZ sahibi insansı robotu tanıttı.
ASIMO o güne dek yapılmıĢ en becerikli insansı robottu.
2.3.1.5 Yapay Zeka Teknolojileri
YZ‟nın doğuĢundaki tetikleyici unsur olarak bilgisayarların ortaya çıkıĢı görülmüĢtür
(Haton, 1991). Bilgisayar üretimi alanında iddialı olan IBM, 1997 yılında geliĢtirmiĢ
olduğu süper bilgisayar “Deep Blue” ile dünya Satranç ġampiyonu Garry Kasparov‟u ilk kez 1996 yılında “Deep Blue” ile karĢılaĢtığı maçı kazanmıĢtır (Encyclopedia
Britannica)- ikinci kez karĢı karĢıya getirmiĢtir (IBM). Maç bu kez “Deep Blue”nun
zaferiyle noktalanmıĢtır. Ġlk kez bir bilgisayarın, dünya satranç Ģampiyonunu yendiğine
tanıklık edilmiĢtir. Satranç oyunu bir bilgisayara karĢı oynanırken 64 karelik lineer bir
tahta üzerinde oynansa da bu oyuncu bilgisayar için önemli bir Ģey ifade etmemektedir.
Çünkü oyun kapalı bir dünyadır, kuralları daha önce belirlenmiĢtir. Üstelik bir sonraki
hamleyi
gerçekleĢtirmeden
önce
binlerce
hamle
bilgisayar
tarafından
denenebilmektedir. Oyuncu kiĢi ise uykusuz, dikkatsiz ya da heyecanlı olabilmekte, bu
özellikleri de oyun performansını etkilemektedir (Güzeldere, 1998).
21
Öztemel (2006)‟e göre; YZ alanındaki bu çeliĢkilere cevap aranırken geliĢen teknoloji
ile birçok farklı YZ alt dalı ortaya çıkmıĢtır ancak bunların çoğunun laboratuar
çalıĢmaları düzeyinde olduğu bilinmektedir. Uzman Sistemler (Expert Systems),
Bulanık Mantık ve Bulanık Kümeler (Fuzzy Logic and Fuzzy Clusters), Yapay Sinir
Ağları (Artificial Neural Networks), Genetik Algoritmalar (Genetic Algorithm) YZ
teknolojilerine örnektir. Hesaplanacak verilerin belirsizlik ve muğlaklık içermesi
Bulanık Uzman Sistem, Bulanık Sinir Ağları, Genetik Yapay Sinir Ağları gibi melez
sistemlerin geliĢtirilmesine önayak olmuĢtur (Öztemel, 2006).
2.4
2.4.1
YAPAY SĠNĠR AĞLARI
Yapay Sinir Ağları Nedir?
“Bağlantılı Ağlar (Connectionist Networks)”, “Paralel DağıtılmıĢ Ağlar (Distributed
Networks)”, Nöromorfik Sistemler (Neuromorfic Systems)” olarak da adlandırılan
(Öztemel, 2006) YSA‟larının literatürdeki tanımlarından birkaç tanesi aĢağıda yer
almaktadır.
YSA‟ları Öztemel (2006)‟e göre, insan beyninin özelliklerinden olan öğrenme yolu ile
yeni bilgiler türetebilme, yeni bilgiler oluĢturabilme ve keĢfedebilme gibi yetenekleri
herhangi bir yardım almadan otomatik olarak gerçekleĢtirmek amacı ile geliĢtirilen
bilgisayar sistemleridir. Ayrıca “Yapay sinir ağları, insanlar tarafından gerçekleĢtirilmiĢ
örnekleri (gerçek beyin fonksiyonlarının ürünü olan örnekleri) kullanarak olayları
öğrenebilen, çevreden gelen olaylara karĢı nasıl tepkiler üretilebileceğini belirleyebilen
bilgisayar sistemleridir” Ģeklinde de tanımlamaktadır.
Görz (2005) çalıĢmasında; “Yapay sinir hücresi ağları her Ģeyden önce öğrenme
becerisi, belirsizliğin temsili ve iĢlenmesi, yüksek derecede paralel eylem ile hata
toleransıyla tanımlanan iĢleme sistemleridir” Ģeklinde ifade etmektedir.
Yine Öztemel (2006)‟e göre; YSA‟ları ile çözmek istediğimiz problemin, ya yalnızca
YSA‟ları ile pratik çözümlerinin üretilebilmesi ya da YSA‟ları kullanıldığında
problemin diğer çözüm yollarından daha kolay ve etkin çözümler sunması
gerekmektedir. BaĢarılı çalıĢmalar incelenmiĢ; sonuçta YSA‟larının özellikle bir
22
matematik modelin ya da algoritmanın bulunmaması halinde sıkça kullanıldığı sonucu
tespit edilmiĢtir.
YSA‟ların en önemli özelliklerinden biri de karmaĢık bir çoklu-giriĢ ve çoklu-çıkıĢ
sistemini modelleyebilmesi olarak görülmektedir. YSA‟ları bu özelliğinden dolayı bir
çeĢit “yumuĢak” matematiksel modelleme metodu gibi kullanılmaktadır. Verilen çok
boyutlu giriĢ çıkıĢ veri kümelerinde, YSA‟ları gelecek vadeden modelleme servisi
olarak görülmektedir (Chow ve Cho, 2007).
YSA‟ları konusunda yapılan çalıĢmalar, sinir sisteminin bir bölümü olan Merkezi Sinir
Sistemi ile hatta onun da bir alt bölümü olan beyin ve iĢleyiĢi örneklenerek
sürdürülmüĢtür. YSA‟larının yapısında insan beynindeki biyolojik sinir ağlarından
esinlenilmiĢtir (Srinivasan, K., Fisher, D., 1995). Diğer bir deyiĢle YSA‟ları,
bilgisayarda insan beyni davranıĢlarını taklit etmek için tasarlanmıĢtır (Bosque, 2004).
Bu nedenle YSA‟larını kavrayabilmek için önce doğal nöron ve fizyolojik özellikleri
araĢtırılmıĢ ve yapısı incelenmiĢtir. Daha sonra doğal nöronlar arasındaki bağlantılar ve
özellikleri incelenerek, beyin ile YSA arasındaki iliĢki açıklanmaya çalıĢılmıĢtır.
2.4.2
Doğal Nöron ve Özellikleri
Ġnsan sinir sistemi bir doğal sinir ağıdır. Bu ağ bedenin her yerine yayılmıĢtır, her birimi
birbiri ile iliĢki halinde olan ve bir kimyasal iletiĢim sistemidir (Gülseçen, 1993). Bir
YSA ağı, biyolojik sinir sistemi iĢlemlerini modelleyen genel hesaplama paradigmasıdır
(Hu ve Hwang, 2002) Ģeklinde ifade edilebilir. Gülseçen (1993), doğal nöron ve
özelliklerini Ģöyle ifade etmiĢtir:
Sinir sistemi iki tür hücreden oluĢur: nöron ve glia (gliall) hücreleri. Nöron, temel sinir
hücresidir, çünkü öğrenme, hatırlama, düĢünme, algılama gibi biliĢsel davranıĢları da
içeren her türlü insan davranıĢının temelinde bulunur Glia hücrelerinin iĢlevleri tam
anlamıyla açıklığa kavuĢmamıĢtır ancak bu hücrelerin nöronların çalıĢmasını
destekleyici ve onları besleyici bir iĢlevi olduğu ve insan belleğinde önemli rol oynadığı
kabul edilmektedir. Bir biyolojik nöron nöron üç kısımdan meydana gelmektedir: hücre
gövdesi, dentritler ve akson (Mehrotra ve diğ., 2000; Cücenoğlu, 1992 ve Akpınar,
1991‟ten aktaran Gülseçen, 1993).
23
Hücre gövdesi; hücre çekirdeği, hücre sıvısı ve hücre zarından (membran) oluĢan
bölümdür. Bir sinir hücresi aktif özelliklerini, hücre zarında meydana gelen ve hücrenin
üreteceği sinyal için enerji sağlayan biyofiziksel olaylar sonucunda kazanır (Gülseçen,
1993).
Dendritler, hücre gövdesini çevreleyen ağaç dalları benzeri uzantılardır ve diğer
nöronlarla olan bağlantıyı sağlarlar Akson, hücre gövdesinden çıkarak kuyruk
biçiminde uzanan nöron bölümüdür. Bazı nöronların aksonları miyelin kılıfı (miyelin
sheath) denen bir zar ile kaplıdır. Bu zar sinir akımının akson üzerinden daha hızlı
iletilmesini sağlar. Sinir akımları elektro-kimyasal süreçlerdir. Bir nöronun dendiriti ona
yakın diğer nöronların faaliyetlerinden etkilenir ve bu uyarım aksonda bir elektrik
yüklenmesine yol açar. Bir nörona diğer nöronların bağlantısı hücrenin muhtelif
yerlerinden olabilir. Bu bağlantı noktalarına sinaps veya sinaptik birleĢme yerleri
(sinaptic klab) adı verilir. Yunanca synaptein, birbirine bağlamak demektir (Andreasen,
2009). Sinapsta akson uçlarında bulunan sinirsel aktarıcılar (neurotransmitters) vasıtası
ile sinirsel akım bir nöronun aksonundan bir baĢka nöronun dendritlerine ulaĢır. Her bir
nöron tarafından kabul edilen sinaps sayısı, 100 ile 100.000 arasında değiĢmektedir
(Mehrotra ve diğ., 2000). Bağlantılar sonucunda sinapslarda “GiriĢ Potansiyeli” denen
gerilim farkları meydana gelir ve bunlar nöronun ana gövdesi boyunca yayılır
(Gülseçen, 1993).
2.4.3
Yapay Sinir Ağları’nın Kısa Tarihçesi
Chow ve Cho, 2007 çalıĢmalarında YSA‟nın kısa tarihçesini Ģöyle ifade etmiĢtir:
Ġlk sinir ağı modeli 1943 yılında bir nörobiyolog olan Mc Culloch ve istatistikçi Pitts
tarafından önerilen modeldir. Mc Culloch ve Pitts, “Bulletin of Mathematical
Biophysics”de “A logical Calculus of Ideas Imminent in Nervous Activity” adında bir
bildiri yayınlamıĢlardır (Hu & Hwang, 2002). Bu bildiri John von Neumann‟ın
elektronik beyin olarak adlandırdığı modern dijital bilgisayarların geliĢmesine esin
kaynağı olmuĢtur. Bu sıralarda Frank Rosenblatt‟ın perceptron adı verilen sinir ağını
bulmasını bu bildiri sağlamıĢtır (Hu & Hwang, 2002). Ġlk sinir ağı modeli, çok basit
elektronik donanım uygulanan modeldir. Her girdisi için farklı ağırlıkları olan ve
çıktıdan önce bir eĢik bulunduran çok giriĢli toplama aletidir. Bu modelin önemi o
24
zamanlarda herhangi bir aritmetik ya da mantıksal fonksiyonu hesaplayabilmesi
yeteneğiydi. Bu dönem 1958‟de, Frank Rosenblatt ve Wightman ilk perceptron tipini
önerene kadar böyle devam etmiĢtir. Mark I Perceptron makinesinin ilk uygulaması
örüntü algoritmasıdır. Deneylerinde Perceptron modelinin örüntü (pattern) algılama
yeteneğini değiĢik basit karakterleri algılaması ile göstermiĢtir. 60‟ların ortalarında
Minsky ve Papert‟in bildirisinde basit perceptronun XOR problemini çözemediği
matematiksel olarak ispatlanmıĢtır. Bu bildiri ile YSA‟ları ile ilgili çalıĢmalar 20 yıllık
suskunluğa girmiĢtir.
80‟lerin ortalarında Sinir Ağları çalıĢmaları tekrar geliĢmeye baĢlamıĢtır. Bu Hopfield,
Amari, Grossberg, Kohonen, Oji gibi ünlü birçok bilim adamının katkıları ile
gerçekleĢmiĢtir. 1982‟de Hopfield, insanların Ģimdiki sinir ağı çağının bir açılıĢı olarak
görüp saygı duydukları iki önemli makalesini yazmıĢtır. Hopfield, hesaplama
problemlerini çözmek için etkin bir Ģekilde kullanılabilen fiziksel sistemleri modelleyen
yeni bir fikir ortaya çıkarmıĢtır. Enerji fonksiyonu kullanarak yeni tip bir ağ mimarisi
kurmak için biçimsiz bir desen ağa gösterildiğinde desenin, benzer sınıfa ait bir baĢka
desen ile iliĢkili olduğunu göstermiĢtir. Hopfield ağları bu yüzden bazen “iliĢkili ağlar”
olarak da anılmaktadırlar. Hopfield ağları, verilen kesin baĢlangıç durum enerjisi, baĢka
zaman için en düĢük enerjili bir değere yakın sayılacaktır. Bu benzer sınıftan desenlere
yakınsama kapasitesini açıklamak için kullanılmaktadır.
80‟lerin baĢında Gail A. Carpenter ve Stephen Grossberg, “Adaptive Rezonance Theory
– ART”yi geçmiĢteki rekabete dayalı çalıĢmalarını göz önüne alarak kurmuĢlardır.
1976-1986 döneminde ART insan bilgisi iĢleme teorisi olarak tanıtılmıĢtır. Kohonen‟in
Self Organising Map‟i gibi kendi kendini örgütleyen sistemler üzerinde çalıĢılmaktaydı.
ART bir öğretmen olmadan öğrenme yeteneğine sahipti ve biliĢsel davranıĢsal modeller
ile uyumlu idi. Kategori bulma yeteneğine sahip, rekabete dayalı öğrenmeyi temel
alarak türetilmiĢtir. ART, öğretmenli/öğretmensiz kategori öğrenmesi ve desen
sınıflandırma yapabilen sinir ağı tipi olarak yaygın Ģekilde kullanılmıĢtır. 1988‟de ise
George Cybenko sinir ağlarının evrensel fonksiyonel yaklaĢım yeteneğini kanıtlayarak
çok önemli bir eser yayınlamıĢtır.
25
1989‟da Funahashi, Hornik ve Stinchcombe bulgularını Çok Katmanlı Perceptron
ağının evrensel tahminci olduğunu kanıtlayarak raporlamıĢlardır.
Sonraları YSA‟ları pek çok fen ve mühendislik alanında uygulanmıĢtır. Bugünlerde ise
basit desen tanıma probleminden, çok karıĢık DNA (gen) algılama ve sınıflandırma
problemlerine kadar geniĢlemiĢtir. YSA uygulamaları fizik bilimi, finans, ekonomi ve
sosyal bilimlere kadar uygulama alanı bulunmaktadır.
2.4.4
Yapay Sinir Ağlarının ÇalıĢma Prensibi
Verilen bir iĢin nasıl tamamlanacağının bilinmemesi veya onu yapmak için belirli bir
algoritmanın tasarlanamaması durumunda programlanabilen sistemlere değil eğitilebilen
sistemlere ihtiyaç vardır. Bu tür sistemler için en iyi model YSA‟larıdır ve onların
“eğitilebilme” ve “öğrenebilme” özelliği halen yoğun bir Ģekilde araĢtırılmalarının
sebebidir. Bu yoğun çalıĢmalar gelecekte programlanabilir sistemlere karĢın daha çok
eğitilebilen sistem olacağına iĢaret etmektedir ama günümüzde bazı alanlarda YSA‟ları
çok iyi geliĢtirilmiĢ tekniklerin yerini yine de alamamaktadır (Adorf, H.‟den aktaran
Gülseçen, 1993).
YSA‟larındaki sinir hücreleri paralel bir düzende ve genellikle 3 katman halinde bir
araya gelmektedirler. YSA‟larında hücreler arasındaki bağlantılar graflar ile ifade edilir.
Bu graflar düz ya da dairesel olabilir (Hu & Hwang, 2002). Girdi Katmanı iĢlem
elemanlarının dıĢ dünyadan bilgileri aldıkları yerdir. Ara Katman bilgilerin iĢlenerek
Çıktı Katmanına gönderildiği ara birimdir. Çıktı katmanı ise ağa verilen bilgi setine
karĢı çıktı setinin üretildiği yerdir. YSA‟larına girilen bilgiler önce vektör Ģekline
dönüĢtürülmektedir. Sonuçta ise girdi vektörüne uygun bir çıktı vektörü elde
edilmektedir. Fakat YSA‟ları girdi vektörünü nasıl çıktı vektörüne dönüĢtürdüğü
hakkında bilgi vermemektedir. YSA‟ları bu yönüyle mühendislikte “Kara Kutu” olarak
da görülmektedirler (Öztemel, 2006).
26
Çıktı Bilgileri
Girdi Bilgileri
YAPAY SĠNĠR AĞLARI
Girdi
Katmanı
Ara
Katmanlar
Çıktı
Katmanı
ġekil 2.1: Yapay sinir ağı katmanlarının birbirleriyle iliĢkileri (Öztemel, 2006)
Biyolojik sinir hücrelerinde olduğu gibi YSA‟larında da yapay sinir hücreleri vardır.
Bunlar mühendislik biliminde iĢlem (proses) elemanı olarak adlandırılırlar (Öztemel,
2006). Yine Öztemel (2006)‟e göre bir iĢlem elemanının 5 temel bileĢeni vardır:
Ağırlık
1
Girdi
1
Girdi
2
Girdi
3
Girdi
4
Ağırlık
2
Ağırlık
3
Toplama
Fonksiyonu
Aktivasyon
Fonksiyonu
F(NET)
F(NET)
Çıktı
Ağırlık
4
ġekil 2.2: Yapay sinir hücresinin yapısı
1. Girdiler: Bir iĢlem elemanına dıĢ dünyadan ya da bir baĢka iĢlem elemanından
gelen ve ağın öğrenmesi istenen örnekler tarafından belirlenen bilgilerdir
(Elmas, 2007; Öztemel, 2006).
2. Ağırlıklar: Bir iĢlem elemanına gelen bilginin önemini ve iĢlem elemanı
üzerindeki etkisini ifade eder. Bir ağırlığın artı veya eksi olması, etkisinin pozitif
ya da negatif olduğunu, ağırlığın sıfır olması ise herhangi bir etkinin olmadığını
gösterir (Elmas, 2007; Öztemel, 2006).
3. Toplama ĠĢlevi: Bir iĢlem elemanına gelen net girdiyi hesaplar. Çok değiĢik
fonksiyonlar kullanılabileceği gibi en çok ağırlıklı toplam bulunmaktadır ve
aĢağıdaki bağıntı ile ifade edilmektedir. AĢağıdaki eĢitlikte G girdileri, A
ağırlıkları, n ise bir iĢlem elemanına gelen girdi sayısını göstermektedir.
27
(2.1)
Yukarıdaki formülün her zaman kullanılması Ģart değildir. Kimi zaman
kullanılan YSA modeli toplama fonksiyonunu kendiliğinden belirlemektedir.
Bunun
yanı
sıra
toplama
fonksiyonunun
deneme
yanılma
yolu
ile
bulunduğundan söz edilmektedir.
o Çarpım Fonksiyonu
(2.2)
NET=
o Maksimum Fonksiyonu
NET= Max(
(2.3)
)
o Minimum Fonksiyonu
NET= Min(
(2.4)
)
o Çoğunluk Fonksiyonu
(2.5)
NET=
kullanılan diğer toplama fonksiyonlarındandır (Elmas, 2007). Bir problem için
kullanılabilecek en uygun toplama fonksiyonunu belirleyen bir formül henüz
bulunamamıĢtır.
4. Etkinlik (Aktivasyon) ĠĢlevi: iĢlem elemanına gelen net girdiyi iĢleyerek
üretilecek çıktıyı belirler. Lineer Fonksiyon, Step Fonksiyonu, Sinüs
Fonksiyonu,
vb.
etkinlik
iĢlevi
olarak
kullanılabilmektedir.
Toplam
Fonksiyonunda olduğu gibi etkinlik iĢlevi için de belirleyici kesin bir yöntem
28
bulunmamaktadır. Bir sinir hücresi etkinlik iĢlevinin eĢik değerinin altında çıkıĢ
üretemez, eĢik değerin üzerinde çıkıĢ üretir (Elmas, 2007).
5. Hücrenin Çıktısı: Etkinlik ĠĢlevinin çıktısıdır. Çıktı dıĢ dünyaya veya baĢka bir
iĢlem elemanına girdi olarak gönderilebilir.
Ayrıca Öztemel (2006)‟in çalıĢmasına göre, YSA‟ları, yapay sinir hücrelerinin bir araya
gelmesi ile oluĢur; ancak hücreler rastgele bir araya gelmez. Genellikle 3 katman
halinde (girdi katmanı, ara katman, çıktı katmanı) ve birbirlerine paralel olarak bir araya
gelirler. Girdi katmanı dıĢ dünyadan aldığı bilgileri iĢlemeksizin doğrudan ara
katmanlara iletmekle yükümlüdür. Ara katmanlar, girdi katmanından gelen bilgileri iĢler
ve çıktı katmanına gönderir. Çıktı katmanı ise gelen girdilere uygun çıktıyı üretir ve dıĢ
dünyaya gönderir.
G
i
r
d
i
Ç
ı
k
t
ı
S
e
t
i
S
e
t
i
Ara
Katmanı
Çıktı
Katmanı
Girdi
Katmanı
ġekil 2.3: Bir YSA örneği
Girdi setinde çözümlenmek istenen probleme göre belirlenen parametrelerden
oluĢturulmuĢ vektörler vardır. Vektörlerden biri YSA‟larına gösterildiğinde ağ ona
uygun çıktıyı üretmektedir. Doğru sonuca ulaĢmak için bir sonraki vektör ağa
gösterilmeden ağırlıklar değiĢtirilir. YSA‟ları ise bu süreçte nasıl sonuca ulaĢtığı
hakkında bilgi vermemektedir.
29
Amaç YSA girdilerine doğru çıktılar üretecek ağırlıkları bulmaktır. Ağa öncelikle bir
eğitim seti gösterilir. Bu sayede YSA‟ları ilgili problemler için genellemeler
yapabilecek Ģekilde eğitilmesi sağlanmaktadır; baĢlangıçta rastgele atanan ağırlıklar
süreç içerisinde değiĢtirilmektedir. Eğitim tamamlandıktan sonra bir test seti ile ağın
eğitim sonucunda gerçekten öğrenip öğrenmediği saptanır. Test sürecinde ağırlıklar
değiĢtirilmez. YSA‟larında bilgi ağırlık değerlerinde saklanmaktadır. Bir ağda ağırlık
değerleri ne kadar doğru ise ağ da o kadar baĢarılı demektir. Bilginin dağıtılmıĢ olması
ağdaki bir bağlantı kaybında bile ağın çalıĢmasını sürdürmesini sağlamakta ve bu
özellik YSA‟larının oldukça güçlü ve önemli bir özelliği olarak görülmektedir.
2.4.5
Yapay Sinir Ağı Mimarisi
Biyolojik sinir ağlarında nasıl bir nöron bir baĢka nörona sinyal gönderebiliyor ve bir
baĢka nörondan gelen sinyalleri alabiliyorsa, YSA‟larında da durum benzer Ģekilde
gerçekleĢmekte, YSA‟ları biyolojik sinir hücrelerini yapay bir biçimde taklit etmektedir.
Schofield, (1998) canlı sinir sisteminde nöronlar arasındaki bağlantıların, dentrit ile
aksonları, ağırlıklı girdilerin, biyolojik sinapsları, eĢik fonksiyonunun da biyolojik
somaların etkinliğini temsil etmekte olduğunu belirtmiĢtir. Bir YSA‟da dağıtık
hesaplamayı kolaylaĢtırmak için çoklu nöronlar bir araya gelmektedir (Hu & Hwang,
2002). Uygulamalar tarafından YSA‟ları basitçe algılanabilir olsa da, her problem
birbirinden çok farklıdır. Örneğin, her birinin eğitim periyodu yeni ölçümler ve testler
içermektedir ve Ģimdiye kadar, eğitim hatasını en kısa sürede en aza indirgemek için
birçok eğitim algoritması geliĢtirilmiĢtir (Chow ve Cho, 2007).
Öztemel (2006)‟e göre, YSA‟ları birbirine paralel ve hiyerarĢik bir biçimde bağlanmıĢ
olan ve iĢlem elemanı da denen yapay hücrelerden oluĢmaktadır. Genellikle YSA‟ları,
bir olayı yorumlayarak benzer bir olayda benzer karar vermeyi sağlamaktadır. Elbette ki
bu; ağlara örneklerin teker teker tanıtılması ile gerçekleĢmektedir. Buna ağın eğitilmesi
denir. Ağ baĢta rastgele atadığı iĢlem elemanlarının ilk değerlerini örnekleri tek tek
tanıdıkça ağırlık değerlerini öğrenme kuralları uyarınca değiĢtirirler (Elmas, 2007).
Doğru ağırlık değerine ulaĢtığında ağ artık benzer durum ve olaylar karĢısında
genellemeler yapacak ve karar verecek düzeye gelmiĢ demektir. Bu iĢleme ağın
öğrenmesi denmektedir. Sonraki aĢamada ağ farklı örnekler ile test edilir. Test sırasında
30
ağırlık değerleri değiĢmez. Bu testlerin sonuçları ağın öğrenmesi hakkında bizleri
bilgilendirir.
Elmas (2007) 1950‟li yıllardan günümüze kadar çoğu araĢtırmacının öğrenmenin daha
iyi gerçekleĢtirilebilmesi için Hebb Kurallarını temel alarak çalıĢmalar yaptığını,
çalıĢmalarda genellikle öğrenme değiĢkenleri ve ağırlıkların nasıl ayarlanması gerektiği
konusunu ele aldıklarını ve bunlara uygun öğrenme yöntemleri geliĢtirdiklerini
belirtmiĢtir.
Literatürde
YSA‟larının
öğrenme
yöntemleri
(stratejileri)
farklı
Ģekillerde
gruplandırılmıĢtır. Öztemel (2006), YSA‟larında öğrenme stratejilerini,
YSA'larında Öğrenme Stratejileri
Denetimli (DanıĢmanlı) (Supervised) Öğrenme
Denetimsiz (DanıĢmansız) (Unsupervised) Öğrenme
Destekleyici (Reinforcement) Öğrenme
ġekil 2.4: YSA'larında öğrenme stratejileri (Öztemel, 2006)
olmak üzere 3‟e ayırırken, Elmas (2007) temelde öğrenme yöntemlerinin DanıĢmanlı
(Supervised) ve DanıĢmansız (Unsupervised) Öğrenme olarak iki ana gruba ayırmıĢ,
aĢağıdaki Ģekilde özetlenmiĢtir.
31
DanıĢmanlı
Öğrenme
DanıĢmansız
Öğrenme
Perceptron
Rekabete Dayalı
Öğrenme
Delta Öğrenme
Hebbian Öğrenme
Geri Yayılımlı
Kendi Kendine
Öğrenme
Eğimli ĠniĢ
ġekil 2.5: YSA'larında Öğrenme Yöntemleri
Denetimli (DanıĢmanlı) (Supervised) Öğrenme
YSA‟larının geliĢiminde “Denetimli YSA‟ları” önem taĢımaktadır. Denetimli ağların
ayırt edilebilir özelliği, öğrenme sürecinde bir ”öğretmen” içermesidir. Öğrenme süreci
için ağ girdi-çıktı çiftlerinden oluĢan çok sayıda eğitim veri örneklerine ihtiyaç
duymaktadır. Eğitim veri kümesinde beklenen çıktı, ağın öğrenmesi için bir öğretmen
gibi hareket eder. Denetimli ve Denetimsiz Öğrenme arasındaki temel fark, denetimli
öğrenmede beklenen çıktıların tedarik edilmesindir (Heaton, 2008). Eğitim sürecinde
beklenen çıktı ile sistem çıktısı arasındaki fark hata sinyalidir. Sistem çıktısının
beklenen çıktıya olabildiğince yaklaĢması için ağ ağırlıkları hata sinyallerine göre
birbiri ardına gelen eğitim yöntemi süresince ayarlanmaktadır. Eğitim yöntemi, sıfır ya
da daha önce belirlenen bir değere yakın oluncaya kadar devam eder. Tüm eğitim
örneklerinin toplam hatası, ağın performans ölçüsü olarak (sistemin serbest parametreli
fonksiyonu) görülebilmektedir. Bu gibi fonksiyonlar çok boyutlu hata yüzeyi (ağ serbest
parametreli koordinat gibi davranır) oluĢturabilmektedirler. Öğrenme süresince sistem
azar azar hata yüzeyindeki en uç noktaya hareket etmektedir (Chow ve Cho, 2007).
Denetimli ağ yapıları iĢlenecek olan verinin doğasına ve karmaĢıklığına dayanmaktadır.
Kabaca dört ana sınıfa ayrılmaktadır. Chow ve Cho, 2007 çalıĢmalarında bu yapıları
aĢağıdaki gibi özetlemiĢtir:
1. Mc Culloch ve Pitts Modeli (MCP Model): 1943 yılında Mc Culloch ve
yardımcısı
Pitts,
basit
bir
nöron
32
modellemek
için
elektrik
devresi
kullanmıĢlardır. Bu bir nöron modellemek için kullanılan ilk elektronik
modeldir.
MCP temelde, toplayan yükseltici ve değiĢken dirençlerden meydana
gelmektedir. Ağırlıklar, dirençlerin değiĢtirilmesi ile ayarlanmaktadır. Voltaj
karĢılaĢtırıcısından yapılan eĢik aleti, eğer toplanan sinyaller eĢik değeri aĢıyor
ise 1, eĢik değerden küçük ise 0 üretmektedir.
2. Perceptron Model: 1962 yılında Frank Rosenblatt tarafından geliĢtirilen en
basit YSA modelidir. Elmas (2007) tarafından, “Tek katmanlı ileri beslemeli
ağların eşik değerle etkin olan aktarım işlevini kullanarak hata düzelten
öğrenme algoritması” olarak tanımlanmıĢtır.
x1
.
.
x2
.
.
w11
.
.
.
.
.
wmn
.
.
y1
.
.
y2
.
.
xn
.
.
ġekil 2.6: Tek katmanlı ileri beslemeli bir ağ (Elmas, 2007)
Perceptron Modeli‟nin geliĢiminde MCP‟nin rolü büyüktür. ġimdilerde bu basit
ağlar çok az kullanılmaktadır fakat YSA‟larına tarihi katkısı bakımından çok
önemlidir.
Elmas (2007) Perceptron Öğrenme Algoritması‟nda genel olarak, tüm ağırlıklara
rastgele değer atanması, ağın çıkıĢının hesaplanması, ağırlıkların güncellenmesi,
ortalama hata değerinin hesaplanması iĢlemleri eğitim çifteleri bitene kadar
devam ettirildiğini belirtmiĢtir. Hata değeri sıfır ise eğitim bitirilir, hata değeri
sıfır değilse sıfır yapılır ve iĢlemler tekrar ettirilir.
33
Ġki katmanlı perceptron ağı lineer ayrılamayan sınıflandırma problemlerinde
kullanılabilir. Bu model Çok Katmalı Ġleri Beslemeli modelin geliĢmesinde rol
oynamıĢtır.
3. Çok Katmanlı Ġleri Beslemeli Ağ: Basit olarak bir ileri beslemeli ağ bir girdi
katmanı ve tek bir nöron katmanından oluĢur. Tek katmanlı ileri beslemeli ağ
lineer olmayan ayrılabilir desenleri sınıflandırmada yetersizdir. Çok Katmanlı
Ġleri Beslemeli Ağlar, sık kullanılan, denetimli öğrenen sinir ağı mimarisi haline
gelmiĢtir. Ġleri beslemeli mimaride tüm bağlantılar çevrimsizdir ya da giriĢ
katmanından çıkıĢ katmanına tek yönlüdür.
Çok Katmanlı Ağlar‟da çözülecek problem ile ilgili bilgiler girdi katmanından
alınmakta, çıktı katmanından bilgiler dıĢ ortama iletilmektedir. Girdi katmanı ile
çıktı katmanı arasında Gizli Katman adı verilen katman bulunmaktadır. Buradaki
nöronlara da gizli nöronlar adı verilmektedir. Birden fazla gizli katman
bulunabilmektedir (Kaynar ve TaĢtan, 2009). Bir katmandaki her nöron bir
sonraki katmandaki diğer tüm nöronlar ile bağlantılı ise ağ tam bağlantılıdır.
Lineer ayrılamayan sınıflandırma problemlerini çözmekte (bunlardan en bilineni
XOR problemidir) ve karmaĢık görevleri yerine getirebilmektedir.
Geri-yayılım Algoritması (Backpropagation Algorithm), öğrenme algoritmaları
içinde en popüler olanıdır (Haylin, 1999; Reed, 1999; Göktepe ve diğ., 2005).
Geri yayılım algoritmasının amacı, ağda ilerleme sonucu elde edilen hatayı
geriye dağıtarak ağırlıkları en iyi sonucu ortaya koyabilmek için düzenlemektir.
Buna GenelleĢtirilmiĢ Delta Kuralı da denmektedir (Aslan ve diğ., 2006). Geriyayılım Algoritması ve GenelleĢtirilmiĢ Delta Kuralı, bu tezde Malzeme ve
Yöntem Bölümü‟nde daha geniĢ ele alınacaktır.
4. Tekrarlı Ağlar: Ağda tek ya da birden çok katman olabilir. Ġleri beslemeli
ağlardan en önemli farkı bir ya da daha fazla geri besleme düğümlerine sahip
olmalarıdır. Tekrarlı ağlar çok sayıda ileri ve geri besleme bağlantıları
içerdiğinden karmaĢık dinamikler sergilemektedirler. Bu özellik onlara zaman
ve dinamiksel problemlerde ileri beslemeli ağlara üstünlük sağlamaktadırlar.
34
Daha küçük boyuttaki tekrarlı ağ mimarisi ile karmaĢık tipteki bir ileri beslemeli
ağ mimarisi denk gelebilmektedir.
Denetimsiz (Unsupervised) Öğrenme
Denetimli Sinir ağlarının aksine denetimsiz ağlar bir eğitim veri setinde öğretmene
ihtiyaç duymamaktadırlar (Rojas, 1996). Çünkü birçok durum için ağdan beklenen
çözüm bilinmemektedir. Denetimsiz YSA‟ları kendi kendini örgütleyen bir davranıĢ
sergilemektedirler. Denetimsiz Öğrenme‟de herhangi bir denetmen/öğretmen mevcut
değildir, yalnızca girdi verisi bulunmaktadır (Alpaydın, 2004).
Bu nedenle; ağın
kendisi, verilen girdi için hangi çıktının olması gerektiğine karar vermekte ve
tanımaktadır (Rojas, 1996). Eğitim sırasında ağ, istenen ya da hedef çıkıĢ bilgileri
olmadan, giriĢ bilgilerinin özelliklerine göre ağırlıklarının değiĢmesini sağlamaktadır
(Elmas, 2007). Denetimsiz Öğrenmeye, Hebbian Öğrenme, Grossberg Öğrenme,
Kohonen‟in özörgütlemeli harita ağı örnek olarak verilebilir (Elmas, 2007).
Destekleyici (Reinforcement) Öğrenme
Bu tip öğrenmede, ağın öğrenmesi için denetimli ağlarda olduğu gibi bir öğretmen olur
fakat ağın üretmesini istediğimiz çıktı seti ağa gösterilmez. Çıktıların üretilmesi ağdan
beklenir. Üretilen çıktının doğru veya yanlıĢ olduğuna dair çıkan sinyal dikkate alınarak
öğrenme süreci devam ettirilir (Öztemel, 2006).
2.4.6
Yapay Sinir Ağlarının Avantajları ve Dezavantajları
YSA‟larının avantajlarını ve dezavantajlarını, Öztemel (2006)‟e dayanarak aĢağıdaki
gibi özetleyebiliriz.
YSA’larının Avantajları:

Bu
sistemler
bilgileri
hem
geleneksel
programlardan
hem
de
YZ
teknolojilerinden farklı bir biçimde iĢler ve bilgilerini ağın üzerinde saklar, bir
veritabanı kullanmaz.

Olaylar karĢısında bir YSA‟nın en verimli Ģekilde karar alması istenirse örnek
olayları ağa çok iyi tanıtılmıĢ olması gerekmektedir. Bu örneklerin toplanması
ve ağa tanıtılması titizlikle yapılmalıdır. Tanıtma iĢleminden sonra ağ kendi
35
mekanizmaları yardımı ile örnek olaylar arasındaki iliĢkiyi belirler, böylelikle
ağın eğitimi gerçekleĢtirilir.

YSA‟ları eğitildikten sonra belirsiz bilgileri önceden gördükleri örnekler ile
telafi edebilmektedirler.

YSA‟nın öğrenebilme gibi bir yeteneği olduğu için daha önce görmediği
örneklere bilgiler üretebilmektedir. Algılamaya yönelik bilgileri iĢlemede daha
çok kullanılmaktadırlar.

YSA‟ları, bazen ağa verilen örüntüdeki eksik bilgileri tamamlayabilmektedirler.
Eksik bilgiler ile çalıĢabilmektedirler fakat bu ağın performansını olumsuz
yönde etkiler anlamına gelmemektedir. Asıl olan; eksik bilginin ağ için
önemidir. YSA‟larındaki bazı hücrelerin iĢlevini kaybetmesi durumunda ağın
performansı değiĢebilir fakat çalıĢmaya devam edebilmektedir.

Bilgiler ağın üzerinde tutulduğundan, dağıtık bir bellek yapısı karĢımıza
çıkmaktadır.

YSA‟ları yalnızca sayısal ifadeler ile çalıĢabilmektedirler.

YSA‟larındaki iĢlem elemanlarının diziliĢ Ģekilleri ve bilgi iĢleme yetenekleri
değiĢik ağ modellerini ortaya çıkarmaktadır. Modellere bağlı olarak ise
YSA‟larının karakteristik özellikleri değiĢmektedir.
YSA’larının Dezavantajları:

Günümüzde çoğu makinelerin çoğu seri Ģekilde çalıĢmakta olup üzerlerinde
paralel iĢlemleri yapmak zaman kaybına yol açmaktadır. YSA‟larının gerçek
zamanlı
veri
iĢleyebilmeli
paralel
iĢlemciler
üzerinde
çalıĢmalı
ile
sağlanabilmektedir. Üstelik bir ağın nasıl oluĢturulması gerektiği tam olarak
bilinmemektedir. Her problem için farklı sayıda iĢlemci gerekebilmektedir.

Problemlere uygun ağ yapısı deneme yanılma yöntemi ile bulunur. Ağlara göre
parametre değerleri (öğrenme katsayısı, her katmanda olması gereken iĢlem
elemanı sayısı vb.), katman sayısı da değiĢmektedir, standart bir formülizasyon
bulunmamaktadır. Dolayısı ile YSA‟ları kesin çözümü değil en iyi çözümü bize
sunar.

Problem ağlara tanıtılırken YSA‟larının doğası gereği problemlerin sayısal
Ģekilde
ifade
edilmesi
gerekmektedir.
36
Bu
süreçte
sürekli
değerler
kullanılabileceği gibi kesikli (binary) değerler de kullanılabilir. Fakat
kullanıcının tecrübesizliği çoğu olayın YSA‟ları ile çözülememesinin nedeni
olarak görülmektedir.

Ağların eğitimine ne zaman son verileceğine karar vermek için de belirlenmiĢ
bir yöntem yoktur. YSA‟larının en büyük dezavantajı ise ağların çözüm
üretirken bunu nasıl ve neden ürettiklerinin tam olarak bilinememesidir.
37
3. MALZEME ve YÖNTEM
3.1
3.1.1
YAZILIM PROJESĠ MALĠYET TAHMĠNĠ ĠÇĠN EN UYGUN YSA
MODELĠNĠN SEÇĠLMESĠ
Problemin Belirlenmesi
Tezin Genel Kısımlar bölümünde, yazılım projesi maliyet tahminini olumsuz etkileyen
faktörlerden bahsedilmiĢtir ve yazılım Ģirketleri için yazılım projesi maliyetinin doğru
tahminin ne kadar önemli olduğu dile getirilmiĢtir. Sezer (2008), dünya çapında yazılım
projelerinin
baĢarısızlıkla
sonuçlanmasında,
proje
kısıtlarının
tam
olarak
belirlenememesi, doğru maliyet tahmininin gerçekleĢtirilememesi, değiĢen müĢteri
isterlerinin karĢılanamaması, çalıĢanların teknik dananım yetersizliği ve müĢteri
beklentilerini tam olarak yansıtamaması olduğunu belirtmiĢtir. Ülkemizde yazılım
projesi maliyet tahmini çalıĢmaları yapılmakta fakat YSA‟larının yazılım projesi
maliyet tahmininde kullanımı henüz yeni sayılabilecek niteliktedir. Ülkemizdeki
yazılım Ģirketlerine bu yeni tahmin yöntemi hakkında ayrıntılı bilgi veren ve YSA‟ları
ile tahmin sağlayan bir web sitesi bulunmadığı araĢtırmalar sonucunda ortaya çıkmıĢtır.
Leung ve Fan (2002) “Software Cost Estimation” adlı çalıĢmalarında yazılım maliyet
tahminini, bir yazılımı geliĢtirmek için gereken iĢgücü tahmini olarak tanımlamıĢtır.
Lum ve diğ. (2003) de yazılım geliĢtirmek için, baskın maliyet kaleminin iĢgücü
olduğunu bu nedenle de yazılım geliĢtirme iĢgücü maliyetinin en doğru Ģekilde
yapılması gerektiğini belirtmiĢlerdir. Ayyıldız (2007), yazılım projelerinin zaman ve
bütçe planına uymaması ile kötü ün yaptığını ve bunun temel nedeninin gereken
iĢgücünün baĢta yanlıĢ tahmin edilmesi olduğunu vurgulamıĢtır. Tahmin edilen
iĢgücünün, çalıĢanların birim zaman baĢına ortalama ücretinin hesaplanması ve bunun
tahmin edilen iĢgücü ile çarpılması sonucunda parasal değere çevrilebileceğini ifade
etmiĢtir.
38
Bu tez çalıĢmasında da, YSA‟ları ile yazılım projelerinin maliyeti, iĢgücü maliyeti
üzerinden hesaplanmıĢtır. Hazırlanan model bir web sitesine entegre edilerek
ziyaretçilere sunulmuĢtur.
3.1.2
Tahmin Aracının Belirlenmesi
Bu tez çalıĢmasında yazılım projesi maliyet tahmini gerçekleĢtirmek için, algoritmik
olmayan modellerden biri olan YSA‟ları kullanılmıĢtır. Bunun sebepleri aĢağıdaki gibi
sıralanabilir:

YSA modelleri, analitik yöntemlerden daha avantajlıdır; çünkü tahminler yerine
geçmiĢteki noksanları girdi olarak almaktadır, bu girdiyi kullanarak YSA modeli
otomatik olarak kendi iç hata süreci modelini geliĢtirmekte ve gelecek hataları
tahmin etmektedir (Karunanithi ve diğ., 1992).

YSA‟larının mimarisine (büyüklüğü, yapısı, bağlantıları) karar vermek, ağın
öğrenme hızı, öğrenmenin kesinliği, “gürültü”ye dayanıklılığı ve ağın
genelleĢtirebilme yeteneği gibi performans kriterlerine etki etmektedir (Finnie ve
diğ., 1997).

Girdi ve çıktılar arasında karmaĢık iliĢkilerin bulunduğu ve girdilerin yüksek
seviyeli “gürültü” ile bozulduğu problemler ile uğraĢırken iyi sonuçlar
verebilmektedir (Treigueiros ve Berry, 1991‟den aktaran Finnie ve diğ., 1997).

Girdiler ve çıktılar arasında doğrusal bir iliĢki gerektirmemektedir (Hughes ve
diğ., 1998).

YSA‟ları; daha önceki durum ve sonuçlardan öğrenmeyi sağlamaktadır (Idri ve
diğ., 2002).

YSA‟ları; maliyet, iĢgücü gibi bağımlı değiĢkenler ile, maliyete neden olan
faaliyetler gibi bağımsız değiĢkenler arasında karmaĢık iliĢki kümeleri
modelleyebilmektedir (Idri ve diğ., 2002).
Genel olarak; yazılım maliyeti tahmininde kullanılmak üzere en yaygın kabul edilen
mimari, öğrenme algoritması ve aktivasyon fonksiyonu sırası ile ileri beslemeli çok
katmanlı perceptron, geri-yayılım algoritması ve Sigmoid fonksiyonudur (Idri ve diğ.,
2002; Tadayon, 2005).
39
3.1.3
Yapay Sinir Ağları için Veri Setinin Belirlenmesi
YSA‟larını kullanarak yazılım projesi maliyet tahmini için, eğitim amacı ile veri
toplanması gerekmektedir.
Bu tezde COCOMO yazılım projesi veritabanı kullanılmıĢtır (Boehm, 1981). University
of South California (USC) Sistem ve Yazılım Mühendisliği Merkezi üyesi olduğundan
beri, bu veri kümesi USC veri kümesi olarak da bilinmektedir (Kültür, 2006). Veri
kümesinin oldukça büyük olması (Samson ve diğ, 1997) ve kolay eriĢilebilir olması
nedeni ile COCOMO veri kümesi tercih edilmiĢtir. Birçok araĢtırmacı da YSA ile
maliyet tahmini yaparken COCOMO 81 veri seti kullanmıĢtır (Idri, 2002; BaĢkeleĢ,
2004; Kültür, 2006). .arf dosya uzantısı ile bulunan COCOMO veri seti bu çalıĢma için,
verilerin elektronik ortamda hazır ve kolay kullanılabilirliği bakımından avantaj
sağlamıĢtır (Sayyad Shirabad ve Menzies, 2005).
COCOMO veri seti, 63 adet TRW (Thomson Ramo Wooldridge, an American
Aerospace and Technology corporation) Havacılık yazılım geliĢtirme projesine ait
veriden oluĢmaktadır. Her bir projenin YSA‟larında da göz önünde bulundurulacak olan
17 parametresi vardır. Bunlar; proje büyüklüğü, proje modu ve 15 adet maliyet
faktörüdür.
COCOMO veri seti dıĢında Türkiye‟deki yazılım Ģirketlerinden de COCOMO veri
setindeki bilgiler doğrultusunda yazılım bilgileri toplanması hedeflenmiĢtir. Bu amaçla
yapılan çalıĢmalardan sonraki bölümlerde söz edilecektir.
AĢağıdaki tabloda, oluĢturulan YSA‟ya girdi olacak baĢlıklar yer almaktadır.
Tablo 3.1: COCOMO maliyet faktörleri (Boehm, 1981)
Ürün Özellikleri
COCOMO Maliyet Faktörleri
RELY
Required Software
Yazılım güvenirliğini, yazılımın istenilen
Reliability
fonksiyonlarını bir sonraki çalıĢmasında ya
da bir sonraki en yakın çalıĢma zamanında
tatmin edici bir Ģekilde yerine getirmesi
olasılığı (Boehm, 1981)
40
COCOMO Maliyet Faktörleri
DATA
Database Size
GeliĢtirilen yazılım ürününün veritabanı
büyüklüğüdür. Bir yazılım ürününü
geliĢtirmek için gereken iĢgücü miktarı,
açıkça veritabanı büyüklüğü ve
karmaĢıklığından etkilenmektedir (Boehm,
1981)
CPLX
Bilgisayar Özellikleri
TIME
STOR
Software Product
GeliĢtirilen modülün karmaĢıklığı (Boehm,
Complexity
1981)
Execution Time
Bir yazılım alt sistemi üzerindeki çalıĢma
Constraint
süresi kısıtı (Boehm, 1981)
Main Storage Constraint
Bir yazılım alt sistemi üzerindeki temel
depolama kısıtı (Boehm, 1981)
VIRT
TURN
Virtual Machine
GeliĢtirilen alt sistem altında yatan sanal
Volatility
makine geçiciliği (Boehm, 1981)
Computer Turn Around
Alt sistemi geliĢtiren proje takımı tarafından
Time
tecrübe edilen bilgisayar yanıt süresi
(Boehm, 1981)
ACAP
Analist Capability
Bir yazılım alt sisteminde çalıĢan analistin
kapasitesi (Boehm, 1981)
KiĢisel Özellikler
AEXP
Application Experience
Alt sistemi geliĢtiren proje takımının
uygulama tecrübesi (Boehm, 1981)
PCAP
Programmer Capability
Yazılım modülü üzerinde çalıĢan kapasitesi
(Boehm, 1981)
VEXP
LEXP
Virtual Machine
Yazılım modülü geliĢtirme proje takımının
Experience
sanal makine tecrübesi (Boehm, 1981)
Language Experience
Yazılım modülü geliĢtirme proje takımının
Proje Özellikleri
programlama dili tecrübesi (Boehm, 1981)
MODP
TOOL
Use Of Modern
Yazılım geliĢtirilirken kullanılan modern
Programming Practices
programlama uygulamaları (Boehm, 1981)
Use Of Software Tools
Yazılım alt sistemleri geliĢtirilirken
kullanılan yazılım araçları (Boehm, 1981)
41
COCOMO Maliyet Faktörleri
SCED
Development Schedule
Yazılım altsistemlerini geliĢtirme grubuna
Constraint
verilmiĢ olan iĢ takvimi kısıtı (Boehm,
1981)
3.1.4
Verileri ĠĢleme Yönteminin Belirlenmesi
YSA‟nı test etmek için izlenen yol Ģudur: Elde bulunan veri kümelere ayırılır, genellikle
büyük olan küme ağı eğitmek için kullanılır, diğeri ise ağı test etmek için kullanılır
(Schofield, 1998). Veriler, veritabanında toplandıktan sonra ağın eğitimi için 50 adet
örnek, testi içinse 13 adet örnek ayrılmıĢtır. Verileri 0 ile 1 arasındaki sayısal değerlere
dönüĢtürmek için Min-Max Normalleştirme Yöntemi uygulanmıĢtır. Bu yöntem, veri
içindeki en büyük ve en küçük sayısal değerin belirlenerek diğerlerini buna uygun
biçimde dönüĢtürme esasına dayanmaktadır (Özkan, 2010). Söz konusu dönüĢtürme
bağıntısı Ģu Ģekilde ifade edilmektedir:
(3.1)
dönüĢtürülmüĢ değerleri,
Burada
değerini ve
3.1.5
gözlem değerlerini,
en küçük gözlem
en büyük gözlem değerini ifade etmektedir.
Yapay Sinir Ağı Modelinin Belirlenmesi
YSA modeli olarak “Ġleri Beslemeli Çok Katmanlı YSA” seçilmiĢtir. Svozil ve diğ.
(1997) bu ağın özelliklerini aĢağıdaki gibi belirtmiĢtir:

Kullanıcının müdahalesine gerek duymadan uyum sağlama özelliğine sahiptir.

Doğrusal olmama özellikleri (nonlinearity) mevcuttur. Girdi ve çıktılar
arasındaki iliĢkinin doğasında doğrusal olmayıĢ mevcut olduğundan bu büyük
önem teĢkil etmektedir.

Denetimli öğrenmede her örnek tek bir girdi sinyaline ve bu sinyale tekabül
eden bir beklenen cevaba sahiptir. Eğitim setinden bir örnek ağa gösterilir ve
42
beklenen çıktı ile ağın çıktısı arasındaki farkı azaltmak için ağırlık katsayıları
değiĢtirilir. Ağ öğrenene kadar buna devam edilir. Böylece ağ, örneklerden
problem için bir girdi-çıktı haritası çizilmesi ile öğrenmektedir.

“Gürültü”nün arttığı durumlarda, ağın performansı bir miktar bozulmaktadır.
Bu YSA‟da aktivasyon fonksiyonu olarak Sigmoid Fonksiyonu seçilmiĢtir. Bunun
nedeni Ģöyle açıklanabilir:

Lineer olmayan fonksiyon olarak en çok kullanılan Sigmoid Fonksiyonu iĢlem
elemanının çıkıĢını 0 ve 1 değerleri arasında sınırlar. Fonksiyonun tanımladığı
yarı lineer bölge “ezilmiĢ” bölgelerle sınırlandırılmıĢtır. Buralarda eğim hızla
0‟a düĢer ve bir β sabiti tarafından kontrol edilir. β‟nın küçük değerleri için
sigmoid, Lineer Etkinlik Fonksiyonu‟na, büyük değerleri için ise Basamak
Fonksiyonu‟na yakınsar (Gülseçen, 1993).

-1 ile +1 aralığında simetrik sonuçlar üretmektedir (Wittig ve Finnie, 1997).
Sigmoid Fonksiyonu‟nun denklemi ve fonksiyona ait grafik aĢağıda sırayla
verilmektedir.
(3.2)
ġekil 3.1: Sigmoid fonksiyonu
43
Ağdaki ara katman sayısının belirlenmesinde ve ara katmanların iĢlem elemanı
sayılarını tespit etmek için kesin yöntemler bulunmamakla birlikte bu çalıĢmada yazılım
projesi maliyet tahmini için kullanılacak olan ağ, 15:4:1 Ģeklinde oluĢturulmuĢtur.
Maliyet tahmininde (yazılım projesi iĢgücü hesabında) kullanılacak 15 ana baĢlık
(PCAP, AEXP, MODP, TOOL, VEXP, LEXP, SCED, STOR, DATA, TIME, TURN,
VIRT, CPLX, RELY) YSA girdi setinin iĢlem elemanı sayısının belirlenmesinde rol
oynamıĢtır. 15 ana baĢlık hakkında detaylı bilgiye Tablo 3.1‟de yer verilmiĢtir.
YSA‟larının eğitimi sonucunda tahmin etmek istediğimiz yalnızca maliyet (yazılım
projesi iĢgücü) olduğundan, kullandığımız YSA çıktı katmanı yalnızca bir tek iĢlem
elemanı ile oluĢturulmuĢtur. Yukarıda bahsedilen 15 baĢlık, “Ürün Özellikleri”,
”Bilgisayar
Özellikleri”,
”KiĢisel
Özellikler”
ve
”Proje
Özellikleri”
olarak
gruplandırıldığından kullanılan YSA ara katman sayısı 1, ara katman iĢlem elemanı
sayısı da 4 olarak seçilmiĢtir. Ara katmanın ve çıktı katmanının birer adet eĢik değer
ünitesi vardır. Girdi katmanı ile ara katman, ara katman ile çıktı katmanı arasındaki
ağırlıklara -1 ile 1 arasında rastgele değerler verilerek ilk değer ataması yapılmıĢtır.
44
BİAS
RELY
G1
BİAS
DATA
G2
A1
CPLX
G3
TIME
G4
STOR
G5
A2
VIRT
G6
TURN
G7
ACAP
G8
AEXP
G9
PCAP
G10
LEXP
G11
VEXP
G12
MODP
G13
TOOL
G14
SCED
G15
Ç1
A3
A4
ġekil 3.2: OluĢturulan YSA‟nın detaylı Ģekli
45
İŞ GÜCÜ
BİAS
RELY
G1
DATA
G2
w01
w11
BİAS
w1,4
CPLX
w0,4
G3
A1
t0,1
t1,1
TIME
G4
STOR
G5
A2
.
VIRT
TURN
G6
G7
ACAP
G8
AEXP
G9
PCAP
G10
LEXP
G11
VEXP
G12
MODP
G13
TOOL
G14
SCED
G15
.
.
.
.
.
Ç1
A3
t4,1
A4
w15,1
w15,4
ġekil 3.3: OluĢturulan YSA‟nın sadeleĢtirilmiĢ Ģekli
46
İŞ GÜCÜ
3.1.6
Yapay Sinir Ağları için Öğrenme Algoritmasının Belirlenmesi
Ġleri Beslemeli Çok Katmanlı YSA‟larının Öğrenme algoritması olarak yalın ve hızlı
olması nedeni ile (Devireddy & Rao, 2009) “Geri-Yayılım Algoritması” seçilmiĢtir.
Geri-yayılım Algoritması, 1986 yılında Rumelhart, Hinton ve Williams tarafından, çok
katmanlı ileri beslemeli yapay sinir ağlarının ağırlıklarına değer atamak dolayısı ile
onları eğitebilmek için tasarlanmıĢtır (Graupe, 2007). Geri yayılım algoritmasının
amacı, ağda ilerleme sonucu elde edilen hatayı geriye dağıtarak, ağırlıkları en iyi sonucu
ortaya koyabilmek için düzenlemektir. Buna GenelleĢtirilmiĢ Delta Kuralı da
denmektedir (Aslan ve diğ., 2006). Geri yayılım, bir ileri beslemeli ağda ağırlıkları
değiĢtirirken sayısal olarak etkili bir yöntem sağlamaktadır (Hausson, 1995).
GenelleĢtirilmiĢ Delta Kuralı, “Ġleri Doğru Hesaplama” ve “Geriye Doğru Hesaplama”
aĢamalarından oluĢmaktadır. Öztemel (2006)‟in belirttiği GenelleĢtirilmiĢ Delta
Öğrenme Kuralı, bu tez çalıĢmasında kullanılan ağa uygulanarak aĢağıdaki biçimde
ifade edilmiĢtir:
İleri Doğru Hesaplama:
Bu aĢama, YSA‟larına veri setinden ilk örneğin gösterilmesi ile eğitimin baĢlatılması
aĢamasıdır.
G1, G2, … , Gk (k = 1, 2, … , 15) YSA girdileri olmak üzere YSA, girdi katmanına
gelen girdilere hiçbir iĢlem uygulamadan ara katmana iletmektedir. Bu durum
Ç
(3.3)
Ģeklinde gösterilebilmektedir.
(k = 1, 2, … , 15; j = 1, 2, 3, 4 ) girdi katmanındaki k. iĢlem elemanı ile ara
katmandaki t. iĢlem elemanı arasındaki ağırlık değerini göstermektedir. Girdi
katmanından ara katmandaki her bir iĢlem elemanına gelen NET girdi, eĢik değer
ünitesinin de katkısı ile hesaplanır.
47
Ç
(3.4)
(j = 1, 2, 3, 4), eĢik değer ünitesi ile ara katmandaki t. iĢlem elemanı arasındaki
ağırlık değerini göstermek üzere; j. ara katman iĢlem elemanının çıktısı ise bulunan net
girdinin aktivasyon fonksiyonu olan Sigmoid Fonksiyonu‟ndan geçirilmesi ile
hesaplanmıĢtır.
Ç
(3.5)
EĢik değer ünitesinin çıktısı sabit olup 1‟dir. Tüm ara katman iĢlem elemanlarının ve
çıktı katmanı iĢlem elemanının çıktıları, kendilerine gelen net girdinin sigmoid
fonksiyonundan geçirilmesi ile hesaplanmıĢtır. Ağın çıktı katmanından elde edilen çıktı
(iĢgücü) Ç‟nin bulunması ile ileri doğru hesaplama tamamlanmıĢtır.
Geriye Doğru Hesaplama:
Ağın ürettiği çıktı ile ağın beklenen çıktı değeri karĢılaĢtırılmıĢtır. “HATA” olarak
adlandırılan ve bir sonraki iterasyonda bu hata değeri azaltılmaya çalıĢılan aralarındaki
fark:
E=B–Ç
(3.6)
Ģeklinde ifade edilmektedir. Bu hatanın sonraki iterasyonlarda azaltılması; hatanın,
hataya neden olan iĢlem elemanlarına dağıtılması, yani iĢlem elemanlarının
ağırlıklarının değiĢtirilmesi sağlanmıĢtır.
ara katmandaki j. iĢlem elemanı ile çıktı katmanındaki m. iĢlem elemanı
arasındaki ağırlıktaki değiĢim miktarı, iterasyon sayısı t = 1, 2, 3, … , 7000 ; λ öğrenme
katsayısı (learning rate), α momentumun,
çıktı ünitesinin hatası, m=1 olmak üzere,
aĢağıdaki denklem ile hesaplanmaktadır.
Ç
(3.7)
48
Öğrenme katsayısı ağırlıkların değiĢim miktarını, momentum ise ağın öğrenmesi
sırasında yerel bir minimum noktaya takılıp kalmamasını sağlamak için ağırlık değiĢim
değerinin belirli bir oranda bir sonraki değiĢime eklenmesini sağlar (Öztemel, 2006). λ
öğrenme katsayısının ve α momentumun ağın eğitimine direkt etkisi vardır. Ağın
performansında da bu iki unsur büyük önem taĢımaktadır. Bu nedenle λ ve α çok iyi
seçilmelidir. Bu çalıĢmada, iyi sonuçlar verdiği bilindiğinden λ = 0.5 ve α = 0.8 olarak
seçilmiĢtir. Δ
(3.8)
biçiminde ifade edilmiĢtir. Sigmoid Fonksiyonunun türevini aldıktan sonra denklem
tekrar düzenlendiğinde
Ç
Ç
(3.9)
elde edilmiĢtir. DeğiĢim miktarı hesaplandıktan sonra yeni ağırlık değerleri aĢağıda
belirtildiği gibi hesaplanmıĢtır.
(3.10)
EĢik değer
ç
ağırlığındaki değiĢim miktarı ve eĢik değerin yeni ağırlık değeri
ç
ç
(3.11)
ç
ç
ç
(3.12)
denklemleri yardımı ile hesaplanmıĢtır.
Girdi katmanı ile ara katman arasında ya da iki ara katman arasındaki ağırlıkların da ara
katman ile çıktı katmanı arasındaki ağırlıkların değiĢtirildiği gibi değiĢtirilmesi
gerekmektedir. Burada ara katman ve girdi katmanı arasındaki ağırlıkların
değiĢtirilmesini ele alırsak:
49
Ç
(3.13)
(3.14)
Ç
Ç
(3.15)
(3.16)
denklemleri ile elde edilir.
EĢik değer
ağırlığındaki değiĢim miktarı ve eĢik değerin yeni ağırlık değerini
hesaplamak için de aĢağıdaki formüller kullanılmıĢtır.
(3.17)
(3.18)
Sonuçta ağın tüm ağırlıkları değiĢtirilmiĢ olup ilk iterasyon için ileriye ve geriye doğru
hesaplama sona ermiĢtir. Bir sonraki iterasyonda da iĢlemler tekrar edilmiĢtir. 7000.
iterasyonun sonunda iĢlemler sonlandırılmıĢtır.
3.1.7
Yazılım Projesi Maliyet Kalemlerinin Belirlenmesi
Yazılım projesi maliyet tahmini için YSA‟larından faydalanılarak bulunan iĢgücü de
eklenerek aĢağıda belirtilen maddeler (Milliyet, 2006), proje maliyet kalemlerini
oluĢturmaktadır. Projenin toplam maliyet tahmini tüm bu değerler göz önünde
bulundurularak hesaplanmıĢtır.

ĠĢ Gücü Maliyeti

Proje Ġçin Satın Alınan Donanım Maliyeti
Sunucu bilgisayar
Dizüstü bilgisayarlar
50
Masaüstü bilgisayarlar
Kiralık hat ve ADSL modemler
Cisco routers

Kiralanan Donanım Maliyeti
Türk Telekom ADSL
Kiralık hat
ISDN hatlar

Satın Alınan Yazılım Maliyeti
Microsoft Ürünleri ve diğer bazı programlama araçları
ĠĢletim sistemi lisans ücreti
Veri Tabanı Yönetim Sistemi lisans ücreti

Kiralanan Yazılım Maliyeti
GSM Ģirketlerinden kiralanan kısa mesaj servis numaraları
Ġnternetten kısa süreli kullanım hakkı için gereken kiralama ücretleri
Web Alanı

Seyahat Maliyeti
ġehir dıĢındaki müĢterilere, fuarlara, gidiĢ – geliĢ ve kalma masrafları

Yazılım Test Maliyeti
Yazılımın test aĢamasında gereken alan adı adresleri
Arayüzler

Telekomünikasyon Maliyeti
Yurtiçi, Yurt-DıĢı telefon giderleri
Video Konferanslar

Kurs Maliyeti
Proje çalıĢanları için gerek görülen eğitimlerin kiĢi baĢı ücretleri

Ofis Maliyeti
Mobilyalar
Ofis masrafları
Ofis kirası
Elektrik, su, doğalgaz giderlerinin ortalama bütçesi

Reklam Maliyeti
TV
Ġnternet
51
Gazete
Dergi reklamları
3.2
SEÇĠLEN MODELĠN BĠR ÖRNEK ÜZERĠNDE UYGULANMASI
(www.ysaann.com)
Bu bölümde, YSA‟larının maliyet tahmini aracı olarak kullanıldığı ve internet üzerinden
kullanıcılarına hizmet sunmakta olan ysaann.com web sitesinin sistem geliĢtirme süreci
adımları ile ilgili detaylı bilgilere yer verilecektir.
Sistem geliĢtirme süreci adımlarından Klasik Süreç (Waterfall Modeli) kullanılmıĢtır.
Klasik Süreç, bilgisayar sistem mühendisliği olarak, ana sistemin analizinden baĢlayıp
yazılım gereksinim analizleri, tasarımı, kodlanması, kullanım ve bakımı aĢamaları
Ģeklinde gerçekleĢmektedir (Kalıpsız ve diğ., 2008). Kullanıcı gereksinimleri belirlenir,
isterler tanımlanır, elde edilen bu verilere göre tasarım yapılır ve kodlama
gerçekleĢtirilir.
Sistem
Mühendisliği
Çözümleme
Tasarım
GerçekleĢtirim
Test
Bakım
ġekil 3.4: Sistem geliĢtirmede klasik süreç (Sarıdoğan, 2008)
Bu tezde, “Klasik Süreç”in kullanılma nedenlerine aĢağıda yer verilmiĢtir (Sarıdoğan,
2008).
52
1. Bilgi akıĢı tek yönlü olduğu için karĢılaĢılan sorunlara çözümler rahatlıkla
sağlanabilmektedir.
2. Analiz, tasarım ve kodlama aĢamaları iç içedir.
3. GeliĢtirici ya da müĢteri, Klasik Süreç ile istenen ürüne mutlaka proje sonunda
karar vermek yerine proje devam ederken de görüĢ bildirerek katkı
sağlayabilmektedir.
Belirtilen bu üç unsur sayesinde, geliĢtirmek istediğimiz web sitesi için gerek görülen
her yeni özellik istenildiği takdirde eklenebilmektedir. Bu sayede yine karĢılaĢılan
eksikliklere getirilen çözüm önerileri çalıĢmamıza doğrudan uygulanabilmektedir.
3.2.1
www.ysaann.com Sistem Mühendisliği ÇalıĢmaları
Ülkemizde yazılım projesi maliyet tahmini çalıĢmaları yapılmakta fakat YSA‟larının
yazılım projesi maliyet tahmininde kullanımı henüz yeni sayılabilecek niteliktedir.
Ülkemizdeki yazılım Ģirketlerine bu yeni tahmin yöntemi hakkında ayrıntılı bilgi veren
ve YSA‟ları ile tahmin sağlayan bir web sitesi bulunmadığı araĢtırmalar sonucunda
ortaya çıkmıĢtır.
Tüm bunlar sistem mühendisliği çalıĢmalarında ysaann.com web
sitesinin geliĢtirilme gerekçesi olarak belirlenen problemi oluĢturmaktadır.
3.2.2
www.ysaann.com Analiz ÇalıĢmaları
ysaann.com web sitesinin hedef kullanıcıları yazılım projesi gerçekleĢtiren Ģirketlerdir.
Bu doğrultuda Ģirketlerin bu web sitesi üzerinden, geliĢtirdikleri yazılım projeleri için
maliyet tahmini yapabilmesi amaçlanmıĢtır.
Maliyet tahmin aracı olarak YSA‟larının eğitimi ve test edilmesinde kullanılabilmesi
için Türkiye ve diğer ülkelerin yazılım Ģirketlerinden proje bilgileri toplanması
hedeflenmiĢtir. Böylece yazılım Ģirketleri, önceki proje bilgilerini bulabilecekleri bir
proje ambarına sahip olabileceklerdir. Bu durum, özellikle Ģirketlerde bulunan dağıtık
proje bilgilerinin bir araya toplanmasını da sağlayacaktır.
Yazılım projesi maliyet tahmini hakkında bilgi veren, internet üzerinden gerçekleĢtiren
ya da maliyet tahmini için gerekli programları indirebilmeyi sağlayan çeĢitli web siteleri
mevcuttur
(http://sunset.usc.edu/csse/research/COCOMOII/cocomo_main.html
53
,
http://www.softstarsystems.com/overview.htm). AraĢtırmalarda, Türkçe dil desteği olan
ve YSA‟larını kullanarak yazılım projesi maliyeti tahmini yapan herhangi bir web
sitesine rastlanmamıĢtır. Sitede Türkçe ve Ġngilizce olmak üzere 2 dil seçeneğinin
bulunması, Türk yazılım Ģirketleri için bu dezavantajı bir avantaja çevirecektir. Sitenin
hedef kullanıcıları yazılım Ģirketleri olduğundan, yazılım Ģirketlerinin geliĢmekte olan
bir teknoloji olan YSA‟ları hakkında bilgi almaları geliĢtirilecek bu site yardımı ile
sağlanacaktır.
3.2.3

www.ysaann.com Web Sitesinin Genel Tasarımı
ysaann.com yazılım projesi maliyet tahminine yönelik bir web sitesidir. Bu web
sitesinin,
Microsoft Visual Studio 2010 kullanılarak ASP.NET dili ile
kodlanması, veritabanının SQL Server 2008 olmasına karar verilmiĢtir. Bir
sonraki bölümde bu teknolojiler ile ilgili daha geniĢ bilgiye yer verilmiĢtir.

ysaann.com web sitesinin sayfalarının yukarıda belirlenen teknolojileri
destekleyen bir sunucuda barındırılması için http://webhostforasp.net/ sitesinden
1 yıllık hosting hizmeti ve ysaann.com alan adı satın alınmıĢtır. Web sitesinin
dosya ve klasör yapısı oluĢturulmuĢtur.

Kullanıcıdan maliyetini tahmin etmek istediği projenin bilgilerini aldıktan sonra,
proje için gereken iĢgücü (kiĢi/ay) ve toplam proje maliyeti kullanıcıya
sunulmaktadır. Web sitesine kayıt olan kullanıcılar, yazılım projesi maliyet
tahmini
yapılabileceği
gibi
YSA‟ları
ile
ilgili
genel
bilgilere
de
ulaĢabilmektedirler.

Siteye bir yazılım Ģirketi çalıĢanı rahatlıkla kayıt olabilmektedir. Bunun için
kendi Ģirketini siteye kayıt etmesi ve istenen bilgileri doldurup göndermesi
yeterlidir. Siteye kayıt olan her Ģirkete bir kez, Ģirketlerin YSA‟larına bakıĢ
açılarını belirleyebilmek için kısa bir anket uygulanmaktadır.
3.2.4
www.ysaann.com Web Sitesinin Kodlanması
YSA‟ı ile maliyet tahmini yapması beklenen kod parçası, çok katmanlı YSA‟larının
ortaya
çıkmasını
sağlayan
“XOR
Problemi”nin
çözümünden
esinlenilerek
hazırlanmıĢtır. Bu sebeple, öncelikle XOR probleminin çözümünü gerçekleĢtirmek için
gereken kod yazılmıĢ ve test edilmiĢtir. Yazılan koda ihtiyaçlar doğrultusunda
eklemeler yapılarak (girdi sayısının değiĢtirilmesi, tekrar sayısının yeniden atanması,
…) maliyet tahmini için gereken kod yazılmıĢtır. Ġlgili kod, ysaann.com web sitesi
54
sayfalarından estimate_tr.aspx sayfasına entegre edilmiĢtir. AĢağıda site ziyaretçilerinin,
siteye üye olan kullanıcıların ve site yöneticisinin ysaann.com web sitesinden
eriĢebileceği hizmetlerin gösterildiği diyagram verilmiĢtir.
ġekil 3.5: ysaann.com web sitesi diyagramı
3.2.5
www.ysaann.com Web Sitesinin Test Edilmesi
Web sitesi için hazırlanan her sayfa, önce yerel web alanında (localhost) daha sonra da
http://webhostforasp.net/ sitesinden satın alınan sunucuda test edilmiĢtir ve sayfada
görülen eksiklikler giderilmiĢtir. MS SQL Server‟da ysaann.com için hazırlanan
veritabanı da yedekleri alınarak saklanmaktadır. ysaann.com web sitesine ait UML
Dağılım Diyagramı aĢağıda verilmiĢtir.
55
ġekil 3.6: ysaann.com web sitesi UML dağılım diyagramı
3.2.6
www.ysaann.com Web Sitesinin Bakımı
Web sitesine yeni eklemeler, gerek görüldükçe yapılmaktadır. AĢağıda ysaann.com web
sitesinden ekran görüntülerine yer verilmektedir.
ysaann.com web sitesi ekran görüntülerinden bazılarına aĢağıda yer verilmiĢtir.
56
ġekil 3.7: ysaann.com web sitesinin Türkçe ana sayfasından bir görünüm
ġekil 3.8: ysaann.com web sitesinin Ġngilizce ana sayfasından bir görünüm
57
ġekil 3.9: ysaann.com web sitesinin Türkçe kayıt olma sayfasından bir görünüm
ġekil 3.10: ysaann.com web sitesinin Türkçe YSA‟ları ile maliyet tahmini gerçekleĢtirme
sayfasından bir görünüm
58
ġekil 3.11: ysaann.com web sitesinin Türkçe proje listeleme sayfasından bir görünüm
ġekil 3.12: ysaann.com Web Sitesinin Türkçe Kullanıcı Hesabı Sayfasından Bir Görünüm
59
ġekil 3.13: ysaann.com web sitesinin Türkçe videolar sayfasından bir görünüm
3.2.7
www.ysaann.com Web Sitesi GeliĢtirilirken Kullanılan Teknolojiler
.NET Framework
.NET FRAMEWORK, yeni nesil uygulamaların ve Web Servislerinin inĢasını ve
çalıĢtırılmasını sağlayan tamamlayıcı bir Windows bileĢenidir (MSDN, a). .NET
FRAMEWORK‟ün anahtar bileĢenleri, CLR (Common Language Runtime) (MSDN, b)
ve ADO.NET, ASP.NET, Windows Formları, Windows Presentation Foundation‟u
destekleyen .NET Framework Sınf Kütüphanesidir (MSDN, c). .NET FRAMEWORK
gözetimli çalıĢma ortamı, kolaylaĢtırılmıĢ geliĢtirme–dağıtım ve birçok programlama
dilinin
bütünleĢtirilmesini
sağlamaktadır.
Aynı
zamanda
nesne-yönelimli
programlamayı desteklemektedir. .NET Framework ile ASP.NET, C#, J# ve managed
C++ gibi programlama dilleri Ara Dil (Intermediate Language) olarak derlenmektedir.
Bu sayede tüm bu diller daha önce olmayan bir yöntem ile birbirleri ile
çalıĢabilmektedir. XML desteği bulunmaktadır. ADO.NET olarak da bilinen .NET
bileĢenleri kümesi veritabanları ve veri kaynaklarına etkili eriĢim sağlamaktadır (Nagel
ve diğ., 2007).
Bu tezde .NET Framework‟ün en son sürümü “.NET Framework 4.0” ile çalıĢılmıĢtır.
60
Microsoft SQL Server
SQL Server, istemci/sunucu tabanlı Windows 7 üzerinde de çalıĢabilen iliĢkisel
veritabanı yönetim sistemdir. Doğrudan veritabanı içinde yapılanmıĢ ve yarı yapılanmıĢ
belgeler, resim ve zengin medya gibi yapılanmamıĢ belgelerden gelen veriler
depolanabilmektedir. Veri sorgulama, arama, senkronizasyon, raporlama ve analiz gibi
iĢlemleri gerçekleĢtirmeyi sağlamaktadır. (MICROSOFT).
SQL Server 2008 aĢağıdaki bileĢenlerden oluĢmaktadır (Gözüdeli, 2009).

ĠliĢkisel Veritabanı Motoru

Analysis Services

Sql Sever Integration Services

Notification Services

Reporting Services

Service Broker

Doğal http Desteği

SQL Server Agent

SQL Server Full-text Search

.Net Common Language Runtime (CLR)

Replication
Bu tezde kullanılan web sitesi veritabanı için SQL “Microsoft SQL Server 2008”
kullanılmıĢtır.
Microsoft Visual Studio .NET
ASP.NET web uygulamaları, XML web servisleri, masaüstü uygulamaları ve mobil
uygulamalar geliĢtirme araçları kümesidir (MSDN, d).
GeliĢtirilen uygulama için
görsellik sunmaktadır. Genel olarak “sürükle bırak” mantığı ile çalıĢarak programın
yazılmasını kolaylaĢtırmaktadır. Standart kodları kullanıcı için otomatik olarak
tamamlar (URL2).
61
ASP.NET
Programcıların dinamik web siteleri, web uygulamaları ve web servisleri inĢa
edebilmesi için Microsoft tarafından geliĢtirilmiĢ olan bir web uygulama çatısıdır
(URL3). ASP.NET programlama sınıflarını .NET FRAMEWORK üzerinde inĢa
etmektedir (MSDN, e).
Tez kapsamında hazırlanan www.ysaann.com web sitesi ASP.NET ile geliĢtirilmiĢtir.
Alan Adı ve Sunucu ĠĢlemleri
Hazırlanan
web
sitesinin
internette
yer
almasını
sağlamak
için
http://www.webhostforasp.net/ sitesi aracılığıyla ysaann.com alan adı 1 yıllığına $18.99
USD, site için gereken özellikleri karĢılayabilecek bir sunucu $60.00 USD karĢılığında
satın alınmıĢtır.
3.2.8
www.ysaann.com Web Sitesinin Yazılım ġirketlerine Duyurulması
ysaann.com web sitesinin yazılım Ģirketlerine duyurulabilmesi için Ġstanbul Ticaret
Odası‟ndan büyük, orta ve küçük ölçekli yazılım Ģirketlerinin bilgileri alınmıĢtır. EPosta adreslerine ulaĢılan yazılım Ģirketlerine e-postayla, bazı Ģirket temsilcilerine yüz
yüze
görüĢme
ile
geliĢtirilen
site
62
hakkında
bilgi
verilmiĢtir.
4. BULGULAR
Bu çalıĢma kapsamında yapılan araĢtırmalarda Türkiye‟de yazılım Ģirketlerinin, yazılım
projesi maliyet tahmini yapmak için YSA teknolojisine dayanan herhangi bir yazılım
aracını kullanmadıkları ortaya çıkmıĢtır. ysaann.com Ģirketlere YSA‟ları alanında bilgi
aktarabilecek ve YSA‟ları ile proje maliyet tahmini gerçekleĢtirebilmelerini
sağlayabilecek olan ilk web sitesidir.
1. ÇalıĢmada ysaann.com web sitesine entegre edilen ve yazılım projesi maliyet
tahmininde en önemli unsurlardan biri olan iĢgücünü tahmin etmek için
oluĢturulan
çok
katmanlı
ileri
beslemeli
YSA‟larının
hata
yüzdesi
hesaplanmıĢtır.
Yüzde Hatalar Aritmetik Ortalaması (Mean Absolute Percentage Error - MAPE)
ile hesaplanmıĢtır. Toplam örnek sayısı M, yazılım projesi iĢgücü tahmin edilen
değeri
, yazılım projesi iĢ gücü gerçek değeri
, k=1, … , M olmak üzere;
(4.1)
olarak hesaplanmaktadır. Performansın değerlendirilebilmesi için tipik MAPE
değerleri aĢağıdaki tabloda verilmiĢtir. MAPE 0‟a yaklaĢtıkça tahmindeki
doğruluk artmaktadır (Lee, 2009).
63
Tablo 4.1: MAPE doğruluk tablosu
MAPE (%)
Doğruluk Derecesi
<10
Yüksek derecede doğru tahmin
10-20
Ġyi tahmin
20-50
Kabul edilebilir tahmin
>50
Belirsiz tahmin
Test için kullanılan 11 proje örneğinden elde edilen sonuçlar aĢağıda verilmiĢtir.
Tablo 4.2: YSA test sonuçları
YSA Test Proje Numarası
1
2
3
4
5
6
7
8
9
10
11
Beklenen Çıktı
(ĠĢgücü)
41
20
18
958
237
130
70
57
50
38
15
Ağın Çıktısı
(ĠĢgücü)
64
20
24
114
151
173
13
52
8
34
14
MAPE
%41
MAPE‟nin %41 oluĢu, oluĢturulan YSA‟nın kabul edilebilir tahminler
gerçekleĢtirebileceğini ortaya koymaktadır (Hesaplanan değerler yaklaĢık
değerlerdir).
2. Hazırlanan ysaann.com web sitesine kayıt olan yazılım Ģirketleri, kendilerine
ayrılan sürede, tamamlamıĢ oldukları yazılım projelerinin bilgilerini sisteme
girememiĢtir. Bunun nedenini, Ģirket temsilcileri ile yapılan yüz yüze
görüĢmelere dayanarak aĢağıdaki Ģekilde ifade edebiliriz:

Özellikle ysaann.com sitesinde yazılım Ģirketlerinden istenen yazılım projesi
maliyeti, projede çalıĢan kiĢi sayısı, bir çalıĢanın aldığı ortalama brüt ücret
64
gibi bilgiler Ģirketler için çok büyük önem taĢımaktadır. Aynı Ģirket içinde
bile isteyen çalıĢanın eriĢemediği ve piyasadaki rakip firmalarca öğrenilmesi
kötü sonuçlar doğurabilecek bu bilgiler, yazılım Ģirketleri için kritiktir. Bu
nedenle Ģirketler, Ģirket dıĢındaki kiĢiler ile bu bilgileri paylaĢmaktan
çekinmektedirler.

Bazı Ģirketlerin yapılandırılmıĢ bilgi sistemleri bulunmadığından, eski
yazılım projelerine ait bilgilerin çoğuna ulaĢılamamaktadır.

Yazılım Ģirketlerinde, ysaann.com web sitesinde istenen yazılım projesi
maliyet tahmini kriterlerini farklı kiĢiler tarafından bilindiğinden bilgi giriĢi
planlı Ģekilde gerçekleĢtirilememektedir.
3. Sisteme kayıt olan yazılım Ģirketlerinden YSA‟ları ve YSA‟ları ile maliyet
tahmini konuları ile ilgili görüĢleri, sitede hazırlanan bir form yardımı ile
toplanmıĢtır. Bu görüĢlerden bazıları aĢağıda yer almaktadır.

Yazılım projesi maliyet tahmininde karĢılaĢtıkları aksaklıklar için:
“MüĢterinin proje dıĢına çıkmak istemesinden kaynaklanan aksaklıklar.
Genel olarak aksaklık yaĢamıyoruz. MüĢteri ile çıkan aksaklıkları en kısa
sürede çözüm yoluna ulaĢtırıyoruz.”
“DıĢ faktörler tahmin sonuçlarını etkileyebiliyor.”
Ģeklinde ifade edilmektedir.

Bir yazılım projesinde “Zaman”, “ĠĢgücü” ve “Maliyet” unsurlarından
tahmin edilmesi en zor olan “iĢgücü” olarak görülmektedir.

ġirketlerin,
yazılım projesi maliyet tahmini
yaparken kullandıkları
teknolojiler arasında PERT ve benzeĢim metodu yer almaktadır.

GörüĢ bildiren Ģirketlerin çoğu, yazılım projesi maliyet tahmini yaparken
YSA teknolojisinin kullanılabileceğini bilmemekte ve maliyet tahmini
iĢlemlerinde YSA‟larını kullanmamaktadır.
4. ysaann.com, yazılım Ģirketlerinin proje bilgilerini saklayabildikleri, ihtiyaç
duyduklarında
geçmiĢ
proje
bilgilerine
niteliğindedir.
65
ulaĢabilecekleri
bir
kaynak
5. TARTIġMA ve SONUÇ
Bir önceki bölümde, bu tez çalıĢmasının bulgularına yer verilmiĢtir. Bulgular,
oluĢturulan YSA ve geliĢtirilen web sitesi göz önünde bulundurularak sunulmuĢtur. Tez
çalıĢmasını bütünüyle ele almak gerekirse, elbette ki, diğer birçok projede olduğu gibi
bu çalıĢmada da, çalıĢmanın baĢında çizilen plan bütünüyle uygulanamamıĢtır.
“TartıĢma ve Sonuç Bölümü”, bu araĢtırma yolculuğunun ve elde edilen bulguların kısa
bir özetini ortaya koyacaktır. Son olarak ise, araĢtırma konusu ile ilgili gelecek olası
çalıĢmalar hakkında yeni görüĢlere yer verilecektir.
5.1
“YAPAY SĠNĠR AĞLARI ĠLE YAZILIM PROJESĠ MALĠYET TAHMĠNĠ”
YOLCULUĞU
GiriĢ bölümünde belirtildiği gibi, yazılım projesi maliyet tahmininde her geçen gün
biraz daha geliĢmekte olan birbirinden faklı YSA tasarımları ile gerçeğe çok yakın
sonuçlar elde edebilme fikri bu çalıĢmaya esin kaynağı olmuĢtur.
Çoğu insan “yazılım” kelimesini, bilgisayar programı ile eĢ tutmaktadır. Sommerville
(2004)‟e göre, bir yazılım genellikle, birkaç faklı programdan, bu programların
kurulabilmesi için gereken kurulum dosyalarından, sistemin yapısını açıklayan sistem
dokümantasyonunu ve son olarak kullanıcıların yeni ürün bilgilerini indirebilmesi için
yazılımı
ve
web
sitelerini
nasıl
kullanabileceklerinin
anlatıldığı
kullanıcı
dokümantasyonundan oluĢmaktadır (Somerville, 2004) ve yazılım süreci dört temel
aktiviteden meydana gelmektedir: müĢterilerin ve mühendislerin bir araya gelerek
geliĢtirilecek olan yazılıma karar vermesi (software spesification),
yazılımın
tasarlanarak programlanması (software development), yazılımın doğru Ģekilde çalıĢıp
çalıĢmadığının, müĢteri isterlerini karĢılayıp karĢılamadığının ortaya konması (software
validation), değiĢen müĢteri ve pazar gereksinimlerine göre yazılımın güncellenmesi
(software evolution). Yazılım Ģirketleri, bu temel basamakları, seçtikleri yazılım
mühendisliği
modeline
göre
gerçekleĢtirmekte
iken,
süreçte
özellikle
proje
yöneticilerinin verdiği kararlar büyük önem taĢımaktadır. Yöneticilerin vereceği
kararlar yazılım projesinin geleceğini, dolayısıyla kendi Ģirketlerinin geleceğini
belirlemektedir. Önceki bölümlerde değinildiği gibi, yazılım projesi için gereken
66
iĢgücü, projenin bitmesi için gerekli süre ve projenin toplam maliyeti, yazılım
projelerinde tahmin edilmesi güç olan unsurlar olarak verilmektedir.
Yazılım projelerinde özellikle proje süresi ve iĢgücünü kapsar nitelikte olan proje
maliyetinin tahmin edilmesi bu tez çalıĢması konusunun belirlenmesinde önemli bir rol
oynamıĢtır. Üstelik yazılım projesi maliyet tahminini, klasikleĢmiĢ yöntemler ile
gerçekleĢtirmek yerine, bu çalıĢmada, her geçen gün bilgi teknolojilerine yeni bir katkı
sağlayan YZ teknolojilerinden olan YSA‟ları kullanılmıĢtır.
ÇalıĢma için öncelikle, yazılım projesi maliyet tahmin yöntemleri araĢtırılmıĢtır.
AraĢtırmada bu yöntemler içinde Barry Boehm‟in ortaya koyduğu COCOMO en çok
tercih edilen yöntem olarak dikkat çekmiĢtir. Daha sonra, YSA‟ları ile gerçekleĢtirilen
maliyet tahmini çalıĢmaları incelenmiĢ ve YSA‟ları ile öncelikle iĢgücünün tahmin
edilmesi ardından gereken birtakım maliyet kalemlerinin de eklenerek yazılım
projesinin toplam maliyetine ulaĢılması gerektiği kararlaĢtırılmıĢtır. COCOMO‟da yer
alan maliyet tahmini faktörlerinin ve bu faktörlere karĢılık verilerin yer aldığı
COCOMO veri kümesinin de YSA‟larının eğitiminde ve test
edilmesinde
kullanılmasına karar verilmiĢtir. Hangi YSA modelinin yazılım projesi maliyet tahmini
gerçekleĢtirirken etkili olabileceği incelenmiĢ ve özellikle XOR probleminin çözüm
yolundan faydalanılarak maliyet tahmini için bir YSA oluĢturulmuĢtur.
Yazılım Ģirketlerinin, istedikleri zaman istedikleri yerden bu tahminleyiciye
ulaĢabilmelerini sağlamak için bir web sitesi geliĢtirilmiĢtir. Web sitesi, maliyet tahmini
sağlayacak kodları içermesinin yanı sıra, YSA‟ları ile ilgili multimedya öğelerini
içermiĢ ve yazılım Ģirketlerinin geçmiĢ proje bilgilerinin de tutulabileceği bir veri
bankası görevini üstlenmiĢtir. Yazılım Ģirketlerinin proje bilgilerini, bu site aracılığı ile
kaydetmeleri hem Ģirketleri gelecek projelerinde, hem de bu çalıĢmada oluĢturulan
YSA‟nın eğitimi ve testinde farklı ve baĢarılı sonuçlara ulaĢtıracağı düĢünülmüĢtür. Ne
yazık ki, Ģirketlerin, özellikle kendileri için stratejik saydıkları yazılım projesi bilgilerini
(proje adı, proje baĢlangıç tarihi, proje bitiĢ tarihi, projenin toplam iĢgücü maliyeti,
projenin toplam maliyeti, vb.) paylaĢmalarının sakıncalı olabileceği yargısında oldukları
keĢfedilmiĢtir. Dolayısıyla oluĢturulan ağın eğitiminde ve testinde yalnızca COCOMO
veri seti kullanılmıĢtır. Eğitilen ağ test edilerek ağın performansı hesaplanmıĢtır.
67
5.2
GELECEKTEKĠ ÇALIġMALAR
Bu çalıĢma ile YSA‟ları ile yazılım projelerinin maliyet tahminini gerçekleĢtirerek,
özellikle ülkemizdeki yazılım Ģirketlerinin ve yazılımcıların dikkati YSA teknolojisine
çekilmiĢ, bu teknolojiyi kullanabilmeleri için uygun ortam sağlanmıĢtır. Böylelikle
literatürdeki boĢluk biraz daha doldurulmaya çalıĢılmıĢtır. Bu bölüme kadar bu tez
çalıĢması hakkında anlatılan bilgiler doğrultusunda, gelecekteki çalıĢmalar için
aĢağıdaki alanlarda araĢtırmalar önerilmektedir.
1. Web tabanlı olarak geliĢtirilen YSA‟ları ile yazılım projesi maliyet tahminini
sağlayan kod masaüstü uygulama olarak düzenlenebilir, böylece Ģirketler
çekinmelerine gerek kalmadan kendi bilgisayarlarında, dıĢarıya kapalı Ģirket
ağlarından bu programı çalıĢtırarak proje maliyet tahmini gerçekleĢtirebilirler.
2. Yazılım projesi maliyet tahmininde iĢgücü tahminini gerçekleĢtirmek için
oluĢturulan YSA‟ları daha iyi öğrenebilecek Ģekilde geliĢtirilerek, hata oranı
düĢürülebilir ve daha iyi sonuçlar alınabilir.
3. GeliĢtirilen YSA‟nın girdilerini oluĢturan girdi kümesi değiĢtirilebilir, farklı
parametreler eklenebilir.
4. GeliĢtirilen ağın eğitiminde ve testinde kullanılan veri kümesi farklı veri
kümeleri kullanılarak geniĢletilebilir.
5. Yazılım Ģirketlerinin konuya ilgilerini çekebilmek için sitenin Ģirketlere
duyurulması konusunda çalıĢılabilir.
6. ysaann.com web sitesi güncellenerek hem YSA‟ları hem de YSA‟ları ile yazılım
projesi maliyet tahmini hakkında özellikle Türkiye‟deki yazılım Ģirketleri
bilgilendirilmeye devam edilecektir.
7. ysaann.com web sitesinin kullanıcılar tarafından daha hızlı ve kolay
ulaĢılabilmesi için yeni teknolojilerden yararlanılabilir, web sitesi geliĢtirilebilir.
68
5.3
SONUÇ
Kendi kendine düĢünebilen, karar verebilen, yorum yapabilen sistemler geliĢtirmeye
çalıĢmak günden güne artmaktadır. Milyonlarca olasılığı, kullanılan yeni nesil
teknolojilerle çok kısa sürede gözden geçirebilen süper bilgisayarlar her gün biraz daha
insan beyninin çalıĢma düzenine yaklaĢtırılmaya çalıĢılmaktadır. Teorik fizik profesörü
Michio Kaku (FOXNEWS, 2011), en geliĢmiĢ robot olarak kabul edilen Asimo‟nun
yaratıcısı ile görüĢtüğünü ve onun Asimo‟nun bir hamamböceği ile eĢdeğer zekaya
sahip olduğunu söylediğini belirtmiĢtir. Michio Kaku, bilgisayarların gelecek yıllarda
belki bir tavĢan ya da fare kadar, belki yüzyılın ortalarına doğru bir köpek ya da kedi
kadar, belki de yüzyılın sonlarına doğru bir maymun kadar zeki olabileceğini
söyleyerek, insan beyninin simüle edilmesinin düĢündüğümüzden çok daha zor
olduğunu vurgulamıĢtır. Söz edilen geliĢmeler ıĢığında, bu araĢtırma hedefine
ulaĢmıĢtır.
ÇalıĢma sırasında araĢtırmacı, “YSA‟ları ile Yazılım Projesi Maliyet Tahmini” konusu
için, yazılım projesi maliyet tahmini süreci, YZ ve YSA‟ları hakkındaki bilgileri,
sentezlemeye çalıĢmıĢtır.
69
EKLER
EK A - COCOMO YAZILIM PROJESĠ VERĠ TABANI
Barry Boehm (1981) tarafından ortaya konan COCOMO yazılım projesi veritabanı
aĢağıda yer almaktadır.
ġekil A. 1: COCOMO yazılım projesi veritabanı I.bölüm
70
ġekil A. 1: COCOMO yazılım projesi veritabanı II. bölüm
71
EK B - ysaann.com VERĠ TABANI TABLOLARINDAN BĠR GÖRÜNÜM
Sitenin MS SQL SERVER yardımı ile hazırlanan veri tabanındaki tablolardan
bazılarının yer aldığı ekran görüntüsü aĢağıda yer almaktadır. Tabloların sayıca fazla
olması nedeni ile tez yazım formatı çerçevesinde tüm tabloların bir arada
gösterilemeyeceğinden, tablolardan yalnızca bir kısmı aĢağıda yer almaktadır.
ġekil B. 1: ysaann.com veritabanı tablolarından bir görünüm
72
EK C - ysaann.com WEB SĠTESĠNĠN SINIFLARININ PROGRAM
KODLARINDAN ÖRNEKLER
project.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
/// <summary>
/// Summary description for project
/// </summary>
public class project
{
private int _id;
public int Id
{
get { return _id; }
set { _id = value; }
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private string _sDate;
public string SDate
{
get { return _sDate; }
set { _sDate = value; }
}
private string _eDate;
public string EDate
{
get { return _eDate; }
set { _eDate = value; }
}
private projectType _projectType;
73
public projectType ProjectType
{
get { return _projectType; }
set { _projectType = value; }
}
private string _aim;
public string Aim
{
get { return _aim; }
set { _aim = value; }
}
private string _cCompany;
public string CCompany
{
get { return _cCompany; }
set { _cCompany = value; }
}
private string _pManager;
public string PManager
{
get { return _pManager; }
set { _pManager = value; }
}
private int _person;
public int Person
{
get { return _person; }
set { _person = value; }
}
private int _hour;
public int Hour
{
get { return _hour; }
set { _hour = value; }
}
private programmingLanguages _pLang;
public programmingLanguages PLang
{
74
get { return _pLang; }
set { _pLang = value; }
}
private string _dsi;
public string Dsi
{
get { return _dsi; }
set { _dsi = value; }
}
private string __totalCost;
public string _totalCost
{
get { return __totalCost; }
set { __totalCost = value; }
}
private string __effortCost;
public string _effortCost
{
get { return __effortCost; }
set { __effortCost = value; }
}
private string _avrgHourSalary;
public string AvrgHourSalary
{
get { return _avrgHourSalary; }
set { _avrgHourSalary = value; }
}
private currency _curId;
public currency CurId
{
get { return _curId; }
set { _curId = value; }
}
private user _regUser;
public user RegUser
{
get { return _regUser; }
set { _regUser = value; }
}
75
private string _regDate;
public string RegDate
{
get { return _regDate; }
set { _regDate = value; }
}
private string _upDate;
public string UpDate
{
get { return _upDate; }
set { _upDate = value; }
}
public project(int id, string name, string sDate, string eDate, projectType type,
string aim, string cCompany, string manager, int person, int hour,
programmingLanguages pLang, string dsi, string cost, string effortcost, string
avrgHourSalary, currency cur, user regUser, string regDate, string upDate)
{
this._id = id;
this._name = name;
this._sDate = sDate;
this._eDate = eDate;
this._projectType = type;
this._aim = aim;
this._cCompany = cCompany;
this._pManager = manager;
this._person = person;
this._hour = hour;
this._pLang = pLang;
this._dsi = dsi;
this.__totalCost = cost;
this.__effortCost = effortcost;
this._avrgHourSalary = avrgHourSalary;
this._curId = cur;
this._regUser = regUser;
this._regDate = regDate;
this._upDate = upDate;
}
}
neuron.cs
using System;
using System.Collections.Generic;
using System.Linq;
76
using System.Web;
/// <summary>
/// Summary description for neuron
/// </summary>
public class neuron
{
private double[] _weight;
public double[] Weight
{
get { return _weight; }
set { _weight = value; }
}
private double _inputValue;
public double InputValue
{
get { return _inputValue; }
set { _inputValue = value; }
}
private double _outputValue;
public double OutputValue
{
get { return _outputValue; }
set { _outputValue = value; }
}
private string _aFunction;
public string AFunction
{
get { return _aFunction; }
set { _aFunction = value; }
}
public static double[] weightArray(int neuronInputNumber)
{
double[] weights=new double[neuronInputNumber];
for (int i = 0; i <= neuronInputNumber; i++)
{
Random r = new Random();
weights[i] = ((double)(r.Next(-1000, 1000)))/1000f;
77
}
return weights;
}
public neuron(double[] weight, double inputValue, string aFunction, double
outputValue)
{
this._weight = weight;
this._inputValue = inputValue;
this._outputValue = outputValue;
this._aFunction = aFunction;
}
}
EK D - ysaann.com WEB SĠTESĠ SAYFALARINDAN ÖRNEKLER
aboutUs_tr.aspx
<%@ Page Title="Proje Hakkında" Language="C#"
MasterPageFile="~/tr/MasterPage.master" AutoEventWireup="true"
CodeFile="aboutUs_tr.aspx.cs" Inherits="tr_aboutUs_tr" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" runat="server"
contentplaceholderid="ContentPlaceHolder1">
<table cellpadding="0" cellspacing="0" class="mainTable">
<tr>
<td>
<table cellpadding="0" cellspacing="0" class="mainTable" align="center"
border="1">
<tr>
<td class="links" width="200px">
Proje Adı:</td>
<td>
Yapay Sinir Ağları ile Yazılım Projesi Maliyet Tahmini</td>
</tr>
<tr>
<td class="links" width="200px">
Proje No:</td>
<td>
6381</td>
</tr>
<tr>
<td class="links" width="200px">
Proje Tipi:</td>
78
<td>
Ġstanbul Üniversitesi Bilimsel AraĢtırma Projeleri Yüksek Lisans Tez
Projesi</td>
</tr>
<tr>
<td class="links" width="200px">
Sahibi:</td>
<td>
AraĢ. Gör. Elif KARTAL KARATAS (Ġstanbul Üniversitesi
Enformatik Bölümü) </td>
</tr>
<tr>
<td valign="top" class="links" width="200px">
Tez DanıĢmanı:</td>
<td>
Doç. Dr. Sevinc GULSECEN (Ġstanbul Üniversitesi Enformatik
Bölümü ve Ġstanbul
Üniversitesi Matematik Bölümü)</td>
</tr>
<tr>
<td class="links" width="200px">
Finansal Destek:</td>
<td>
Ġstanbul Üniversitesi Bilimsel AraĢtırma Projeleri Birimi</td>
</tr>
<tr>
<td valign="top" class="links" width="200px">
Proje Amacı:</td>
<td>
Yazılım projesi maliyet tahmini için gereken birtakım verileri
Türkiye&#39;deki
yazılım Ģirketlerinden toplamak.<br />
<br />
Yazılım projesi maliyet tahminine uygun en iyi yapay sinir ağı
modelini
oluĢturmaya çalıĢmak.<br />
<br />
Yazılım Ģirketlerine, yazılım projesi maliyet tahmini konusunda rehber
olmak.<br />
<br />
Yazılım Ģirketlerini geliĢmekte olan yeni yapay Sinir Ağları tekniği ile
tanıĢtırmak.</td>
</tr>
</table>
</td>
</tr>
</table>
</asp:Content>
79
contactUs_aspx
<%@ Page Title="ĠLETĠġĠM" Language="C#"
MasterPageFile="~/tr/MasterPage.master" AutoEventWireup="true"
CodeFile="contactUs_tr.aspx.cs" Inherits="tr_contactUs_tr" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" runat="server"
contentplaceholderid="ContentPlaceHolder1">
<table align="center" class="mainTable">
<tr>
<td class="links">
ADRES:
</td>
</tr>
<tr>
<td>
<a class="links" href="http://istanbul.edu.tr" target="_blank">Ġstanbul
Üniversitesi
<a class="links" href="http://enformatik.istanbul.edu.tr"
target="_blank">Enformatik
Bölümü
</a>
<br />
16 Mart ġehitleri Cad. Kalenderhane Sok.
<br />
No:22/24 (Vezneciler Kız Yurdu KarĢısı)
<br />
Vezneciler -Beyazıt ĠSTANBUL
</td>
</tr>
<tr>
<td class="links">
TELEFON:
</td>
</tr>
<tr>
<td>
0 212 440 00 00 - 11545
</td>
</tr>
<tr>
<td class="links">
FAX:
</td>
</tr>
80
<tr>
<td>
0 212 440 00 86
</td>
</tr>
<tr>
<td class="links">
AĢağıdaki formu doldurarak site yöneticisine mesajınızı iletebilirsiniz.</td>
</tr>
<tr>
<td>
<table cellpadding="0" cellspacing="0" class="mainTable">
<tr>
<td class="links">
Gönderen:</td>
<td>
<asp:TextBox ID="TextBox1" runat="server"
Width="730px"></asp:TextBox>
&nbsp;<asp:RegularExpressionValidator
ID="RegularExpressionValidator1"
runat="server" ControlToValidate="TextBox1"
ErrorMessage="geçersiz e-posta !"
ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([.]\w+)*">*</asp:RegularExpressionValidator>
</td>
</tr>
<tr>
<td align="right" class="links">
Konu:</td>
<td>
<asp:TextBox ID="TextBox2" runat="server"
Width="730px"></asp:TextBox>
</td>
</tr>
<tr>
<td align="right" class="links" valign="top">
Mesaj:</td>
<td>
<asp:TextBox ID="TextBox3" runat="server" Height="138px"
TextMode="MultiLine"
Width="730px"></asp:TextBox>
</td>
</tr>
<tr>
<td>
&nbsp;</td>
<td align="left">
<asp:Button ID="Button1" runat="server" onclick="Button1_Click"
Text="Gönder" />
81
</td>
</tr>
<tr>
<td>
&nbsp;</td>
<td>
<asp:Label ID="lblWarning" runat="server"
CssClass="links"></asp:Label>
</td>
</tr>
</table>
</td>
</tr>
</table>
</asp:Content>
contactUs_aspx.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Web.Mail;
using System.Net;
using System.Collections;
public partial class tr_contactUs_tr : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
SmtpClient smtpClient = new SmtpClient();
System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage();
try
{
MailAddress fromAddress = new MailAddress(TextBox1.Text);
smtpClient.Host = "mail.ysaann.com";
message.From = fromAddress;
message.To.Add("[email protected]");
message.Subject = TextBox2.Text;
message.IsBodyHtml = false;
message.Body = TextBox3.Text;
smtpClient.Send(message);
82
lblWarning.Text = "Mesajınız iletilmiĢtir. En kısa zamanda size geri bildirim
yapılacaktır.";
TextBox1.Text = null;
TextBox2.Text = null;
TextBox3.Text = null;
}
catch (Exception ex)
{
lblWarning.Text = "Mesajınız iletilememiĢtir.";
TextBox1.Text = null;
TextBox2.Text = null;
TextBox3.Text = null;
}
}
}
83
KAYNAKLAR
ADORF, H. M., 1989, Connectionism and Neural Networks, Knowledge Based Systems
in Astronomy, der. A. Heck ve F. Murtagh, Springer-Verlag, Berlin, s: 215-245.
AKPINAR, H., 1991, Yapay Zeka ve Uzman Sistemler, Ġ.Ü ĠĢletme Fakültesi
ALĠCAN, F., 2006., Dünyada ve Türkiye‟de Ekonomik ve Sosyal Boyutlarıyla Yazılım
Sektörü, ĠletiĢim, Ġstanbul, ISBN: 9789750504334.
ALPAYDIN, E., 2004, Introduction to Machine Learning, The MIT Press, Cambridge,
Massachusetts, London, England, ISBN: 0-262-01211-1.
ANDREASEN, N. C., 2009, Yaratıcı Beyin Dehanın Nörobilimi (Çev. GÜNEY, K.),
ArkadaĢ Yayınevi, Ankara, 978-975-509-599-8.
ANSI/PMI, A Guide to the Project Management Body of Knowledge (PMBOK Guide),
2008, Project Management Institute, Inc., Newtown Square, Pennysylvania, ISBN: 9781-933890-51-7.
AÖF,
S.
Ö.,
Ünite
3
http://www.aof.anadolu.edu.tr/kitap/EHSM/1024/unite03.pdf
08.12.2009].
–
,
Psikoloji,
[Ziyaret Tarihi:
ASLAN, Y., YAġAR, C., NALBANT, A., 2006, Electrical Pak Load Forecasting in
Kütahya with Artificial Neural Networks, Dumlupınar Üniversitesi Fen Bilimleri
Enstitüsü Dergisi, 11, 63-74.
AYYILDIZ, M., 2007, Yazılım Projeleri Ölçüm Sonuçları Veritabanının Oluşturulması
ve Yeni Yazılım Projelerinin Maliyet Tahmininde Kullanımı, Doktora, Yıldız Teknik
Üniversitesi.
AYYILDIZ, M., KALIPSIZ, O., YAVUZ, S., 2007, Yazılım GeliĢtirme Projelerinde
Yapay Sinir Ağı Kullanarak Maliyet Tahmini, III.Ulusal Yazılım Mühendisliği
Sempozyumu Bildirileri, http://www.emo.org.tr/ekler/0b13c8bf9a48526_ek.pdf ,
[Ziyaret Tarihi: 26.01.2010].
ATTARZADEH, I., OW, S. H., 2010. A novel Algorithmic Cost Estimation Model
Based on Soft Computing Technique, Journal of Computer Science 6 (2): 117-125,
http://www.google.com.tr/search?hl=tr&client=firefoxa&hs=CEP&rls=org.mozilla%3Atr%3Aofficial&biw=1280&bih=602&q=a+novel+Algorithmic+Cos
t+Estimation+Model+Based+on+Soft+Computing+Technique&oq=a+novel+Algorithmic+Cost+E
stimation+Model+Based+on+Soft+Computing+Technique&aq=f&aqi=&aql=&gs_sm=e&gs_upl
=327767l330504l0l331193l9l9l0l3l3l0l289l1291l1.0.5l6l0 , [Ziyaret Tarihi: 22.01.10].
BAġKELEġ, B., 2004, Software Effort Estimation Using Machine Learning Methods,
Yüksek Lisans, Boğaziçi Üniversitesi.
84
BOEHM, B., 1981, Software Engineering Economics, Prentice-Hall Inc Englewood
Cliffs, New Jersey, 0-13-822122-7.
BOSQUE, M., 2004, Web Based Neural Nets: Interactive Artificial Neural Networks
For The Internet, iUniverse, Inc, United States of America, 0-595-76578-5.
BÜMEN, N. T., 2004, Okulda Çoklu Zeka Kuramı, Pagem A Yayıncılık, Ankara.
CEDĠMAĞAR, Ġ. T., 2009, Hayallerin Üzerine Kanat Çırpmak, Gebze Ġleri teknoloji
Enstitüsü e-Bülten, http://www.gyte.edu.tr/ebulten/sayi62/kultur.htm , [Ziyaret Tarihi:
27.04.11].
CHOW, T. W., CHO, S. Y., 2007, Neural Networks and Computing, Learning
Algorithms,Imperial College Press,Singapore, 978-1-86094-758-2.
CRICK, F., 2008, Şaşırtan Varsayım (Çev. S. SAY), TÜBĠTAK, Ankara, 978-975-403069-3.
CÜCENOĞLU, D., 1992, Ġnsan ve DavranıĢları, Remzi Kitapevi, Ġstanbul.
DEVIREDDY, S. K., RAO, S.A., (2009), Hand written character recognition using
back propagation network, Journal of Theoretical and Applied Information Technology,
5 (3), 257-269, http://www.jatit.org/volumes/research-papers/Vol5No3/2Vol5No3.pdf
, [Ziyaret Tarihi: 13.10.2010].
ELMAS, Ç., 2007, Yapay Zeka Uygulamaları, Seçkin Yayıncılık, Ankara, 978-975-020614-6.
ENCYCLOPEDIA
BRITANNICA
[online],
http://www.britannica.com/EBchecked/topic/155485/Deep-Blue , [Ziyaret Tarihi:
20.01.2010].
FINNIE, G. R., WITTIG, G. E., DESHARNAIS, J. M., 1997. “A Comparison of
Software Effort Estimation Techniques: Using Function Points with Neural Networks,
Case-Based Reasoning and Regression Models”, Journal of Systems Software, 39 (3),
281-289, http://www.sciencedirect.com/, [Ziyaret Tarihi: 29.09.2010].
FOXNEWS, 2011, http://video.foxnews.com/v/3936603/artificial-intelligence , [Ziyaret
Tarihi: 25.05.2011].
GARDNER, H., 1983, Frames of Mind: The Theory of Multiple Intelligences, New
York: Basic Books.
GARDNER, H., 1999, Çoklu Zeka: Görüşmeler ve Makaleler, Ġstanbul, Enka Okulları
Vakfı.
Glossary
of
Technical
Terms
and
Topics
http://www.alsp.com/signal/glossary_GJ.html [Ziyaret Tarihi: 20.01.2010].
85
[online],
GRAUPE, D., 2007, Principles of Artificial Neural Networks, World Scientific
Publishing Co. Pte. Ltd., ISBN: 978-981-270-624-9.
GRIMSTAD, S., JORGENSEN, M., MOLOKKEN-OSTVOLD, K., 2006, Software
effort estimation terminology: The tower of Babel, Information and Software
Technology, 48 (4), 302-310, http://www.sciencedirect.com/, [Ziyaret Tarihi:
27.04.2011].
GÖKTEPE, A. B., AĞAR, E., LAV, A., H., 2005, Esnek üstyapılarda mekanik
özelliklerin yapay sinir ağları kullanılarak geri-hesaplanması, itüdergisi, 4 (2), 31-42.
GÖRZ, G. N., 2005, Yapay Zeka (Çev. Ö. POZAN), Ġnkılap Kitabevi, Ġstanbul, 975-102405-6.
GÖZÜDELĠ, Y., 2009, Yazılımcılar için SQL Server 2008 & Veritabanı Programlama,
Seçkin Yayıncılık, Ankara, 978-975-02-1014-3.
GÜLSEÇEN, S., 1993, Yapay sinir ağları, işletme alanında uygulanması ve bir örnek
çalışma, Doktora, Sosyal Bilimler Enstitüsü, Ġstanbul Üniversitesi.
GÜMÜġTEPE, Y., 2007, Web Tasarımcısının Yol Haritası, Türkmen Kitabevi,
Ġstanbul, 978-975-6392-73-7.
GÜZELDERE, G., 1998, Yapay Zeka'nın Dünü, Bugünü, Yarını, Cogito , 13, 27-41, .
HATON, J. P., 1991, Yapay Zeka L'intelligence artificielle. (Çev. EKMEKÇĠ, A. T.),
ĠletiĢim Yayıncılık A.ġ, Ġstanbul, 975-470-112-1.
HAUSSON, M., 1995, Fundamentals of Artificial Neural Networks, The MIT Press,
Cambridge, Massachusetts, London, England, ISBN: 0-262-08239-X.
HAYLIN, S., 1999, Neural Networks A Comprehensive Foundation, Prentice Hall
International, Inc., New Jersey, ISBN: 0-13-908385-5.
HEATON, J., 2008, Introduction Neural Networks for C#, Heaton Research, Inc., USA,
ISBN: 1-60439-009-3.
HU, Y. H., HWANG, J. N., 2002, Handbook of Neural Network Signal Processing,
CRC Press LLC, London, 08493-2359-2.
HUGHES, R. T., CUNLIFFE, A., & YOUNG-MARTOS, F., 1998, Evaluating software
development effort model-building techniques for application in a real-time
telecommunications environment, Software IEE Proceedings, 145 (1), 29-33,
http://ieeexplore.ieee.org , [Ziyaret Tarihi: 29.09.10].
IBM [online], http://www.research.ibm.com/deepblue/ [Ziyaret Tarihi: 20.01.2010].
IDRI, A., KHOSHGOFTAAR, T. M., & ABRAN, A., 2002, Can Neural Networks be
easily Interpreted in Software Cost Estimation?, 2002 World Congress on
86
Computational
Intelligence,
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.15.4259&rep=rep1&type=
pdf , [Ziyaret Tarihi: 29.09.10].
KALIPSIZ, O., BUHARALI, A., BĠRĠCĠK, G., 2008, Sistem Analizi ve Tasarımı,
Papatya Yayıncılık, Ġstanbul, 975-6797-68-1.
KARUNANITHI, N., WHITLEY, D., & MALAIYA, Y. K.,1992, Using neural
networks
in
reliability
prediction,
Software
IEE,
3
(1),
53-59,
http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=143107 , [Ziyaret Tarihi:
29.09.10].
KAYNAR, O., TAġTAN, S., 2009, Zaman Serisi Analizinde MLP Yapay Sinir Ağları
ve ARIMA Modelinin Karşılaştırılması, Erciyes Üniversitesi Ġktisadi ve Ġdari Bilimler
Fakültesi Dergisi, Sayı:33 (Özel Sayı), 161-172.
KIRIKKANAT, M. G., 2004, TürkiĢi ġah Mat!, Radikal Gazetesi (internet baskısı),
http://www.radikal.com.tr/haber.php?haberno=115823 [Ziyaret Tarihi: 20.01.2010]
KÜLTÜR, Y., 2006, Software Effort Estimation Using Enseble of Neural Networks with
Associative Memory, Yüksek Lisans, Boğaziçi Üniversitesi.
LEE, Y., 2009, Freeway Travel Time Forecast Using Artifical Neural Networks With
Cluster Method, 12th International Conference on Information Fusion, Seattle, WA,
USA: 1331-1338, http://isif.org/fusion/proceedings/fusion09CD/data/papers/0075.pdf ,
[Ziyaret Tarihi: 26.04.2011].
LEUNG, H., FAN, Z., 2002, Software Cost Estimation, Handbook of Software
Engineering
and
Knowledge
Engineering,
2,
ftp://cs.pitt.edu/chang/handbook/42b.pdf , [Ziyaret Tarihi: 29.09.10].
LUM, K., BRAMBLE, M., HIHN, J., HACKNEY, J., KHORRAMI, M., MONSON, E.,
2003, Handbook for Software Cost Estimation, Jet Propulsion Laboratory, California,
http://www.ceh.nasa.gov/downloadfiles/Web%20Links/cost_hb_public-6-5.pdf
,
[Ziyaret Tarihi: 15.10.2010].
MEB,
2010,
10.
Yıl
http://www.meb.gov.tr/belirligunler/29ekim/index_nutuk.htm
,
03.05.2011].
[Ziyaret
Nutku,
Tarihi:
MEHROTRA, K., MOHAN, C. K., RANKA, S., 2000, Elements of Artificial Neural
Networks, The MIT Press, 0-262-13328-8.
MICROSOFT,
Microsoft
Sql
Server
2008
http://www.microsoft.com/sqlserver/2008/tr/tr/overview.aspx
29.09.2010].
87
Genel
BakıĢ,
, [Ziyaret Tarihi:
MITTAS, N., ANGELIS, L., 2010, Visual comparison of software cost estimation
models by regression error characteristic analysis, Journal of Systems and Software, 83
(4), 621-637, http://www.sciencedirect.com/, [Ziyaret Tarihi: 27.04.2011].
MĠLLĠYET,
2006,
http://blog.milliyet.com.tr/Yazilim_projelerinde_maliyet_ve_zamanlama/Blog/?BlogNo
=2647 , [Ziyaret Tarihi: 20.02.2011].
MSDN,
.NET
Framework
Conceptual
Overview
(a),
http://msdn.microsoft.com/library/zw4w595w.aspx , [Ziyaret Tarihi: 29.09.2010]
MSDN, Common Language Runtime (CLR) (b), http://msdn.microsoft.com/enus/library/8bs2ecf4.aspx , [Ziyaret Tarihi: 29.09.2010].
MSDN,
.NET Framework Class Library (c), http://msdn.microsoft.com/enus/library/ms229335.aspx , [Ziyaret Tarihi: 29.09.2010].
MSDN,
Introducing Visual Studio .NET (d), http://msdn.microsoft.com/enus/library/fx6bk1f4(VS.71).aspx , [Ziyaret Tarihi: 29.09.2010].
MSDN,
Visual
Studio
Technologies
and
http://msdn.microsoft.com/en-us/library/bb514232.aspx
29.09.2010].
Languages
(e),
, [Ziyaret Tarihi:
NABĠYEV, V. V., 2005, Yapay Zeka Problemler - Yöntemler – Algoritma, Seçkin
Yayıncılık, Ankara, ISBN.
NAGEL, C., EVJEN, B., GLYNN, J., WATSON, K., & SKINNER, M., 2007, .NET 3.0
ile İleri C# Uygulamaları - Cilt 1 (H. Kilyusufoğlu, Dü., A. Çelebi, H. IĢık, K. Al, S.
Çolak, & Ü. Tezcan, Çev.), Bilge Adam Bilgisayar ve Eğitim Hizmetleri San. ve Tic.
A.ġ., Ġstanbul.
NEWELL, A., 1963, A Guide to the General-Problem Solver GPS 2-2,
http://www.bitsavers.org/pdf/rand/ipl/RM-3337PR_A_Guide_To_The_General_Problem-Solver_Program_GPS-2-2_Feb63.pdf
,
[Ziyaret Tarihi: 30.09.2010].
ÖZKAN, Y., 2010, KiĢisel GörüĢme.
ÖZTEMEL, E., 2006, Yapay Sinir Ağları, Papatya Yayıncılık, Ġstanbul, 975-67-97-398.
PARK, H., BAEK, S, 2008, An empirical validation of a neural network model for
software effort estimation, Expert Systems with Applications, 35 (3), 929-937,
http://www.sciencedirect.com/, [Ziyaret Tarihi: 27.04.2011] .
PENROSE, R., 2004, Kralın Yeni Usu -I- Bilgisayar ve Zeka (Çev. DERELĠ, T.),
TÜBĠTAK, Ankara.
88
PROMISE 2011, Effort Prediction Data Sets for
http://promisedata.org/?cat=14 , [Ziyaret Tarihi: 22.05.2011].
Effort
Prediction,
PUTNAM, L.H., 1978. A general empirical solution to the macro software sizing and
estimating problem. IEEE Trans. Software Eng., 4, 345-361, http://ieeexplore.ieee.org
, [Ziyaret Tarihi: 22.01.10].
REED, R. D., 1999, Neural Smithing Supervised Learning in Feedforward Artificial
Neural Networks, The MIT Press, Cambridge, Massachusetts, London, England, ISBN:
978-0-262-18190-7.
ROJAS, R., 1996, Neural Networks A Systematic Introduction, Springer-Verlag, Berlin,
http://www.inf.fu-berlin.de/inst/agki/rojas_home/documents/1996/NeuralNetworks/neuron.pdf , [Ziyaret Tarihi:
14.10.2010].
RUSSELL, S., NORVIG, P., 2010, Artificial Intelligence A Modern Approach, Prentice
Hall, ISBN: 978-0-13-604259-4.
SAMSON, B., ELLISON, D., & DUGARD, P., 1997, Software cost estimation using an
Albus perceptron (CMAC), Information and Software Technology, 39 (1), 55-60,
http://www.sciencedirect.com/ , [Ziyaret Tarihi: 29.09.2010].
SARIDOĞAN, E., 2000, Yazılım Mühendisliği, Papatya Yayıncılık, Ġstanbul, 978-9756797-57-0.
SAYYAD SHIRABAD, J. and MENZIES, T.J. (2005) The PROMISE Repository of
Software Engineering Databases. School of Information Technology and Engineering,
University of Ottawa, Canada, http://promise.site.uottawa.ca/SERepository , [Ziyaret
Tarihi: 05.06.2011].
SCHOFIELD, C., 1998, Non-Algorithmic Effort Estimation Techniques,
http://dec.bournemouth.ac.uk/ESERG/TechnicalReports.html , [Ziyaret Tarihi:
24.01.2011].
SEZER, A., 2008, Yazılım Projelerinde Yapay Sinir Ağı Uygulaması ile Maliyet
Tahmini, Yüksek Lisans, Haliç Üniversitesi.
SRINIVASAN, K., & FISHER, D., 1995, Machine Learning Approaches to Estimating
Software Development Effort, IEEE Transactions on Software Engineering, 21 (2),
126-137, http://ieeexplore.ieee.org/Xplore/guesthome.jsp , [Ziyaret Tarihi:
29.09.2010].
SOMMERVILLE, I., 2004, Software Engineering (7th Edition), Addison-Wesley,
0321210263.
89
SVOZIL, D., KVASNIČKA, V., POSPICHA, J., 1997, Introduction to multi-layer
feedforward neural Networks, Chemometrics and Intelligent Laboratory Systems, 39
(1), 43-62, http://www.sciencedirect.com/, [Ziyaret Tarihi: 13.10.2010].
TADAYON, N., 2005, Neural Network Approach for Software Cost Estimation.
Proceedings of the International Conference on Information Technology: Coding and
Computing (ITCC'05), 2, 815-818, http://ieeexplore.ieee.org/Xplore/guesthome.jsp ,
[Ziyaret Tarihi: 29.09.2010].
THIMM, G., FIESLER, E.; , 1997. "High-order and multilayer perceptron
initialization", IEEE Transactions on Neural Networks, 8 (2), 349 - 359,
http://ieeexplore.ieee.org , [Ziyaret Tarihi: 20.04.2011].
TOK, G., 2010, Yapay zeka: Nereden nereye…, NTV BİLİM, 15.
tomstandage.com
[online],
http://tomstandage.wordpress.com/books/the-turk/
[Ziyaret Tarihi: 20.01.2010].
TREIGUEIROS, D., BERRY, R., The Application of Neural Network Based Methods
to the Extraction of Knowledge from Accounting Reports. Proceediqs of 24th Annual
Hawaii International Conference on System Sciences, IV, 137-146 (19911.
TRONTO, I. F., SIMONES de SILVA, I. D., & ANNA, N. S. (2008). An investigation
of artificial neural networks based prediction systems in software project management,
Journal Systems and Software, 81 (3), 356-367, http://www.sciencedirect.com/,
[Ziyaret Tarihi: 29.09.2010].
URL1,
http://tomstandage.wordpress.com/books/the-turk/
29.09.2010].
,
[Ziyaret
Tarihi:
URL2, http://www.cyber-warrior.org/Forum/karargah-c-egitim-notlari_296267,0.cwx ,
[Ziyaret Tarihi: 29.09.2010].
URL3,
http://translate.google.com.tr/translate?hl=tr&sl=en&tl=tr&u=http%3A%2F%2Fen.wiki
pedia.org%2Fwiki%2FASP.NET&anno=2 , [Ziyaret Tarihi: 29.09.2010].
URL4, http://franck.fleurey.free.fr/NeuralNetwork/ , [Ziyaret Tarihi: 29.09.2010].
WHITBY, B., 2005, Yapay Zeka, (Çev. KARABAĞLI, Ç.), ĠletiĢim Yayıncılık,
Ġstanbul, 975-05-0379-1.
WITTIG, G, FINNIE, G., 1997. “Estimating software development effort with
connectionist models”, Information and Software Technology, 39 (7), 469-476,
http://www.sciencedirect.com/, [Ziyaret Tarihi: 29.09.2010].
YILDIZ, B., 2009, Finansal Analizde Yapay Zeka, Ankara, 978-978-605-5681-21-0.
YZ'nin
Diğer
Disiplinler
ile
ĠliĢkisi,
http://aima.eecs.berkeley.edu/slidespdf/chapter01.pdf , [Ziyaret Tarihi: 21.10.2010].
90
ÖZGEÇMĠġ
Elif KARTAL KARATAġ 1986‟da Sakarya‟da doğmuĢtur. 2004 yılında Sakarya
Anadolu Lisesi‟nden mezun olmuĢtur. 2008 yılında Ġstanbul Üniversitesi Matematik
Bölümü‟nü bitirerek aynı yıl Ġstanbul Üniversitesi Enformatik Bölümü‟nde hem yüksek
lisansa hem de araĢtırma görevlisi olarak akademik hayata baĢlamıĢtır. Yapay Zeka,
Yapay Sinir Ağları, Yazılım Projesi Maliyet Tahmini Teknikleri, Web Tasarım,
Bilgisayar Programlama Dilleri (C, C#, ASP.NET, PHP), e-Öğrenme araĢtırma
konularından bazılarıdır. Felsefe kitapları okumak, müzik dinlemek, tango yapmak ve
karikatür çizmek hobileri arasında yer almaktadır. Evlidir. Halen Ġstanbul Üniversitesi
Enformatik Bölümü‟nde akademisyenlik hayatına devam etmektedir.
91

Benzer belgeler