|
emi7oP <a href="http://etyxbsmwlbop.com/">etyxbsmwlbop</a>, [url=http://ejkbnyaqouhe.com/]ejkbnyaqouhe[/url], [link=http://iytqgxxmxvee.com/]iytqgxxmxvee[/link], http://ddjproogyauv.com/ |
JMLJava Modeling Language (JML)Autori: Giorgio Ghisalberti,Vincenzo Manzoni Sommario
Introduzione al Java Modeling Language (JML).
IntroduzioneJML è l'acronimo di Java Modelling Language. E' un insieme di tool e tecniche per il design by contract in Java. L'idea è quella di utilizzare Java non solo per programmare, ma, aggiungendo al linguaggio dei tool e delle tecniche, anche per modellare.
Per far questo, si inseriscono all'interno dei file sorgente delle annotazioni all'interno dei commenti nel file .java. Le annotazioni sono della forma Le proprietà sono scritte come espressioni boolean di java con alcuni operatori in più:
Pre & PostconditionsEcco un esempio di Precondizione per un metodo: /*@ requires amount >= 0;
ensures balance == \old(balance) -- amount && \result == balance; @*/
public int withdraw(int amount) {
...
In questo caso non nullMolti elementi all'interno delle pre e delle postcondizioni spesso devono essere non nulli. L'operatore non null serve proprio per questo motivo. public class Directory {
private /*@ non null @*/ File[] files;
void createSubdir(/*@ non null @*/ String name){ ... }
AssertLa preposizione assert specifica una proprietà che potrebbe essere necessaria in qualche punto del codice. Ad esempio: if (i <= 0 || j < 0) {
...
} else if (j < 5){
//@ assert i > 0 && 0 < j && j < 5;
...
} else {
//@ assert i > 0 && j > 5;
...
}
QuantificatoriJML supporta varie forme di quantificatori:
Benefici di JMLLe specifiche JML forniscono una documentazione specifica dei contratti e delle invarianti. Scrivendo JML nel codice è possibile fare assunzioni e considerazioni sparse all'interno del codice. In questo modo le specifiche JML rendono più semplice la comprensione del codice e aiutano a convincere il programmatore e chi legge il codice che niente può andar storto, ovvero che tutti i possibili errori sono controllati. Tools per JML
Risorse esterne
|