Java Modeling Language

De Java Modeling Language is een specificatie taal Java, is gebaseerd op het paradigma van de programmering door contract. Het maakt gebruik van Hoare logica, pre- en post-omstandigheden en invarianten. Specificaties worden toegevoegd in de opmerkingen van de code in Java, worden ze vervolgens samengesteld door de Java-compiler.

Er zijn verschillende gereedschappen voor verificatie JML, zoals een uitvoerbaar verificatie van beweringen en het Extended Static Checker.

Presentatie

JML is een specificatie taal voor Prestatie in Java. Het voorziet in een formele semantiek om het gedrag van Java programma's te beschrijven. Het doel is om de mogelijke dubbelzinnigheden van het programma te verwijderen tegen de intenties van de ontwerper. JML kan worden vergeleken met de Eiffel programmering contract en lariks familie. Het doel is om een ​​strenge formele verificatie semantische resterende toegankelijk voor elke Java-programmeur. De specificaties kunnen direct worden geschreven in Java-code opmerkingen, of opgeslagen in een apart bestand specificatie. Diverse tools kunnen profiteren van de aanvullende informatie die door de JML specificaties. Bovendien, zoals de JML annotaties in de vorm van opmerkingen, het programma met dergelijke specificaties kunnen worden opgesteld door een Java-compiler.

Syntaxis

De JML specificaties worden toegevoegd aan de Java-code als annotaties in de commentaren. Deze opmerkingen worden geïnterpreteerd als Java JML annotaties wanneer ze beginnen met een JML Sample commentaar:

of

De basis syntax van JML is gebaseerd op de volgende trefwoorden:

De JML biedt ook een basis van de volgende uitdrukkingen:

en de standaard logische elementen en, of, niet de Java-syntax. De JML annotaties hebben ook toegang tot Java-objecten, methoden en operatoren beschikbaar voor de geannoteerde methode. Al deze elementen worden gecombineerd tot een formele specificatie van de eigenschappen van de klassen, attributen en werkwijzen. Bijvoorbeeld, de volgende code is een eenvoudig voorbeeld is een geannoteerde bankrekening klasse JML specificaties:

De volledige documentatie van de JML syntax is hier beschikbaar.

Gereedschap

Er zijn veel tools die functionaliteit gebaseerd JML annotaties voorzien. De Iowa State JML tool converteert JML annotaties uitvoerbare beweringen via bewering controleren compiler verbeterde Javadoc waaronder informatie uit JML specificaties te genereren, en het genereren van JUnit voor unit testen via de generator .

Daarnaast instrument, een groot aantal onafhankelijke groepen aan -instrumenten JML. Van deze: ESC / Java2, Extended Static Checker met de JML annotaties voor een strengere structurele analyse dan anders mogelijk; Daikon, een dynamische invariante generator; Key, accountant stellingen; Krakatoa, een accountant stellingen op basis van de Coq bewijs assistent; en JMLeclipse, een plugin voor de Eclipse geïntegreerde ontwikkelomgeving.