ComputingComputer ScienceDiagrammingProgramming LanguagesSoftware EngineeringObject-oriented DesignReverse EngineeringSoftware ArchitectureSoftware DesignSoftware ModelingStatic Code AnalysisClass Diagram ModelingSoftware Evolution AnalysisSoftware Reverse EngineeringUml Package DiagramsUnified Modeling LanguageUnified Modeling Language (Uml) Class Diagrams
During software evolution, programmers devote most of their effort to the understanding of the structure and behavior of the system. For Object-Oriented code, this might be particularly hard, when multiple, scattered objects contribute to the same function. Design views offer an invaluable help, but they are often not aligned with the code, when they are not missing at all.This tutorial describes some of the most advanced techniques that can be employed to reverse engineer several design views from the source code. The recovered diagrams, represented in UML (Unified Modeling Language), include class, object, interaction (collaboration and sequence), state and package diagrams. A unifying static code analysis framework used by most of the involved algorithms is presented at the beginning of the tutorial. A single running example is referred all over the presentation. Trade-offs (e.g., static vs. dynamic analysis), limitations and expected benefits are also discussed.
8
Visualizing dynamic software system information through high-level models
Robert J. Walker, Gail C. Murphy, Bjorn Freeman‐Benson et al. · 1998 · 156 citations · Full text
Design‐code traceability for object‐oriented systems
Giulio Antoniol, Bruno Caprile, Alessandra Potrich et al. · Annals of Software Engineering · 2000 · 72 citations