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.

12 HOOFDSTUK 2. STATE-OF-THE-ART<br />

lideerd worden voordat men code gaat genereren. Men kan niets aan de structuur van de<br />

gegenereerde code veranderen. Bovendien om de code te kunnen compileren moet men een<br />

bibliotheek importeren die bij het tool te vinden is.<br />

Alhoewel pre- en postcondities ondersteund zijn, worden de sleutelwoorden @pre en result niet<br />

correct geimplementeerd. Dat is te wijten aan het feit dat deze sleutelwoorden genegeerd zijn<br />

door de codegenerator.<br />

De controle over de constraints gebeurt door if-blokken. Indien de beperkingen in de specicatie<br />

geschonden zijn, wordt een boodschap getoond. Er is geen mogelijkheid om deze controles<br />

aan en uit te schakelen wanneer dat gewenst is. Dat is een min punt voor dit tool vermits<br />

volgens B.Meyer pre- en postcondities tijdens testen of debuggen moeten aangezet worden<br />

maar tijdens de echte uitvoering van het programma moeten afstaan [25].<br />

Bij collectieiteratoren worden geen hulpmethodes gegeneerd. Alle bewerkingen rond collectieiteratoren<br />

zijn te vinden in de methode van de invariant of pre- en postconditie zelf. Bijgevolg<br />

zijn de gegenereerde JAVA methoden langer en soms niet overzichtelijk.<br />

Hieronder tonen we in Listing 2 hoe een klasse met de bijbehorende specicatie eruit ziet.<br />

Listing 2 OCLE<br />

class X{<br />

private int attribute;<br />

public void operation(){<br />

class ConstraintChecker{<br />

public void checkPreconditions(){<br />

}<br />

public void checkPostconditions(){<br />

}<br />

ConstraintChecker ch = new ConstraintChecker();<br />

ch.checkPreconditions();<br />

ch.checkPostconditions();<br />

}<br />

}<br />

public class ConstaintChecker{<br />

public void checkConstaints(){<br />

check_X_inv0();<br />

check_X_inv1();<br />

}<br />

public void inv0(){<br />

//... <br />

if(!test)<br />

System.out.println(postcondition failed for object+X.this);<br />

}<br />

public void inv1(){<br />

}<br />

}<br />

}<br />

De gegenereerde code verkrijgen uit het OCLE tool is min of meer volledig in de zin dat we een

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

Saved successfully!

Ooh no, something went wrong!