=Paper= {{Paper |id=Vol-1221/paper1 |storemode=property |title=Yazılım Ürün Hatlarında Yetenek Modeli ve Üstmodel Senkronizasyonu için bir Yöntem |pdfUrl=https://ceur-ws.org/Vol-1221/1_bildiri.pdf |volume=Vol-1221 |dblpUrl=https://dblp.org/rec/conf/uyms/ErataCGDOK14 }} ==Yazılım Ürün Hatlarında Yetenek Modeli ve Üstmodel Senkronizasyonu için bir Yöntem== https://ceur-ws.org/Vol-1221/1_bildiri.pdf
    5]. $ODQPKHQGLVOL÷LVrecinde DODQLoHULVLQGHNLRUWDNOÕNODUYHGH÷Lú
kenlikler belirlenmekte ve genellikle bir yetenek modeli ile ifade edilmektedir. Yete-
nek ED÷ÕPOÕOÕNODUÕ YHNÕVÕWODUÕ øQJdependencies and constraints) GLNNDWHDOÕQDUDNEX
yeteneklerin ihtiyaca göre bir alt kümesi seçilir ve seçilen yeteneklere sahip yeni bir
\D]ÕOÕP HOGH HGLOLU Bu süreçte, Model Güdümlü Mühendislik (øQJ Model Driven
Engineering  WHNQLNOHUL VÕNOÕNOD NXOODQÕOPDNWD YH |]HOOLNOH $ODQD g]J 'LOOHU øQJ
Domain Specific Languages) (DSL) yetenek modelleri gibi \D]ÕOÕP UQ KDWODUÕQGD




                                                    2
SUREOHP X]D\ÕQÕ WDQÕPODPDGD NXOODQÕOPDNWDGÕU >3]. '6/ JHOLúWLUPHGH \D\JÕQ RODUDN
NXOODQÕODQ DoÕN ND\QDN NRGOX YH JHOLúPLú oDWÕODUGDQ ELUL (FOLSVH (0) øQJ Eclipse
Modeling Framework) teknolojisidir [7]. Bir tür DSL olan yetenek modelleme dilleri-
ni, JHOLúPLú ED÷ÕPOÕOÕNYHNÕVÕW\|QHWLPLDoÕVÕQGDQGH÷HUOHQGLUGL÷LPL]GHWLFDULRODQODUÕ
Pure::Variants [20] ve Gears [21@DoÕNND\QDNNRGOXRODQODUÕLVH79/>8] ve Clafer[1]
GLOOHULROXúWXUPDNWDGÕU>9]. %XQODUÕQDUDVÕQGD &ODIHU VD÷ODGÕ÷ÕoRNOX|UQHNOHPH øQJ
multiple instantiation LOLúNLVHOUHIHUDQVNXUPDYHNDOÕWÕPGHVWH÷LLOH|QHoÕNPDNWDGÕU
$QFDN &ODIHU DUDFÕQÕQ (FOLSVH (0) WHNQRORMLOHUL LOH HQWHJUDV\RQX \RNWXU YH (FOLSVH
0RGHOOHPHDOW\DSÕVÕLOHJHOLúWLULOPHPLúWLU%XVHEHSOHEXDUDoLOHJHOLúWLULOHQ\HWHQHN
lerin (0)WDEDQOÕ DODQD|]JGLOJHOLúWLUPHaktivitelerinden biri olan üst modellemeye
JHoLúWHL]OHQHELOLUOL÷LND\EROPDNWDGÕU %XLKWL\DoODUGDQ\RODoÕNDUDNEXELOGLULGHWDQÕ
WÕODQ \|QWHP \HWHQHN PRGHOOHUL YH NRQILJUDV\RQODUÕ LOH VWPRGHO YH PRGHOOHUL DUD
VÕQGD LNL \|QO G|QúP RWRPDWLN RODUDN JHUoHNOHúWLUHELOPHNWHGLU <|QWHPLQ 6$7
 øQJBoolean Satisfiability Problem YH&63 øQJConstraint Satisfaction Problem)
