Blog

image
image
image
Software Product Line

Software Product Line

Software Product Line Nedir?

Yazılım Ürün Hatları Nedir?

Yazılım ürün hattı basitçe bir projeyle alakalı ürünlerin belli bir talep doğrultusunda daha verimli bir halde kullanılma çabasıdır. Bir mühendislik uğraşıdır ve ürünlerin benzerlikleri üzerinden fayda sağlarken farklılıklarını da göz önünde bulundurmaya dayanır. İyi bir planlama çerçevesinde, üretim, tasarlama ve teslim aşamalarının tümünü kapsayan geniş bir perspektifle gerçekleştirilir. Bu bağlamda sahip olunan ekosistemde, farklı ancak benzer ürünlerin ya da taleplerin daha az uğraş gerektirecek şekilde verimi yükseltmek amaçlı belli bir sistematiğe oturtularak yönetilmesi gerekir ancak bu şekilde operasyon istenilen başarıya ulaşabilir. Yazılımsal ya da mekanik herhangi bir mühendislik uğraşı içerisinde tüm araçlara tüm operasyonlara entegre edilebilir. Yazımızda yazılımsal çerçeve üzerinde yoğunlaşacağız.

 

Avantajları Nelerdir? Neden Product Line'ı Kullanıyoruz?

 

Product Line yani ürün hattı, farklı ürünleri benzer zaman dilimlerinde benzer yaklaşımlarla birlikte yürütmeye dayandığı için farklı sorunların karmaşıklıklarını azaltmaktadır. Yani benzer karmaşıklık gerektiren operasyonları tek elde yürütüp verimi yüksek tutmak olasıdır. Tekrarlı, olgunlaşmış ve kavramları iyi bilinen bir yazılım ürün hattı üretime bir odak noktası getirir ve hızı arttırır. Bu hız doğrudan odak noktasından belirli yapıtaşlarının aynı şekilde kullanmasına ve olgun bir entegrasyon sürecine bağlı ilerler.

 

Yazılım Ürün Hattı Nasıl Oluşturulur?

 

Bu işlemi 4 madde altında kolayca kurabiliriz. Ana çerçevede ilk olarak organizasyon adapte edilir. Adapte edilen bu organizasyonun platformu kurulur, bu kurulum esnasında kapsamı kontrol edilir ve buna uygun şekilde aksiyon alınır. Daha sonrasında ürün hattı içerisindeki ürünlerin kendilerine has olan product-specific kısımları üzerine kafa yorulur bunlar belirlenir ve belirlenen bu kısımların kurulumları yapılır. Son olarak da benzer kısımlar üzerine yoğunlaşılır ve bu noktalar ürün hattının ana odağını oluşturur. Bu noktalar belirlendikten sonra tekrarlı kullanım ile maliyet düşürülür. Tekrar kullanım zamandan ve maliyetten kazanç sağlattığı için verimi yükseltecek ve böylece kazanç sağlatacaktır.

Toplam Maliyet şu şekilde formülize edilebilir:

İlk adaptasyon maliyeti + Platform kurulum maliyeti + tüm ürünler için toplam Σ (kendine özel kısımları + tekrarlı kullanım yapılacak kısımları)

 

Yazılım Ürün Hattını yorumlarken dikkat edilmesi gereken en önemli noktalardan biri de yatırımın geri dönüşü anlamına gelen ROI değeridir. Bu değer aslında yazılım ürün hattıyla alakalı çok kritik bir varoluş sebebidir. Geleneksel şekilde yazılım ürünleri idame ederken genellikle genelde talep zaman ve farklı ürünler bazında linear şekilde ilerlemektedir. Yani ürün sayısı arttıkça zamanla birlikte gereken efor/maliyet aynı şekilde artacaktır ve düzenli şekilde ilerleyecektir. Ancak yazılım ürün hattı ile geliştirilen operasyonlarda, operasyon başında belli bir maliyet ihtiyacı olacaktır bunlar 4 maddede şekillendirmek üzere özetlediğimiz kurulum aşamaları içindir denebilir. Daha sonrasında ortak noktalar üzerinde benzerliklerin farklı ürünler üzerinde tekrarlı kullanımı ile birlikte gereken maliyet ihtiyacı belirli bir noktadan sonra geleneksel yoldan gerekecek olan maliyetin altında kalıp bize avantaj sağlayacaktır. Bu noktaya break-even noktası denir bu noktadan sonra maliyet/efor bazında yazılım ürün hattı operasyonumuz bize ölçülebilir ve hatırı sayılır derecede avantaj sağlayacaktır. Operasyonun bu aşamasından sonra yazılım ürün hattı içerisindeki ürün sayısının artması bize daha çok avantaj sağlayacaktır denilebilir.

 

 

 

