Yazılım Mühendisliği Software Engineering Marmara Üniversitesi

Slides:



Advertisements
Benzer bir sunumlar
ÖĞRETİM TASARIMI VE TEKNOLOJİLERİNİN TEMELLERİ
Advertisements

ÇANKIRI KARATEKİN ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ
Yazılım Geliştirme Süreci
Yazılım Geliştirme ve Java
Sinan Doğan, Esra Beyoğlu
Bilgisayar İşletmenliği
Sistem Analizi ve Planlama
UML Unified Modeling Language
C Programlama Dili AT&T Bell laboratuvarlarında, Ken Thompson ve Dennis Ritche tarafından UNIX işletim sistemini geliştirebilmek amacıyla B dilinden türetilmiş.
PROGRAMLAMA DİLLERİ 1- Temel kavramlar
Yıldız Teknik Üniversitesi
Bilişim Sistemleri Mühendisliği Bölümü
İNTERNET.
Bilgi Teknolojisinin Temel Kavramları
Numbers of Opcodes Nihal Güngör.
BELGELEME Ian Sommerville, “Software Documentation”,
Maltepe Üniversitesi Mühendislik Fakültesi
Bilgisayar Donanımı Dersi
ÖĞRENME NESNESİ Sibel SOMYÜREK.  Çeşitli öğrenme ortamlarında tekrar kullanılabilen küçük parçalara bölünmüş olan e-içeriklere öğrenme nesnesi denir.
Bora GÜRSEL CBÜ BAUM Proje Yöneticisi
Öğretim Araç Gereç ve Materyalleri
NESNEYE YÖNELİK PROGRAMLAMANIN TEMEL İLKELERİ GENEL BİR BAKIŞ
Yazılım Proje Yönetimi
Nesneye Dayalı Programlama
İLAÇLA AKILCI TEDAVİ EĞİTİMİNDE TFD’nin ROLÜ
MART 2013 İŞLETİM SİSTEMLERİ.
Bilgisayar Donanımı Dersi
Yazılım Gelişimi. Donanım gelişimine paralel olarak süren yazılım gelişimi, son on yılda kayda değer bir ivmelenme ile bilgisayarları, herhangi bir uzmanlık.
Görsel Programlama Dr. Muhammet Balcılar
Bilgi Sistemi Organizasyonlar içerisindeki kontrol ve karar verme mekanizmalarında kullanılacak bilginin toplanması, işlenmesi, saklanması ve dağıtılmasını.
END3061 SİSTEM ANALİZİ VE MÜHENDİSLİĞİ
ÖĞRETİM TASARIMI VE TEKNOLOJİLERİNİN TEMELLERİ
Şişecam S ayısal Yönetimle Verim VIII. "Türkiye'de İnternet" Konferansı 20 ARALIK 2002 Canan Özcan Türkiye Şişe ve Cam Fab. A.Ş.
Chapter 1: Giriş.
NESNEYE-YÖNELİK PROGRAMLAMA
EYLÜL 2014 İŞLETİM SİSTEMLERİ Bilgisayar Uygulamaları.
END3061 SİSTEM ANALİZİ VE MÜHENDİSLİĞİ
Çeviride Bilgi Teknolojileri Arş. Gör. Sinem Canım
isa özkan_ programlama dilleri
Kurumsal İçerik Yönetimi Kapsamında Bilgi Güvenliği
Bilişim Teknolojileri Alanı
Ana Programlama Dillerinin Evrimi
Eskişehir Şubesi Cevdet ÜRENCİK CMF.
AB Şubat 2002 Selçuk Üniversitesi1 IEEE/ACM Bilişim Ders Programı Önerisi ve Haliç Üniversitesi Deneyimi Doç. Dr. Atilla ELÇİ Bilgisayar Müh. Bölümü.
ALİ FINDIK Galatasaray Ünİversİtesİ 2015
Bilgi Teknolojisinin Temel Kavramları
Şahin BAYZAN Kocaeli Üniversitesi Teknik Eğitim Fakültesi
İnsan Bilgisayar Etkileşimi Alanında Yılları Arasında Türkiye Kökenli Bilim İnsanları Tarafından Yapılan Çalışmalar Üzerine Bir İçerik Analizi.
Kalite Yönetimi Genel Tanımlar.
Bilgisayar Programcılığına ve Algoritmaya Giriş
Temel Bilgi Teknolojilerinin Kullanımı Öğr.Gör. Abdullah ŞENER.
Bilgisayar Mühendisliğine Giriş
SİSTEM VE YAZILIM Bilgisayar sistemleri donanım, yazılım ve bunları işletmek üzere gerekli işlemlerden oluşur. Yazılım, bilgisayar sistemlerinin bir bileşeni.
Ders 2 Algoritma İfade Şekilleri
Genel Kavramlar Bölüm - 1. YAZILIM Bilgisayara işlemler yaptırabilmek ve karar verdirtebilmek için yazılan kalıplara denir. Yazılım, genel olarak donanım.
Barış Ceviz Yazılım Geliştiricisi Yazılım, Yazılımcı, Yazılım Dilleri.
YONT 409 PROJE YÖNETİMİ.
Bilgisayar Mühendisliğindeki Yeri
Yazılım Mühendisliğine Giriş YYurtaY. Ders İçeriği o Yazılım mühendisliğine giriş, o Yazılım mühendisliği ve etik, o Yazılım mühendisli ğ inin önemi ve.
Yazılım Mühendisliği YYurtaY. Ekip çalışması
Sistem Analizi ve Tasarımı
Nesne Tabanlı Yazılım Geliştirme Bora Güngören Portakal Teknoloji EMO Ankara Şubesi
HÜDAVEND HATUN MESLEKİ VE TEKNİK ANADOLU LİSESİ
Yazılım Mühendisliği Standartları
PROGRAMLAMA TEMELLERİ
Problem Çözme Yaklaşımları
Bilgisayar Mühendisliğine Giriş
Yazılım Mühendisliği Temel Süreçler - Sistem Analizi
Yazılım Mühendisliği Temel Süreçler – PLANLAMA II
YAZILIM KOD ÜRETEÇLERİ
Sunum transkripti:

