ArchView - Analyzing Evolutionary Aspects of Complex Software Systems

Large and complex software systems are confronted with continuous changes during all stages in their life comprising development, maintenance, migration, and retirement. On the one side these changes are mandatory to guarantee the success of a software system but on the other side changes affect the architecture and design of a software system. Therefore, a continuous observation and analysis of the architecture and the design is needed to early identify shortcomings and resolve them. In this dissertation we propose the ArchView approach that focuses on the analysis and evaluation of software modules regarding their structural and evolutionary characteristics. Software modules are architectural elements that are implemented in source files, classes, or aggregations of them. The primary objective of our approach is to extract higher-level views of software modules and their dependency relationships that allow the spectator to identify structural and evolutionary shortcomings. For the analysis of the structural and evolutionary characteristics of software modules ArchView uses software metrics and coupling relationships. Software metrics quantify the size, complexity, coupling degree, modification and problem frequency of software modules. Coupling relationships show change as well as implemented dependency relationships between modules. Both, metrics and coupling relationships are computed for a number of subsequent source code releases giving insights into the evolution of modules. For the identification of structural and evolutionary shortcomings ArchView introduces a graph representation technique that is based on the principle of measurement mapping. Metric values are mapped to graphical attributes highlighting in particular modules and dependency relationships with noticeable structural and evolutionary characteristics. To handle the various characteristics we present a number of different view configurations that we implemented in a prototype tool. They can be extended and used by engineers in everyday analysis tasks. The evaluation and validation of the ArchView approach and its different view configurations is done with the large open source project Mozilla. We focus on the analysis of the content and layout modules with different higher-level views. Resulting views clearly show the usefulness of ArchView to visualize structural and evolutionary characteristics of Mozilla modules and point out a number of shortcomings in their design.

[1]  Alan Bundy,et al.  Constructing Induction Rules for Deductive Synthesis Proofs , 2006, CLASE.

[2]  Harald C. Gall,et al.  Pattern-supported architecture recovery , 2002, Proceedings 10th International Workshop on Program Comprehension.

[3]  Harald C. Gall,et al.  Journal of Software Maintenance and Evolution: Research and Practice Visualizing Feature Evolution of Large-scale Software Based on Problem and Modification Report Data , 2022 .

[4]  Paul Clements,et al.  Software architecture in practice , 1999, SEI series in software engineering.

[5]  Alan M. Davis,et al.  201 Principles of Software Development , 1995 .

[6]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[7]  Malcolm Munro,et al.  An initial approach towards measuring and characterising software evolution , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[8]  Houari A. Sahraoui,et al.  Predicting class libraries interface evolution: an investigation into machine learning approaches , 2000, Proceedings Seventh Asia-Pacific Software Engeering Conference. APSEC 2000.

[9]  Philippe Kruchten,et al.  The 4+1 View Model of Architecture , 1995, IEEE Softw..

[10]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[11]  Stephen S. Yau,et al.  Ripple effect analysis of software maintenance , 1978, COMPSAC.

[12]  David Notkin,et al.  Software Reflexion Models: Bridging the Gap between Design and Implementation , 2001, IEEE Trans. Software Eng..

[13]  Mehdi Jazayeri,et al.  Software Architecture for Product Families: Principles and Practice , 2000 .

[14]  Richard C. Holt,et al.  Software architecture transformations , 2000, Proceedings 2000 International Conference on Software Maintenance.

[15]  Timothy Lethbridge,et al.  The Dagstuhl Middle Metamodel: A Schema For Reverse Engineering , 2004, ateM.

[16]  Giuseppe Visaggio,et al.  A software model for impact analysis: a validation experiment , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[17]  Michele Lanza,et al.  Object-Oriented Reverse Engineering —- Coarse-grained, Fine-grained, and Evolutionary Software Visualization , 2003 .

[18]  Shari Lawrence Pfleeger,et al.  Software Metrics : A Rigorous and Practical Approach , 1998 .

[19]  Stéphane Ducasse,et al.  Polymetric Views - A Lightweight Visual Approach to Reverse Engineering , 2003, IEEE Trans. Software Eng..

[20]  Andrian Marcus,et al.  Source Viewer 3D (sv3D) - a framework for software visualization , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[21]  Ben Shneiderman,et al.  Readings in information visualization - using vision to think , 1999 .