çözücüleri ile entegrasyonu sayesinde aODQD |]J GLOLQ GR÷UXODPD YH VÕQDQPDVÕ GD
mümkündür. $UDo(FOLSVH(0)WDEDQOÕPRGHOJGPOJHOLúWLUPH\|QWHPOHULNXOOD
QÕODQWPSURMHOHUGHUDKDWOÕNODNXOODQÕODELOHFHNG]H\GHGLU
    Bildirinin takip eden ikinci bölümünde, yöntemimize uygun yetenek modelleme
GLOOHULYHDODQD|]JGLOJHOLúWLUPHWHNQLNOHUL DQODWÕOPÕúWÕU6RQUDNLE|OPGHLVH\DSÕ
ODQoDOÕúPDQÕQ PLPDULELOHúHQOHULYH \|QWHPL WDQÕWÕOPÕú, Clafer ve ECore dilleri ara-
VÕQGDNL G|QúPOHULQ GHWD\ODUÕ DNWDUÕOPÕúWÕU Dördüncü bölümde önerilen yöntemin
gerçek bir endüstriyel ar-ge SURMHVL oÕNWÕVÕ RODQ ELU \D]ÕOÕP UQ KDWWÕ PLPDULVLQGHNL
NXOODQÕPÕJ|VWHULOPLúWLU øOJLOLoDOÕúPDODUNÕVPÕQGDOLWHUDWUGHNLEHQ]HUOHULLOHoDOÕúPD
NÕ\DVODQPÕúWÕU Son bölüm ise önerilen yöntemin bir GH÷HUOHQGLUPHVLni ve ileriye yö-
nelik oDOÕúPDODUÕLoHUPHNWHGLU


2      Yetenek Modelleme ve Alana Özgü Diller

Clafer (class, feature, reference), \D]ÕOÕPUQKDWODUÕQÕQPRGHOOHQPHVLYHDQDOL]LLoLQ
JHOLúWLULlPLúmetinsel bir dildir. Dil, \HWHQHNPRGHOLQL\D]ÕOÕPUQKDWWÕPLPDULVLQL
UQKDWWÕPLPDULúDEORQODUÕQÕYHUQNRQILJUDV\RQXQXELUDUDGDWDULIOH\HELOPHNWH
dir. hVWPRGHOLOH\HWHQHNPRGHOOHPH\LLNLGLOLQDQODPEWQO÷QNRUX\DUDNELUOHú
WLUPHNWHGLU>@$\UÕFDNPHOHUL ve iliúNLOHUL temel alan söz dizim ve semantik saye-
sinde SAT çözücülerine Alloy [6@ DUDFÕ ]HULQGHQ G|QúP VD÷ODQDUDN PRGHOOHULQ
otomatik analiz edilmesi VD÷ODnPDNWDGÕU. $OOR\ NPH WHRULVLQL YH LOLúNLVHO PDQWÕ÷Õ
temel alan formal bir \DSÕVDOPRGHOOHPHGLOLGLU Birinci Derece Yüklem MDQWÕ÷Õ’ndan
 øQJ First-Order Predicate Logic) yararlanarak yüklemleri øQJ predicate) büyük
Boolean ifadelere çevirebilmektedir. Daha sonra da bu ifadeler SAT çözücüleri tara-
IÕQGDQRWRPDWik olarak analiz edilebilmektedir'ROD\ÕVÕ\ODPDQWÕNVDOIRUPOOHUDUDFD
JLUGLRODUDNYHULOGL÷LQGH Alloy AnalyzerDOWÕQGDNL.RG.RG>14@LOLúNLVHOPRGHOEX
OXFXVX\DUGÕPÕ\ODEXIRUPONDUúÕOD\DFDNPRGHOOHULEXOPD\DoDOÕúPDNWDGÕU
    Bu bildiride önerilen yöntem, SAT çözücüsü GHVWH÷LRODQYHELUPHWLQVHO\HWHQHN
