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