Christian Wagner
Re-Modeling of complex software systems
STRESS 2006 (18.-24.05.2006) Dortmund
Christian Wagner
Christian Wagner
Structure
Structure:• Project environment (DNW)• Wind Tunnel Software – DeAs• Software modeling tool jABC• 3 approaches:
– Coarse level modeling– Modelling of basic libraries– Workflow modeling
• Conclusion and future prospects
Christian Wagner
Transonic Wind Tunnel Göttingen(DNW-TWG)
Christian Wagner
The existing software system - DeAs
Christian Wagner
DeAs environment
Christian Wagner
Application structure
Christian Wagner
Coarse level modeling
• Application level modeling with Java Application Building Center
• Rebuild a coarse granular flow from existing code– Inspecting the code– Group important blocks– Tracing the graph should act like the real system
• Combining original code and graph• Problem: the existing system is written in C++ and jABC
in Java• Solution: Java Native Mechanism
Christian Wagner
Coarse level modeling
Christian Wagner
Coarse level modeling
/*
* main for project Ap_an
*/
JNIEXPORT jstring JNICALL Java_aero_dnw_prototype_deas_apan_Ap_1an__1C_1Ap_1anImpl
(JNIEnv *env, jobject myclass)
{
Icon base_frame_image;
Benutzer hilfBenutzer;
...
/*
* main for project Ap_an
*/
int
main (int argc, char **argv)
{
Iconbase_frame_image;
Benutzer hilfBenutzer;
...
Original code JNI-method call
Christian Wagner
Modelling of basic libraries
• A step into the real code• Modeling of important parts is not enough, because the
granularity is not fine enough to re-model different parts of a system
• First approach: is to generate Building Blocks for every atomic library function and the to combine this basic parts to applications or components– Using the existing code– Combining existing code and jABC with Java Native
• Ca. 400 functions, but most of them are not used
Christian Wagner
Modelling of basic libraries
TWG HDG HDG
Christian Wagner
Workflow modeling
• Combining the first two approaches– The coarse approach not fine enough– The basic library approach turns out to be too fine
• Rebuild the code in a Control Flow Graph– group all parts in the code which belongs to the same
functionality and domain, like GUI- or Input/Output-functions– Transfer control structures from the original code to the
constructed flow graph
• Outputs: – Detailed overview over the traces in the system– Easy the see the appearance of functions (how often, situation)– By-product: documentation of the system
Christian Wagner
Workflow modeling
Christian Wagner
Workflow modeling
Christian Wagner
Conclusion
• Coarse level modeling– Coarse granular approach– The level is unsuitable for system re-design
• Modeling of basic libraries– Bottom-up analysis– Overhead through unused methods
• Workflow modeling– Combining the first approaches– Generate Workflows from existing code
• Current work:– Automatic workflow generation from code
– In order to avoid errors– In order to ensure completeness
• Future goal: – Use jABC to extend and modernize different parts of the existing system