PRGHOOHPHGLOLRODQ0HWLQ7DEDQOÕ'H÷LúNHQOLN'LOLLOHGH øQJText-based Variabi-
lity Language) (TVL) [8@ JHUoHNOHúWLULOHELOLUGL &ODIHU¶LQ WHUFLK HGLOPHVLQGH GLOLQ




                                              3
79/¶HJ|UHVD÷ODGÕ÷Õçoklu örnekleme, LOLúNLVHOUHIHUDQVNXUPDYHNDOÕWÕPGHVWH÷LURO
R\QDPÕúWÕU>9@%X\|QGHQLNLGLOLQV|]GL]LPLLQFHOHQGL÷LQGH79/¶GHQ&ODIHU¶HG|Q
úP RODQDNOÕ LNHQ WHUVL NÕVPL RODUDN PPNQGU %|\OHOLNOH &ODIHU¶LQ 79/ GLOLQL
NDSVDGÕ÷ÕoÕNDUWÕODELOLU
    <|QWHPEQ\HVLQGHNXOODQÕODELOHFHNYH(0)LOHHQWHJUHGLOHELOHFHNELUEDúND\H
tenek modelleme dili ise Nesne Yönetim Grubu’nun øQJ Object Management
Group) (OMG) 1 VWDQGDUWODúWÕUPD VUHFLQGH RODQ *HQHO 'H÷LúNHQOLN 'LOL¶GLU øQJ
Common Variability Language) [10@%XELOGLUL\D]ÕOGÕ÷ÕWarihte henüz EDúODQJÕoVX
QXúX \DSÕOPÕú YH DUDo GHVWH÷L VD÷ODQPDGÕ÷Õ LoLQ |QHULOHQ \|QWHP EQ\HVLQGH GH÷HU
OHQGLULOPHPLúWLU $\QÕ ]DPDQGD OMG’nin önerisinde bir model analiz yöntemi ihti-
\DFÕ EHOLUWLOPHPLúWLU
   3,4]. DSL’ler, yetenek model-
leme dilleri ile belirtmesi ]RUX\JXODPDPDQWÕ÷ÕQÕLIDGHHWPHGHSUREOHPX]D\ÕVHYL\H
VLQGHNXOODQÕODELOLU [4]. $\QÕ]DPDQGDELU'6/EQ\HVLQGHJHOLúWLULOHQSURJUDP\DGD
PRGHOOHULQGH÷LúNHQOL÷LQL\|QHWPHNWH\HWHQHNPRGHOOHULLOHELUOLNWHNXOODQÕODELOLUOHU
   %LU '6/ ROXúWXUPDN LoLQ GLOLQ VRPXW YH VR\XW V|]GL]LPOHULQLQ WDQÕPODQPDVÕ JH
UHNPHNWHGLU>



                                                                                           Clafer                                                                    Ecore
                                                      Clafer                                                                   Sync
                                                                                     Concrete Syntax                                                            Concrete Syntax
      mdd4cca.cfr                                Concrete Syntax                                                          Concrete Syntax
                                                                                      (Full Notation)                                                            (Ecore Model
                                                (Concise Notation)                                                            (Xtext)
                                                                                          (Xtext)                                                                   Editor)

    <>                           <>                  <>                    <>                <>
                            <>




                                                      Clafer          <>
                                                                                          Clafer                                Sync                                 ECore
                                                 Abstract Syntax
     mdd4cca.des                                                                     Abstract Syntax                       Abstract Syntax                      Abstract Syntax
                                                 (Full Notation)
                                                                                      (clafer.ecore)                        (sync.ecore)                         (ecore.ecore)
                                                   (clafer.bnf)

                                                                                     <>                       <>                      <>
    <>

                        ůůŽLJĂƌĂĐŦ
                                                                                      mdd4cca.des                          mdd4cca.sync                         mdd4cca.ecore
                              <>




                                                      Alloy
      mdd4cca.als
                                                 Abstract Syntax                                                                               <>
                                                                                                         <>
                                                                                                                                                                <>
                                                <>


                                                                                                                                                            instances.mdd4cca
                                                      Alloy
                                                 Concrete Syntax                                                                        <>




                                                                     ùHNLO. 1. Yöntem Mimarisi

    &ODIHUDUDFÕ\HWHQHNPRGHOOHULQLYHNRQILJUDV\RQODUÕQÕRWRPDWLNRODUDN$OOR\GLOL