[22]  Lionel C. Briand,et al.  Using coupling measurement for impact analysis in object-oriented systems , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[23]  Hausi A. Müller,et al.  Cognitive design elements to support the construction of a mental model during software exploration , 1999, J. Syst. Softw..

[24]  Joseph Robert Horgan,et al.  Dynamic program slicing , 1990, PLDI '90.

[25]  Andy Schürr,et al.  GXL: toward a standard exchange format , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[26]  Andreas Zeller,et al.  How history justifies system architecture (or not) , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[27]  Harald C. Gall,et al.  Software evolution observations based on product release history , 1997, 1997 Proceedings International Conference on Software Maintenance.

[28]  Richard C. Holt Structural manipulations of software architecture using Tarski relational algebra , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[29]  Ganesh S. Oak Information Visualization Introduction , 2022 .

[30]  David Garlan,et al.  Documenting software architectures: views and beyond , 2002, 25th International Conference on Software Engineering, 2003. Proceedings..

[31]  Harald C. Gall,et al.  Visualizing software release histories: the use of color and third dimension , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[32]  Bernhard Westfechtel,et al.  Graph-based tools for re-engineering , 2002, J. Softw. Maintenance Res. Pract..

[33]  Jürgen Ebert,et al.  GUPRO - Generic Understanding of Programs , 2002, Electron. Notes Theor. Comput. Sci..

[34]  Gregg Rothermel,et al.  Whole program path-based dynamic impact analysis , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[35]  Lionel C. Briand,et al.  Dynamic coupling measurement for object-oriented software , 2004, IEEE Transactions on Software Engineering.

[36]  Ivar Jacobson,et al.  The Unified Software Development Process , 1999 .

[37]  Jens Knodel,et al.  Improving fact extraction of framework-based software systems , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[38]  Harald C. Gall,et al.  Analyzing and understanding architectural characteristics of COM+ components , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[39]  Harald C. Gall,et al.  TUAnalyzer - analyzing templates in C++ code , 2004, 11th Working Conference on Reverse Engineering.

[40]  Mehdi Jazayeri On Architectural Stability and Evolution , 2002, Ada-Europe.

[41]  Hausi A. Müller,et al.  Rigi: a system for programming-in-the-large , 1988, Proceedings. [1989] 11th International Conference on Software Engineering.

[42]  Harald C. Gall,et al.  CVS release history data for detecting logical couplings , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[43]  Keith Brian Gallagher,et al.  Using Program Slicing in Software Maintenance , 1991, IEEE Trans. Software Eng..

[44]  Giuliano Antoniol,et al.  Towards the Integration of Versioning Systems, Bug Reports and Source Code Meta-Models , 2005, SETra@ICGT.

[45]  Harald C. Gall,et al.  Analyzing and relating bug report data for feature tracking , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[46]  Stéphane Ducasse,et al.  Yesterday's Weather: guiding early reverse engineering efforts by summarizing the evolution of changes , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[47]  Rainer Koschke,et al.  Hierarchical reflexion models , 2003, 10th Working Conference on Reverse Engineering, 2003. WCRE 2003. Proceedings..

[48]  Gail C. Murphy,et al.  Predicting source code changes by mining change history , 2004, IEEE Transactions on Software Engineering.

[49]  Harald C. Gall,et al.  Populating a Release History Database from version control and bug tracking systems , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[50]  Dewayne E. Perry,et al.  Metrics and laws of software evolution-the nineties view , 1997, Proceedings Fourth International Software Metrics Symposium.

[51]  Houari A. Sahraoui,et al.  Predicting software stability using case-based reasoning , 2002, Proceedings 17th IEEE International Conference on Automated Software Engineering,.

[52]  D. L. Parnas,et al.  On the criteria to be used in decomposing systems into modules , 1972, Software Pioneers.

[53]  Gail C. Murphy,et al.  Hipikat: recommending pertinent software development artifacts , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[54]  Edward R. Tufte,et al.  Envisioning Information , 1990 .

[55]  Thomas Ball,et al.  Software Visualization in the Large , 1996, Computer.

[56]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

[57]  Harald C. Gall,et al.  Revealer: a lexical pattern matcher for architecture recovery , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[58]  Hausi A. Müller,et al.  Manipulating and documenting software structures using SHriMP views , 1995, Proceedings of International Conference on Software Maintenance.

[59]  Hausi A. Müller,et al.  The Software Bookshelf , 1997, IBM Syst. J..

