FXU is a framework used for creating applications according to MDE (Model-driven Engineering) methodology. It performs transformation from UML class and state machine diagrams into a C# implementation.
FXU is composed of Code Generator, Application Wizard and Runtime Environment. FXU was initially written by Romuald Pilitowski as a part of his masters thesis: Generation of C# code from UML 2.0 class and state machine diagrams in 2006. It was designed to collaborate with UML 2.0 models. Moreover it was not equipped with any graphical interface to create executable application. Code Generator worked with EMF 2.1 (Eclipse Modeling Framework) and read uml2 format of Eclipse in which UML model was serialized. In 2009 it was redeveloped by Marian Szczykulski to satisfy UML 2.1 specification. Generator was modified in order to work with EMF 2.4.1(Eclipse Modeling Framework). Furthermore, FXU generator was equipped with Graphical User Interface written in the Java-Swing technology and application wizard to improve process of building executable application and creating a Microsoft Visual Studio 2008 project.
The main feature of the FXU 3.0 is possibility of generating additional source code for stereotypes applied in a UML model. In the previous version of the framework stereotypes were ignored. FXU was not able to read them from a serialized UML model. Hence, the whole algorithm of reading a model was changed. Moreover the architecture of FXU was changed. In order to interpret stereotypes and generate additional code, the separate components are provided. One single component is responsible for stereotypes from a certain UML profile. The FXU is independent from those components. Therefore, if they are not provided, the FXU generates code and stereotypes are ignored and included as comments. Next important features are new generation options which allow to configure the FXU Runtime Environment algorithms in order to optimize the execution of state machines.
The main feature of the FXU 4.0 is adapting the FXU Runtime Environment to operate according to different UML semantic variants. In previous versions of the framework these possibilities were much lower. The architecture of the FXU Runtime Library was changed. The architecture allows to configure a UML sematic variant used for all state machines, for a particular state machine or even for a particular region in a state machine. The whole configuration of UML sematic variants is stored in a configuration file. Thus to change a semantic, only a change of the configuration file is required.
Moreover, the add-in to the Visual Studio 2010 tool was implemented. It supports performing mutation testing directly in the tool. The mutation testing is performed for a software developed based on UML class and state machine models using the FXU.
The main feature of the FXU 5.0 is the possibility of reusing parts of the existing implementation when a code is generated again. In previous versions of the framework, all existing files of the same name in the output directory were replaced or kept. The new mechanism merges existing files with a model based on which the code is generated.
The FXU Generator gained a new extensible architecture that uses meta-models of programming languages. This architecture allows changing FXU into a tool, which will support multiple technologies in the future.