QHoHYLUHELOPHNWHGLU%XVD\HGHJHOLúWLULOHQELUVWPRGHOYHPRGHO|UQHNOHULRWRPDWLN
RODUDN &ODIHU GLOLQH G|QúWUOHUHN VÕQDQDELOPHNWHGLU %X VHEHSOH JHOLúWLUGL÷LPL]
Eclipse eklentisi, en günFHO$OOR\YH&ODIHUDUDoODUÕQÕEQ\HVLQGHWHNUDUGD÷ÕWPDNWD
GÕU .XOODQÕFÕ EX DUDoODUÕQ HQWHJUDV\RQX LOH X÷UDúPDPDNWDGÕU &ODIHU DUDFÕ LNL J|VWH
ULPNXOODQPDNWDGÕULONLNÕVDYH|]V|]GL]LPLLoHUHQconcise notation¶GÕUYH.cfr uzan-
WÕOÕGRV\DODUGDVDNODQPDNWDGÕU(Tablo 1D 'L÷HULLVH.des X]DQWÕOÕGRV\DODUGDVDNODQDQ
ve tam notasyonu temsil eden desugared notation¶GÕU 7DEOR .b). Bu notasyon bir
BNF gramer ile gösterilebilmektedir. Bu durumda, “concise notation”¶ÕQ somut söz-
dizimini “desugared notation”¶ÕQ LVH VR\XW V|] GL]LPLQL ROXúWXUGX÷X oÕNDUWÕODELOLU
&ODIHUDUDFÕNHQGL\RUXPOD\ÕFÕVÕQD³FIU´X]DQWÕOÕELUPRGHOLLOHWPHGHQ|QFHRQX³GHV´
X]DQWÕOÕ ELU PRGHOH |Q-LúOHPGHQ JHoLUHUHN YHUPHNWHGLU .ÕVÕW GLOL LoHUPH\HQ VR\XW
sözGL]LPLùHNLO¶GHJ|UOPHNWHGLU&ODIHU\RUXPOD\ÕFÕLVHV|]dizimine özgü kontrol-
OHUL YH LVLP o|]POHPH LúOHPLQGHQ JHoLULOPLú PRGHOOHUL $OOR\ GLOLQH G|QúWUHUHN
NPHWHRULVLQHYHLOLúNLVHOPDQWÕ÷D |]JRODUDNDQODPODQGÕUÕU. Clafer somut sözdizimi
YH NÕVÕW dili, oDOÕúPDPÕ]GD [2]’den HOGH HWWL÷LPL] ELU %1) JUDPHUL (clafer.bnf 4) ile
temsil edilmektedir. Bu gramer, EMF entegrasyonu için bir ECore üstmodeline dö-
QúWUOPú clafer.ecore 5 ) ve &ODIHU¶LQ ELU ,'( VXQPD\ÕúÕQGDQ |WU Xtext DUDFÕ
\DUGÕPÕLOH(FOLSVHX\XPOXELUPHWLQVHOVRPXWV|]GL]LPLROXúWXUXOPXúWXU

3   Tam ECore üstmodeli: http://www.mdd4cca.com/metamodels/ecore.ecore
4
    Tam BNF: http://www.mdd4cca.com/grammars/clafer.ebnf
5   Tam Clafer üstmodeli: http://www.mdd4cca.com/metamodels/clafer.ecore




                                                                                               5
