Yazılım sistemleri giderek daha büyük ve kompleks sistemler haline geliyor. Bu gelişimde etkin sebeplerden biri donanımdaki gelişmelerdir. Donanımdaki gelişmeler yazılım sistem boyutunu sınırlama ihtiyacını azattı. Bunun dışında boyutun artması ve karmaşıklamasında başka sebepler de bulunmaktadır. Yazılım karmaşık sitemlerde veri akış kontrolü sağladığı için teknik sistemler dışında baskın olarak kullanılan bir teknoloji oldu.

Büyük bilgisayar sistemleri, beklenen iş takvimini ya da maliyeti ve sistemi edinenin beklentilerini karşılayamayabiliyor. Bu duruma yazılım krizi denmektedir. Bu krizi önlemek için yazılım geliştiriciler ürün geliştiriciler farklı mühendislik uygulamaları geliştirdi.

Temel olarak bir uygulama geliştiricinin takibi; kaynaklar kullanıldı mı, yapıtaşları tamamlandı mı, gereksinimler karşılandı mı, testler tamamlandı mı şeklinde yapılır. Ancak bunlar proje için yeterli bir geri besleme sağlamaz. Bunun yerine teknik süreçler yönetilmelidir. Sistem mühendisleri bu noktada aktif olmakta ve bu teknik süreç yönetimi için gerekli araçları sağlarlar.

Yazılım sistem mühendisliği: Bir bilgisayar yazılım sistemi geliştirilirken sistem mühendisliği prensiplerinin uygulanması, aktiviteler, görevler ve prosedürler izlenir. Bu yazılım sistem mühendisliği olarak adlandırılır.

Sistemler ve Sistem Mühendisliği: Sistem, bir amaç doğrultusunda ilişkili elamanların bütünüdür. Sistem mühendisliği, bir sistem konfigürasyon tanımında işlevsel bir ihtiyacı dahil etmek için gerekli bilimsel, mühendislik ve yönetim becerilerinin pratik bir uygulanışıdır. Sistem mühendisliği; problem tanımı, çözüm analizi, süreç planlaması, süreç kontrolü ve ürün değerlendirmesi olarak beş fonksiyon içerir.

Yazılım Sistem Mühendisliği: Bu kavram 1980’lerin başlarında ortaya çıkmıştır. Yazılım sistem mühendisliği sistemin tüm teknik yönetiminden ve son sistem ürününün doğrulanmasından sorumludur. Yazılım sistem mühendisliği yazılım gereksinimi, yazılım ve donanım alt parçalarına ayrıldıktan sonra başlar.

Sistem Mühendisi à          Sistem Analizi, Sistem Tasarımı

Yazılım Sistem Mühendisi à       Yazılım Gereksinim Analizi, Mimari Yazılım Tasarımı

Yazılım Mühendisi à         Ayrıntılı Yazılım Tasarımı, Kodlama ve Birim Test,Yazılım Alt Sistem Testi

Yazılım Sistem Mühendisi à       Yazılım Entegrasyon Testi, Yazılım Sistem Testi

Sistem Mühendisi à          Sistem Entegrasyon Testi, Sistem Testi

Proje yönetimi; süreç, yazılım sistem riskleri ve maliyetleri tayin etmek, bir iş takvimi yapmak, çeşitli mühendislik özelliklerini ve tasarım gruplarını entegre etmek, konfigürasyon kontrolünü sürdürmek ve devamlı olarak projenin maliyetini ve iş takvimini sağlamak için denetim yapmaktan ibarettir. (Planlama – Organizasyon – Personel Alımı – Yönetim – Kontrol)

Yazılım Sistem Mühendisliği Fonksiyonları:

Gereksinim Analizi: Yazılım geliştirmede en öncelikli olarak yapılacak adımdır. Fonksiyonel gereksinimler, performans gereksinimleri, harici arayüz gereksinimleri, tasarım kısıtları ve kalite özellikleri olarak alt kategorilere ayrılır.

Yazılım Tasarımı : Yazılım sistem gereksinimlerini karşılayacak etkin ve etken bir sistem dökümante edilir. Mimari tasarım ve ayrıntılı tasarım olarak ikiye ayrılır.

Süreç Planlama : Neyin, ne zaman, nasıl ve kim tarafından yapılacağı tanımlanır.

Süreç Kontrolü : Bu aşamada plana uygun gidilip gidilmediği kontrol edilir. Bu sayede proje ilerleyişi hakkında bir geri bildirim elde edilmiş olur. İki ayrı bileşeni kontrol eder: Proje yönetimi tamamlandı mı, yazılım sistem mühendisliği tamamlandı mı..

Doğrulama, Onaylama ve Test: Mühendislik sürecinin doğru olup olmadığı, ürünün gereksinimlerle uyumlu olup olmadığı kontrol edilir. Doğrulama kapsamında bulunulan faz için bir önceki fazda istenilen gereksinimlerin tamamlanıp tamamlanmadığı kontrol edilir. Onaylama kapsamında, son programın ya da yazılımın kullanıcının isteklerine ve gereksinimlerine uygun olup olmadığı kontrol edilir. Testte ise bilinen girdi ve çıktılar için program kontrol edilir.

Her hangi bir yazılım projesinin sistem görüşünü göz ardı etmek, yazılım donanımda çalışmamasına ya da başka sistemlerle entegre olmamasına sebep olur.

Referanslar:

ftp://ftp.cs.hacettepe.edu.tr/pub/dersler/BIL4XX/BIL445_YMK/odevler/odev-2%20(teslim%3A%2026%20kasim)/odev-2%20makale.pdf