Yazılım Mühendisliği Software Engineering Marmara Üniversitesi Bilişim Ana Bilim Dalı Yazılım Mühendisliği Software Engineering Hazırlayan: Baha KURTBOĞANOĞLU Öğretim Üyesi: Doç. Dr. Erhan AKYAZI İSTANBUL, 2011

Bilgisayar Yazılımı Yazılım Nedir? Yazılım, değişik ve çeşitli görevler yapma amaçlı tasarlanmış elektronik araçların, birbirleriyle haberleşebilmesini ve uyumunu sağlayarak, görevlerini ya da kullanılabilirliklerini geliştirmeye yarayan makine komutlarıdır. TDK Sözlüğüne göre ise; Yazılım Bir bilgisayarda donanıma hayat veren ve bilgi işlemde kullanılan programlar, yordamlar, programlama dilleri ve belgelemelerin tümüdür.

Bilgisayar Yazılımı Yazılımın Tarihi Gelişimi 1823’de Charles Babbage'ın "Fark Aygıtı" adını verdiği otomatik hesap makinesinin buharla çalışan bir modelini yapmayı başarmıştır. 1847’de George BOOLE, Mantığın matematiksel çözümlemesi (Mathematical Analysis of Logic) adlı eserinde bugünkü bilgisayarların temelini oluşturan önermeleri matematiğe kazandırmıştır. 1952 yılında “Yazılım (software)” kelimesi ilk kez bir istatistikçi olan John Tukey tarafından kullanıldı. Yazılımın kelimesinin yanına mühendislik sözcüğünün getirilip “Yazılım Mühendisliği” olarak ilk defa 1968 yılında Almanya’da yapılan bir NATO konferansında kullanılmıştır. 1972’de IEEE Bilgisayar Topluluğu Yazılım Mühendisliği konusunda ilk süreli yayını çıkartmış: Transactions on Software Engineering.

