Upload
esug
View
1.196
Download
1
Embed Size (px)
DESCRIPTION
GIPA by Reinier van Oosten, ESUG09, Brest, France
Citation preview
Genera&ngIntegrityPreservingAssocia&ons,
TheFirststeptoBiome
ReiniervanOostenVOOC
1VOOC
WhatisGipa
• Gipaisasetofparameterizedimplementa&onlevelpaDernclasses.
• Thesecanbeusedtogeneratemethodsandvariablesindomainmodelclasses.
• ThepaDernsdescribeatypeofassocia&onandtheircomposingroles.
• ThecurrentfocusofGipaisonstructureassocia&onslike1tonrela&onship.
• ThefocusofGipaisonintegritypreserva&on.• GipalookslikeMDA,butwithacompletedifferentfocus.
VOOC 2
Overview
• Integrityindomainmodels• Homeosta&corselfregula&ngapproach
• PaDernsofintegritypreservingassocia&ons• Specifyingassocia&ons• Codegenera&onbasedonpaDernsandspecifica&on
• Biologyinspiredobject‐orientedmodelingenvironment(Biome)
3VOOC
Theproblem:
• Objectsmaychangetheirstateandthischangemayinfluencethestateofotherobjects.
• Thestateofobjectsmaybeinconflictwiththestateofotherobjects.
• Thisistheintegrityproblem• Thismaybesolvedusingwithselfregula&ngorhomeosta&calgorithms.
• Developmentofhomeosta&calgorithmsis&meconsumingandrequiresextensivetes&ng.
4VOOC
Integrityofobjectstructures
• ClassicalERstructure• Classicalproblembutnotsolved
• Danglingpointers‐danglingobjects
• Gipasolu&on:asetofrulesthatcanbeguardedbyhomeosta&cmethods.
5VOOC
Integrityindomainmodels
• 3typesofdomainobjects:– Dataobjects(Integer,Timestamp,Classetc)
– Structureobjects(Collec&ons)– Modelobjects.
6VOOC
3Rules
• Dataobjectsshouldneverbechanged.• Structureobjectsshouldbekeptprivate.• Naviga&onbetweenmodelobjectsshouldalwaysbebidirec&onal.
7VOOC
Advantageanddisadvantage
• Advantages– Thedomainmodelisalwaysstable.
– ThereareanumberofpaDernssuppor&ngtherules.
• Disadvantages– Codingisamorecomplicated,andaveryrepe&&ve(boring)task.
8VOOC
Solu&on
• Aframeworkforgenera&ngpaDernbasedcode.– A(domain)modelspecifiedinapackageandanamespace
– Acollec&onofdomainclasses.– Acollec&onofassocia&ons.– Acollec&onofrolesforeachassocia&on,tobeimplementedbyasetofclasses.
9VOOC
Associa&onpaDerns
• ThepaDerndescribestheassocia&oninaparameterizedway.
• Thenamesofmethodsandvariablesarestoredinroles.
• Giventhespecifica&onoftheassocia&oninroles,methodsandvariablesaregenerated.
10VOOC
VariouspaDerns
• ToOne(=aDributeaccessintheVWbrowser)• ToMany• OneToOne• OneToMany• ManyToMany• DoubleLink• Tree
• AnypaDernanybodywishestoimplement
11VOOC
Verysimpleexample
1 paDernToOneGet
2 |stream|3 stream:=CodingStreamarguments:selfargs.
4 streamnextPutAll:‘{one,simple:s}5 ^{one,var:s}’.
6 ^streamselector‐>(streamcode}
VOOC 12
Specifica&onofanassocia&on
1 Theassocia&onpaDern2 Foreachrolespecifiedbytheassocia&on
paDern,thevariable‐andmethodnamebases.
3 XMLformat:GXD(GipaXMLDefini&on)
4 GXDcomparabletoclassdiagramdefini&oninUML.
13VOOC
Example• <GipaModelpackage="Gipa‐generatedoneToMany"namespace="GIPAExample”>
• <gipaClassclassName="G_master_OneToMany">• <fieldname="name"/>• </gipaClass>
• <gipaClassclassName="G_detail_OneToMany">• <fieldname="name"/>• </gipaClass>
• <gipaAssocia&ondefini&on="OneToMany">• <rolerole="one"variable="maten"single="maat"mul&ple="maten">• <classclassName="G_master_OneToMany"/>• </role>• <rolerole="many"variable="master"keySelector="name"create="true">• <classclassName="G_detail_OneToMany"/>• </role>• </gipaAssocia&on>• </GipaModel>
14VOOC
Generatedclassesandmethods
15VOOC
Crucialmethodfor“many”
1 master:newMaster
2 newMaster=masterifTrue:[^newMaster].
3 masterifNotNil:[:old|
4 master:=nil.
5 oldremoveMaat:self].
6 newMasterifNotNil:[
7 master:=newMaster.
8 newMasteraddMaat:self]
16VOOC
Crucialmethodfor“one”1 addMaat:newMaat2 |result|3 matenifNil:[maten:=OrderedCollec&onnew].4 result:=matendetect:[:item|itemname=newMaatname]5 ifNone:[ 6 matenadd:newMaat.7 newMaatmaster:self.8 ^newMaat].9 result==newMaatifTrue:[^newMaat]10 ifFalse:[11 ^GipaDuplicateKeyExcep&onraiseRequestWith:12 (Arraywith:resultwith:newMaat)]
17VOOC
Result
• Aclassdiagramcanbespecifiedingxdusinganxmleditorlikeoxygen
• ThisgeneratesSmalltalkcode10&meslarger.
• Thisgeneratedcodeisalreadytested.
18VOOC
Worktodo
• Gipaispartofalargerproject:Biome• Biome:BiologyInspiredObject‐orientedModellingandEngineering
• StructureofBiologicsciencecanbeusedasametaphoreforagileobject‐orienteddevelopmentanditsenvironment
19VOOC
MappingBiologicsciencetoOOdevelopment
Fundaments
Celltheory Objecttheory
Genetheory ClassandRolePersistence
Researchareas Designareas
Physiology Processing,Algorithms,Unittes&ng
Structure Objectstructure,classdiagram
Taxonomy Inheritance
Ecology Interac&on,Associa&ons
20VOOC
MappingII
ForceandDesign
Evolu&on Versions
Forces
Energy Efficiency
Homeostasis Notnamed,Oxenusedinstableparts,Selfregula&ngassocia&ons.
Homeostasis
21VOOC
FocusofBiome
• Modelling(Associa&onsandtheirpaDerns)• Versioning(Evolu&onofmodels)
• Persistancy• IDE
22VOOC
FocusofBiome(modelling)
• Modellingofassocia&onsandassocia&onpaDerns
• Implemen&ngrolesbyclasses
• S&mula&nghomeostasistomakeassocia&onsandmodelsselfregula&ng
23VOOC
FocusofBiome(versioning)
• CurrentversioningVW=packages.• AGipamodelisstoredinpackage.
• Neededgranularity:associa&ons• Neededversionassocia&on:– paDernversion‐>associa&onversion
• Implemen&nganassocia&onversionisatransac&on
24VOOC
FocusofBiome(Persistancy)
• Associa&onsandrolescanbemappedtoGipadescrip&onsinGXD
• Suppor&ngGlorpusingGXD• Suppor&ngXMLmarshallingusingGXD
25VOOC
FocusofBiome(IDE)
• Suppor&ngAssocia&on‐Rolemodelling• Suppor&ngAssocia&on‐RolepaDernmodelling
• Suppor&ngversionimplementa&onastransac&on
• Suppor&ngupda&ngassocia&onsasaresultofanassocia&onpaDernupgradeordowngrade.
26VOOC