by Özgür Eralp01 Ocak 2009
Yazılım mühendisliği; yazılım geliştirme amacı ile süreci, metotları ve araçları bütünleştiren bir disiplindir. Bilimsel bir açıklama ile yazılım mühendisliği; yazılım geliştirme, işletme ve bakım amacıyla sistematik ve ölçülebilir yaklaşımların uygulamaları ve bunun çalışmalarıdır. (IEEE 612.12-1990).
Yazılım mühendisliği metotları, yazılımların nasıl yapılandırılacağı hakkında teknik destek sağlamaktadır. Metotlar birer görev bütünleridir ve birçok konuda yapılması gereken görevleri belirtirler. Örnek olarak; gerek analizi, tasarım, kodlama, testler ve destek metotları verilebilir. Yazılım mühendisliği araçları ise metotlar ve/veya süreç için otomatik destek sağlarlar. Bir aracın ürettiği bilgiyi bir başka aracın kullanması sağlanarak oluşturulan, yazılım geliştirme sürecine destek olan sistematik yaklaşım ‘bilgisayar destekli yazılım mühendisliği’ (CASE-Computer Aided Software Engineering) olarak adlandırılmaktadır. Günümüzde, yazılım organizasyonlarında yaygın şekilde kullanılmaktadır ve organizasyonların içerisinde bu konuda çalışmak üzere teknoloji ekipleri kurulması önerilmektedir.
Yazılım uygulamalarının gerçekleştirilmesi esnasında izlenecek yol ‘süreç’ olarak tanımlanır. Bir ürün veya sistem üreteceğimiz zaman, belirli adımları takip etmeniz, gerekli safhaları tamamlamak çok önemlidir. İzlenecek süreç bir yol haritasına benzetilebilir. Bir yerden başka bir yere gitmenin birden fazla yolu olabilir. Ama sizin elinizde iyi bir yol haritası varsa, siz en uygun şekilde hedefe ulaşırsınız. Süreç ile tanımlanmış yazılım mühendisliği aktiviteleri sonucunda ortaya ürün olarak sadece kaynak kod dosyaları çıkmaz, ayrıca dokümanlar ve yazılıma ilişkin veriler çıkar. Siz bu ürünler ile daha sağlıklı yönetim kararları verebilir ve programın kullanıcı isteklerini tamamen sağladığından emin olabilirsiniz.
Son ürüne ulaşmanın kısa yolarlıda vardır, ama bunların güvenilmezliği, başarısızlık riskinin büyüklüğünü belirtmek ve vurgulamak gerekir. PMI (Project Management Institute) 1969 yılında kurulmuştur. 1990 yılına geldiğinde enstitünün sadece yaklaşık 7500 üyesi vardı. Sonraki beş sene sonunda üye sayısı 17000’e ulaştı. Ve 1998 yılında PMI’ın üye sayısı 44000’e adeta fırlamıştır. Bu değerler, şirketlerin bu alandaki ilgilerindeki artışın önemli bir göstergesidir. Son yıllarda, organizasyonların uyguladıkları ‘sürecin olgunluğu’ kavramı öne çıkmaktadır. Bu konuda SEI (Software Engineering Institute – Yazılım Mühendisliği Enstitüsü) beş değerlendirme seviyeli, kolay anlaşılabilir bir model olan CMM’i (Capability Maturity Model – Yetenek Olgunluk Modeli) geliştirmiştir. Dünya genelinde birçok yazılım firması bu olgunluk seviyesinin en üstünde yer alabilmek için çabalamakta, sonuçta daha kaliteli ve verimli ürünler ortaya çıkarma yarışı içindedirler.
Yazılım Yetenek Olgunluk Modeli’nde yer alan 5 seviyeden ilki ‘Başlangıç’tır. Bu seviyedeki organizasyon içerisinde çok az sayıda anahtar işlev tanımlanmıştır. Projedeki başarılar tamamen bireysel çabalara dayanmaktadır. Seviye 2 ise başarıları ‘Tekrar Edebilen’ bir organizasyonu tanımlamaktadır. 3üncü seviye olan ‘Tanımlanmış’ta hem yönetim hem de mühendislik işlevleri dokümante edilmiş, standart haline getirilmiş ve organizasyon içerisine entegre edilmiş durumdadır. Seviye 4 ise ‘Yönetilen’ bir yapıyı tanımlar. Yazılım geliştirme süreci ve ortaya çıkan ürün hakkında detaylı ölçümler gerçekleştirilmiş, gerekli veriler toplanmıştır. Bu verilerin analizleri doğrultusunda gerekli yönetim ve mühendislik adımları atılmaktadır. 5nci seviye ‘İyileştirme’ olarak yer alır. Gerekli geri bildirimler sağlanarak sürekli olarak sürecin iyileştirilmesi sağlanmaktadır.
Her bir seviyedeki organizasyonun yerine getirmesi gereken anahtar işlev alanları vardır. Bir üst seviye, alttaki seviyelerin işlevlerini kapsar. İkinci seviye için anahtar işlev alanları; yazılım konfigürasyon yönetimi, yazılım kalite güvence, alt yüklenici yönetimi, proje takibi, proje planlama ve gerek yönetimidir. Üçüncü seviye için ek anahtar alanlar; gözden geçirmeler, yazılım ürün mühendisliği, süreç tanımlama ve süreç odaklarıdır. Dördüncü seviye için ek anahtar alanlar ise; yazılım kalite yönetimi ve ölçümlerdir. Son olarak en üst seviye ek anahtar alanlar; süreç değişiklik yönetimi, teknoloji değişiklik yönetimi ve eksiklik/kusur önleme alanlarıdır.
Yazılım organizasyonları için en üst seviye ulaşmak bir idealdir, bu ideali gerçekleştirmek ise yoğun ve yorucu bir çalışma istemektedir. Ülkemizde bu amaçta şirketler gerekli maddi yatırımları yapmaya başlamıştır. Şirketler çeşitli danışmanlık şirketleri ile bu alanda çalışmalar yapmaktadır. Şirketlerin bu yöndeki çalışmaları ülkemizde her zaman diğer şirketlerin dikkatini çekmektedir.