Tradesoft Blog

Yazılım Bakım Süreçleri Hayatı Kolaylaştırıyor, Nasıl mı ?

Yazar – Atıl Kaya

Tradesoft Yazılım Geliştirme Müdürü 

Bir yazılımı tasarlandığı şekilde çalışır halde tutmak için yapılan tüm işlemlere yazılım bakımı diyoruz. En genel örneklerden birisiyle ilerleyelim. Nasıl ki araba aldığımızda o arabayı ilk günkü gibi yürür vaziyette tutmak için zamanla bazı noktalarda bakım yapmamız gerektiğini kabul ediyorsak, yazılımda da benzer durum geçerli. Bir kaç önemli fark olduğunu belirtmek isterim.

 

Arabanın eskimesi, zamanla belli parçalarında yakıt artıkları kalması, lastiklerindeki dişlerinin kaybolması herkes tarafından rahatça anlaşılabilecek bir şey, çünkü eskiyen parçaları, bu eskimenin sonuçlarını rahatça görebiliyoruz. Oysa ki yazılımın bu şekilde eskimesini sağlayacak fiziksel bir değişim yaşanmıyor, peki yazılımda nasıl bir bakım yapılıyor olabilir?

 

Veya şu bilgiyle devam edelim. Yazılım sektörü tarafından kabul görmüş gerçeklerden biri yazılım yaşam döngüsü içindeki tüm eforunun %40 – %80‘inin (genelde %80’i) yazılım bakımına ayrıldığıdır. Yazılım özelliklerine, yazılım takımlarına göre bu oranlar farklılık gösterse de deneyimlerim bize sektörümüzde ve ülkemizde çok farklı oranlar olmadığını gösteriyor. Yazılım üreten bir şirketin olağan dışı durumlar haricinde bu oranların dışında kalması pek mümkün değil. Ortalama %60 olduğunu varsayalım ve soruyu değiştirelim. Yazılımlar arabalar gibi eskiyen şeyler değilken nasıl bir bakım yapılıyor ve toplam eforun %60’ını alacak kadar çok bakım yapmaya sebep olan şey nedir?

 

ISO/IEC 14764:2006’ya göre 4 çeşit yazılım bakımı türü var. Bunları ortaya koyduğumuzda aşağı yukarı bakım eforuna sebep olan şeyleri anlamış olacağız.

 

Düzeltici bakım: En basit haliyle “bug” lar. En sevmediğimiz, işleri durdurma potansiyeline sahip olan hataları düzeltmek için yapılan bakım türleri. Bunlar yüksek oranda uygulama geliştirildikten sonra ortaya çıkıyor. Toplam bakım faaliyetinin ortalama %20’sini alıyor. Bakım dendiğinde ilk akla gelen şey hatalarken, toplam bakım oranı içinde %20’lik bir dilimi bunlar oluşturuyor.

 

Adaptif bakım: Değişen çevresel şartlara uyum sağlamak yapılan güncellemeler, değişiklikler diyebiliriz.

 

2003’te 32 bit windows yaygınken tasarlanan bir raporda kullanılan bir ürüne ilgili firmanın destek vermemeye başlaması, daha sonra 64 bit uygulamaların yaygınlaşmasıyla bu ürünün 64bit ortamlarda düzgün sonuç üretemediğinin keşfedilmesi, bu yüzden 32bit tabanlı ürünü rapordan çıkartıp benzer işlevli 64 bit ürünün rapora eklenmesi, mevcut fonksiyonların devam ettirilmesi gibi bir işi adaptif bakım örneği olarak düşünebiliriz.

 

Buna harcağımız efor da %25.

 

Önleyici bakım: Aslında adından anlaşılıyor. Proaktif yapılan bakım süreçlerini ifade ediyor. Backoffice yazılımında kullanılan bir fonksiyonu frontoffice tarafına açacağımızı düşünelim. Beklentimiz, bu fonksiyonun frontoffice tarafına açıldığında çok daha fazla çağrılmaya başlaması olacaktır. Dolayısıyla oluşabilecek ekstra yükü engellemek için mevcutta sorun çıkmadan çalışan uygulamada bazı bakım faaliyetleri yapmamız gerekecektir.

 

Buna sadece %5 efor harcanıyor.

 

İyileştirici bakım: %50’lik payla en fazla efor alan bakım faaliyeti bu. Uygulamanın ilgili domaininde ilk günkü rekabet gücüne sahip olması için yapılan düzenlemeleri ifade eden bakım faaliyetleri bunlar. Uygulamaya eklenen yeni özellikler, küçük iyileştirmelerin tamamını bu şekilde düşünebiliriz. Diğer bakım türleri arasında da en flu çizgilere sahip olan bakım türü olduğunu belirtmem gerekiyor. Sıklıkla yeni özellik talebiyle karıştırılan işler.

 

Birbirinden farklı birden çok bakım türü var, bunlara harcanan toplam zaman da yeni uygulama geliştirmeye harcadığımız efordan oldukça fazla (yazılım dünyasının mekaniklerine göre de fazla olmak zorunda) Peki bir yandan üretken olurken, bir yandan da mevcut ürünlerin beklendiği/taahhüt edildiği gibi çalışmasını nasıl sağlayabiliyoruz? Bunlara nasıl zaman ayırabiliyoruz?

 

Takım halinde çalışmanın, etkin zaman yönetimi yapmanın, işleri doğru şekilde önceliklendirebilecek beceriye ve deneyime sahip olmanın önemi tam olarak burada ortaya çıkıyor. Tradesoft’ta bu becerilere sahibiz. Ayrıca, yapılan bakım faaliyetlerinin devam eden projeleri aksatmaması için de mevcut iş yükünü her an doğru şekilde görebilmek, backlog’a her zaman hakim olabilmek, eldeki mevcut ürüne ve ilgili yazılım takımına göre olası bakım yükünü de doğru tahmin edebilmek gerekiyor. Bunlar için de maalesef ki sadece beceri veya deneyim yetmiyor, daha farklı yazılım çözümleri kullanarak bakım ihtiyacını sürekli bir şekilde kayıt altında tutmak gerekiyor. Bu tarz yazılımların hayatımızı nasıl kolaylaştırdığını, Tradesoft’ta  ne şekilde kullanıldığını  başka bir yazıda detaylandırabiliriz.

 

Leave a Reply