<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>O zellik Modeli ile Degiskenlik Yonetimi Managing Variability with Feature Models</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>Bilgisayar Muhendisligi Bolumu, Orta Dogu Teknik U</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>In this work, an approach that aims to manage variability by using feature model and a simple code generator in object oriented applications is developed. This method provides practically develop congurable object oriented applications. An application that is developed with respect to the method takes a con guration le including user selections in a domain, as an input so that the application can manage and automatically con gure itself with user selections. In order to implement this method, there are some main rules that should be obeyed. First of all, variability points and commonalities in a speci c domain is described and a feature model is designed with respect to them. Then, the code generator developed for the method presented in this speci cation automatically generate intelligent source code drafts. In the next step, developers will develop the implementation of the generated code using data structures that take into account the commonalities and variabilities of the application. This application can work for all con gurations that contain user selections that will be input. Thus, the variances in the scene will be re ected directly and automatically to the object-oriented application via the feature model.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>1</p>
    </sec>
    <sec id="sec-2">
      <title>Giris</title>
      <p>Son y llarda, yaz l m sirketleri daha kullan c dostu ve yuksek kaliteli yaz l m
urunlerini pratik ve h zl bir sekilde uretebilmek icin yeni metotlar ve
teknikler arast r yor. Bu kapsamda bir sistemdeki yaz l m bilesenlerinin yeniden
kullan labilirligini saglamak bu sirketler icin buyuk olcude onemli hale geldi. Yaz l m
sektorunde ve akademik alanda yeniden kullan labilir ve uyarlanabilir yaz l mlar
uretebilmek icin nesneye dayal programlama konseptlerinin kullan ld g farkl
yontemler vard r. Fakat bu yontemlerin bircogu alan degiskenligini yani farkl
urunlerin degisken ozelliklerini goz onunde bulundurmaz. Baz lar da sadece
yeniden kullan labilir objeleri tan mlay p modelleyerek yeniden kullan labilirlik
uzerine yogunlas r ve bunlar n genelde alan n degiskenlik noktalar n
belirlemede eksikleri vard r. Bir grup analiz metotlar ise bu tan mlama icin baz
standart kurallar kullan r ancak bir alandaki benzer uygulamalar aras ndaki
degiskenlik noktalar n saptama kabiliyetleri yoktur. Bundan dolay baz
yontemlerde, belli bir alanda nesneye dayal uygulamalar gelistirmek icin ozellik
modelleri kullan lmaya baslanm st r. Bu bildiride kullan lan yaklas m ise ak ll veri
yap lar desenleri ile birlikte kaynak kod taslaklar uretmeyi ve boylece kod
gelistirme asamas n pratik bir sekilde h zland rmay ve onceden belirlenmis olan
alana gore gelistirilmis olan nesneye dayal uygulamaya o alandaki degiskenlikleri
yans tmay amaclam st r. Bu sayede, tasar m ve kod gibi yaz l m bilesenlerinin
yeniden kullanabilirligini artt rmak ve ayn anda gereksinim, tasar m degisikligi
gibi durumlarda yeniden yaz l m gelistirme dongusu ihtiyac n azaltmak
hedeflenmistir.</p>
      <p>Bu yontemi gerceklestirebilmek icin takip edilmesi gereken bir tak m ad mlar
vard r. I_lk ad mda, belirli bir alandaki ortak noktalar ve degiskenlik noktalar
musterilerin istekleri ve belirlenmis tasar m secimleri goz onunde
bulundurularak bir ozellik modelinde belirlenir. Daha sonra bu ozellik modeli kullan larak
yar otomatik, gelistiricilere zaman kazand ran ve esnek olan alana ozgu
kaynak kod taslaklar bu yaklas ma ozel tasarlanm s kod ureticisi sayesinde
otomatik olarak uretilir. Uretilen bu kodlar n gelistirilmesine devam edilerek
uygulaman n yaz l m tamamlan r. Daha sonra ozellik modeli kullan larak otomatik
olarak uretilen degiskenlik yonetimi s n ar ile bu uygulaman n ozellik
modelindeki butun ozellik kombinasyonlar icin cal smas saglanm s olur. Boylece
alandaki degiskenlikler fazladan hic bir islem yapmaya gerek kalmadan dogrudan
ve otomatik olarak uygulamaya yans t lm s olur. Bu yontem sayesinde,
uygulamada cesitli ozellik kombinasyonlar n n cal sabilirligini saglayabilmek icin kod
degisikligi veya yeniden bir yaz l m tasar m haz rlamaya gerek kalmam s
olacakt r.</p>
      <p>
        Literaturde bu bildiride sunulan yonteme benzeyen baz arast rmalar
