The Dresden OCL2 Toolkit is an older version of the Toolkit which is based on the Netbeans Metadata Repository (MDR) and contains a lot of different tools.
The newest version of the toolkit is called Dresden OCL. More information about the Dresden OCL can be found via this link.
Although the Dresden OCL2 Toolkit is not a stand-alone tool there is a demonstration module coming with the toolkit which helps to understand the way the Toolkit works.
There are seven applications in the Dresden OCL2 Toolkit. The different demonstration modules are listed below.
This software was written by Stefan Ocke for his diploma thesis. It provides the following functions:
This software was written by Ansgar Konermann for his diploma thesis. It provides a GUI to the OCL2 parser and allows:
This software was written as a prototype example for the OCL Declarative Code Generator by Florian Heidenreich for his diploma thesis. It provides a GUI to create integrity views from textual OCL invariants and allows:
Please note, that this tool doesn't support association classes and OCL constraints which use the class names instead of association ends for navigation.
This Software was written by Jordi Cabot Sagrera. It is an example how to use the Class Utility which provides some helper methods. Take a look at the classes UtilityTest and Utility if you plan to work directly on the repository. It is a text-based application, which uses the CarWorld-Model in /resources/PoseidonProjects.
This Software was written by Christian Wende for his student research project (Großer Beleg). It provides a framework to implement, manage, configure and execute metamodel based transformations. The distribution comes with an implementation of transformations performing a database-shema generation from uml models.
There are three Eclipse plugins shipped with this toolkit. The Base plugin and the OCL Editor plugin were written by Mirko Stölzel. The Visualization plugin was written by Kai-Uwe Gärtner. The OCL Editor plugin provides a text editor for OCL Constraints. The Visualization plugin helps to see what is inside the Netbeans Repository. The Base plugin provides the basic functions of the toolkit to other plugins.
This software was written by Ronny Brandt for his student research project (Großer Beleg). It is an extension of the code generator written by Stefan Ocke. With this software you can load UML-models provided as XMI files and OCL-constraints and generate java code to check these constraints at runtime. This generated code also can be injected in existing java files (instrumentation) and they can be reverse engineered too.
This section explains the different packages of the Dresden OCL2 Toolkit. The Dresden OCL2 Toolkit is divided into the following parts:
The whole toolkit is metamodel-based and relies on a common metamodel derived from the MOF14 and UML15 metamodels.
All models and metamodels (MOF14, UML15 and our common OCL metamodel) are stored in a metadata repository. We use NetBeans' metadata repository implementation.
Using the MDR and our metamodels, we are able to generate Java interfaces for accessing models in the MDR.
Our OCL2 Parser written by Ansgar Konermann is based on a tailored, hand-optimized L-attributed grammar of OCL2.0. We feed it to an enhanced version of the popular LALR(1) parser generator SableCC to create lexer, syntax analyzer ("parser") and an abstract attribute evaluator skeleton. The implementation class of the attribute evaluator is derived from the abstract skeleton by inheritance.
The parser uses two passes. Pass one creates a concrete syntax tree from the textual constraint. During pass two, the attribute evaluator performs the transformation from CST to AST.
We adapted our well proven "OCL-Basisbibliothek" by Frank Finger to fit the new, metamodel-based architecture. Code generator/constraint evaluator
The Code Generator developed by Stefan Ocke and adapted by Florian Heidenreich is an abstraction of multiple general template engines (as StringTemplate) helpful for the reuse by the Transformation Framework and the OCL Declarative Code Generator. Tools working with base tools
The OCL Editor plugin provides a text editor for OCL Constraints. The editor was developed by Steffen Zschaler and adapted as an Eclipse plugin by Mirko Stölzel.
The Declarative Code Generator written by Florian Heidenreich generates declarative target code for a given expression in OCL. The Declarative Code Generator is used by the OCL22SQL tool.
The Fujaba Tool Suite is developed at the university of paderborn (http://wwwcs.uni-paderborn.de/cs/fujaba/projects/eclipse/index.html). One project based on the Fujaba Tool Suite is Fujaba4Eclipse. Fujaba4Eclipse is as an open source project and its goal is to provide an integrated teaching environment based on Eclipse for secondary schools and first year university courses. It should assist teaching object-oriented technology, design patterns and the syntax and semantics of a programming language.
In 2005 and 2006 Mirko Stölzel integrated parts of the Dresden OCL2 Toolkit into Fujaba4Eclipse (for his student research projects Großer Beleg and Diploma Thesis), to use OCL constraints in class and story diagrams created with Fujaba4Eclipse.
This demo application written by Ansgar Konermann shows the OCL2 Parser in action. It allows you to load or edit textual OCL constraints, load UML1.5 ord MOF1.4 models through XMI import and parse the constraints in the context of the model loaded. After parsing, the constraints will be attached to their contextual model elements and you can export the enhanced model using XMI export.
The OCL22Java tool written generates Java code out of OCL expressions as well as instruments Java programs with the generated code. The tool was developed by Ralf Wiebicke and adapted for the Dresden OCL2 Toolkit by Ronny Brandt.
The the OCL2 Workbench written by Stefan Ocke allows you to evaluate constraints in the context of a concrete model (M1) and to generate Java code.
The model visualization written by Uwe Gärtner helps to see what is inside the Netbeans Repository.
This Software was written by Christian Wende for his student research project (Großer Beleg). It provides a framework to implement, manage, configure and execute metamodel based transformations. The distribution comes with a implementation of transformations performing a database-schema generation from uml models.
This software was written as a prototype example for the DeclarativeCode-Generator by Florian Heidenreich for his diploma thesis (The first version of the tool (OCL2SQL) was developed by Sten Löcher). It generates SQL code to create integrity views from a given UML1.5 model and textual OCL invariants.