Yetenek modelleri (feature models) yazılım geliştirme dünyasında yaygın
olarak kullanılan modeller olmasına rağmen, bu modellerin gerçekleştirim iz
düşümlerinin nasıl elde edileceğine ilişkin genel olarak kabul görmüş bir yöntem
bulunmamaktadır. Yeteneklerin gerçekleştirim seviyesinde nasıl
ifade edileceğini tanımlayan bir yöntemin yeniden kullanımı, farklı geliştiriciler
ve/veya projeler için belirli bir kalitenin tekrarlanabilirliği açısından önemli bir
unsurdur. Bu bağlamda, bu makale yetenek modelinden gerçekleştirim aşamasına
geçiş üzerine bir durum çalışması içermektedir. Çalışma kapsamında, derinlik
ölçüm sonarı (iskandil sistemi) grafiksel kullanıcı arayüz yazılım ailesi yetenek
modeli ele alınmaktadır.
Yetenek Modellerinin Gerçekleştirimi Üzerine Bir Durum Çalışması
1. Yetenek Modellerinin
Gerçekleştirimi Üzerine Bir Durum
Çalışması
Orçun Dayıbaş
Aselsan A.Ş. SST-MD-YMM
Aralık, 2012 / İzmir
Tasnif Dışı
2. İçerik
• Giriş
• Değişkenlik Yönetimi
• Yetenek Modelleri
• Yapılandırma Modeli ve Yetenekler
• Gerçekleştirim
– Bağımlılık İletimi
– Mimari Bağımlılıklar
– Tasarımdan Gerçekleştirime Yarı Otomatik Geçiş
• Sonuç
• Soru-Cevap
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 2
3. Giriş
• Sorun
– KULAÇ derinlik ölçüm sonarı (İskandil sistemi)
– Farklı platformlar için farklı GKA(Grafiksel Kullanıcı
Arayüz) yazılımları
• Denizaltı
• Su üstü
• Çözüm
– Uyarlanabilir iskandil GKA yazılımı
– Sonar projeleri için yeniden kullanılabilir yetenekler
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 3
4. Değişkenlik Yönetimi
• Yazılım ürün hattı (YÜH) bağlamında değişkenlik
– Ürün hattı değişkenliği
– Yazılım değişkenliği
• YÜH değişkenlik türleri [1]
– Ortaklık: Tüm ürünlerde (aile üyesi) ortak olan
işlevler.
– Değişkenlik: Bazı ürünlerde ortak olan ama tüm
ürünlerde ortak olmayan işlevler.
– Ürüne özel: Sadece bir üründe olan, diğer üründe
olmayan işlevler.
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 4
5. Yetenek Modeli
• Yetenek modeli, yazılım ürün hattının kapsadığı
tüm olası ürünleri, sıradüzensel (hierarchical)
yetenekler ve bu özellikler arası ilişkiler ile
ifade eder.
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 5
6. Yetenek Modeli
• Yetenek modellerinde en yaygın kullanılan
ilişkiler [2]
– Sıradüzensel olarak üst-alt özellikler arası (parental)
• Zorunlu (mandatory): Alt özellik gerekli.
• Seçimsel (optional): Alt özellik seçimsel.
• Veya (or): İlgili gruptaki alt özelliklerden bir veya bir kaçı
seçilebilir.
• Alternatif (xor): İlgili gruptaki alt özelliklerinden yalnız biri
seçilebilir.
– Sıradüzensel olmayan (cross-tree)
• A gerektirir B: A’nın seçilmesi B’nin de dolaylı olarak
seçilmesini gerektirir.
• A dışlar B: A’nın seçilmesi B’nin dolaylı olarak seçilmemesini
gerektirir.
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 6
7. Yetenek Modeli
• Yetenek modelleme ortamı: FeatureIDE
• Desteklediği geliştirme yöntemleri [3]
– Ön işleyici kullanımı
– Delta-yönelimli programlama
– İlgi-yönelimli programlama
– …
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 7
8. Yetenek Modeli
• Yetenek modelinin ilk sürümü (sezgisel)
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 8
9. Yetenek Modeli
• TracWiki üstünde yapılan çalışma
– Gereksinimlerin yeteneklere eşlenmesi
– Yetenek bağımlılıklarının belirlenmesi
– Yetenek gerçekleştirim önceliklerinin belirlenmesi
• Yetenek modelinin FeatureIDE’ye aktarılması
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 9
10. Yetenek Modeli
• Yetenek modelinin son sürümü
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 10
11. Yapılandırma Modeli
• Yapılandırma modeli, yetenek modeli üzerinde
yapılmış bir seçimi ifade eder.
– Sadece seçilmiş yetenekleri içerir; değişkenlik
içermez.
– Aynı bilgi değişik biçemlerde ifade edilebilir.
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 11
12. Gerçekleştirim
• FeatureIDE’nin desteklediği gerçekleştirim
yöntemleri
– Olgun ve/veya yaygın olmayan çerçeveler.
– Var olan gerçekleştirime etkisi yüksek yöntemler.
• Çözüm: Bağımlılık iletimi (DI - Dependency
Injection) tabanlı özgün çözüm.
– FeatureIDE çıktısı yapılandırma.
– Var olan bileşenlerin yetenek yapılandırmaları ile
uyumlandırılması (gerekirse).
– Bağımlılık iletimi çerçevesi ile bağımlılıkların
yönetilmesi (Google Guice [4])
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 12
13. Gerçekleştirim
• Bağımlılık İletimi
– Nesnelerin özelliklerinin dışarıdan bir birim
tarafından yaratılan olgular ile kurulması ilkesine
dayanır [5].
– Sadece arayüz kullanımı (a) yaratım bağımlılığını
ortadan kaldırmaz. Bağımlılık iletimi (b) ile bu
bağımlılık işlevsel nesnelerin dışına taşınmış olur.
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 13
15. Büyük Resim
• Yetenekten gerçekleştirime geçiş
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 15
16. Sonuç ve Değerlendirme
• Tekrarlanabilir bir yetenek modeli
gerçekleştirim yöntemi oluşturulmuştur.
– Geliştirici yetenek modeli üzerinden yapılandırmayı
belirterek ürünü oluşturabilir.
• Gereksinimlerin yeteneklere eşlenmesi ile
izlenebilirliği olan tüm varlıklar benzer bir
yöntemle üretilebilir (Ör: Test yazılımları).
• İlerleyen dönemde bu çalışmanın genişletilerek
devamı planlanmaktadır.
– Yetenek gereksinimlerinin, model ile uyumlu olarak
ifade edilmesinde karşılaşılan zorlukları çözmek.
– Yetenek özellikleri (non-functional attributes).
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 16
18. Kaynakça
[1] F. Van Der Linden, K. Schmid, E. Rommes, “Software Product Lines
in Action”, Springer ( 2007).
[2] D. Benavides, A. R. Cortés, P. Trinidad, S. Segura, “A Survey on
the Automated Analyses of Feature Models”, JISBD 2006: 367-376
(2006).
[3] T.Thüm, et al. “FeatureIDE: An Extensible Framework for
Feature-Oriented Software Development” Science of Computer
Programming (2012).
[4] Google Guice
http://code.google.com/p/google-guice/
[5] M. Fowler, "Inversion of Control Containers and the
Dependency Injection Pattern",
http://martinfowler.com/articles/injection.html
Tasnif Dışı O.Dayıbaş / UYMK’12 / 7-8 Aralık 2012 18