Fujaba - CASE tool for forward and reverse engineering
Fujaba was aimed to support software forward and reverse engineering. That is why Fujaba is an acronym for "From UML to Java and back again". Fujaba's main features are: Powerful, easy to use, yet formal, visual, object-oriented software system specification language (UML class diagrams and specialised activity diagrams, so called Story Diagrams based on graph transformations) Java code generation based on the formal specification of a systems' structure and behaviour which results in an executable system prototype. An extensible CASE tool framework for researchers, who can develop their own Fujaba plug-ins. Numerous Fujaba plug-ins providing support for example for Reverse engineering of source code by creating UML class diagrams, detecting design patterns, idioms, anti patterns, bad smells,... Model-to-model transformations specified by triple graph grammars, TGGs (also usable in case of model synchronisation) Modelling, validation and verification of embedded real-time systems Meta-Modelling with MOF (OMG meta object facility)
Model-driven Software Engineering
Fujaba followed the model-driven development philosophy right from its beginning in 1997. It combines UML class diagrams, UML activity diagrams, and a graph transformation language (so called Story Patterns) and offers a formal, visual specification language that can be used to completely specify the structure and behaviour of a software system under development. The structure is specified by UML class diagrams, the behaviour is specified by so called Story Diagrams, a combination of UML activity diagrams and Story Patterns. Story Patterns are graph transformation rules specifying modifications of object structures (models). Based on these structural and behavioural specifications executable code (e.g. Java code) is generated.
Multiple Application Domains
Besides forward engineering Fujaba provides support for several other software engineering goals and application domains. There are fujaba extensions (plug-ins) providing support for reverse engineering, model-to-model transformations and synchronisation with triple graph grammars (TGGs), modelling, validation and verification of embedded real-time systems, MOF-based meta-modelling, teaching object-oriented software engineering, and many other applications.
International Community
Besides the software engineering group in Paderborn, quite a number of research groups have also chosen Fujaba as a platform for MDD/MDA related research activities. Today universities from at least the following countries are developing Fujaba or are working with Fujaba and related tools