Bilgisayar Yazılımı Tarihte İlk Yazılım Dilleri 1940’lı Yıllar 1943 - Plankalkül (Konrad Zuse) 1943 - ENIAC coding system 1949 - C-10 1950’li ve 1960’lı Yıllar Bu yıllar modern programlama dillerinin temellerinin atıldığı yıllardır. 1951 - Assembly Language 1952 - Autocode 1954 - FORTRAN (FORmula TRANslator) 1958 - LISP (LISt Processor) 1958 - ALGOL (ALGOrithmic Language) 1959 - COBOL (COmmon Business Oriented Language) 1962 - APL (A Programming Language) 1962 - Simula 1964 - BASIC (Beginner's All-purpose Symbolic Instruction Code) 1964 - PL/I (Programming Language One)

Bilgisayar Yazılımı Tarihte İlk Yazılım Dilleri 1970’li Yıllar Bu yıllarda programlama dilleri olgunlaşmaya, çeşitlenmeye başladığı ve yapısal programlama dillerinin geliştirildiği yıllardır. 1970 - Pascal 1972 - C 1972 - Smalltalk 1972 - Prolog 1973 - ML 1978 - SQL 1980’li Yıllar 1980’li yıllar daha geniş sistemler için ölçeklenebilir uygulamalar geliştirebiliecek dillerin doğduğu yıllardır. Bu yıllar nesne yönelimli programlamanın (Object Oriented Programming) çokça konuşulduğu yıllardı. 1983 - Ada 1983 - C++ 1985 - Eiffel 1987 - Perl 1989 - FL (Function Level)

Bilgisayar Yazılımı Tarihte İlk Yazılım Dilleri 1990’lı Yıllar İnternetin yaygınlaşmasıyla birlikte, internetle çok ciddi anlamda bütünleşen Java dilinin geliştirildiği ve yaygınlaştığı yıllar oldu 1990’lar. 1990 - Haskell 1990 - Python 1991 - Java 1993 - Ruby 1995 - PHP 1995 - Delphi 2000 - C#

Bilgisayar Yazılımı Tarihte İlk Yazılımcı Bir Kadındı Bugünkü programcılığın temellerini atan Lady Ada Lovelace 10 Aralık 1815 de İngiltere‘de doğdu. Programlama hayatı zeki bir matematikçi olan Charles Babbage ile tanışmasıyla başladı. Charles Babbage kendisi gibi matematikçi olan Ada Lovelace ile tanışmadan önce Napier‘in logaritma cetvelindeki yanlışlıklar üzerinde çalışıyordu. Babbage ile Lovelace birlikte birçok farklı tip hesap yapabilen “analitik makine” adını verdiği bir makine tasarlamaya başladı. İşte bu esnada Lovelace çalışmasını sürdürdükleri bu makine için birçok bilgisayar programı geliştirdi. Lovelace bu çalışmalarıyla bilgisayar programcılığında bugünkü döngü ve rutinlerin temelini oluşturdu. Bu programlar, kartların üzerine açılmış delikler halinde kodlanıyordu. Babbage’de yaşamının son 37 yılını bu makinenin yapımına adadı. Ancak kamuoyu tarafından yeterli ilgi ve desteği almayınca hayal kırıklığına uğradı. 1871 ‘de makineyi tamamlayamadan öldü.

Yazılım Mühendisliği Yazılımın Mühendisliği Nedir? Yazılım Mühendisliği; yazılım geliştirme ile ilgilenen bilim dalıdır. Yazılım Mühendisliği tanım olarak "Karmaşık yazılım sistemlerinin belirli bir hedefe ve sisteme dayalı olarak, iş bölümü yapılması suretiyle, belirli ilkeler, yöntemler ve araçlar kullanılarak geliştirilmesidir." Yazılım Mühendisliği belirli aşamalardan oluşmaktadır. Yazılım geliştirmenin yanında yazılımı işletmek de Yazılım Mühendisliğinin en önemli görevlerindendir. Diğer bir tanıma göre ise; Yazılım mühendisliği büyük ölçekli ve karmaşık yazılımların geliştirilmesi ve bakımıyla uğraşan bilgisayar biliminde bir alandır. Bir yazılımın büyük ölçekli yazılımlar sınıfına dahil olabilmesi için bahsedilen ölçütlerden birisi en az 50 bin satır kod içermesinin gerektiğidir. Bu tip projelerde genellikle birden fazla insan birlikte çalışırlar. Yazılım mühendisliği, programlama bilgisi gibi teknik yönlerin yanında, yazılımın bütçe ve süresinin planlanması ve takip edilmesi, yazılımı geliştiren elemanların idaresi gibi yönetimsel yönler de içerir.

Yazılım Mühendisliği Yazılımın Mühendisliği Gelişim Süreci İlk bilgisayarlar için oluşturulan programların genel özellikleri şöyleydi. Sadece bir programcı tarafından yazılırlardı. Kullanıcılar kendi alanlarının uzmanı olan (bilim adamı ve mühendis gibi) kişilerdi. Programlar çözüm yolu belli olan teknik konulardaydı. Bilgisayarlar performans olarak geliştikçe ve ucuzladıkça kullanım alanları genişledi. Yazılımlar büyümeye ve karmaşık bir hal almaya başladı. Yazılımlar tarafından modellenmesi gereken şeyler teknik konular yerine, oldukça karmaşık iş süreçleri (uçaklar için rezervasyon yazılımları, stok takip ve maaş yazılımlarına ihtiyaç) olmuştu. Müşteri isteklerinin, oluşturulan yazılımla karşılanamaması nedeniyle yazılım krizi sürecinin meydana gelmesine neden oldu.

Yazılım Mühendisliği Yazılım Krizi Yazılımların güvenli olmayışıyla ilgili geçmişte dikkate değer pek çok olay yaşanmıştır. Bunlardan birkaçı şöyledir: 28 Temmuz 1962 - Mariner 1 Uzay Roketi: Mariner 1'in uçuş yazılımındaki bir hata, fırlatma sırasında roketin istenen yörüngeden ayrılmasına yol açtı. Kazayla ilgili inceleme yapıldığında, bir kağıda kurşun kalemle yazılmış bir formülün bilgisayara yanlış geçirilmiş olduğu ortaya çıktı. Böylece bilgisayar roketin yörüngesini yanlış hesaplamıştı. 1985-1987 - Therac-25 Tıp Kazası: Therac-25 radyasyon terapi makinesinin kontrol yazılımındaki bir hata nedeniyle 1985-86 tarihleri arasında birçok hastanın ölümüne neden oldu.

Yazılım Mühendisliği Bu ve benzeri nedenlerden dolayı, yazılım geliştirme sürecinin mühendislik temelleri üzerine oturtulması düşünüldü. Yani yazılım geliştirme sürecinin, sistematik, disipline edilmiş (belli kuralları olan) ve ölçülebilir bir süreç haline getirilmesi gerekir. Yani Yazılım mühendisliği, yazılıma mühendislik yaklaşımlarının uygulanmasıdır. Bir inşaat mühendisinin bir binayı yaparken mühendislik yaklaşımlarını kullanarak binanın maliyetini ve inşaatın ne kadar süreceğini hesaplaması ve müşterinin arzusuna göre binayı doğru bir şekilde biçimlendirebilmesi gibi. Peki biz de yazılımları böylemi hazırlamalıyız?

Yazılım Mühendisliği Yazılım Mühendisliğinin, diğer mühendislik ürünlerinden farklı birtakım eşsiz özellikleri vardır. Bunlardan birisi karmaşıklıktır (complexity): Bir yazılım, gerçek dünyada bir iş sürecinin modelidir. İş süreci içerisinde olası bütün durumlar ve yönler tamamen yazılım tarafından adreslenmelidir. İş sürecini karmaşıklığı ölçüsünde yazılım da karmaşıklaşacaktır. Bunun yanında kolay kullanılabilirlik, kabul edilebilir bir performans, güvenilirlik ve ucuzluk gibi etmenler de işin içine giriyor. Diğer bir özellik görünmezliktir (invisibility): Diğer mühendislik alanlarında ürünün (mesela bir evin veya elektronik devrenin) ne durumda olduğu kolayca görülebilir. Fakat bir yazılımın sadece çalışma esnasındaki davranışları gözlemlenebilir. İçerisindeki hatalar ve farklı durumlarda ne yapacağı kolay kolay tahmin edilemez. Yazılımın yukarıda sayılan özelliklerine rağmen yazılım mühendisliği, büyük ölçekli yazılımların geliştirilmesinde fayda sağlayacak pek çok katkılarda bulunmuştur.

Yazılım Mühendisliği Yazılım Geliştirme Aşamaları Karmaşık yazılımları geliştirmek ve bakımını yapmak çok masraflı ve zordur. Bu yüzden yazılımlar yazılım mühendisleri tarafından nizami olarak planlı bir proje şeklinde geliştirilmektedir. Bu nizami geliştirme planına Yazılım Geliştirme Süreci adı verilmektedir. Başlıca yazılım geliştirme aşamaları şunlardır: Çekirdek aşamalar: Problemin Tanımı & Planlama Çözümleme & Analiz Dizayn & Tasarım Programlama & Gerçekleştirim Test Uygulama Destekleyici aşamalar: Talep yönetimi Proje yönetimi Kalite yönetimi Yapılandırma yönetimi Yazılım sunumu Dokümantasyon Ayrık yapılandırma

Yazılım Mühendisliği Yazılım Geliştirme Modelleri Klasik Çevrim: Çağlayan (waterfall), şelale modeli, büyük tasarım modeli (grand design) ya da geleneksel model olarak adlandırılır ve sistematik olarak ilerleyen ardışık bir yaklaşımla yazılım geliştirilmesini sağlar. "V" modeli: Geliştirme sürecine sistem kavramıyla yaklaşarak klasik modeldeki test işlemlerinin ne zaman yapılacağını ön plana çıkarır. Prototipleme: Bu yöntemde geliştirici ile kullanıcı beraberce sistemin genel hatlarını tanımlarlar, üzerinde daha fazla düşünülmesi gereken noktaları belirlerler. Ondan sonra çabuk bir tasarım yapılır. Bu tasarım daha çok kullanıcı ile olan etkileşimi ya da sistemin en temel işlevini belirler ve ön ürünün, yani prototipin buna göre yapılmasını sağlar. Spiral model: (sarmal model de denebilir) hem klasik çevrim hem de prototipleme yöntemlerinin iyi yönlerinin birleştirilmesiyle oluşturulmuştur. Yazılım geliştirme tekniklerinde ortaya çıkan son yenilikler çeşitli yazılım araç ve gereçlerinin kullanımını öngörmektedir. Geliştirilecek yazılımın özellikleri bu araç ve gereçler yardımıyla üst düzeyde tanımlanır, sonra da otomatik olarak bu işleri yapacak olan kaynak kod üretilir. Asıl ilke, makineye yapacağı işi çok üst düzeyde, konuşma diline yakın bir dil ile, özel bir gösterimle veya görsel olarak tanımlamaktır. Gerekli görüldüğü takdirde, yöntemlerin birden fazlası bir arada kullanılabilir.

Yazılım Mühendisliği Yazılım Mühendisliği ve Programlama Programlama, yazılım mühendisliği kapsamındaki ürün geliştirme aşamalarından biridir. Programcılık mesleği bir sanat seklinde ortaya çıkmış ve uzun zaman bu boyutlarda gelişmiştir. Bugün de yazılan programların sanat boyutu vardır. Gelişme sürecinde bilimsel katkı artmış ve mühendislik yaklaşımı da kazanılmıştır. Yazılım mühendisliği daha çok büyük ve karmaşık yazılım sistemlerini hedef alır. Bir ders alıştırması için yazılabilecek 50-100 satırlık bir program, mühendislik yaklaşımının uygulanmasını haklı çıkartacak bir örnek oluşturmaz. Büyük kapsamlı yazılım sistemlerinin geliştirilmesinde ise programlamanın işgücü payı ortalama %15-20 civarındadır.

Yazılım Mühendisliği Yazılım Mühendisliği ve Donanım Donanım mühendislikleri ile yazılım mühendisliğinin en belirgin farkı ürünlerindedir. Yazılım ürünü diğer mühendislik ürünlerine oranla daha soyuttur. Yazılım projesi geliştirme ile sonlanırken donanım projelerinde ek olarak imalat safhası vardır. Seri üretim, yazılım geliştirme içerisinde neredeyse hiçten ibarettir. Donanım ürünleri kullanıldıkça aşınırlar yazılım ürünlerinde ise aşınma olmaz. Yalnızca baştan beri gizli bulunan hatalar kullanıldıkça ortaya çıkar. Donanım mühendisliklerinde maliyet odağı seri üretim ve yıpranmayken, yazılım mühendisliğinde maliyet odağı geliştirmedir.

Yazılım Mühendisliği Yazılım Mühendisliği Eğitimi Yazılım Mühendisliği, 1968 yılında yazılım geliştirmedeki problemleri tartışmak ve gerekli çalışmaları tanımlayabilmek için NATO tarafından düzenlenen bir konferansta, güvenilir ve etkin olarak çalışan yazılımların ekonomik olarak elde edilebilmesi için mühendislik ilkelerinin uygulanması olarak tanımlanmıştır. 1968 yılında düzenlenen bu konferanstan bugüne kadar Yazılım Mühendisliği disiplini çok gelişme kaydetmiş ve ilerlemiş olmakla beraber, günümüzde hala diğer mühendislik dalları ile eş tutulmamaktadır. Günümüzde yazılım geliştirme alanında milyonlarca kişi çalışmakta, yazılım mühendisliğinde yer alan çeşitli konular üzerinde çeşitli konferanslar düzenlenmekte ve yazılım mühendisliği üzerine eğitim programları bulunmaktadır. Bütün bu gelişmelere paralel olarak yazılım mühendisliğinin geçmişe oranla daha iyi tanındığını ve diğer meslek dalları arasındaki yerinin belirginleştiğini söyleyebiliriz. Ancak yazılım mühendisliği çevrelerinin üzerinde birleştiği bir konu, yazılım mühendisliğinin halen "genç" bir disiplin olduğu ve yeterli olgunluğa ulaşması için birçok konuda fikir birliğinin sağlanması için zamana gereksinim olduğudur .

Yazılım Mühendisliği Yazılım Mühendisliği Eğitimi Yazılım mühendisliğinin olgunlaşma sürecini hızlandırmak için yakın geçmişte, uluslararası meslek kuruluşları (ACM, Association for Computing) "Yazılım Mühendisliği Koordinasyon Komisyonunu" oluşturmuş ve yazılım mühendisliği alanında çeşitli projelere başlamıştır. Bunlar; Yazılım mühendisliği çekirdek bilgisinin tanımlanması - Software Engineering Body of Knowledge (SWEBOK). Yazılım mühendisliği etiklerinin tanımlanması - Software Engineering Code of Ethics and Professional Practice (SWCEPP). SWEBOK ile uyumlu olarak örnek bir eğitim programı tanımlanması - Software Engineering Education Project(SWEEP). olarak belirlenmiştir. Yazılım mühendisliği çekirdek bilgisinin(SWEBOK) ilk versiyonu, çalışmaların ilk aşamasının tamamlanmasıyla, 2001 yılında hazırlanmıştır. SWEEP kapsamında eğitim programlarının tanımlanması çalışmaları halen devam etmektedir. Yukarıda belirtilen çalışmalarla bağlantılı olarak, son yıllarda A.B.D, Avustralya, Kanada ve Türkiye'de çeşitli üniversiteler "Yazılım Mühendisliği Lisans ve Yüksek Lisans Programları" oluşturmuşlardır.

Yazılım Mühendisliği Yazılım Mühendisliği Eğitimi Günümüzde yazılımlarda karşılaşılan problemler, yazılım mühendisliği eğitiminin önemini vurgulamaktadır. Bu bağlamda, yazılım problemlerinin çözümü ve iyileştirmeler için, gelecekteki yazılım mühendislerinin eğitimine odaklanılması gerektiği, literatürde sıklıkla vurgulanmaktadır.

Beni Dinlediğiniz İçin TEŞEKKÜR EDERİM..

Sibernetik ve Sanal Gerçeklik Kaynakça Meriç Merih AKYOL, Türkiye’de Yazılım Mühendisliği Ve Yazılım Yönetimi Uygulamaları, 2009 Yazılım Mühendisliği (Software Engineering), http://www.cengaver.net/depo/yazMuh.pdf, 12.05.2011 İrfan MACİT, Yazılım Mühendisliği ve Araçları (CASE), http://w3.gazi.edu.tr/~nyalcin/CASE.pdf, 12.05.2011 http://tr.wikipedia.org/wiki/Yaz%C4%B1l%C4%B1m_m%C3%BChendisli%C4%9Fi, 12.05.2011 Recep Rehat ÇETİN, Yazılım Mühendisliğinde Uygulama Geliştirmede Bir Çözüm: Yazılım Konfigürasyon Yönetimi, 2007 Barış ULU, Banu DİRİ, Yazılım Mühendisligi Yönetim Süreci Ontolojisi, 2008 Yazılım Mühendisliği Nedir?, http://www.csharpnedir.com/articles/read/?id=230, 14.05.2011 Yazılım Mühendisliği’nin Asli ve Arızi Özellikleri, http://www.javaturk.org/store/swe/No%20Silver%20Bullet%20-%20TR.pdf, 14.05.2011 Geçmişten Günümüze Programlama Dilleri, http://www.chip.com.tr/blog/kadircamoglu/Gecmisten-Gunumuze-Programlama-Dilleri_1846.html, 14.05.2011 Dr. M.Erhan SARIDOĞAN, Yazılım Mühendisliği, 2008