Next:
1. Introduction
Up:
Diploma Thesis: Utility Support
Previous:
Diploma Thesis: Utility Support
Contents
1. Introduction
1.1 Motivation
1.2 Task
1.3 Organisation of This Work
2. Related Work
2.1 Runtime Constraint Checking
2.2 Reverse Engineering
2.3 Other Related Work
3. Code Instrumentation
3.1 Results of Code Generation
3.1.1 Preparation and Transfer Fragments
3.2 Requirements and Design Decisions
3.2.1 Reversable Modification
3.2.2 Embedding Constraints in Java Source Code.
3.2.3 Checking the Element Type.
3.3 Code Insertion
3.3.1 A Simple Approach
3.3.2 Wrapping Methods
3.3.3 Wrapping Constructors
3.3.4 Avoiding the Wrapper Loop
3.3.5 Cleaning the Code
3.3.6 Design of the Java Parser
3.3.7 Comparison to Jass
3.3.8 Comparison to iContract
3.3.9 Comparison to Byte Code Instrumentation
3.3.10 Summary
3.4 Scope of Invariants
3.5 Caching Results of Invariants
3.5.1 Design
3.5.2 Implementation
3.5.3 Detecting Collection Modification
4. Model Information
4.1 Representing Element Types
4.2 Reverse Engineering
4.2.1 Source Code Analysis
4.2.2 Runtime Analysis
4.2.3 Byte Code Analysis
4.2.4 Comparison
4.2.5 Summary
5. Industrial Example
6. Summary
7. Outlook
7.1 Inheriting Constraints
7.2 Integration with CASE Tools
7.2.1 Code Generation
7.2.2 Reverse Engineering
7.3 Others
A. Maintance of the OCL Compiler
A.1 Reflection Facade and OCL Library
A.1.1 Polymorphism of Operation Parameters
A.1.2 Mandatory Name Adapters
A.1.3 Qualified Associations
A.1.4 Type Mapping from OCL to Java.
A.2 OCL Library
A.2.1 Undefined Values
A.2.2 Java Null Values
A.3 Type Checker
A.4 Java Code Generator
A.4.1 Code Fragments for @pre
A.4.2 Explicit Package Qualifiers.
B. Usage of the OCL Tool
B.1 Example
B.2 Reference
C. Code Examples
C.1 Unreachable Post Condition Code in iContract
C.2 Return Opcodes in Java Byte Code
C.3 The Problem with Versant Database
List of Figures
Bibliography
Ralf Wiebicke 2005-11-25