‫ ۧ݀ݎܽܥܩۦ ۧݏܾܣۦ ֜ ۧݎ݂݈݁ܽܥۦ‬string ‫ۧݏݐ݈݊݁݉݁ܧۦ ۧ݀ݎܽܥۦ ۧݐ݁݃ݎܽܶۦ ۧݎ݁݌ݑܵۦ‬
‫ܜ܋܉ܚܜܛ܊܉ | ֜ ۧݏܾܣۦ‬
‫ۧݐݏ݅ܮܫܧۦ ۧݐ݈݊݁݉݁ܧۦ | ֜ ۧݐݏ݅ܮܫܧۦ } ۧݐݏ݅ܮܫܧۦ { ֜ ۧݏݐ݈݊݁݉݁ܧۦ‬
‫ۧݐ݊݅ܽݎݐݏ݊݋ܥۦ | ۧݎ݂݈݁ܽܥۦ ֜ ۧݐ݈݊݁݉݁ܧۦ‬
‫ ׷ | ֜ ۧݎ݁݌ݑܵۦ‬string
‫ ۧ݀݊݅ܭۦ | ֜ ۧݐ݁݃ݎܽܶۦ‬string
‫ ֜ ۧ݀݊݅ܭۦ‬՜ | ժ
‫ۧ݀ݎܽܥܰۦ | ܜܘܗ | ܠܝܕ | ܚܗ | ܚܗܠ | ֜ ۧ݀ݎܽܥܩۦ‬
‫ | ? | ֜ ۧ݀ݎܽܥۦ‬+ | ‫ۧ݀ݎܽܥܰۦ | כ‬
‫ ֜ ۧ݀ݎܽܥܰۦ‬integer . . ‫ۧݎ݁݃݁ݐ݊ܫݔܧۦ‬
‫ | כ ֜ ۧݎ݁݃݁ݐ݊ܫݔܧۦ‬integer

ùHNLO. 2. Clafer yetenek modelleme dili soyut sözdizimi NÕVÕWGLOLLoHUPH\HQ >@ (clafer.bnf4)

         Tablo 1. Clafer, $OOR\YH(FRUHG|QúPü için bir örnek senaryo gösterimi

a. Case1.cfr (Clafer Concise Notation)          b. Case1.ecore (ECore Notation)
abstract A
    name : string
    age : integer
    b : B
    c -> C
abstract B
abstract C : B



c. Case1.des (Clafer Desugared Notation)        d. Case1.des (Alloy Notation)
abstract 0..* c1_A : clafer 0..* {              open util/integer
   0..* c2_name : string 1..1 { }               pred show {}
   0..* c3_age : integer 1..1 { }               run show for 1 but 1 c15_B
   0..* c4_b : c15_B 1..1 { }                   abstract sig c1_A
                                                { r_c2_name : one c2_name
   0..* c5_c ->> c16_C 1..1 { }                 , r_c4_b : one c4_b
   [all disj x; y:                              , r_c5_c : one c5_c }
        this.c5_c | x.ref != y.ref]             { all disj x, y : this.@r_c5_c |
}                                               (x.@ref) != (y.@ref) }
abstract 0..* c15_B : clafer 0..* { }           sig c2_name { ref : one Int }
abstract 0..* c16_C : c15_B 0..* { }            { one @r_c2_name.this }
                                                sig c3_age { ref : one Int }
                                                { one @r_c3_age.this }
                                                sig c4_b extends c15_B {}
                                                { one @r_c4_b.this }
                                                sig c5_c { ref : one c16_C }
                                                { one @r_c5_c.this }
                                                abstract sig c15_B {}
                                                abstract sig c16_C extends c15_B {}


    ’)                     EReference.IsContainment: EBoolean
Reference &ODIHU¶ODUoLIW\|QOYDUVD\ÕOÕU        EReference.IsOpposite: EBoolean
 V\QFHFRUHG|QúPKDWÕUODU                      V\QFHFRUHG|QúPKDWÕUODU 
Clafer Inheritance                                 Single Inheritance
Clafer Merging                                     Multiple Inheritance
Clafer Nesting                                     Ecore, iç içe EClass’lar yuvalanmaz (inner
 V\QFHFRUHG|QúPKDWÕUODU                     (&ODVV  V\QFHFRUHG|QúPKDWÕUODU
Cardinality (lone, some, any, one, interval)       (EAttribute | EReference)
                                                   .Multiplicity.(LowerBound and UpperBound)
Group Cardinality (xor, or, mux, opt)              dHúLWOL2&/LIDGHOHULüretilir.
.DUúÕOÕNJHOHFHNDoÕNELUDQODPÕ\RNWXU           EClass.IsAbstract: EBoolean
 V\QFHFRUHG|QúPKDWÕUODU                       V\QFHFRUHG|QúPKDWÕUODU 
Singleton Concrete Clafers                         ECore Instances

    øNLGLOHDLWNDYUDPODUÕQHúOHúWLULOGL÷L7DEOR LQFHOHQGL÷LQGHED]ÕNDYUDPODUÕQGL÷H
ULQGH WDP NDUúÕOÕ÷ÕQÕQ ROPDGÕ÷Õ \D GD ELU DQODP LIDGH HWPHGL÷L J|UOPHNWHGLU H÷LN
\D]ÕOPÕúRODQODU '|QúPNXUDOODUÕEXJLELE|OJHOHUGH|QHUGL÷LPL]oHúLWOL\|QWHPOH
ULNXOODQPDNWDGÕU \HQL&ODIHUWUHWPH&ODIHUELUOHúWLUPH2&/NXUDOODUՁUHWPHJLEL 
Temel d|QúPNXUDOODUÕQÕQX\JXODQÕúÕ7DEORYH7DEORNDUúÕODúWÕUÕODUDNLQFHOHQH
ELOLU'|UGQFE|OPGHVXQXODQ|UQHNVHQDU\RGDEXWDEORGDNLG|QúPOHULQbüyük
ELU NÕVPÕ X\JXODQPÕúWÕU Örnek bir yetenek modeli, Tablo 1.a’da, otomatik olarak
DUDFÕQUHWWL÷LVWPRGHOLVH7DEOo 1E¶GHJ|VWHULOPLúWLUgWH\DQGDQ7DEOR1.c Clafer
\RUXPOD\ÕFÕVÕQDJ|QGHULOHQQotasyonu gösterirken Tablo 1.d ise bu gösterimden üreti-
len Alloy modelidir. &ODIHUYH(&RUHGLOOHULNDYUDPODUÕDUDVÕQGa WDPELUHúOHPHROPD
\ÕúÕED]ÕGXUXPODUGD GLOLROXúWXUDQ\DSÕODUÕQVÕUDODQÕúGHVHQOHULQH|]JRODUDNHúOHPH
DOJRULWPDODUÕ NXUJXODQPDVÕQD VHEHS ROPXúWXU '|QúPOHUGHNL JLGLú-JHOLúOHUGH (øQJ
roundtrip) ELOJLND\ÕSODUÕ\DúDQPDNWDiki LWHUDV\RQVRQUDVÕLON PRGHOHXODúÕODPDPDN
WDGÕU %X VHEHSOH EX LNL GLOLQ G|QúPOHULQH |]J olarak ELU GLO JHOLúWLULOPLúWLU
sync.ecore üstmodeli bu dilin soyXWV|]GL]LPLQLROXúWXUPDNWDGÕU Bu üstmodel, Xtext
DUDFÕ\DUGÕPÕ\OD(%1)JUDPHULQHG|QúWUOPúYH(FOLSVHX\XPOXPHWLQsel somut

6   Xtend Java dialect, http://www.eclipse.org/Xtend/




                                               7
V|]GL]LPL ROXúWXUXOPXúWXU ùHNLO ¶WH EDVLWOHúWLULOPLú sync.ecore üstmodeli gösteril-
mektedir. .LPL PRGHO HOHPDQODUÕ ecore.ecore ve clafer.ecore VWPRGHOOHULQGHQ oD÷
UÕOPDNWDGÕU




       ùHNLO. 3. %DVLWOHúWLULOPLú senkronizasyon ve izlenebilirlik üstmodeli (sync.ecore) 7


