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'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> <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> </td> <td align="left"> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Gönder" /> 81 </td> </tr> <tr> <td> </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("mail@ysaann.com"); 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