Dankwoord - martes
Dankwoord - martes
Dankwoord - martes
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
2.1. EVALUATIECRITERIA 9<br />
2.1.6 Assertion<br />
Hoewel deze criteria cruciaal zijn ontbreekt nog een deel van de puzzel. Is de transformatie<br />
uiteindelijk betrouwbaar? Wat gebeurt als een constraint geschonden is? Is er een exceptie<br />
gegooid? Dat zijn allemaal vragen die men kan stellen.<br />
Hiervoor gebruiken we de techniek van assertion [14]. In sommige programmeertalen is dat<br />
volledig ondersteunt of helemaal niet. Try-catch blokken zijn geen slechte manier van werken.<br />
Maar bij het uitvoeren van een systeem zal elke constraint nagegaan worden. Bij het installeren<br />
(deployment) leidt dat tot een vertraagd systeem. Daarom verkiezen we voor de assertion<br />
techniek die ons toelaat om de beslissing te nemen over het aan- en uitschakelen van de<br />
constraints op run-time. Een code die geen van deze twee technieken gebruikt beschouwen we<br />
als slechte code.<br />
2.1.7 Slimme controle van klasse-invarianten<br />
De criteria die we hanteren wat betreft de technieken voor het nagaan van voldoening van<br />
constraints hebben we hierboven beschreven. Eveneens van belang is de vraag of we telkens<br />
alle klasse-invarianten moeten nagaan na het uitvoeren van een publieke methode. Misschien<br />
is het wel beter om enkel de relevante klasse-invariaten te inspecteren. In hoofdstuk 3 gaan we<br />
een mogelijke intelligente methode voorstellen om na het uitvoeren van een publieke methode<br />
alleen maar relevante klasse-invarianten na te gaan.<br />
Alles wat we tot nu toe besproken hebben is samengevat in tabel 2.1. Deze tabel somt een<br />
aantal criteria op en geeft voor elke vereiste een beschrijving.<br />
Id Criteria Beschrijving<br />
1 invarianten Garanderen een geldige toestand van objecten<br />
2 pre-, postcondities Vervolledigen de specicatie door constraints<br />
op operaties toe te voegen<br />
3 attributen, Basismodelelementen in een OCL<br />
associaties<br />
expressie<br />
4 collectieiteratoren OCL collectieiteratoren hebben geen substituten in<br />
JAVA - hoe worden hulp operaties gegenereerd<br />
5 @pre Verbeteren de specicatie van postcondities<br />
door naar waarden op verschillende tijdstippen<br />
te refereren<br />
6 result Verbeteren de specicatie van postcondities(geeft<br />
de terugwaarde van operaties terug)<br />
7 assertion De manier van controle: zijn de constraints<br />
al dan niet geschonden<br />
8 Slimme controle van Zijn alle constraints nagegaan of maar deze<br />
klasse-invarianten die relevant zijn<br />
Tabel 2.1: Evaluatiecriteria voor transformatie van OCL expressies door een tool