mevcuttur. Mesela, Zhang ve Jarzabek bir alandaki benzerlik ve degiskenligi
yonetebilmek icin XML tabanl olan Variant Con guration Language (XVCL) dilini
kullanarak yaz l m urun hatt bilesenleri olusturur [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. Bu yaklas ma gore, mumkun
olabilecek butun ozellik secimleri icin gerekli kaynak kod parcalar baslang cta
haz r olmal d r. Yani herhangi bir ozellik kombinasyonunda bulunan ozellikler
icin ilgili kaynak kod parcalar secilerek yaz l m n cal smas saglanacakt r. Fakat
bu yontem yeterince olceklenebilir degildir ve ayr ca ozellik modelleri buyudukce
butun olas l klar icin kaynak kodu haz rlaman n maliyeti cok fazla olacakt r.
      </p>
      <p>
        AHEAD arac da ozellige dayal programlama yontemi kullan larak Batory
[
        <xref ref-type="bibr" rid="ref4">4</xref>
        ] taraf ndan gelistirilmistir. Bu yontemde ozellikler artt r ml olarak
eklenerek basit programlar gelistirilir. Yani ozellik modeline eklenen her bir ozellik
icin Jak dosya format nda basit program parcalar tan mlan r. Jak, Java
programlama dilinden turetilmis kod uretmeyi destekleyen bir programlama dilidir.
Bu yontemde bircok nesneye dayal programlama dili varken sadece Java dil
destegi vard r ve ayr ca kullan c y Jak programlama dilini de ogrenmeye
mecbur b rakmaktad r. Jak dili bilmeden bu yontemi uygulamak mumkun
olmamaktad r. Bu bildiride sunulan yontem ise uygulama gelistirme dili d s nda fazladan
bir programlama dili ogrenmeye gerek kalmadan degiskenlik yonetimini otomatik
bir sekilde saglamay hede emektedir.
      </p>
      <p>Bildirinin icerigi ilerleyen bolumlerde detayl bir sekilde anlat lm st r. O zellige
Dayal Yaz l m Gelistirme bolumu, bildiride gecen konuyla ilgili genel terimler,
yaz l m gelistirme yaklas mlar ve yasam dongusu gibi konularda bilgiler icerir.
Ucuncu bolumde ise yaz l m gelistirmede ozellik modelinin nas l kullan ld g
hakk nda genel cerceveden bakacak sekilde bilgi verilmistir. Dorduncu bolumde
ise bu bildiride anlat lan yontemin uyguland g ornek bir uygulama senaryosu ve
bu uygulama icin haz rlanan ozellik modeli anlat lmaktad r. Bir sonraki besinci
bolumde de bildiride onerilen yontemin ve ozellik modelinin nas l kullan ld g n n
detaylar ad m ad m anlat lmaktad r. Alt nc ve son bolum ise bildiride onerilen
yontemin k sa bir ozetini, avantajlar n , dezavantajlar n ve bu yontemin ustune
ileride yap labilecek cal smalar anlat r.
2</p>
      <sec id="sec-2-1">
        <title>O zellige Dayal Yaz l m</title>
      </sec>
    </sec>
    <sec id="sec-3">
      <title>Gelistirme</title>
      <p>
        Yetenege Dayal Yaz l m Gelistirme (YDYG) [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ] yaz l m sistemlerine farkl
metotlar, diller, tasar m teknikleri ve araclar ile birlikte yap , gereksinime uyarlama
ve sentezleme saglayan ve degisken, uyarlanabilir ve gelistirilebilir yaz l mlar
gelistirmeye yarayan bir paradigmad r. O zellik, YDYG'nin en onemli parcas d r.
Bu yaklas mda daha sureclerin en bas ndayken belirlenen ozellikler yaz l m yasam
dongusundeki butun asamalarda kullan l r ve bir kopru gorevi gorur. YDYG
temelde yaz l m urun hatlar gelistirmek ve alan muhendisligi yapmak icin
kullan l r. Yaz l m urun hatt ise belli bir market segmentinin veya problemin belirli
ihtiyaclar n kars layan ortak ve degisken ozelliklerin yonetildigi bir grup yaz l m
sistemleridir.
2.1
      </p>
      <sec id="sec-3-1">
        <title>O zellik</title>
        <p>YDYG'nin temel parcas olan O zellik icin literaturde yap lm s cok say da teknik
ve soyut tan mlar bulunmaktad r. Bu teknik tan mlar incelendiginde ozelliklerin
tasar m kararlar n simgeleyen ve potansiyel bir kon gurasyon secenegi sunan
yaz l m gereksinimlerini kars lamak icin uygulanabilecegi gorulmektedir.</p>
        <p>
          Asag da farkl ozellik tan mlar n n yap ld g k s mlar gorulebilir.
1. "Bir paydas ihtiyac n kars lamak, bir tasar m karar n uygulamak ve
kapsullemek ve bir kon gurasyon secenegi sunabilmek icin belirli bir program n
yap s n genisleten ve degistiren bir yap " [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]
2. "I_stege bagl veya artan bir islev birimi" [
          <xref ref-type="bibr" rid="ref10">10</xref>
          ]
3. "f = (R, W, S), R, ozelliklerin gereksinimlerini kars lamay ; W ozelligin cevresi
hakk nda ald g varsay mlar ve S, ozelligin spesi kasyonunu ifade ettigi bir
ucludur." [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]
4. "I_slevsel ve islevsel olmayan bir dizi gereksinimle belirlenen mant ksal
davran s birimi" [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ].
5. "Uygulanmas , test edilmesi, iletilmesi ve surdurulmesi gereken ay rt edici
tan mlanabilir bir soyutlama" [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ].
        </p>
        <p>Yukar da belirtilen tan mlar da goz onunde bulundurularak, ozellik
ifadesinin bu bildiride onerilen yontemde as l kullan lma amac ve ozellige yuklenen
tan m; belli bir alan icin belirlenen bir ozelligin o alan kapsam nda yap lacak
olan yaz l m sistemindeki belirli gereksinimlere, tasar m kararlar na ve potansiyel
yap land rma seceneklerine kars l k gelebilecegi olmustur. Bu kapsamda O zellik
kavram icin bildiride farkl tipler kullan lm st r. I_lerleyen bolumlerde bu
ozellik tipleri, tan mlar ve nerede ne zaman kullan ld g hakk nda detayl bilgi
verilmistir.
2.2</p>
        <p>YDYG Yasam Dongusu
Ortakl klar ve degiskenlikleri belirleyip yonetebilmek icin ozellik parcalar
belirlenip olusturulmal d r. YDYG yontemi kon gurasyon secenekleri sunup yaz l m
urunlerinin olusturulmas n saglar. Bunu saglamak icin de 4 temel faz n oldugu
bir yasam dongusu vard r:
1. Alan analizi
2. Alan tasar m ve spe sikasyonu
3. Alan uygulamas
4. Urun kon gurasyonu ve uretilmesi</p>
        <p>Bu yasam dongusundeki ilk 3 ad m asl nda temel olarak alan muhendisligi
kapsam nda ele al n r. U run kon gurasyonu ve uretilmesi ad m ise uygulama
muhendisligi kapsam nda dusunulebilir. Alan muhendisligi belirli bir alanda
uygulama gelistirmek icin kullan labilecek parcalar n gelistirilmesini amaclar.
Fakat bir yaz l m urun hatt n n ortak ve degisken noktalar cok iyi bir sekilde
tan mlan p gosterilmesi cok onemlidir. Bircok yaz l m sistemi ayn alandaki baska
yaz l m sistemlerinin farkl varyasyonlar olabilir. Sirketler buna benzer
durumlarda kazanclar n artt rabilmek icin, markete daha h zl urun c karabilmek icin
alan muhendisligi kapsam nda bu konsept ve gelistirmeleri kullanabilir. Alan
muhendisligi 3 temel bolumden olusur. Bu bolumler Alan Analizi, Alan Tasar m ,
Alan Gerceklestirmesi olarak belirlenmistir. Bu bolumlere paralel olarak
Uygulama Muhendisligi ad mlar vard r. Sekil 1 de gosterilen Alan Analizi ve
Gereksinim Analizi ad mlar asl nda musteri ihtiyaclar n n tespit edilmesi asamas d r.
I_lk asamadan sonra Alan ve Uygulama icin gerekli olan ozellikler tespit edilir.
O zellik modeli ile Urun kon gurasyonu her zaman bir biri ile uyumlu olmal d r.
Bunlar kars l kl olarak birbirlerini etkiler. Daha sonraki asama uygulaman n
gelistirilmesi ve test edilmesi k sm d r.</p>
        <p>
          Sekil 1. Alan ve Uygulama Muhendisligi [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]
3
        </p>
        <p>Yaz l m</p>
        <sec id="sec-3-1-1">
          <title>Gelistirmede O zellik Modelinin Kullan lmas</title>
          <p>Nesneye dayal programlama dilinin genel yasam dongusu uc temel ad mdan
olusur. I_lk ad m bir yaz l m sisteminin gereksinimlerini ve mumkun olabilecek
tasar m secimlerini belirlemektir. Daha sonra bu belirlenmis olan gereksinim ve
tasar m secimlerinin UML modelleme dili gibi bir arac ile arayuzleri, bilesenleri
ve bu bilesenlerin bir birleri ile olan baglant lar iceren bir modele donusturulmesi
gelir. Son ad mda da yaz l m muhendisleri taraf ndan yaz l m n butun kaynak
kodu gelistirilir ve gerceklestirilir. Bu yaklas mda ise ilk olarak nesneye
dayal programlama ile gelistirilen uygulamalar icin ozellik modellerini kullanarak
ak ll kaynak kod kal plar uretmek amaclanm st r. Boylece gelistiriciler yaz l m
gelistirme surecine baslad g nda yaz l mda gerekli olacak olan baslang c s n ar n
ve arayuz s n ar n olusturmak icin zaman harcamam s olacakt r. Bir diger
amac ise son urun olarak elde edilen uygulaman n ozellik modelinden
turetilen butun kon gurasyon varyasyonlar icin sistemde hic bir degisiklik
yapmadan cal sabilmesini saglamakt r. Boyle bir uygulama gelistirmek sadece
nesneye dayal programlama mimarilerini kullanarak mumkun degildir. O nerilen
yontemde de otomatik olarak olusturulan ak ll s n ar n saglad g veri yap lar
butun yaz l m gelistirme surecinde kullan l r. Buna ek olarak ozellik modeli,
detayl bir sekilde analiz edilir ve otomatik olarak degiskenlik yonetimini saglayacak
olan s n ar uretilir. Boylece uretilen bu s n ar n gelistirilmis olan uygulaman n
butun kullan c secimlerine gore sistemde hic bir degisiklige gerek duymadan
uyarlan p cal sabilmesi hede enmistir.
4</p>
        </sec>
        <sec id="sec-3-1-2">
          <title>O rnek Uygulama: I_nternet'ten Al sveris Alan</title>
          <p>Bu yay nda belirtilen yontemi daha iyi anlatabilmek icin ornek bir masa ustu
uygulamas olan internetten al s verisi saglayan bir konsept uygulama gelistirmeye
karar verildi. Kompleks bir web tabanl al s veris uygulamas yapmak ilerleyen
zamanlarda dusunulebilir. Simdilik daha pratik olmas ac s ndan standart masa
ustu uygulamas n n daha uygun olacag dusunuldu. Bu ornekte ilk is olarak
alandaki limitler tahmini olarak belirlendi. Bir sonraki asamada ise alandaki
gereksinimler belirlendi ve bu gereksinimler temel al narak alandaki ortakl klar ve
degiskenlikler alan muhendisligi yap larak belirlendi. Bunun d s nda musterilerin
de ekstra ozellikler talep edebilecegi dusunulerek ilerlendi. Bu cal smada, ortakl k
ve degiskenlik noktalar basar l ve dogru bir sekilde tespit edildikten sonra
ozellik modelinden olusturulacak farkl tasar m secimi kumeleri icin ayr ayr
uygulamalar uretmek yerine ortaya sadece bir tane cal san bir uygulama gelistirip
ozellik modelinde yap lacak farkl secim varyasyonlar n n hepsi icin bu
uygulaman n cal sma esnas nda yeni ozellik secimlerine gore kendini otomatik olarak
adapte etmesi yani bu secimleri uygulamaya yans tmas hede enmistir.</p>
          <p>Bu ornek icin al s veris alan baz al narak baz temel tasar m kararlar
belirlendi ve bunlara gore de Sekil 2'de gosterilen ozellik modeli olusturuldu. Bu
ornek, ilerleyen bolumlerde anlat lan ad mlara gore uygulanm st r ve
uygulaman n cal sma esnas nda butun urun kombinasyonlar icin dogru bir sekilde
cal sabildigi gorulmustur.</p>
          <p>Sekil 2. E-Market Ozellik Modeli</p>
          <p>Bir sonraki bolumde de bu ornek uygulaman n bildirideki yonteme gore nas l
olusturuldugu, yontemin ad mlar n n nas l uyguland g , ozellik modelinin nas l
olusturuldugu, bu modele gore kaynak kod uretimi, yaz l m gelistirmenin nas l
yap lacag ve uygulaman n en sonda kullan c secimlerine gore cal sabildigi
detayl bir sekilde anlat lm st r.
5</p>
        </sec>
        <sec id="sec-3-1-3">
          <title>O nerilen Yontem</title>
          <p>Bu yontemi daha iyi anlayabilmek icin yontemde izlenmesi gereken ad mlar Sekil
3'deki ak s diyagram ile incelenmelidir. Bu diyagramda goruldugu gibi
oncelikle belirlenmis olan bir alandaki tasar m kararlar na gore ve bir ozellik modeli
arac yard m ile ozellik modeli tasarlan r. Bu ozellik modeli belirlenen alandaki
ozelliklerden hangilerinin nas l ve hangi kurallara uyarak sistemde olabilecegini
gosterir. Daha sonra gelistirmis oldugumuz otomatik kod ureticisi, taslak kodlar
ve yaz l mda kullan lacak olan arayuz s n ar n olusturur. Ayn zamanda ozellik
modelindeki ozelliklerin birbirleriyle olan butun iliskilerini goz onunde
bulundurarak degiskenlik ve kon gurasyon yonetimi yapacak olan s n ar da otomatik
olarak uretilir.</p>
          <p>Sekil 3. Onerilen Yontemin Ak s Diyagram</p>
          <p>Kod uretiminin detaylar bir sonraki alt bolumlerde anlat lacakt r. Ak sta
goruldugu gibi bir sonraki ad m yaz l m gelistirmenin yap ld g asamad r. Bu
ad mda gelistiriciler bu uretilen taslak kodlar ve bunlar n icindeki veri yap lar n
kullanarak yaz l m gelistirme surecini devam ettirirler. Yaz l m gelistirme sureci
sona erdikten sonra nesneye dayal yap land r labilir bir uygulama ortaya c km s
olur. Ak s diyagram nda da gorulebilecegi gibi bu uygulama cal smaya baslamadan
once ozellik modelinden kullan c secimleriyle olusturulan bir kon gurasyon
dosyas uygulamaya girdi olarak verilir. Kullan c lar n secimlerini iceren bu girdi
degiskenlik yonetimini saglayan s n arda anlamland r larak sonuclar
uygulamaya otomatik olarak yans t l r. Bu s n ar bag ml l k denetimi yontemiyle
uygulaman n kodunda gerekli kon gurasyon islemlerini cal sma zaman s ras nda
yapar ve boylece uygulama girdi olarak gelebilecek butun kullan c secimi
kombinasyonlar icin cal sabilecektir. Sonuc olarak belirlenmis olan alandaki degiskenlik
noktalar direk ve otomatik olarak nesneye dayal uygulamalara ozellik modeli
sayesinde yans t lm s olacakt r.
5.1</p>
        </sec>
      </sec>
      <sec id="sec-3-2">
        <title>O zellik Modeli Dili: FeatureIDE</title>
        <p>Belirlenmis olan bir alan n detaylar n anlaml bir sekilde yap land rmak ve
gosterebilmek icin bu yontemde bir ozellik modeli arac kullanmak gerekiyordu. Basit,
anlas l r ve kullan c dostu bir arayuze sahip olan ve yaz l m gelistirme
platformu Eclipse icin eklentisi bulunan FeatureIDE arac kullan lmas na karar
verildi. Bu arac, var olan eklentiyi iyilestirmek veya gelistirmek icin degil de sadece
bildirideki yontemde uygulanmas gereken ad mlarda gereken ozellik modelini
olusturmak ve bu modeli analiz etmek icin kullan lm st r. Bu arac bir ozellik
kon gurasyonunun ozellik modelindeki kurallara gore uygun olup olmad g na
karar verebiliyor ve bunu da gorsel olarak kullan c ya iyi bir sekilde
gosterebiliyor. Bir ozellik modelini kolayca olusturabilmeyi saglamas n n yan nda kolay
anlas lan arayuzu sayesinde kullan c ozellik modelinden secimlerini kolayca
yapabiliyor. FeatureIDE bir ozellik ve ona bagl olan ozellikler aras nda cesitli iliski
turleri kurabilmeyi saglar. Sekil 2'de bu arac kullan larak I_nternet uzerinden
al sveris alan icin haz rlanm s ozellik diyagram n inceleyebilirsiniz. Bu ozellik
diyagram nda goruldugu gibi bu aracta kullan lan ozellik modeli dilinde Zorunlu,
Opsiyonel, Soyut ozellik turleri ve ozellikler aras nda da Ve, Veya, Alternatif
baglant turleri vard r. Ayr ca ozellik modelinin alt taraf ndaki gibi uygulamaya
yonelik k s tlamalar da tan mlanabilmektedir.
5.2</p>
      </sec>
      <sec id="sec-3-3">
        <title>O zellik Modelinin O zyinelemeli Ayr st r lmas</title>
        <p>Bu yontemin ilk temel ad m ozellik modelinin bilgilerini tas yan XML dosyas n n
ozyinelemeli olarak ayr st r lmas ve anlamland r lmas d r. O zellik modelindeki
butun ozelliklerin kod taraf nda anlaml bir agac veri yap s na koyulabilmesi
icin basit bir derin oncelikli gezinme algoritmas kullan ld . Bu algoritma her
agactaki her ozelligi derin oncelikli s rayla gezip asag daki islemleri ozyinelemeli
olarak gerceklestirmistir:
1. O nceden duzenleme islemini yap
2. For each i (i : from 1 to n-1) do:
2.1. Eger varsa i. eleman ziyaret et
2.2. O zellikleri ile birlikte bir ozellik dugumu olusturulur.</p>
        <p>2.3. Normal s rayla islem yap
3. Eger varsa son (n.) cocugu ziyaret et
4. Cat dugumunden once sol ve sag alt agaclar isleme sok</p>
        <p>n: Cocuk dugumlerin say s n simgeler. Bu algoritma varl k s n ar n nesneye
dayal olarak tasarlanm s bir sekilde uretebilmek icin ozellik modelindeki butun
ozellikleri yap land r r.</p>
      </sec>
      <sec id="sec-3-4">
        <title>Veri Yap lar ile Kaynak Kod U retimi</title>
        <p>
          Yap lan arast rmalar cercevesinde nesneye dayal programlama konseptlerinin bir
ozellik modelinin kod parcalar na donusturulebilecegini ve bu anlaml parcalar n
bir alandaki degiskenligi yonetebilmek icin kullan labilecegi goruldu. Bu kirden
yola c karak bir ozellik modelindeki kullan c secimlerine gore otomatik
uyarlanabilen uygulamalar gelistirebilmek icin bu yontem olusturuldu. Bu yontemin ilk
asamas nda kod uretim islemini gerceklestirebilmek icin CodeModel Uygulama
Ara Birimi [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ] kullan ld . Bu kutuphane tip-guvenli Java kodlar uretilmesini
saglayarak onerilen yonteme katk saglam s oldu.
5.4
        </p>
      </sec>
      <sec id="sec-3-5">
        <title>Veri Yap lar I_cerigi ile Birlikte Varl k ve Arayuz S n ar</title>
        <p>O zellik modeline uygun olarak varl k ve arayuz s n ar n ak ll veri yap lar n
icerecek sekilde olusturmak icin ozellik modelleme dilindeki ozellik tipleri ve
ozellikler aras ndaki baglant turlerine gore ozellik modeli ile kod aras nda bir
esleme yontemi gelistirildi. Bu ozellik tipleri ve baglant turlerinin nas l
kullan ld g ve otomatik olarak uretilen kodlar n hangi mant ga gore tasarland g
asag da ac klanm st r.
5.5</p>
      </sec>
      <sec id="sec-3-6">
        <title>Zorunlu O zellik</title>
        <p>Bir ozellik modelinden secim yaparak olusturulacak olan butun urun kon
gurasyonlar nda olmas istenilen ozellikler Zorunlu ozellik tipi olarak ozellik modelinde
tan mlan r. "B" ad ndaki zorunlu ozellige sahip bir ozellik "A" ad ndaki baska
ozelligin cocugu oldugu durumda, nesneye dayal programlama mant g na gore
oncelikle "A" ve "B" adlar nda varl k s n ar olusturulur. Ayr ca bu iki s n f
aras nda Kompozisyon (Composition) baglant s kurulur. Yani "A" s n f "B"
s n f n icinde kullanabilecektir. Uygulama cal sacag zaman "A" s n f turundeki
nesnenin "B" s n f turundeki ozelligi varsay lan olarak olusturulacakt r.
5.6</p>
        <p>Opsiyonel O zellik
Eger bir urun kon gurasyonunda bir ozelligin bulunmas opsiyonel olarak
sunulmak isteniyorsa bu ozellik Opsiyonel ozelliginde tan mlan r. "B" ad ndaki
opsiyonel ozelligine sahip bir ozellik "A" ad ndaki baska ozelligin cocugu oldugu
durumda, nesneye dayal programlama mant g na gore oncelikle "A" ve "B"
adlar nda varl k s n ar olusturulur. Ayr ca bu iki s n f aras nda Kompozisyon
(Composition) baglant s kurulur. Yani "A" s n f "B" s n f n icinde
kullanabilecektir. Uygulama cal sacag zaman da eger urun kon gurasyonunda "B" ozelligi
secilmisse "A" s n f turundeki nesnenin "B" s n f turundeki ozelligi otomatik
olarak olusturulacakt r; eger secilmemisse bu ozellik bos olarak kalacakt r ve
uygulaman n cal st g sure boyunca hic bir zaman aktif olmayacakt r.
5.7</p>
        <p>Ve Baglant s
Bir ozellik ve onun cocuk ozellikleri aras nda Ve baglant s oldugu durumlarda,
bu yontemde yine Kompozisyon baglant s olarak kullan lm st r. O rnegin, "A"
ozelliginin "B" ve "C" ad nda iki alt (cocuk) ozelligi olsun. Eger bu iki ozellik
"A" ozelligine Ve baglant turu ile bagl ise bunun UML s n f diyagram ndaki
kars l g nda "A", "B" ve "C" varl k s n ar olusturulur. "A" s n f n n icinde de
"B" ve "C" s n f turlerinde ozellikler Kompozisyon mant g na gore bulunurlar.
5.8</p>
        <p>Alternatif Baglant s
Bir ozellik ve onun cocuk ozellikleri ile aras nda Alternatif baglant s olmas
ise alt ozelliklerden sadece birinin secilebilecegi anlam na gelir ve bu baglant
turu icin buraya kadar anlat lanlardan daha farkl bir yontem kullan l r. O zellik
modelinde bir "A" ozelliginin alt nda Alternatif baglant s ile baglanm s olan "B"
ve "C" gibi iki alt ozellik oldugu zaman yine her bir ozellik icin varl k s n ar
olusturulur. Ayr ca "IA" ad nda bir arayuz s n f olusturulur ve "B" ve "C"
s n ar n n bu arayuzu gerceklestirmesi saglan r. Alternatif iliskisi icin de
Kompozisyon mant g kullan lm st r. Fakat bu sefer "A" s n f nda "IA" arayuzu s n f
tipinde bir degisken tan mlanacakt r ve uygulaman n cal smas esnas nda urun
kon gurasyon dosyas icinde bulunan kullan c secimine gore bu ozelligin turu
belirlenecektir. Boylece kullan c ozellik secimini degistirdigi zaman sistemde
herhangi bir degisiklik yapmadan uygulama secilen ozelligi otomatik olarak direk
guncelleyecektir.
5.9</p>
        <p>Veya Baglant s
Bir ozellik ve onun cocuk ozellikleri ile aras nda Veya baglant s olmas ise alt
ozelliklerden biri ya da birden fazlas n n secilebilecegini ifade eder. O zellik
modelinde bir "A" ozelliginin alt nda Alternatif baglant s ile baglanm s olan "B"
ve "C" gibi iki alt ozellik oldugu zaman yine her bir ozellik icin varl k s n ar
olusturulur. Ve yine "IA" ad nda bir arayuz s n f olusturulur ve "B" ve "C"
s n ar n n bu arayuzu gerceklestirmesi saglan r. Veya iliskisi icin de
Kompozisyon mant g kullan lm st r. Fakat Alternatif baglant s ndan farkl olarak "A"
s n f nda "IA" arayuzu s n f tipinde bir liste degiskeni tan mlan r. Daha sonra
uygulaman n cal smas esnas nda urun kon gurasyon dosyas icinde bulunan
kullan c secimlerine gore bu listenin elemanlar belirlenip olusturulacakt r. Eger bu
alt ozelliklerden biri secilmezse bu listeye eklenmeyecektir ve uygulama yasam
dongusu boyunca da kullan lmayacakt r. Yaz l m gelistirme esnas nda her ozellik
icin sanki uygulamada olacakm s gibi kodlamas yap lacakt r. Boylece kullan c
ozellik secimini degistirdigi zaman sistemde herhangi bir degisiklik yapmadan
uygulama secilen ozellik grubuna gore otomatik olarak aktif ozelliklerin cal smas n
saglayacakt r.
Bu yontemde kullan lan ozellik modelleme dilinde Soyut ve Somut olmak uzere
iki temel ozellik tipi vard r. Yukar da anlat lan durumlardaki ozellikler hep Somut
ozellik olarak kabul edilip degerlendirilmistir. Soyut ozellikler ile ilgili yapt g m z
arast rmalar sonucunda bu ozelliklerin kod taraf nda bir kars l g olmad g n
sadece ozellik modelini yap land rmaya yard m ettigi tespit edildi. Bundan dolay
Soyut ozellikler icin kod taraf nda herhangi bir varl k s n f olusturulmad .
Sadece soyut ozelligin ad n kullanarak bir arayuz s n f olusturup bu soyut ozelligin
varsa alt ozelliklerinin bu arayuzu gerceklestirmesi sagland . Bundan dolay bu
yontem kapsam nda ozellik modeli olusturulurken kod taraf nda varl k s n f
olarak uretilmesine gerek olmayan sadece mimariyi yap land rmaya yarayacak olan
ozelliklerin Somut ozellik olarak belirlenmesine karar verildi.
6</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Sonuc</title>
      <p>
        Bu bildiride nesneye dayal uygulamalarda degiskenligi ozellik modeli
kullanarak yonetebilmek icin tasarlanm s olan bir yaklas m anlat ld . Bu yaklas m n
en onemli noktas bir uygulaman n cesitli kon gurasyonlar n yonetmek icin
degiskenlik bilgisinin nas l kullan ld g d r. Bunu da saglamak icin ozellik
modelinden ak ll veri yap lar n iceren ve ilerleyen asamalarda alan degiskenligini
otomatik yonetmeye yarayacak olan kod taslaklar n ureten tasar m desenleri
olusturuldu. Ayr ca bu olusan kodlardaki veri yap lar yaz l mc lara kod gelistirme
surecinde kolayl k saglay p, zaman kazanmalar na yard mc olmas amacland .
Bu amaca ulasmak icin de ozellik modeli temelli yaz l m gelistirme teknigi
kullan ld . Bu surecte FeatureIDE [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ] ozellik modellerinden ak ll kod taslaklar
olusturulmas sagland . Bu kodlar yaz l m sisteminin son halinin genel cercevesini
cizmektedir. Bu sekilde yaz l mc lar bu cerceve kapsam nda kod gelistirmesini
yapabilirler.
      </p>
      <p>Bu yontemin dezavantaj ise tersine muhendislik konusunda zay f olmas d r.
Yani, kod taraf nda bir degisiklik yap ld g zaman bu ozellik modeli taraf na
yans t lamayacakt r. Gelecekte yap labilecek bir cal sma olarak bu k s m uzerinde
durulmas planlan yor. Ayr ca bu cal sma kapsam nda alan analizi asamas nda
al nan tasar m kararlar n n iyi ve dogru bir sekilde tan mlanm s olmas ve ozellik
modeline yans t lm s olmas beklenmektedir. Bu ozellik modelinin son
uygulamadaki ortak noktalar ve degiskenlik noktalar n icermesi gerekmektedir. Boylece
yaz l m gelistirme sureci duzenli ve dogru bir sekilde ilerleyebilecek ve
uygulaman n son hali alandaki degiskenlik noktalar n otomatik olarak yonetebilecektir.
Eger bu baslang c asamas ndaki ozellik modeli olusturulmas ad m eksik veya
hatal yap l rsa bu yontemin ilerleyen surecleri icin sorunlar ortaya c kacakt r.</p>
      <p>Bu yontemi ilerletmek icin gelecekte baz cal smalar yap labilir. O ncelikle
yontemin daha iyi bir hale getirilebilmesi icin buyuk capl bir alan veya market
uzerinde denenmesi daha iyi olacakt r. Boylece yaklas m n eksik veya zay f
taraflar tespit edilip iyilestirmesi saglanabilir. Bu yaklas m n ad mlar n
uygulayabilmek icin ozellik modeli k s mlar icin bir Eclipse eklentisi olan FeatureIDE arac
kullan ld . Gelecekte yap labilecek islerden bir digeri ise bu yontemdeki butun
ad mlar kolayl kla uygulayabilmek icin Eclipse, IntelliJ IDEA gibi
platformlara yeni bir eklenti yap lmas olabilir. Boyle bir eklenti sureclerin uygulanma
h z n ve hatas z ilerleyebilmeyi saglayacakt r. Bir diger nokta da bu yontemin
Java programlama dili d s nda farkl programlama dillerini de kapsayacak sekilde
gelistirilmesi olabilir.</p>
    </sec>
    <sec id="sec-5">
      <title>Kaynaklar</title>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1. Codemodel api. from https://codemodel.java.net/nonav/apidocs/com/sun/codem odel/package-summary.
          <source>html</source>
          (
          <year>2014</year>
          ),
          <article-title>"</article-title>
          <source>last accessed on 18/08/2014"</source>
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Apel</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          , Kastner,
          <string-name>
            <surname>C.</surname>
          </string-name>
          :
          <article-title>An overview of feature-oriented software development (</article-title>
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Apel</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lengauer</surname>
            ,
            <given-names>C.</given-names>
          </string-name>
          , Moller, B., Kastner,
          <string-name>
            <surname>C.</surname>
          </string-name>
          :
          <article-title>An algebra for features and feature composition</article-title>
          .
          <source>In: Proceedings of the 12th International Conference on Algebraic Methodology and Software Technology (AMAST). Lecture Notes in Computer Science</source>
          , vol.
          <volume>5140</volume>
          , pp.
          <volume>36</volume>
          {
          <fpage>50</fpage>
          . Springer-Verlag, Berlin/Heidelberg, Germany (Jul
          <year>2008</year>
          ). https://doi.org/http://dx.doi.org/10.1007/978-3-
          <fpage>540</fpage>
          -79980-1 4, acceptance rate:
          <volume>47</volume>
          % (
          <issue>27</issue>
          /58)
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <surname>Batory</surname>
            ,
            <given-names>D.:</given-names>
          </string-name>
          <article-title>A tutorial on feature oriented programming and the ahead tool suite</article-title>
          .
          <source>In: Proceedings of the 2005 International Conference on Generative and Transformational Techniques in Software Engineering</source>
          . pp.
          <volume>3</volume>
          {
          <fpage>35</fpage>
          . GTTSE'
          <volume>05</volume>
          , Springer-Verlag, Berlin, Heidelberg (
          <year>2006</year>
          ). https://doi.org/10.1007/11877028 1, http://dx.doi.
          <source>org/10.1007/11877028 1</source>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <surname>Bosch</surname>
          </string-name>
          , J.: Design and
          <article-title>Use of Software Architectures: Adopting and Evolving a Product-line Approach</article-title>
          . ACM Press/Addison-Wesley Publishing Co., New York, NY, USA (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Classen</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Heymans</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schobbens</surname>
          </string-name>
          , P.Y.:
          <article-title>What's in a feature: A requirements engineering perspective</article-title>
          .
          <source>In: Proceedings of the Theory and Practice of Software, 11th International Conference on Fundamental Approaches to Software Engineering</source>
          . pp.
          <volume>16</volume>
          {
          <fpage>30</fpage>
          . FASE'08/ETAPS'08, Springer-Verlag, Berlin, Heidelberg (
          <year>2008</year>
          ), http://dl.acm.org/citation.cfm?id=
          <volume>1792838</volume>
          .
          <fpage>1792841</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Czarnecki</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Eisenecker</surname>
          </string-name>
          , U.W.:
          <article-title>Generative Programming: Methods, Tools, and Applications</article-title>
          . ACM Press/Addison-Wesley Publishing Co., New York, NY, USA (
          <year>2000</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Kang</surname>
            ,
            <given-names>K.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Lee</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Kim</surname>
            ,
            <given-names>K.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Shin</surname>
            ,
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Huh</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Form: A feature-; oriented reuse method with domain-; speci c reference architectures</article-title>
          .
          <source>Annals of Software Engineering</source>
          <volume>5</volume>
          (
          <issue>1</issue>
          ),
          <volume>143</volume>
          {
          <fpage>168</fpage>
          (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9. Thum, T., Kastner,
          <string-name>
            <given-names>C.</given-names>
            ,
            <surname>Benduhn</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            ,
            <surname>Meinicke</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            ,
            <surname>Saake</surname>
          </string-name>
          ,
          <string-name>
            <given-names>G.</given-names>
            ,
            <surname>Leich</surname>
          </string-name>
          ,
          <string-name>
            <surname>T.</surname>
          </string-name>
          :
          <article-title>Featureide: An extensible framework for feature-oriented software development</article-title>
          .
          <source>Science of Computer Programming</source>
          <volume>79</volume>
          ,
          <issue>70</issue>
          {
          <fpage>85</fpage>
          (
          <year>2014</year>
          ). https://doi.org/http://dx.doi.org/10.1016/j.scico.
          <year>2012</year>
          .
          <volume>06</volume>
          .002
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>Zave</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          :
          <article-title>Programming methodology</article-title>
          .
          <source>chap. An Experiment in Feature Engineering</source>
          , pp.
          <volume>353</volume>
          {
          <fpage>377</fpage>
          . Springer-Verlag New York, Inc., New York, NY, USA (
          <year>2003</year>
          ), http://dl.acm.org/citation.cfm?id=
          <volume>766951</volume>
          .
          <fpage>766969</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Zhang</surname>
          </string-name>
          , H.,
          <string-name>
            <surname>Jarzabek</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Xvcl: A mechanism for handling variants in software product lines</article-title>
          .
          <source>Sci. Comput</source>
          . Program.
          <volume>53</volume>
          (
          <issue>3</issue>
          ),
          <volume>381</volume>
          {407 (Dec
          <year>2004</year>
          ). https://doi.org/10.1016/j.scico.
          <year>2003</year>
          .
          <volume>04</volume>
          .007, http://dx.doi.org/10.1016/j.scico.
          <year>2003</year>
          .
          <volume>04</volume>
          .007
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>