1 Yazılım m MühendisliM hendisliği Ders Notları Prof. Dr. Şeref Sağıroğlu Bilgisayar Mühendisliği Bölümü Ders İçeriği g Yazılım Nedir? g Yazılım Mühendisliğine Bakış? g Yazılım Mühendisi Kimdir? g Yazılım Mühendisliği Kavramları? g Tarihsel gelişim g Yazılım-Donanım Karşılaştırma g Yazılım Mühendisliği Tanımı? g Yazılım Mühendisliğinin Amacı g Yazılım Hataları g Yazılım Maliyetleri g Yazılım Sistemlerinin Sınıflandırılması g Yazılımda Kalite Sağlama g Karşılaşılan problemler, Yanlışlıklar, Sıkıntılar g Ürün mü? g Bilim mi? g Endüstri mi? g Sanat mı? g Mühendislik mi? YAZILIM? YAZILIM TANIMI (WİKİPEDİA) g 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 makina komutlarıdır. g Elektronik cihazların belirli bir işi yapmasını sağlayan programların tümüne verilen isimdir. g Var olan bir problemi çözmek amacıyla bilgisayar dili kullanılarak oluşturulmuş anlamlı ifadeler bütünüdür. YAZILIM TANIMI (TDK) g Bir bilgisayarda donanıma hayat veren ve bilgi işlemde kullanılan programlar, yordamlar, programlama dilleri ve belgelemelerin tümü. (WİKİPEDİA) Bilgisayar programlarının tasarımı, geliştirilmesi, test edilmesi ve bakımı konularını ele alan mühendislik dalıdır. Diğer mühendislik dallarıyla karşılaştırıldığında çok yeni olan bu alanda sürekli yeni yöntemler geliştirilmekte ve konu yavaş yavaş belli bir olgunluğa ulaşmaktadır. Temel mühendislik prensiplerinin bu dalda da uygulanması, önceden tahmin edilebilir ve tekrarlanabilir sonuçların daha çok elde edilmesiyle yazılım mühendisliği gerçek bir mühendislik dalı olma yolunda ilerlemektedir. Şimdilik pek gelişmemiş olmasına karşın ülkemizdeki yazılım mühendisi açığı çok büyük olduğundan geleceğin mesleklerinden birisi olarak gösterilmektedir.
Yazılım Mühendisliğine Giriş (Genel bakış) Analiz Tasarım Kodlama Şelale Modeli (Waterfall Model) g Yazılım üretiminin, mühendislik yöntemleriyle yapılmasını öngören ve bu yönden yöntem, araç, teknik ve metodolojiler üreten bir disiplindir. g Yöntemler Kümesi g Teknikler Kümesi g Araçlar Kümesi Sistem testi Bakım g Yazılım üretiminde YYD de belirtilen aşamaların sistematik olarak izlenmesi ve gerçekleştirilebilmesi YM için ön şarttır. (Amaç) g Yazılım üretimindeki karmaşıklıkları gidermeyi hedefler g YM ile Mühendislik yazılımı terimleri karıştırılmamalıdır. g Mühendislik yazılımı daha çok donanım bileşeni ile ilgisi olan yazılımlardır. g YM, yazılım mühendisi yetiştirmeyi amaçlayan bir disiplindir. (Temel Kavramlar) Yazılım: Bir sistemin donanım bileşenleri dışında kalan her şey olarak tanımlanır. Yazılım; bilgisayar programı yada programlar kümesi olarak algılanmamalıdır. Yazılımı oluşturan bileşenler: Yazılım = Mantık+Veri+Belge+İnsan+Program (Temel Kavramlar) Yazılım = Mantık (algoritma) + Veri (test verisi, bilgi?) + Belge (dokümanlar) + İnsan (kullanıcı, geliştirici) + Program (kod) (bileşenler) Bütün bu bileşenlerin; g belirli bir üretim amacına yönelik olarak bir araya getirilmesi, g yönetilebilmesi için kullanılabilecek üretilen yöntem, g amaç, g bilgi ve g belgelerin tümünü içerir.
(Mantık) gher şeyden önce bir işin bilgisayar aracılığı ile yapılması amacına yöneliktir. gbilgisayarlaştırılmak istenen işin mevcut mantığı yazlıma da yansıtılmak durumundadır. gmantık bileşeni yazılımın en önemli bileşenlerinden birisidir. (Veri) g Her tür yazılım mutlaka bir veri üzerinde çalışma durumundadır. g Veri dış ortamdan alınabilir yada yazılım içerisinde üretilebilir. 'veri' yi 'bilgi' ye dönüştürme en önemli amaçtır. g Yazılım üretimi, bir mühendislik disiplini gerektirir. g Yazılım Yaşam Döngüsü (YYD) mühendisler tarafından üretim sırasında kullanılan yaşam döngüsünden esinlenerek oluşturulmuştur. (Belge) (İnsan) g Yazılım üretimi sırasında, birçok aşamada yapılan ara üretimler, bilgi belge üretimidir. Planlama bilgileri, çözümleme bilgileri, tasarım bilgileri, gerçekleştirim bilgileri gyazılımın insan bileşeni iki boyutludur. g Yazılımı geliştirenler g Yazılımı kullananlar gçok kişili ekiplerle geliştirilmektedir. gtemel nedeni yazılımın yaygınlaşması ve boyutlarının büyümesidir. (Program) g Yazılımın ana çıktısı sonuçta bir bilgisayar programıdır. g İşletime alındıktan sonra bakım çalışmaları sürekli olarak gündeme gelir. g Hiçbir program bütünüyle her olasılık göz önüne alınarak sınanamaz. Hata olasılığı vardır. g İşletmeler doğaları gereği dinamik bir yapıya sahiptir. Süreç içerisinde sürekli olarak yeni istek ve gereksinimler ortaya çıkabilir. g Bu tür değişiklikler yazılıma aktarılmalıdır. YAZILIM MÜHENDİSİ (tanım) g YM işini yapan kişidir. g Değişik bilgisayar bilimi teknolojilerinin ve kişilerin bir bilgi yada yazılım sistemi oluşturmak amacıyla bir araya getirilmesinde bir bütünleştirici gibi çalışır. g YM, bir programcı değildir. Ancak Programcının tüm yeteneklerine sahiptir. Programcı;ağırlıklı olarak kodlama, sınama işi ile ilgilenir. Temel hedefi g söz konusu üretimin az maliyet, yüksek nitelikte yapılmasıdır.
gym işi; YAZILIM MÜHENDİSİ (tanım) insanlarla ilişkiyi gerektirir. daha çok mantıksal boyutuyla ilgilenir. gym ile Sistem Çözümleyici arasındaki belirgin fark ise sistem çözümleyicinin üretimin yalnızca çözümleme aşamasında, YM ise tüm aşamalarında yer almasıdır. İlk yıllar *deste kökenli *Sınırlı dağıtım *Müşteri yazılımı (tarihçe) İkinci zaman *çoklu kullanıcı *gerçek-zaman *veritabanı *ürün yazılımı üçüncü zaman *dağıtık sistemler *gömülü akıllılık *düşük maliyetli donanım *tüketici etkisi dördüncü zaman *güçlü sistemler *nesneye yönelik teknolojiler *uzman sistemler *yapay sinir ağları *paralel işleme 1950 1960 1970 1980 1990 2000 1950-1965 (Gelişimi -1) g Yığınsal kökenli (kullanıcı ile birebir iletişimde bulunmayan, işlerin toplu olarak verilip yalnızca yazıcı çıktılarının alındığı) g Kuruluşa özel 1965-1975 g Bugünün ana çatı bilgisayarları, çok kullanıcılı sistemler ortaya çıkmıştır. g Çok kullanıcılı g Gerçek zamanlı g VTYS'nin ilkleri (kütük sistemleri) 1975-1990 (Gelişimi -2) g Dijital bilgisayarlar yaygınlaşmıştır g Açık sistem mimarisi g Ürün bazlı yazılımlar yaygınlaşmıştır g Bilgisayarlar evlere girmiştir g Dağıtık yazılım sistemleri geliştirilmeye başlanmıştır g Zeki uygulama yazılımları geliştirilmeye başlanmıştır. (Gelişimi -3) 1990 ve sonrası g Yapay zeka donanımları g Paralel donanım mimarileri geliştirilmiştir. g Uzman sistem yazılımları oldukça geliştirilmiştir. g Mikrobilgisayarlar oldukça yaygınlaşmıştır. g Yazılım kalite sağlama olgusu önem kazanmıştır. g Yazılım standartları oluşturulmuştur. g Yazılım evleri veya kurumları yaygınlaşmıştır. g Yazılım üretimi artmıştır. (Tarihsel Gelişmeler) g Yazılım yeni bir konudur : 50 yıl önce yoktu. g 1950ler 1960larda Yazılım Mühendisliği=Programcılık. g Yazılım Krizi, ilk olarak 1968, yoğun kullanım 1980ler. g 1990lara kadar büyük projelerde başarı oranı çok düşük. g ABD de 1970lerde kamu tarafından sipariş yolu ile satın alınan yazılım ürünlerinin ancak % 5 i kabul edilip kullanılabilmiştir. g % 40 ı hiç kullanılamamış, geri kalanı ise maliyet artışı, zaman artışı, performans eksikliği veya özelliklerden taviz verilerek kullanılabilmiştir.
(Tarihsel Gelişmeler -1) Yazılımda ilk yaklaşımlar diğer mühendislik dallarından örnek almıştır. g Yapısallaştırma (parçalara ayırma) g Metodolojiler (SSADM, OOM vb.) g CASE ve ICASE (Tarihsel Gelişmeler -2) g 1984 ABD DoD girişimi ve SEI kuruluşu (Carnegie Mellon Univ. Software Engineering Institute) g Watts Humphrey ve Yetenek Olgunluk Modeli (Capability Maturity Model, CMM ) g ISO 9001, ISO 9000-3, TickIT modelleri g Diğer modeller : Bootstrap (AK), Trillium (Kanada) vb. g SPICE modeli (ISO 15504 taslak standardı) ve ESI Yazılım geliştirme aktiviteleri Yazılım mühendisliği? g Gereksinim analizi (requirements analysis) Fonksiyonel ve fonksiyonel-olmayan gereksinimler (functional & non-func. reqs.) g Tasarım (design) Sistem tasarımı (system design): subsystems Detaylı tasarım (detailed design) g Kodlama ve birim testi (unit testing) Birleşenlerin ayrı ayrı gerçekleştirilmesi ve birim testi g Bütünleme testi ve sistem testi (integration & system testing) g Bakım ve güncelleme (maintenance) Hataların giderilmesi, performans iyileştirme, servislerin geliştirilmesi, değişikliklere uyum, vs. g Tartışmalı bir terim g Yazılım mühendisliği ile kastedilen: Proje yönetim işlemleri Yazılım geliştirme araçlarının(tools) kullanımı Tasarım aktiviteleri g Klasik mühendislik pratiğinden oldukça farklı... Yazılım mühendisliği? (devam) Yazılım mühendisliği? (devam) Yazılım mühendisliği ile klasik mühendislik arasında farklar: g Tasarımların analizi Modern mühendislik projeleri, yapımdan önce projenin başarısını bilimsel ve simulasyon yöntemleriyle ölçebilir, ve garantileyebilir. Ustalık ise deneme yanılma yoluyla iyi sonuçlara ulaşır ve her problem yeni bir çözüm gerektirebilir. Garantisi yoktur. Yazılım geliştirme, bir gökdelenin ustalar tarafından yapılması gibidir; test etme, düzeltme / deneme, yanılma (testing, debugging / trial, error) Yazılım projelerinin başarısı önceden garanti edilemez. g Hataların hep farklı olması Oturmuş mühendislik alanlarında, aynı türden hatalar tekrar etmezler. Yazılım geliştirmede, aynı türden hatalar sıklıkla tekrar eder.... farklar : (devam) g Bilginin kodlanması Önceden edinilen bilgi ve tecrübenin kodlanması ve yeni problemlerin çözümünde tekrar tekrar kullanılması (reuse) Çözümlerin sürekli iyileştirilmesi Sürekli yeni çözümler üretmek gerekmez Klasik mühendislik alanların başarısı bunlara bağlıdır Yazılım geliştirmede, her proje tasarımı yeni bir çözüm olarak üretilir; önceden hazır çözümler genelde yoktur. Bu sebeple, yazılım tasarımı, zor, zaman alıcıdır, güvenilir (reliable) değildir.
Yazılım mühendisliği? (devam) g Bu sebeplerle, yazılım geliştirme, klasik mühendislik alanların oldukça farklıdır. g Henüz oturmamış bir mühendislik alanıdır. g Yazılım geliştirmenin bir mühendislik alanı olarak kabul edilmesi için: Tasarımların analizi için mekanizmalar olmalı, Bilinen hataların tekrarı önlenebilmeli, Tasarım bilgisinin kodlanması gereklidir.. gstandish Grubun Araştırması (2004); 9,236 yazılım projesi (%58 ABD firması, %27 Avrupa firması, %15 diğer) %45 Fortune 1000 tipi firmalar, %35 orta büyüklükte firmalar, %20 küçük firmalar Projelerin %55 i sıfırdan yazıldı g %36 geleneksel diller ve metotlarla, g %19 nesne yönelimli metotlarla, g %16 bazı bileşenler geliştirildi, bazıları hazır, g %13 hazır alındı ve değiştirildi, g %16 diğer (hazır, bileşenler hazır, entegre edilen) g Başarılı projeler: zamanında, bütçe dahilinde, gereken özelliklerle g Uğraştıran projeler: zamanından sonra, bütçeyi aşarak, gerekenden az özelliklerle g Başarısız olanlar: Bitimden önce iptal edildi, teslim edilmedi, hiç kullanılmadı g Diğer sonuçlar; Yazılım projelerinin bütçe gerçekleşme performansları iç karartıcı olmaya devam ediyor g Örnekler: 2001 de, ABD deki projelerin %53 ü başlangıçtaki tahminlerden %189 oranında sapma gösterdi NASA da, maliyet aşımına en yüksek katkıyı (%35 oranında) sağlayan nedenlerden en yaygın olanı (%75); planlama, kestirim ve kontroldeki basit hatalar olarak belirlendi g 1981 de, yazılım yaşam döngüsü üzerinde erken yapılan kestirimlerde %400 e varan sapmalar oluşmakta idi g Ocak 15, 1990: AT&T telefon şirketinin şehirdışı arama servisi 8 saat boyunca devre dışı kalır; sebebi C ile yazılmış arama programında yanlış konulmuş bir break komutu. g Haziran 4, 1996: Ariane 5 uydusu fırlatma esnasında patlar; sebebi yazılımda 64-bitlik bir sayıyı, 16-bite çevirme sırasında hatanın doğru yakalanamaması. g 21. yy. da sistematik problemler halen devam etmekte g 8 Haziran 2001: NYSE Borsasında elektronik hisse senedi alım-satım yazılımında yapılan bir değişiklik, seansın 1 saatten fazla kapanmasına neden olur. g 18 Ocak 2004: Mars a yollanan robotlar (rowers), flash diske yazılan resim dosyalarının sayısı kontrol edilmediği için, bir süre sonra dolar ve kullanılamaz hale gelir (milyar dolarlık proje)
g Microsoft Windows NT ~6 milyon satır kod 200 programcı/test uzmanı/teknik yazar 5 yıl Pek çok hatayı veya eksiği içerisinde barındırmıştır. g Siz biliyorsunuz! Yıl İşletim Sistemi Kod satır sayısı (milyon) 1990 Windows 3.1 3 1995 Windows NT 4 1997 Windows 95 15 1998 Windows NT 4.0 16 1999 Windows 98 18 2000 Windows NT 5.0 20 2001 Windows 2000 35 2002 Windows XP 40 Kaynak: Gary McGraw Yazılım Maliyetleri ve Kalitesi Kalite Maliyetler Donanım Kabiliyetleri Yazılım Maliyetleri ve Kalitesi Kalite Donanım Maliyetleri Maliyetler Zaman Zaman g Büyük yazılım uygulamaları hiçbir zaman %100 hatadan arındırılamaz! g Yazılım geliştirme (çoğunlukla) Proje temelli İş yoğun (bilgi yoğun) Bütçelerini aşar Öngörülen zamandan uzun süren zor, zaman alıcı, masraflı Sürekli devam eden süreç g Değişik yetenekte bir çok personel (belgeleme uzmanı, sınayıcı, programcı, çözümleyici) g Yalnızca yazılımın çıktısı ile ilgi olan ve bilgi teknolojileri konusunda ilgili olmayan kullanıcılar g Yeniliğe tepki gösteren kullanıcı ve yöneticiler g Yeterince tanımlanmamış,oldukça karmaşık kullanıcı beklentileri g Personel değişim oranının yüksekliği g Yüksek eğitim maliyetleri g Dışsal ve İçsel kısıtlar (zaman,maliyet, işgücü) g Standart ve yöntem eksiklikleri g Verimsiz kaynak kullanımı g Mevcut yazılımlardaki kalitesizlik g Yüksek üretim maliyetleri Bunun için yazılım mühendisliği disiplini geliştirilmiştir.
g Karmaşıklık (complexity) Büyük ve karmaşık Tek kişi tarafından anlaşılıp, takip edilemez Küçük parçalara bölünmeli, yazılım grubu tarafından paylaşılmalı g Uzun süreli kullanım ve değişim gereksinimi 20 yıl ve daha fazla süre kullanılmakta.. Kullanıcı gereksinimleri ve şartlar değişmekte, yazılım da buna uyarlanmak zorunda Yazılımın kullanımı boyunca yapılan bakım ve değişiklik harcamaları, ilk yatırımdan çok daha fazladır. g Yüksek kullanıcı beklentileri Bilgisayarlar artık herkes tarafından kullanılıyor, Yazılım, güvenilir ve kolay kullanılır olmak zorunda g Yazılım hataları; yazılım yaşam döngüsünde çok önemli bir yer tutar g Teorik olarak bir program tüm ayrıntıları ile sınanabilir. Ancak bu mümkün değildir. g Örnek:Dışardan girdi olarak A ve B gerçel sayı değerini alıp bu sayıların toplamını C değişkenine aktararak ekranda görüntüleyen bir bilgisayar yazılımı düşünelim g Gerçel sayı değeri 2 64 ise ve her işlemin 10 sn olduğunu varsayalım Yazılım üretiminde Hataların Dağılımı gmantıksal Tasarım %20 gişlevsel Tasarım %15 gkodlama %30 gbelgeleme ve Diğerleri %35 g Yazılım üretiminde hatalar yayılma özelliğini içerir. g Yazılım üretimi aşamalı bir üretim ve bir aşamanın çıktısı bir sonraki aşamaya girdi olduğundan dolayı herhangi bir aşamada yapılan yanlış, izleyen aşamalara otomatik olarak yansır. g Bu nedenle hata düzeltme maliyetleri ilerleyen aşamalarda giderek artar. Yazılım Üretiminde Hata Düzeltme Maliyetleri g Çözümleme 1 g Tasarım 5 g Kodlama 10 g Test 25 g Kabul Testi 50 g İşletim 100 g Yazılım maliyetleri artmaktadır. g Yazılımımızı alırsanız yanında donanımı ücretsiz olarak sağlayacağız. g Yazılım maliyeti donanım maliyetine oranla oldukça yüksektir.
(Çözümler) g Karmaşık yazılım sistemlerinin geliştirilmesinde etkin çözümler getirmeli g Yazılım sistemlerinin uzun süreli kullanım ve değişken yapısına uygun olmalı g Kullanımı kolay ve güvenilir yazılımlar üretmelidir Yazılımın mühendislik olması için 1. Standartlara dayanması gerekir. 2. Ölçülebilmesi gerekir. g Kalite standartları, g kalitenin ölçülebilmesi g Verimin standartları, g Verimin ölçülebilmesi (Kalite Olgusu) g tanımı zor, tanıması kolay, ölçmesi imkansız (Kitchenham) g amaca uygunluk (Juran) g sıfır hata (Crosby) g müşteri isteklerini karşılama g spesifikasyonlara uyum g Bir ürünün veya hizmetin, belirlenen ihtiyaçları karşılayabilme yeteneğine yönelik özelliklerin bütünü. (IEEE: the totality of features and characteristics of a product or service that bears on its ability to satisfy given needs) (Yazılımda Kalite Olgusu) g Hata sayısında düşük düzey (sıfıra yaklaşma) g Kullanıcı isterlerine cevap (tamamını yapabilme) g Arızalar arası zamanın uzunluğu (uzun MTBF) g Destek ve gelişme. (Yazılımda Kalite Olgusu) Yazılımda Kalite Sağlama g Üretim süreci boyunca, g ara ürünlere ilişkin kalite standartları geliştirmek ve g geliştirmenin bu standartlara uygunluğunun denetlenmesi olarak tanımlanır. g Sonuç ürününde belirlenen kalite kriterlerine uygunluğunun sağlanması amacını da taşır. (Yazılımda Kalite Olgusu) Yazılımda Kalite Sağlamada Başlıca Amaç g Yazılım maliyetinin düşürülmesi g Yazılım üretim yönteminin kolaylaştırılması g Belgeleme ve standart sorunlarının giderilmesi g Üretim ortamına bir düzen getirmeyi hedefler.
(Yazılımda Kalite Olgusu) Yazılımda Kalite Sağlamada Başlıca Amaç g Yazılım maliyetinin düşürülmesi g Yazılım üretim yönteminin kolaylaştırılması g Belgeleme ve standart sorunlarının giderilmesi g Üretim ortamına bir düzen getirmeyi hedefler. (Yazılım Sistem Kalitesi) g İşe yararlılık (usefullness) g Zamanlı geliştirilmiş (timeliness) g Güvenilir (reliability) g Güncellenebilir (maintainability) g Yeniden kullanılabilir (reusability) g Kolay kullanılır (user friendliness) g Etkin (efficiency) MİB, bellek, disk, ve diğer kaynakların kullanımı... (Yazılım Sistem Kalitesi:Güncellenebilirlik) g Yazılım sistemlerinin güncellebilirliğini etkileyen faktörler Esneklik (flexibility) Basitlik (simplicity) Okunulurluk (readability) g Anlaşılırlık g Tasarım ve kodlamanın, ayrıca sistem eşlik eden belgelerin temiz ve basit olmasına bağlı YAZILIMLAR g Sistem yazılımı g Gerçek-zamanlı yazılım g İş yazılımı g Mühendislik ve bilimsel yazılım g Gömülü yazılım g Kişisel bilgisayar g Yapay zeka yazılımı Yazılım Sistemlerinin Sınıflandırılması İşleve Göre Sınıflandırma g İşlevlerine göre g Zamana dayalı özelliklerine göre g Boyuta göre g Hesaplama > Sayısal Çözümleme g Veri işleme > Bankacılık g Süreç temelli > Gömülü sistemler g Kural Temelli > Robotik, Yapay Zeka g CAD > Sinyal işleme
g Küçük ss<=2000 Boyutlarına göre PC Oyunları, Öğrenci Projeleri g Orta 2000<ss<=10000 CAD, BDE Yazılımları g Büyük 100000<ss<=1 Milyon İşletim sistemleri, Benzetim Sistemleri g Çok Büyük ss>1 Milyon Komuta Kontrol Sistemleri, Hava Tahmin sistemleri, Yıldız savaşları sistemleri Zamansal özelliklerine göre sınıflandırma g Toplu (çevrim-dışı) çevrim dışı g Gerçek zamanlı Yazılım Mühendisliği Yazılım Mühendisliği Bilgisayar Temelleri Algoritmalar Veri Yapıları Bilgisayar mimarisi D e s i g n Matematik İşletim Sistemleri Programlama Dilleri Yazılım Mühendisliği Mühendislik Gerekleri Yazılım Tasarımı a r e Kodlama Yazılım Testi Bakım Yazılım Projeİşleyiş Risk Kalite Biçim Geliştirme Kazanç Yazılım Alanları Yapay Zeka Veri Tabanı S o f t w İnsan-Bilgisayar İlişkileri Nümerik Sembolik Yazılım Bilgisayarlı Simülasyon Gerçek Zamanlı Sistemler Üretimi ve işlemleri içine alan mühendislik disiplini Yazılım Mühendisliği Yazılım İhtiyaç Analizi Yazılım Yazılım Tasarımı Yazılım Yapılandırılması Yazılım Testi Yazılım Mühendisliği Altyapısı Yazılım Mühendisliği İşlemi Yazılım Değerlendirme ve Bakımı Yazılım Kalite Analizi Yazılım Mühendisliği Temelli İşler Ülkemizde YM Sistem Analisti Yazılım Mimarı Yazılım Ağ Uzmanı Yazılım Programcısı Yazılım Sistem Admin Yazılım Veri Tabanı Admin Webmaster Yazılım Güvenlik Mühendisi Yazılım Testcisi Yazılım Proje Yöneticisi Yazılım Kofigürasyon Yöneticisi Yazılım Kalite Yöneticisi
Yazılım Mühendisliğinin Geleceği (Güncel Yaklaşımlar) Maintenance 67% Requirement 2% Specification 4% Planning 1% Design 6% Module Coding 5% Module Testing 7% Integration 8% Maintenance 76% Approximate relative costs of the phases of the software life cycle. g Klasik yazılım mühendisliği yöntemleri geliştirme sürecinin her aşamasına eşit önem verir. g Değer bazlı yaklaşım, yazılım geliştirme sürecindeki her aşamanın şirketlere ekonomik değer olarak getirisini tahmin eder. Örnek: g Bir ürün piyasaya sürülmeden önce ne kadar test edilmeli? g Kalite seviyesi nereye kadar yükseltilmeli ya da düşürülmeli? Kullanılabilecek Veri Kaynakları gaçık Kaynaklar PROMISE (Software Engineering Repository) NASA (IV&V Facility, Metrics Program) Açık kaynak kodlu projeler (Sourceforge, Linux vb.) Internet kaynaklı diğer küçük veri setleri gyerel Kaynaklar Endüstri projeleri Destek Projeleri Bölüm Projeleri ÖDEVLER: 1. Yazılım Mühendisliği tanımları araştırılmalıdır. 2. Yazılım geliştirme teknikleri araştırılmalıdır. 3. Yazılım geliştirmede karşılaşılan gerçek problemler araştırılmalıdır. 4. Yazılım geliştirme güncel yaklaşımlar araştırmalıdır. 5. Ülkemizdeki Yazılım Mühendisliği araştırılmalı ve değerlendirilmelidir.