=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==
5]. $ODQPKHQGLVOL÷LVrecinde 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 UQ 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|]JGLOJHOLúWLUPHaktivitelerinden biri olan üst modellemeye
JHoLúWHL]OHQHELOLUOL÷LND\EROPDNWDGÕU %XLKWL\DoODUGDQ\RODoÕNDUDNEXELOGLULGHWDQÕ
WÕODQ \|QWHP \HWHQHN PRGHOOHUL YH NRQILJUDV\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ÕPRGHOJGPOJHOLúWLUPH\|QWHPOHULNXOOD
QÕODQWPSURMHOHUGHUDKDWOÕNODNXOODQÕODELOHFHNG]H\GHGLU
Bildirinin takip eden ikinci bölümünde, yöntemimize uygun yetenek modelleme
GLOOHULYHDODQD|]JGLOJHOLúWLUPHWHNQLNOHUL DQODWÕOPÕúWÕU6RQUDNLE|OPGHLVH\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 UQ KDWWÕ PLPDULVLQGHNL
NXOODQÕPÕJ|VWHULOPLúWLU øOJLOLoDOÕúPDODUNÕVPÕQGDOLWHUDWUGHNLEHQ]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ÕPUQKDWODUÕQÕQPRGHOOHQPHVLYHDQDOL]LLoLQ
JHOLúWLULlPLúmetinsel bir dildir. Dil, \HWHQHNPRGHOLQL\D]ÕOÕPUQKDWWÕPLPDULVLQL
UQKDWWÕPLPDULúDEORQODUÕQÕYHUQNRQILJUDV\RQXQXELUDUDGDWDULIOH\HELOPHNWH
dir. hVWPRGHOLOH\HWHQHNPRGHOOHPH\LLNLGLOLQDQODPEWQO÷QNRUX\DUDNELUOHú
WLUPHNWHGLU>@$\UÕFDNPHOHUL 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\ NPH 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ÕNVDOIRUPOOHUDUDFD
JLUGLRODUDNYHULOGL÷LQGH Alloy AnalyzerDOWÕQGDNL.RG.RG>14@LOLúNLVHOPRGHOEX
OXFXVX\DUGÕPÕ\ODEXIRUPONDUúÕ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 PPNQGU %|\OHOLNOH &ODIHU¶LQ 79/ GLOLQL
NDSVDGÕ÷ÕoÕNDUWÕODELOLU
<|QWHPEQ\HVLQGHNXOODQÕODELOHFHNYH(0)LOHHQWHJUHGLOHELOHFHNELUEDúND\H
tenek modelleme dili ise Nesne Yönetim Grubu’nun øQJ Object Management
Group) (OMG) 1 VWDQGDUWODúWÕUPD VUHFLQGH 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 EQ\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/EQ\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Õ\HWHQHNPRGHOOHULQLYHNRQILJUDV\RQODUÕQÕRWRPDWLNRODUDN$OOR\GLOL
QHoHYLUHELOPHNWHGLU%XVD\HGHJHOLúWLULOHQELUVWPRGHOYHPRGHO|UQHNOHULRWRPDWLN
RODUDN &ODIHU GLOLQH G|QúWUOHUHN VÕQDQDELOPHNWHGLU %X VHEHSOH JHOLúWLUGL÷LPL]
Eclipse eklentisi, en günFHO$OOR\YH&ODIHUDUDoODUÕQÕEQ\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|UOPHNWHGLU&ODIHU\RUXPOD\ÕFÕLVHV|]dizimine özgü kontrol-
OHUL YH LVLP o|]POHPH LúOHPLQGHQ JHoLULOPLú PRGHOOHUL $OOR\ GLOLQH G|QúWUHUHN
NPHWHRULVLQHYHLOLúNLVHOPDQWÕ÷D |]JRODUDNDQODPODQGÕ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úWUOPú clafer.ecore 5 ) ve &ODIHU¶LQ ELU ,'( VXQPD\ÕúÕQGDQ |WU 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\|QOYDUVD\ÕOÕU EReference.IsOpposite: EBoolean
V\QFHFRUHG|QúPKDWÕUODU V\QFHFRUHG|QúPKDWÕUODU
Clafer Inheritance Single Inheritance
Clafer Merging Multiple Inheritance
Clafer Nesting Ecore, iç içe EClass’lar yuvalanmaz (inner
V\QFHFRUHG|QúPKDWÕUODU (&ODVV V\QFHFRUHG|QúPKDWÕ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úPKDWÕUODU V\QFHFRUHG|QúPKDWÕ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|UOPHNWHGLU H÷LN
\D]ÕOPÕúRODQODU '|QúPNXUDOODUÕEXJLELE|OJHOHUGH|QHUGL÷LPL]oHúLWOL\|QWHPOH
ULNXOODQPDNWDGÕU \HQL&ODIHUWUHWPH&ODIHUELUOHúWLUPH2&/NXUDOODUÕUHWPHJLEL
Temel d|QúPNXUDOODUÕQÕQX\JXODQÕúÕ7DEORYH7DEORNDUúÕODúWÕUÕODUDNLQFHOHQH
ELOLU'|UGQFE|OPGHVXQXODQ|UQHNVHQDU\RGDEXWDEORGDNLG|QúPOHULQbüyük
ELU NÕVPÕ X\JXODQPÕúWÕU Örnek bir yetenek modeli, Tablo 1.a’da, otomatik olarak
DUDFÕQUHWWL÷LVWPRGHOLVH7DEOo 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|]JRODUDNHú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úWUOPú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, EWQOHúLN
içerik X\JXODPDODUÕLoLQELUDODQPRGHOLVXQDUNHQEQ\HVLQGHDQDOL]DPDoOÕELU\DGD
ELUGHQ oRN DODQD X\JXQ NRQILJUDV\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 EWQOHúWLUHQ ELU GLOH DLW \HWHQHNOHU J|VWHULOPLúWLU
$ODQ X]PDQÕQÕQ LoHULN PRGHOL EQ\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 üstPRGHOLQLUHWPLú
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úQOHELOLU 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úQUVHN EHOLUWWL÷LPL] VHEHSWHQ |WU 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úWUHQ ecore2clafer 15
LVPLQGH ELU DUDo VXQPDNWDGÕU $UDo WHUVL G|QúP GHVWHNOHPHPHNWHGLU dDOÕúPD
sadece ECore üstmodellerini Abstract Clafer \HWHQHNOHULQH G|QúWUHELOPHNWHGLU
'|QúPNXUDOODUÕNÕVÕWODUÕGHVWHNOHPHPHNWHGLU2\VD bir Clafer PRGHOLQGHWDQÕPOD
nabilen Group Cardinalities, Sub-Clafers, Set Partitions gibi dile özgü kavramlar
(&RUHGLOLQGHROPDGÕ÷ÕLoLQELUVWPRGHOGHDQFDN2&/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úWUHELOLU 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|]FLOHHQWHJUDV\RQX\RNWXU
FeatureMapper [15@ DUDFÕ \D]ÕOÕP UQ KDWODUÕQGD \HWHQHN PRGHOOHUL LOH o|]P
X]D\ÕPRGHOOHULQLHúOHúWLUHUHNPRGHOJGPO\D]ÕOÕPPKHQGLVOL÷LVUHFLEQ\HVLQGH
\HWHQHN PRGHOOHULQLQNXOODQÕPÕQÕ KHGHIOH\HQELUoDOÕúPDGÕU