- Artan güvenilirlik: Sürekli test edilen bileşenlerin kullanılması sayesinde yazılımlar hatalardan arınmaktadır.
- Düşük süreç riski: Bilindik bileşenler tekrar kullanıldıkları için, projeler zamanında teslim edilebilmektedir.
- Kaynakların verimli kullanılması: Yeniden kullanılan yazılım varlıkları olduğunda, insanları yeniden kullanma oranı düşmektedir. Bu sayede yetişmiş insan gücü daha verimli ve yaratıcı bir şekilde kullanılabilmektedir.
Yazılım mühendisliğindeki tüm güncel yaklaşımlar, YK’nın artırılmasını hedeflemektedir. Yeniden kullanım tarihine baktığımızda, ilk olarak fonksiyonlar bazında yeniden kullanım göze çarpmaktadır. Bu YK’nın en basit tekniğidir. Bu tip YK’da mühendislerin bilgisine bağımlılık fazla olduğundan çok verimlilik sağlanamamaktadır. Bir sonraki YK aşaması kütüphanelerdir. Kütüphaneler, kullanıcılarına bir tür arayüz sunabilmektedirler ve bu sayede YK’da kolaylık sağlarlar. Ancak kütüphanelerin yapılandırılabilirlikleri düşüktür ve kütüphane kullanarak geliştirilen uygulamalar, bu kütüphanelere çok bağımlı kalmaktadırlar. İskeletle (Çatı, Framework), YK konusunda bir adım öndedirler. İskeletlerde, kütüphanelerdekinin aksine kontrolün terse dönmesi kavramı mevcuttur. Kütüphaneler kullanılırken, yazılımcı hakimiyeti elinde tutmaktadır. İskeletlerde ise durum farklıdır. İskeleti kullanan, ondan bir istekte bulunur ve iskelet kendi içinde çesitli mekanizmaları - olaylar (events) - tetikleyerek bu istekleri gerçekleştirir.
Yukarıda bahsettiğimiz üç tip YK da esasen kodun yeniden kullanımıdır. Bu kod nesne yönelimli (object oriented), bileşen yönelimli (component oriented) veya sadece yordamsal (procedural) olabilmektedir. Burada, tahmin edilebileceği gibi yordamsal kod çok alt seviye ve YK adına kullanışsız kalmaktadır. Nesne yönelimli YK, devrim niteliği taşımaktadır. Miras (inheritance) sayesinde çok yoğun YK sağlanabilmektedir.
Şekilde görülen miras ilişkisinde Sınıf2 Sınıf1’in özelliklerine sahip olmaktadır. Bu sayede Sınıf1’in tüm özellikleri Sınıf2 için kullanılabilir olacaktır. Ancak bu yaklaşımın da hataya ve YK’nın

Buradaki en önemli nokta, yeniden kullanım için miras değil bileşim (composition) kullanılmasıdır. Bilindiği üzere miras, derleme zamanında sabitlenmektedir. Ancak bileşim, çalışma zamanında da değiştirilebilir. Bu sayede bileşen tabanlı iskeletler nesne tabanlı iskeletlere göre çok büyük esneklik kazanabilmektedir.
YK’da kod seviyesinden daha yukarıda kavramsal seviyede YK bulunmaktadır. Bu tip YK 1994 yılında GoF (Gang of Four) olarak adlandırılan dört mühendisin yazdığı klasik bir yapıtla dünyaya tanıtılmıştır. Yazılım tasarım kalıpları olarak adlandırılan bu YK yönetimi, bir problem hakkındaki soyut çözüm bilgisini yeniden kullanmayı hedeflemektedir. Tasarım kalıpları tasarımlarda tekrar kullanılabilecek kod bilgisi içermemektedir; ancak tasarımların daha temiz, daha yeniden kullanılabilir olmasını sağlayacak bilgi içeriği barındırmaktadırlar. Tasarım kalıplarının bir üst seviyesinde ise mimari tasarım kalıpları bulunmaktadır ve bunlar büyük sistemlerin genel hatlarını belirleyen kalıplardır. Örneğin alışıldığı üzere iletişim altyapılarını destekleyen yazılımların katmanlı mimariye, derleyici tarzı yazılımların ise borular ve filtreler (pipes and filters) mimarisine sahip olması beklenir.
2000’li yıllardan sonra YK adına en farklı fikir, yazılım ürün hatları kavramı ile gelmiştir. Bu yaklaşım ile yazılımda sadece kod veya mimarinin yeniden kullanılması değil; bunlarla birlikte, gereksinimlerin, bileşenlerin, özelliklerin, test durumlarının da yeniden kullanılması ve yazılım geliştirme süreçlerinin bu yaklaşıma göre modifiye edilmesi öğütlenmektedir. Ürün hattı kavramında esas olan, ortak özellikleri fark edilebilen bir ürün ailesi seçmek ve bu ailenin ortak ve değişken özelliklerini modellemektir. Bu sayede ürün geliştirenlerin önünde ortak referans bir mimari ve bu mimaride değişiklik yaparak yeni ürünler ortaya çıkartma potansiyeline sahip bir değişkenlik modeli bulunmaktadır. Bunun mümkün olabilmesi için bu ailenin hangi alana yayılacağı belirlenmelidir. Alan kapsamının belirlenmesi ürün hattının başarılı sonuç vermesi açısından kritik öneme sahiptir. İnsanların git gite kişiye özel olmalarını bekledikleri, yoğun ürün talepleri her geçen gün artmaktadır. Bu istekleri zamanında ve az maliyetli olarak karşılamak ancak tüm yazılım varlıklarının yeniden kullanabilirliğini savunan yazılım ürün hattı yaklaşımları ile mümkün olabilecektir.
Yazan: Barış Can Kaşıkçı (E-Bergi ODTÜ)
Hiç yorum yok:
Yorum Gönder