150 likes | 320 Views
Re-Modeling of complex software systems. STRESS 2006 (18.-24.05.2006) Dortmund 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
E N D
Re-Modeling of complex software systems STRESS 2006 (18.-24.05.2006) Dortmund 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
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
Coarse level modeling Original code JNI-method call /* * 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) { Icon base_frame_image; Benutzer hilfBenutzer; ...
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
Modelling of basic libraries TWG HDG HDG
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
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