4      <|QWHPLQ.XOODQÕOGÕ÷ÕELU Web +
    ownedEntityModel->EntityModel?                   LibraryWebSite : Web
                                                         [name = "Kutuphane_Web_Sitesi"]
abstract Web : NamedElement
                                                         TezKitapligi : List
    ownedList : List *
    ownedWeb : Web *                                         [Library][name="Tez_Kitapligi"]
                                                             [contentTypes
abstract List : NamedElement                                  = Dissertation, MasterThesis]
    contentTypes -> ContentType *
                                                         OgrenciListesi : List
    xor Type
        Library                                              [List][name="Ogrenci_Listesi"]
        List                                                 [contentTypes = Student]

abstract ContentType : NamedElement
                                                     Student : ContentType
    isAbstract : integer ?
    ownedField : Field *                                 [name = "Ogrenci"]
    lookupEntity -> Entity ?                             studentNo : Field
                                                             [Number][name = "Ogrenci_No"]
abstract Field: NamedElement
    xor Type
        Number                                       abstract Thesis: ContentType
        Boolean                                          [name = "Tez"]
        Text                                             thesisName: Field
        Reference
                                                             [Text][name = "Tez_Adi"]
             contentType -> ContentType
                                                         student: Field
abstract EntityModel : NamedElement                          [Reference][name = "Ogrenci"]
    database: string                                         [contentType = Student]
    entities: Entity *

