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)