Software Reengineering

Yazılım projeleri, proje başlangıcındaki esnek ve çevik yapısından tam tersi bir yönde hantal yapıya kayma eğilimindedirler. Nitekim kurumlar için kritik öneme sahip yazılım projeleri de, orta ve uzun vadede yeni isteklere istenen hızda cevap üretemez hale gelmektedir. Bu durumun nedenleri arasında, süreç içerisinde gelen acil taleplerin karşılanabilmesi adına yazılım geliştirme ekibinin kaliteden ödün vermesi başta gelmektedir. Ödün verilmeye başlanmasıyla birlikte hızla gelmeye devam eden talepler, yazılım ekibinin geriye dönüp gerekli düzenlemeleri yapmasına izin vermemektedir. Sonuç olarak, karmaşaya dönüşmüş kalitesiz bir kod ve bunun çıktısı olarak:

– hata oranları ve rework maliyeti yüksek,
– esnekliğini yitirmiş,
– müşteri isteklerine hızlı cevap üretemeyen,

yazılım projeleri ile karşı karşıya kalınmaktadır.

Süreç içerisinde gelen acil talepler ve bu talepleri karşılamak adına verilen kalite ödünleri kaçınılmazdır. Ancak yazılım projelerinin verimsiz ve üretkenliği düşük bir noktaya gelmemesi için, yazılım mimarisi ve tasarımı üzerinde sürekli olarak iyileştirme yapılması da bir zorunluluk olmalıdır. Bu doğrultuda Software Reengineering çalışması, yazılım projelerinin düzenli ve sürekli bir şekilde beklentileri karşılamaya devam edebilir olması ve yeni taleplerle birlikte esneyerek büyüyebilmesi için kritik bir çalışmadır.

Software Reengineering çalışması ile yazılım projelerinin mevcut işlevselliği korunarak kod, yazılım mimarisi, tasarım ve kullanılan teknolojilere kadar birçok önemli unsur gözden geçirilmektedir. Bu çalışma ile birlikte yazılım projelerinde;

– darboğaz yaratan noktaların tespiti ve çözümlenmesi,
– kod anlaşılırlığının artırılması,
– kod tekrarının azaltılması ve tekrar kullanılabilen birimlerin oluşturulması,
– kolay esneyebilen bir yapının oluşturulması,
– kod standartlarına ve mühendislik pratiklerine uyularak kalitenin arttırılması,
– test ve otomasyonla hata oranlarının azaltılması ve böylelikle de,
– yazılım projesinin üretkenliğinin arttırılması

sağlanmaktadır.

ACM’nin sağlamakta olduğu Software Reengineering danışmanlık hizmeti dört ana aşamadan oluşmaktadır:

SOFTWARE_REENGINEERING_DIAGRAM

Software Reengineering danışmanlık hizmeti kapsamında ACM danışmanları, çalışmalarını projenin pilot modülleri üzerinde proje ekibiyle birlikte yürütmektedir. Bu çalışma sonrasında da öğrenilen mühendislik pratikleri yaygınlaştırılarak yazılım geliştirme hızının tüm kurum içerisinde arttırılması sağlanmaktadır.