abstract Entity: NamedElement                        MasterThesis: Thesis
    baseType -> Entity ?                             Dissertation: Thesis
    lookupContent -> ContentType *




11   Tam yetenek modeli: http://www.mdd4cca.com/features/mdd4cca.cfr




                                                 9
   øoHULNPRGHOOHPHGLOL6KDUH3RLQWSODWIRUPX]HULQGHNRúDFDNELUSURMHQLQLoHUL÷L
QLQ WDQÕPODQGÕ÷Õ PRGHOGLU BX GLOLQ &ODIHU WDEDQOÕ \HWHQHN PRGHOLQLQ (yer limitleri
sebebiyle) EDVLWOHúWLULOPLú ELU KDOL Tablo 3D¶GD VXQXOPXúWXU Bu model, EWQOHúLN
içerik X\JXODPDODUÕLoLQELUDODQPRGHOLVXQDUNHQEQ\HVLQGHDQDOL]DPDoOÕELU\DGD
ELUGHQ oRN DODQD X\JXQ NRQILJUDV\RQ LOH ELUOLNWH WDVDUODQPÕúWÕU Örnek bir konfigü-
rasyon Tablo 3E¶GHJ|VWHULOPLúWLU%XEDVLWOHúWLULOPLú|UQHNWH6KDUH3RLQWøoHULNPR
delleme ile EDM 12 IRUPDOL]PLQL EWQOHúWLUHQ ELU GLOH DLW \HWHQHNOHU J|VWHULOPLúWLU
$ODQ X]PDQÕQÕQ LoHULN PRGHOL EQ\HVLQGH ELU Web YDUOÕ÷Õ WDQÕPODPDVÕ ]RUXQOXGXU
Web LoHULVLQGH LVWHGL÷L NDGDU List YDUOÕ÷Õ HNOH\HELOLU +HU ELU OLVWH LoHULVLQGH LVWHGL÷L
kadar içerik türü (content type) WDQÕPOD\DELOPHNWHGLU




              ùHNLO. 4. Otomatik üretilen mdd4cca üstmodeli (mdd4cca.ecore) 13

    '|QúP L] ELOJLOHUL DUDo WDUDIÕQGDQ VHQNURQL]DV\RQ modelinde otomatik olarak
saklanmakta ve JHOLúWLULOHQ PHWLQVHO VRPXW V|]GL]LPL \DUGÕPÕ\OD G|QúP
NXUDOODUÕQGDGH÷LúNHQOLN uygulanabilmektedir. 2UWD\DoÕNDQ|UQHN PRGHOsync.ecore
üstmodeline uygundur. Araç, mdd4caa.cfr yetenek modelinden, ùekil 4’da yer
limitleri VHEHEL\OHEDVLWOHúWLULOPLúKDOL gösterilen mdd4cca.ecore üstPRGHOLQLUHWPLú
tir. Konfigürasyona dair Clafer’leri ise mdd4cca.ecore üstmodeline uygun örnek mo-
GHOOHURODUDNDOJÕODPÕúYHinstances.mdd4cca 14 GRV\DVÕLoHULVLQGH;0,VHULOHúWLUPLúWLU


5      øOJLOLdDOÕúPDODU

>@oDOÕúPDODUÕQGDClafer \DSÕODUÕ80/VÕQÕIGiyDJUDP\DSÕODUÕLOHNDUúÕODúWÕUÕOPÕúWÕU
Ancak belirtilen G|QúP NXUDOODUÕ sadece Clafer içerisinde alan modelleme ya da

12 Entity Data Model: http://msdn.microsoft.com/library/ee382825.aspx
13
   Tam mdd4cca üstmodeli: http://www.mdd4cca.com/metamodels/mdd4cca.ecore
14 Tam örnek modeller: http://www.mdd4cca.com/examples/instances.mdd4cca




                                               10