Bahsi geçen yorumlamayı bu grafik üzerinden kolayca çıkartabiliriz.

Geleneksel şekilde yazılım geliştirme sonucunda maliyetimiz tüm ürünler için, ürünün maliyeti benzer ürünler üzerindeki öğrenme indexine eşittir. Öğrenme indexi çalışan takımın,organizasyonun benzer işleri yaparken edindiği tecrübeyle birlikte yapılan işteki gelişimini temsilen denkleme eklenen bir terimdir.

Ancak Yazılım Ürün Hattı ile ürünlerin benzerliklerini gözeterek ilerlediğimiz operasyonlarda geleneksel formül içerisinden tekrarlı kullanım oranında bir fayda söz konusu olacaktır. Bu da gelişmiş operasyon ekosistemlerinde kayda değer fayda sağlanması demektir. Yazılım ürün geliştirme için detaylı ROI dokümanına IEEE üzerinden ulaşılabilir.

Biraz da benzerlikler ve farklılıklar üzerinden uygulamaları/ürünleri nasıl yorumladığımız üzerinde duralım.

 

Benzerlikler ve Farklılıklar Üzerine Yaklaşımlar

 

Üzerinde çalışmak istediğimiz ürünleri bir ürün kümesi olarak düşünebiliriz. Bu kümede ürünlerin öncelikle benzer noktaları üzerine detaylı halde çalışılmalı ve sonrasında ürünün kendine özgü özellikleri üzerinde çalışılmalı. Çeşitlilik yönetimi bu operasyonun en temel noktasıdır ve iyi kararlaştırılıp ilgili aksiyon alınmalı ve bu şekilde kapsamları, yazılım ürün mimarisi, uygulamanın bileşenleri ve gerekli testleri üzerine hemfikir olunmalıdır. Yazılım ürün hattında çeşitlilik arttıkça sistem sayısı artar bu şekilde de değişime ayak uydurma potansiyeli artar. Çeşitlilik için değişime yatkınlık denilebilir. Örneğin bir yazılım uygulaması farklı diller üzerinde farklı desteklere sahip olabilir. Bu çeşitliliği yorumlamak için nasıl, hangi ürün, neden ve hangi zamanlarda sorularını sormalıyız.

Çeşitlilik benzerlik ve farklılıkların yorumlanmasını anlamak için elzemdir. Değişen kullanıcı ihtiyaçlarını, ürün değişimi ve teknik anlamdaki ihtiyaçlar ancak bu şekilde karşılanabilir. Çeşitlilik yönetiminde benzerlikler, farklılıklar ve çeşitlendirilebilir noktalar belirlenir. Sadece belirli ürünler, belirli bantlar değil tüm ürünler tüm canlılar kapsamlarını belirleyebilmek amaçlı belirli sayıdaki özellikle sınıflandırılabilir. Bunlar birinden farklı noktalardır geriye kalanların hepsi diğerleriyle ortak olan özelliklerdir.

Çeşitlilik yönetimini bir sisteme bağlayabilmek adına zorunlu ve opsiyonel olan noktalara bakabiliriz. Örneğin mevcut tüm bilgisayarlar bir işlemciye sahiptir ve kullanıcısına bir kullanıcı arayüzü sağlamaktadır. Ancak her bilgisayarda dvd okuyucu