[60]  Andreas Zeller,et al.  Mining version histories to guide software changes , 2005, Proceedings. 26th International Conference on Software Engineering.

[61]  Nicolas E. Gold,et al.  A framework for understanding conceptual changes in evolving source code , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[62]  Brian Henderson-Sellers,et al.  Object-Oriented Metrics , 1995, TOOLS.

[63]  Michele Lanza,et al.  The evolution matrix: recovering software evolution using software visualization techniques , 2001, IWPSE '01.

[64]  Harald C. Gall,et al.  Abstracting module views from source code , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[65]  Joshua Kerievsky,et al.  Refactoring to Patterns , 2004, XP/Agile Universe.

[66]  Harald C. Gall,et al.  System evolution tracking through execution trace analysis , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[67]  Rick Kazman,et al.  Playing Detective: Reconstructing Software Architecture from Available Evidence , 1999, Automated Software Engineering.

[68]  Paul W. Oman,et al.  Using metrics to evaluate software system maintainability , 1994, Computer.

[69]  Lionel C. Briand,et al.  A Unified Framework for Coupling Measurement in Object-Oriented Systems , 1999, IEEE Trans. Software Eng..

[70]  Maurice H. Halstead,et al.  Elements of software science (Operating and programming systems series) , 1977 .

[71]  Daniel M. Germán,et al.  Visualizing the Evolution of Software Using Softchange , 2006, Int. J. Softw. Eng. Knowl. Eng..

[72]  Mark Lorenz,et al.  Object-oriented software metrics - a practical guide , 1994 .

[73]  Harald C. Gall,et al.  Towards an Integrated View on Architecture and its Evolution , 2005, Electron. Notes Theor. Comput. Sci..

[74]  Loe Feijs,et al.  A relational approach to support software architecture analysis , 1998 .

[75]  Harald C. Gall,et al.  Detection of logical coupling based on product release history , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[76]  Rick Kazman,et al.  Requirements for integrating software architecture and reengineering models: CORUM II , 1998, Proceedings Fifth Working Conference on Reverse Engineering (Cat. No.98TB100261).

[77]  Serge Demeyer,et al.  Studying software evolution information by visualizing the change history , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[78]  Dewayne E. Perry,et al.  Implications of evolution metrics on software maintenance , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[79]  Robert S. Arnold,et al.  Software Change Impact Analysis , 1996 .

[80]  Barry W. Boehm,et al.  Software Engineering Economics , 1993, IEEE Transactions on Software Engineering.

[81]  Harald C. Gall,et al.  Visualizing multiple evolution metrics , 2005, SoftVis '05.

[82]  Emden R. Gansner,et al.  Bunch: a clustering tool for the recovery and maintenance of software system structures , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[83]  IEEE-SA Standards Board , 2000 .

[84]  Edward Tufte,et al.  Visual Explanations , 1997 .

[85]  Richard C. Holt,et al.  Evolution Spectrographs: visualizing punctuated change in software evolution , 2004 .

[86]  David Garlan,et al.  Architectural Mismatch: Why Reuse Is So Hard , 1995, IEEE Softw..

[87]  John Domingue,et al.  Software visualization : programming as a multimedia experience , 1998 .

[88]  Anas N. Al-Rabadi,et al.  A comparison of modified reconstructability analysis and Ashenhurst‐Curtis decomposition of Boolean functions , 2004 .

[89]  Michael Saboe The use of software quality metrics in the materiel release process experience report , 2001, Proceedings Second Asia-Pacific Conference on Quality Software.

[90]  Robert L. Nord,et al.  Applied Software Architecture , 1999, Addison Wesley object technology series.

[91]  Alexander L. Wolf,et al.  Acm Sigsoft Software Engineering Notes Vol 17 No 4 Foundations for the Study of Software Architecture , 2022 .

[92]  Harald C. Gall,et al.  Architecture Recovery for Product Families , 2003, PFE.

[93]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[94]  Oscar Nierstrasz,et al.  Object-oriented reengineering patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[95]  Rene L. Krikhaar,et al.  Software architecture reconstruction , 1999 .

[96]  Michael W. Godfrey,et al.  Secrets from the Monster: Extracting Mozilla’s Software Architecture , 2000 .

[97]  Norman E. Fenton,et al.  Quantitative Analysis of Faults and Failures in a Complex Software System , 2000, IEEE Trans. Software Eng..

[98]  Mary Shaw,et al.  Software architecture - perspectives on an emerging discipline , 1996 .