Software Product Line Nedir?

Event Hero Image

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 📀 olmak zorunda değildir ya da flash depolamaya sahip olmayabilir ve bunlar ile konfigüre edilebilir. Bu örnekler kolaylıkla çoğaltılabilir. Aynı şekilde, yazılımda var edilecek ya da çıkarılacak bileşenler de olacaktır.


Ürün Hattının Geleceği

Yazılım dünyasında ürün hattı kuşkusuz önemli bir noktada ve gün geçtikçe popülerliği katlanıyor. Büyük kapsamlı projelerde ya da belirli ürünlerin yönetildiği operasyonlarda bizlere yönetimsel bir disiplin getirdiği aşikar. Standartlaşma ve yeni nesil bir yorumlama üzerine oldukça yoğun bir gelişim içerisinde hal böyleyken de ürün hattının gelişiminin yazılım dünyasında istikrarlı artışının sürdüreceği ve organizasyonların bu yaklaşım üzerinde daha fazla duracağı geleceği hakkındaki en mantıklı tahminlerden.


Refactoring Nedir?

Yazılım ürün hattının yönetiminde kod parçalarını gerekli şekilde editleme, daha verimli hale getirme ve amaca yönelik yorumlama üzerine Refactoring den bahsetmesek olmazdı. Öncelikle Refactoring nedir sorusuna cevap arayalım. Kısaca varolan kodun kimliğine sadık kalarak belirli bir amaç doğrultusunda daha faydalı hale getirilmesi amaçlı değiştirilmesidir denebilir. Hal böyleyken ufak değişimlerini de içerisinde barındırır, farklı amaç entegrasyonlarıyla oluşan yeni hataların giderilmesini de ya da daha hızlı hale getirilmesi için yapılan değişiklikleri de. Ürün hattı yönetiminde yazılımın belirli testleri dışında yeni talepler doğrultusunda istenen/gereken yeni testler olabilir bunların üzerine yeni değişimler gerekebilir ya da daha verimli hale getirilmesi ihtiyacı doğmuş olabilir bunların hepsi varlığını oluşturan amaçlardandır. Faydaları üzerinde durursak temel kapsamda süreklilik ve esnetilebilirlik söylenebilir. Üzerindeki hataların ve eksikliklerin giderilmesi kodun okunmasını ya da fonksiyonel eksikliklerini giderebilir böylece bize süreklilik bağlamında fayda sağlamış olacaktır. Ayrıca uygulamanın örneğin belirli yazılım dizayn kalıplarına entegre edilerek refactor edilmesi, varlığını daha yeterli ve daha verimli hale getireceğinden bu yeni yeterlilik seviyesi projemizi daha esnek hale getirmiş olacaktır.


Giray Baha Kezer 18 Mart 2021

Seni En İyi Şirketlerle Eşleştirelim 🚀

Yazılımcıların Kariyer Platformu Coderspace'de kaydını oluştur, yazılım dili, maaş beklentisi gibi bilgilerini tamamla, Türkiye ve Avrupa'dan en uygun şirketlerle eşleş!

En Son Yazılar

Coderspace'den ilginizi çekebilecek son yazılar

Image placeholder
TensorFlow Nedir?
4 Nisan 2021
Image placeholder
Image placeholder
Dinamik Programlama
1 Nisan 2021