IAGen Invariants-Assertion-Generation

Egli, Frederick and Mengelt, Dominik (2012) IAGen Invariants-Assertion-Generation. Bachelor thesis, HSR Hochschule für Technik Rapperswil.

[thumbnail of Ivariants-Assertion-Generation_Sekretariat.pdf]
Preview
Text
Ivariants-Assertion-Generation_Sekretariat.pdf - Supplemental Material

Download (6MB) | Preview

Abstract

Invariants-Assertion-Generation, kurz IAGen, ermöglicht es, Invarianten während der Laufzeit einer Java-Applikation zu überprüfen und bei einer Invariantverletzung ent- sprechend zu reagieren. Die Invarianten können auf verschiedene Arten definiert werden:
• Ein Java-Entwickler kann die Invarianten mit IAGen-Annotationen direkt in sei- nem Sourcecode definieren. Wenn die Applikation danach gestartet wird, werden die gesetzten Invarianten zur Laufzeit überprüft.
• Ein Entwickler kann im CASE Tool Enterprise Architect (nachfolgend EA) seine Applikation modellieren. Wenn der EA-Entwickler Modelle mit dem Sourcecode synchronisiert (Forward Engineering), sorgt das IAGen EA Add-In dafür, dass allfällig Invariantendefinitionen in den Sourcecode mittels IAGen-Annotationen gesetzt werden. Auch das Reverse Engineering von Sourcecode, welcher bereits IAGen-Annotationen gesetzt hat, wird vom IAGen EA Add-In unterstützt.
• Ein Entwickler kann im EA auch Java Bytecode importieren und das Modell mit IAGen-Invariantendefinitionen erweitern. Das IAGen EA Add-in bietet die Möglichkeit an, Invariantendefinitionen als XML-Datei zu exportieren, da der EA bestehenden Bytecode nicht verändern kann.
IAGen bietet eine Vielzahl von unterschiedlichen Annotationen an, um Invarianten zu definieren. Es lassen sich Wertebereiche, Multiplizitäten, Subsets (Teilmenge eines Containers), NotNull sowie Const-Invarianten (konstante Objekte) definieren. Ausserdem kann der Entwickler entscheiden, was bei einer Invariantenverletzung geschehen soll. So kann individuell festgelegt werden, ob eine Exception (Typ und Text der Exception kann ebenfalls gesetzt werden) geworfen werden soll, ob ein Swing Popup erscheinen soll, ob die Invariantenverletzungen geloggt werden sollen (Logfile kann gesetzt werden) und ob Debugmeldungen auf der Konsole erscheinen sollen. Diese Reaktionen können miteinan- der verknüpft werden.
Intern arbeitet IAGen mit AspectJ, welches aspekt-orientierte Programmierung in Java ermöglicht. Dadurch lassen sich generische Funktionalitäten über mehrere Klassen ver- wenden. Das Verweben dieser Funktionalitäten mit dem bestehenden Bytecode nennt sich Weaving. In IAGen wird AspectJ benötigt, um die Invarianten während der Lauf- zeit zu überprüfen und bei einer Invariantenverletzung entsprechend zu reagieren. Da AspectJ kein Runtimeweaving unterstützt, benutzt IAGen das Loadtimeweaving. Wird die annotierte Applikation gestartet, “weavt“ sich IAGen in die Stellen der Applikation, wo die Invarianten überprüft werden sollen.
Das IAGen EA Add-In ist eine DLL, die mit C# programmiert ist und über einen Installer (.msi) installiert werden kann. Es wird über das Add-In-Menü im EA bedient und greift dabei direkt auf das EA Repository zu, um modellierte Änderungen in Form von Invarianten zu erkennen.

Item Type: Thesis (Bachelor)
Subjects: Topics > Software > Testing and Simulation
Technologies > Programming Languages > Java
Divisions: Bachelor of Science FHO in Informatik > Bachelor Thesis
Depositing User: OST Deposit User
Contributors:
Contribution
Name
Email
Thesis advisor
Letsch, Thomas
UNSPECIFIED
Date Deposited: 03 Sep 2012 10:13
Last Modified: 03 Sep 2012 10:13
URI: https://eprints.ost.ch/id/eprint/213

Actions (login required)

View Item
View Item