Dankwoord - martes
Dankwoord - martes
Dankwoord - martes
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
5.2. VERTALING MET BEHULP VAN HAT 57<br />
In zulke gevallen zijn er geen mogelijkheden om aanpassingen uit te voeren. Bijgevolg<br />
hebben we OCL expressies van deze soort genegeerd. We geven een voorbeeld van zo'n<br />
OCL expressie in de context LoayaltyProgram zie figuur 5.1<br />
context LoayaltyProgram<br />
inv:<br />
partners.deliveredServices -> forall(x|x.condition = true)<br />
• Indien we twee klassen hebben die met elkaar verbonden worden met een associatieklasse,<br />
dan kunnen we niet navigeren via deze associatieklasse. In OCL navigeert men in<br />
dergelijke situaties door de naam van de associatieklasse te concateneren aan de naam<br />
van het gewenste associatieeinde en deze met een punt uit elkaar te scheiden. De naam<br />
van de associatieklasse moet met een hoofdletter beginnen. In HAT worden deze OCL<br />
expressies niet gevalideerd. Dat was ook een van de redenen waarom we onze associatieklasse<br />
Membership naar een gewone klasse getransformeerd hebben. Voorbeeld van<br />
zulke expressies is de volgende OCL expressie (zie figuur 5.1)<br />
context Customer<br />
inv:<br />
Membership.account -> select(x|x.points>0)->isEmpty()<br />
• Indien we constraints in de context van een associatieklasse willen denieren dan moeten<br />
we deze in HAT denieren bij een van de betrokkene klassen bij deze associatieklasse.<br />
Met andere woorden wordt de context van deze constraint niet de associatieklasse maar<br />
een van de betrokken klassen. Daarvoor hebben we uit de associatieklasse een gewone<br />
klasse gemaakt.<br />
• Veel van de postcondities bevatten sleutelwoorden zoals @pre en result. Voor OCL expressies<br />
die het sleutelwoord result bevatten kunnen we niets doen. Deze expressies zijn<br />
niet gevalideerd. De sleutelwoorden @pre hebben we gewoon niet toegevoegd. Bijgevolg<br />
is ook de betekenis van een OCL expressie veranderd maar deze expressies zijn wel gevalideerd<br />
in HAT en gegenereerd. Indien we zulke OCL expressie negeren dan kunnen we<br />
onze intelligente aanpak niet testen. Daarom hebben we zulke expressies behouden maar<br />
we hebben deze licht aangepast aangepast . Bijvoorbeeld de volgende OCL expressie:<br />
context LoayaltyProgram::enroll(c:Customer)<br />
post:<br />
wordt<br />
participants = participants@pre->including(c)<br />
context LoayaltyProgram::enroll(c:Customer)<br />
post:<br />
participants = participants->including(c)<br />
De aanpakken die we in hoofdstuk 3 ontwikkeld hebben werkten zoals ze beschreven waren.<br />
We konden een groot deel van de code direct van ons model genereren. Indien we nu onze<br />
gegenereerde code met de handgeschreven code gaan vergelijken dan zou er toch een groot<br />
verschil zijn. Een groot deel was hierboven beschreven.<br />
We hebben een inspanning gedaan om het tool te laten evalueren op een gevalstudie. Indien<br />
we sommige aanpassingen niet gedaan hebben op ons model zouden de resultaten niet bevredigend<br />
worden. Maar de tekorten wat betreft associatieklassen kunnen altijd opgelost worden.