ELOHúHQPRGHOLWDQÕPODPD\HWHQH÷LQLQJ|VWHULOPHVLQH yöneliktir. 6XQGX÷XPX]\|QWH
PLQDPDFÕQDX\JXQRODUDN(MF uyumlu bütün bir süreç ve DUDoVXQPDPDNWDGÕUDö-
QúPNXUDOODUÕVDGHFHVWDWLN\DSÕVDOOÕ÷ÕNDSVDPDNWDGÕU$\UÕFDECore örnek modelle-
ri ve ileri yönlü bir d|QúPVRQUDVÕ(&RUHPRGHOLQGHROXúPDVÕJHUHNHQ 2&/NÕVÕWOD
UÕEXoDOÕúPDODUGDLQFHOHQPHPLúWLU. Clafer ile UML \DNODúÕPÕ NDUúÕODúWÕUGÕ÷ÕQGD Cla-
fer sözdiziminin 80/VÕQÕIGL\DJUDPGLOLQLQVR\XWV|]GL]LPLRODQ MOF üstmodelini
NDSVDGÕ÷ÕGúQOHELOLU ancak MOF üstmodeli daha önceki bölümde J|VWHULOGL÷LJLEL
\DSÕVDO PRGHOOHPH NRQXVXQGD GDKD fazla bilgi içermektedir. ECore üstmodelinin
02)¶XQ ELU JHUoHNOHúWLULPL ROGX÷XQX GúQUVHN EHOLUWWL÷LPL] VHEHSWHQ |WU bir
ECore modeOLQGHQ&ODIHUPRGHOLQHJHoLúWH ELOJLND\ÕSODUÕ \DúDQDFDNWÕU Bu DoÕGDQ da
bu oDOÕúPDODU bir çözüm önermemektedir.
    Clafer’i JHOLúWLUen Kanada, Waterloo Üniversitesi Generative Software Develop-
ment Lab, D\QÕ ]DPDQGD (&RUH VWPRGHOOHULQL &ODIHU¶H G|QúWUHQ ecore2clafer 15
LVPLQGH ELU DUDo VXQPDNWDGÕU $UDo WHUVL G|QúP GHVWHNOHPHPHNWHGLU dDOÕúPD
sadece ECore üstmodellerini Abstract Clafer \HWHQHNOHULQH G|QúWUHELOPHNWHGLU
'|QúPNXUDOODUÕNÕVÕWODUÕGHVWHNOHPHPHNWHGLU2\VD bir Clafer PRGHOLQGHWDQÕPOD
nabilen Group Cardinalities, Sub-Clafers, Set Partitions gibi dile özgü kavramlar
(&RUHGLOLQGHROPDGÕ÷ÕLoLQELUVWPRGHOGHDQFDN2&/NÕVÕWODUÕHúOL÷LQGHDQODPODQGÕ
UÕODELOLUOHU
    gQHUGL÷LPL]\|QWHPH amaç yönünden HQ\DNÕQ oDOÕúPD, D\QÕHNLELQ Clafer öneri-
OHULQGHQ |QFH JHOLúWLUGLNOHUL Ecore.fmp DUDFÕGÕU [12]. 1,2]. Araç(&RUHPRGHOOHULQGHoHúLWOLannotation’lar kullanarak ECore üstmo-
delini JHQLúOHWPHVL\OHPRGHOHOHPDQODUÕQD\HWHQHNPRGHOLHOHPDQÕJLELGDYUDQPDNWD
GÕU Bu sebeple bu yöntem sadece araç ile uyumlu bir ECore üstmodelini yetenek
PRGHOOHULQH G|QúWUHELOLU Bu yöntem, senkronL]DV\RQ SUREOHPOHULQL o|]\RUPXú
gibi gözükse de iki dilin formalizmLQLYHDQODPÕQÕHúLWOHPHNWHGLUAraç modelleme ve
konfigürasyon içiQNÕVÕWODUÕGHVWHNOHPHPHNWHROXSELUo|]FLOHHQWHJUDV\RQX\RNWXU
    FeatureMapper [15@ DUDFÕ \D]ÕOÕP UQ KDWODUÕQGD \HWHQHN PRGHOOHUL LOH o|]P
X]D\ÕPRGHOOHULQLHúOHúWLUHUHNPRGHOJGPO\D]ÕOÕPPKHQGLVOL÷LVUHFLEQ\HVLQGH
\HWHQHN PRGHOOHULQLQNXOODQÕPÕQÕ KHGHIOH\HQELUoDOÕúPDGÕU