Yazılım Ürün Hattı

Yazılım ürün hattı, tanımlama yoluyla ortak öz varlıklar kullanılarak geliştirilen, belirli bir pazar kesiminin ya da görevin intiyaçlarına yönelik, yönetim altındaki ortak yetenek kümelerini kullanan yazılım-yoğun sistemler kümesine verilen isimdir [1].

YÜH yaklaşımının ortaya çıkmasına yol açan en önemli güdülerden biri de geçmiş yeniden kullanım yaklaşımlarından (Ör: Nesne yönelimli yaklaşım) çıkarılan derslerdir. Bu bağlamda genel kabul gören iki husus aşağıdaki gibi sıralanabilir [2]:

  • Fırsatçı yeniden kullanım’ın (Opportunistic reuse), uygulamada etkin olmadığı görülmüştür. Yeniden kullanım planlı ve zorunlu olarak yönetilmelidir.
  • Aşağıdan yukarıya (bottom-up) yeniden kullanım ile yeni sistemlerin soyut bileşenlerin bir araya getirilmesinden oluşturulması, başarılı sonuçlar vermemektedir. Başarılı yeniden kullanım yukarıdan aşağıya (top-down) yaklaşım gerektirmektedir (Bu tanımlama kısmen aşağıdan yukarı yaklaşım kullanımını dışlamaz).

Bu yeni yazılım geliştirme yaklaşımına geçişin nasıl ele alınacağı da diğer bir önemli konu olarak karşımıza çıkmaktadır. C. Krueger, kuruma faydası ne kadar yüksek olursa olsun, geçiş aşamasında yaşanacak üretim düşmesini ya da durmasını bazı kurumların göze alamadığını belirtmiştir [3].

Geçiş maliyetini en aza indirmek üzere tanımlanmış üç farklı uyum modeli bulunmaktadır [3]:

  • Öngörüsel Yaklaşım (Proactive approach): Geleneksel yöntemdeki şelale (waterfall) benzeri bir yaklaşımdır. Tüm ürün çeşitleri çözümlenir, tasarlanır ve gerçekleştirilir. Köklü ve tümden bir değişimi daha hızlı getirdiğinden bu yaklaşıma büyük patlama (big bang) yaklaşımı da denilir.
  • Tepkisel Yaklaşım (Reactive approach): Döngüsel ya da çevik yöntemlere benzer bir yaklaşımdır. Her bir döngüde bir ya da birkaç ürün çeşidi ele alınır.
  • Çıkarımsal Yaklaşım (Extractive approach): Var olan bir ya da bir kaç ürün YÜH için temel alınır ve diğer ürünler sonrasında dahil edilir.

Kurumların olgunluk seviyeleri, ürün ailelerinin çeşitliliği gibi bir çok etken var olmakla birlikte, tüm gereksinimlerin önceden çok açık belirlenemediği durumlar için en uygun geçiş modelinin “tepkisel yaklaşım” olduğu söylenebilir.

YÜH bağlamında iki temel sürecin birbiri ile etkileşimi söz konusudur [4]:

  • Alan Mühendisliği: Ürünlerin ortaklık ve farklılıklarının belirlenip tanımlandığı YÜH mühendisliği sürecidir. Tanımlanan ortaklık ve farklılıklar, üretim bandının temelini oluşturur.
  • Uygulama Mühendisliği: YÜH’nın alan değerleri (domain artefacts) ve farklılık tanımlarından yararlanarak ürünlerin oluşturulduğu YÜH mühendisliği sürecidir.

Bu iki süreç belirli döngülerle birbirlerini besler ve geliştirir. Aşağıdaki şekil söz konusu döngüleri ve süreç adımlarını göstermektedir.

spl_cycle

YÜH tasarımı hakkında daha fazla detay bu yazı kapsamı dışındadır. Başlangıç aşaması için, M. Matinlassi’nin farklı YÜH tasarım yöntemlerini (KobrA, FAST, FORM, …) karşılaştırmalı olarak incelediği belge’ye [5] başvurulabilir.

 

[1] P. Clements, L. Northrop, (2001), “Software Product Lines: Practices and Patterns”, Addison Wesley.

[2] Jan Bosch, (2000), “Design and Use of Software Architectures”, Addison-Wesley, ACM Press Books.

[3] C. Krueger, (2002), “Eliminating the adoption barrier”, IEEE Software, Volume 19, Issue 4.

[4] K. Pohl, G. Böckle, F. van der Linden, (2005), “Software Product Line Engineering”, Springer.

[5] M. Matinlassi, (2004), “Comparison of Software Product Line Architecture Design Methods: COPA, FAST, FORM, KobrA and QADA”.

0 comments: