Abstract:
In Model Driven Software Engineering (MDSE), Action Language for Foundational UML (ALF) is a new standard for specifying the structure and behavior of a system textually. Our work explores the usability of ALF after doing reverse engineering of an object-oriented system (implemented in C++ language) to ALF language. Reverse Engineering (RE) usually involves the generation of high level artifacts from low level implementations; e.g. generation of UML models from the source code files. RE becomes more significant when moving from legacy systems to modern technological trends (i.e. transforming object-oriented system architecture for desktop environment to the service-oriented architecture for cloud environment) in the absence of high level design artifacts. Our proposed approach is platform/technology independence. As compared to an implementation language (e.g. C++) is a platform specific language, ALF representation is platform independent model. Using ALF makes our approach capable of transformation towards other platform specific models/implementations. Moreover, our approach is useful to produce other design artifacts from low level implementation in the absence of high level design artifacts. The contribution of this work is on the development of an incremental approach for reverse engineering along with the transformation rules for C++ based system to ALF based specification. The transformation rules are written to describe how each C++ language construct (e.g. statement, condition etc.) should be translated to ALF language construct. An intermediate language srcML is used which is the XML representation of C++ Code. The validation is performed by development of a tool, Cpp2ALF, which converted the C++ code to srcML code by third party srcML-tool and then generated the ALF code using the generated srcML code. An ATM Case study is converted with the help of Cpp2Alf tool.
Key Words: Reverse Engineering, Action Language for Foundational UML (ALF), Model Driven Software Engineering, Re-Engineering, Legacy Code