22.11.2013 Views

Dankwoord - martes

Dankwoord - martes

Dankwoord - martes

SHOW MORE
SHOW LESS

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.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!