[Back]


Diploma and Master Theses (authored and supervised):

G. Glos:
"Performance and Usability Evaluation of Constraint Checking Approaches in Java";
Supervisor: L. Froihofer, K. Göschka; Institut für Informationssysteme, Arbeitsbereich Verteilte Systeme, 2007; final examination: 03-13-2007.



English abstract:
Die Überprüfung und Formulierung von Constraints im Sinne von Design by Contract ist bisher noch kein integraler Bestandteil der Programmiersprache Java. Dennoch bildet die Formulierung von Constraints bereits während der Designphase und das Überprüfen von Constraints zur Programmlaufzeit die Basis von verlässlichen Softwaresystemen und Komponenten. Diese Diplomarbeit implementiert aktuelle Techniken zur Constraintüberprüfung in Verbindung mit Java. Diese werden hinsichtlich Laufzeit, Wartbarkeit und Wiederverwendbarkeit verglichen und evaluiert. Neben anderen Ansätzen wurde ein Constraint Repository, wie von DeDiSys vorgestellt, implementiert. Der Hauptvorteil des Repositories ist es, dass Constraints während der Laufzeit hinzugefügt und entfernt werden können, während andere Techniken diese Möglichkeit nur zur compile time oder zur class load time bieten.

Hinsichtlich der Performanz hat sich die manuelle Implementation der Constraints als inline if statements als die beste Technik und hinsichtlich der Wartbarkeit als die schlechteste erwiesen. Die Trennung des Codes der die reine business logic repräsentiert von Code zur Constraintüberprüfung durch Aspekt Orientierung erhöht die Wartbarkeit deutlich und bringt eine, im Vergleich zu den anderen Techniken geringe Performanz-Einbuße von 14% mit sich. Toolunterstützung, den Code zur Constraintüberprüfung automatisch aus OCL oder JML Statements generiert, nimmt dem Programmierer ein hohes Maß an Arbeit ab, zählt jedoch mit einer mindestens 56-mal höheren Laufzeit als die manuelle inline Constraint Überprüfung zu den langsameren Techniken. Die Laufzeit des optimierten Constraint Repositories, das manuell implementierten Code zur Constraintüberprüfung in separate Objekte kapselt, ist hingegen maximal 10-mal höher.

German abstract:
The checking and formulation of constraints in the fashion of Design by Contract is still not an integral part of the Java programming language. The formulation of constraints already during the design phase and the checking of constraints during program runtime form the basis of trusted software systems and components. Within this thesis state of the art approaches to implement constraint checking functionality are compared and evaluated concerning performance, reusability and maintainability. Furthermore a constraint repository as presented by DeDiSys is implemented. The main advantage of the constraint repository is that constraints can be arbitrarily added and removed during runtime, while other approaches support this feature at compile time or load time only.

The results of the performance tests show that handcrafted constraint checking, implemented with inline if statements, is the fasted approach, but rendering the code difficult to maintain and reuse. The separation of the code representing the business logic from constraint checking code via aspect orientation is already a significant amelioration, decreasing the performance of the tested application by around 14%. Tool based approaches, that support the programmer by automatically generating constraint checking code from OCL or JML statements, are among the slower approaches, requiring at least 56 times the runtime of handcrafted inline constraint checking. In contrast, the optimized version of the constraint repository, which encapsulates handcrafted constraint checking code into separate objects, requires at most 10 times the runtime.

Keywords:
Integrity, consistency, constraints, performance, aspect-oriented programming

Created from the Publication Database of the Vienna University of Technology.