Yazılım Bakımı ve Evrimi
Yazılım bakımı ve evrimi, yazılımın teslimattan sonraki modifikasyonunu ve sistemlerin kullanışlı kalabilmek için sürekli olarak değişmesi gereken uzun vadeli dinamiklerini kapsamaktadır.
Tanım
Yazılım bakımı, bir yazılım ürününün teslimattan sonra hataları düzeltmek, performansı iyileştirmek veya değişen bir ortama uyarlamak amacıyla yapılan modifikasyonudur; yazılım evrimi ise yazılımın değişen gereksinimlere ve ortamlara yanıt olarak ömrü boyunca değiştiği daha geniş, sürekli bir süreci ifade etmektedir.
Kapsam
Bu alan; bakım kategorilerini (düzeltici, uyarlayıcı, mükemmelleştirici, önleyici); yazılım evriminin ampirik yasalarını; program anlama ve etki analizini; eski sistemlerin yeniden mühendisliğini (reengineering), tersine mühendisliğini (reverse engineering) ve geçişini (migration); teknik borcun birikimini ve yönetimini; ve ISO/IEC 14764 gibi bakımı yöneten süreçleri ve standartları kapsamaktadır.
Alt konular
Temel sorular
- Bakımı oluşturan değişim kategorileri nelerdir ve bunlar nasıl farklılaşmaktadır?
- Yazılımın zaman içinde nasıl evrilmesi gerektiğini yöneten ampirik yasalar nelerdir?
- Eski yazılımlar nasıl anlaşılmakta, yeniden yapılandırılmakta ve geçişi sağlanmaktadır?
- Teknik borç nasıl birikmekte ve nasıl yönetilmektedir?
Temel kuramlar
- Yazılım bakımı kategorileri
- Bakım; düzeltici (hataları giderme), uyarlayıcı (çevre değişikliğine yanıt verme), mükemmelleştirici (işlevi veya performansı iyileştirme) ve önleyici (sürdürülebilirliği iyileştirme) olarak sınıflandırılmaktadır; pratikte ise uyarlayıcı ve mükemmelleştirici çalışmalar baskın gelmektedir.
- Lehman'ın yazılım evrimi yasaları
- Lehman, aktif kullanımda olan sistemlerin sürekli olarak değişmesi gerektiğini veya giderek daha az tatmin edici hale geldiğini; ve evrildikçe, karmaşıklıklarını azaltmak için çalışma yapılmadıkça karmaşıklıklarının arttığını gözlemlemiştir.
Klinik önem
Bakım genellikle bir sistemin toplam ömür boyu maliyetinin çoğunu tüketmektedir; bu nedenle evrim dinamiklerini anlamak, karmaşıklık artışını kontrol etmek ve teknik borcu yönetmek, yazılımın uzun vadeli ekonomisi ve sürdürülebilirliği için belirleyici olmaktadır.
Kanıt ve kılavuzlar
ISO/IEC 14764, yazılım bakım sürecini tanımlamaktadır; SWEBOK Yazılım Bakımı bilgi alanı ise bakım kategorileri, faaliyetleri ve teknikleri hakkında uzlaşmaya dayalı rehberlik sağlamaktadır.
Tarihçe
Bakımın yazılım maliyetlerine hakim olduğu anlayışı 1970'lerde artmıştır; Lehman ve Belady, büyük sistemlerin ampirik çalışmalarından yazılım evrimi yasalarını formüle etmişlerdir; uzun ömürlü sistemler yaşlandıkça ve teknik borç tanınan bir endişe haline geldikçe yeniden mühendislik (reengineering) ve eski sistem modernizasyon teknikleri gelişmiştir.
Tartışmalar
- Eski sistemleri sürdürmek, yeniden mühendislik yapmak veya değiştirmek
- Yaşlanan bir sistemi sürdürmeye devam etmek, yeniden yapılandırmak veya tamamen değiştirmek arasında karar vermek, tekrarlayan stratejik bir tartışma konusudur; bu karar, değiştirmenin riskini ve maliyetini, sürekli bakımın artan maliyeti ve kırılganlığına karşı dengelemektedir.
Öne çıkan isimler
- Meir M. Lehman
- Les Belady
- Ian Sommerville
İlgili konular
Temel eserler
- lehman1980
- iso14764
- sommerville2015
Sıkça sorulan sorular
- Bakım sadece hata düzeltmek midir?
- Hayır. Hata düzeltme (düzeltici bakım) yalnızca bir kategoridir; bakım çabasının çoğu uyarlayıcı ve mükemmelleştiricidir — yazılımı yeni ortamlara uyarlamak ve yetenekler eklemek veya iyileştirmek — ki bu ikisi, tipik sistemlerde düzeltici çalışmayı aşmaktadır.
- Yazılım karmaşıklığı neden zamanla artma eğilimindedir?
- Lehman'ın gözlemlediği gibi, gelişen ihtiyaçları karşılamak için yapılan sürekli değişiklikler yapı ve özel durumlar eklemektedir; yeniden yapılandırma ve karmaşıklığı azaltma için kasıtlı çaba harcanmadıkça, sistemin değiştirilmesi giderek zorlaşmaktadır.