This page will explain the different packages of the Dresden OCL2 Toolkit. If you are looking for information about the demonstration modules, you can find this information here.
The Dresden OCL2 Toolkit is currently 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.
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.
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.