Recovering Architectural Design Decisions

Designing and maintaining a software system’s architecture typically involve making numerous design decisions, each potentially affecting the system’s functional and nonfunctional properties. Understanding these design decisions can help inform future decisions and implementation choices and can avoid introducing regressions and architectural inefficiencies later. Unfortunately, design decisions are rarely well documented and are typically a lost artifact of the architecture creation and maintenance process. The loss of this information can thus hurt development. To address this shortcoming, we develop RecovAr, a technique for automatically recovering design decisions from the project’s readily available history artifacts, such as an issue tracker and version control repository. RecovAr uses state-of-the-art architectural recovery techniques on a series of version control commits and maps those commits to issues to identify decisions that affect system architecture. While some decisions can still be lost through this process, our evaluation on Hadoop and Struts, two large open-source systems with over 8 years of development each and, on average, more than 1 million lines of code, shows that RecovAr has the recall of 75% and a precision of 77%. Our work formally defines architectural design decisions and develops an approach for tracing such decisions in project histories. Additionally, the work introduces methods to classify whether decisions are architectural and to map decisions to code elements. Finally, our work contributes a methodology engineers can follow to preserve design-decision knowledge in their projects.

[1]  Nenad Medvidovic,et al.  An End-to-End Domain Specific Modeling and Analysis Platform , 2016, 2016 IEEE/ACM 8th International Workshop on Modeling in Software Engineering (MiSE).

[2]  Dharini Balasubramaniam,et al.  Controlling software architecture erosion: A survey , 2012, J. Syst. Softw..

[3]  Vassilios Tzerpos,et al.  An effectiveness measure for software clustering algorithms , 2004, Proceedings. 12th IEEE International Workshop on Program Comprehension, 2004..

[4]  James M. Purtilo,et al.  Planning for change: a reconfiguration language for distributed systems , 1994, Distributed Syst. Eng..

[5]  Alexander L. Wolf,et al.  Joint Proceedings of the Second International Software Architecture Workshop (ISAW-2) and International Workshop on Multiple Perspectives in Software Development (Viewpoints '96) on SIGSOFT '96 workshops, ISAW '96, San Francisco, California, USA , 1996, ISAW/Viewpoints.

[6]  Robert L. Nord,et al.  Global Analysis: moving from software requirements specification to structural views of the software architecture , 2005, IEE Proc. Softw..

[7]  Charles J. Petrie,et al.  Constrained Decision Revision , 1992, AAAI.

[8]  William C. Regli,et al.  A Survey of Design Rationale Systems: Approaches, Representation, Capture and Retrieval , 2000, Engineering with Computers.

[9]  Iris Groher,et al.  Software architecture knowledge management approaches and their support for knowledge management activities: A systematic literature review , 2016, Inf. Softw. Technol..

[10]  Jintae Lee,et al.  Extending the Potts and Bruns model for recording design rationale , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[11]  Flávio Oquendo π-ADL: an Architecture Description Language based on the higher-order typed π-calculus for specifying dynamic and mobile software architectures , 2004, SOEN.

[12]  Patricia Lago,et al.  Recovering architectural assumptions , 2006, J. Syst. Softw..

[13]  Tao Qin,et al.  Discovering use cases from source code using the branch-reserving call graph , 2003, Tenth Asia-Pacific Software Engineering Conference, 2003..

[14]  E. Jeffrey Conklin,et al.  A process-oriented approach to design rationale , 1991 .

[15]  Mark Harman,et al.  Are developers aware of the architectural impact of their changes? , 2017, 2017 32nd IEEE/ACM International Conference on Automated Software Engineering (ASE).

[16]  Nenad Medvidovic,et al.  Detecting event anomalies in event-based systems , 2015, ESEC/SIGSOFT FSE.

[17]  Jeff Tyree,et al.  Architecture decisions: demystifying architecture , 2005, IEEE Software.

[18]  Guillermo Arango,et al.  A tool shelf for tracking design decisions , 1991, IEEE Software.

[19]  Frank Tip,et al.  Reengineering class hierarchies using concept analysis , 1998, SIGSOFT '98/FSE-6.

[20]  Jan Bosch,et al.  Documenting after the fact: Recovering architectural design decisions , 2008, J. Syst. Softw..

[21]  Richard C. Holt,et al.  ACCD: an algorithm for comprehension-driven clustering , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[22]  P. Lago,et al.  Explicit assumptions enrich architectural models , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[23]  David C. Brown,et al.  AN INTEGRATED APPROACH FOR SOFTWARE DESIGN CHECKING USING DESIGN RATIONALE , 2004 .

[24]  Paul Clements,et al.  Capturing and Using Rationale for a Software Architecture , 2006 .

[25]  Martin P. Robillard,et al.  Concern graphs: finding and describing concerns using structural program dependencies , 2002, Proceedings of the 24th International Conference on Software Engineering. ICSE 2002.

[26]  Peng Liang,et al.  Architectural design decision: Existing models and tools , 2009, 2009 Joint Working IEEE/IFIP Conference on Software Architecture & European Conference on Software Architecture.

[27]  I. Nonaka,et al.  How Japanese Companies Create the Dynamics of Innovation , 1995 .

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

[29]  Arie van Deursen,et al.  Identifying objects using cluster and concept analysis , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[30]  Nenad Medvidovic,et al.  A large-scale study of architectural evolution in open-source software systems , 2017, Empirical Software Engineering.

[31]  Ellis Horowitz,et al.  Software Cost Estimation with COCOMO II , 2000 .

[32]  Jan Bosch,et al.  Evaluation of tool support for architectural evolution , 2004 .

[33]  Hong Mei,et al.  Towards Automated Solution Synthesis and Rationale Capture in Decision-Centric Architecture Design , 2008, Seventh Working IEEE/IFIP Conference on Software Architecture (WICSA 2008).

[34]  Rudolf K. Keller,et al.  Pattern-based reverse-engineering of design components , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[35]  Nenad Medvidovic,et al.  Improving System Understanding via Interactive, Tailorable, Source Code Analysis , 2005, FASE.

[36]  Henry Muccini,et al.  Supporting Architectural Design Decisions Evolution through Model Driven Engineering , 2011, SERENE.

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

[38]  Jan Bosch,et al.  Software Architecture: The Next Step , 2004, EWSA.

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

[40]  Paris Avgeriou,et al.  First workshop on sharing and reusing architectural knowledge , 2006, SOEN.

[41]  Alireza Sadeghi,et al.  Software architectural principles in contemporary mobile software: from conception to practice , 2016, J. Syst. Softw..

[42]  René L. Krikhaar,et al.  A two-phase process for software architecture improvement , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[43]  Nenad Medvidovic,et al.  Automated Extraction of Rich Software Models from Limited System Information , 2016, 2016 13th Working IEEE/IFIP Conference on Software Architecture (WICSA).

[44]  Yuriy Brun,et al.  Preventing data errors with continuous testing , 2015, ISSTA.

[45]  P. Cochat,et al.  Et al , 2008, Archives de pediatrie : organe officiel de la Societe francaise de pediatrie.

[46]  David Garlan,et al.  Acme: an architecture description interchange language , 1997, CASCON.

[47]  Erwin Fielt,et al.  Scenarios for the identification of objects in legacy systems , 1997, Proceedings of the Fourth Working Conference on Reverse Engineering.

[48]  Peyman Oreizy,et al.  Architecture-based runtime software evolution , 1998, Proceedings of the 20th International Conference on Software Engineering.

[49]  Jan Bosch,et al.  Software Architecture as a Set of Architectural Design Decisions , 2005, 5th Working IEEE/IFIP Conference on Software Architecture (WICSA'05).

[50]  I. Nonaka A Dynamic Theory of Organizational Knowledge Creation , 1994 .

[51]  Yuriy Brun,et al.  Data debugging with continuous testing , 2013, ESEC/FSE 2013.

[52]  Michael D. Ernst,et al.  Reducing wasted development time via continuous testing , 2003, 14th International Symposium on Software Reliability Engineering, 2003. ISSRE 2003..

[53]  Philippe Kruchten,et al.  Building Up and Reasoning About Architectural Knowledge , 2006, QoSA.

[54]  Nenad Medvidovic,et al.  An Empirical Study of Architectural Change in Open-Source Software Systems , 2015, 2015 IEEE/ACM 12th Working Conference on Mining Software Repositories.

[55]  Frank Leymann,et al.  Reusable Architectural Decision Models for Enterprise Application Development , 2007, QoSA.

[56]  Frank Buschmann,et al.  A system of patterns , 1995 .

[57]  Arun Lakhotia,et al.  A Unified Framework For Expressing Software Subsystem Classification Techniques , 1997, J. Syst. Softw..

[58]  Giovanni Cantone,et al.  Documenting design decision rationale to improve individual and team design decision making: an experimental evaluation , 2006, ISESE '06.

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

[60]  Iris Groher,et al.  An expert survey on kinds, influence factors and documentation of design decisions in practice , 2015, Future Gener. Comput. Syst..

[61]  Robert L. Nord,et al.  Generalizing a Model of Software Architecture Design from Five Industrial Approaches , 2005, 5th Working IEEE/IFIP Conference on Software Architecture (WICSA'05).

[62]  Jos Nijhuis,et al.  Design Decisions: The Bridge between Rationale and Architecture , 2006 .

[63]  Jason Weston,et al.  A Neural Attention Model for Abstractive Sentence Summarization , 2015, EMNLP.

[64]  Janet E. Burge,et al.  Design rationale: Researching under uncertainty , 2008, Artificial Intelligence for Engineering Design, Analysis and Manufacturing.

[65]  Richard N. Taylor,et al.  Software architecture: foundations, theory, and practice , 2009, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[66]  Nenad Medvidovic,et al.  Enhancing architectural recovery using concerns , 2011, 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011).

[67]  Rainer Koschke,et al.  Aiding program comprehension by static and dynamic feature analysis , 2001, Proceedings IEEE International Conference on Software Maintenance. ICSM 2001.

[68]  Nenad Medvidovic,et al.  A comparative analysis of software architecture recovery techniques , 2013, 2013 28th IEEE/ACM International Conference on Automated Software Engineering (ASE).

[69]  Muhammad Ali Babar,et al.  A Survey of the Use and Documentation of Architecture Design Rationale , 2005, 5th Working IEEE/IFIP Conference on Software Architecture (WICSA'05).

[70]  Marija Mikic-Rakic,et al.  Mae---a system model and environment for managing architectural evolution , 2004, TSEM.

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

[72]  Nenad Medvidovic ADLs and dynamic architecture changes , 1996, ISAW '96.

[73]  Roy T. Fielding,et al.  Principled design of the modern Web architecture , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

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

[75]  Martin P. Robillard,et al.  Representing concerns in source code , 2007, TSEM.

[76]  Aniello Cimitile,et al.  Identifying objects in legacy systems using design metrics , 1999, J. Syst. Softw..

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

[78]  Michael L. Begeman,et al.  gIBIS: A tool for all reasons , 1989, JASIS.

[79]  Matthias Jarke,et al.  Dependency Directed Reasoning and Learning in Systems Maintenance Support , 1987, IEEE Trans. Software Eng..

[80]  Philippe Kruchten,et al.  The value of design rationale information , 2013, TSEM.

[81]  David Lorge Parnas,et al.  A rational design process: How and why to fake it , 1986, IEEE Transactions on Software Engineering.

[82]  Richard N. Taylor,et al.  A Classification and Comparison Framework for Software Architecture Description Languages , 2000, IEEE Trans. Software Eng..

[83]  Hong Yan,et al.  DiscoTect: a system for discovering architectures from running systems , 2004, Proceedings. 26th International Conference on Software Engineering.

[84]  Rafael Capilla,et al.  A web-based tool for managing architectural design decisions , 2006, SOEN.

[85]  Nenad Medvidovic,et al.  An Empirical Study of Architectural Decay in Open-Source Software , 2018, 2018 IEEE International Conference on Software Architecture (ICSA).

[86]  Dieter K. Hammer,et al.  Tool Support for Architectural Decisions , 2007, 2007 Working IEEE/IFIP Conference on Software Architecture (WICSA'07).

[87]  Richard C. Holt,et al.  MoJo: a distance metric for software clusterings , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

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

[89]  Philippe Kruchten,et al.  An Ontology of Architectural Design Decisions in Software-Intensive Systems , 2004 .

[90]  Colin Potts,et al.  Recording the reasons for design decisions , 1988, Proceedings. [1989] 11th International Conference on Software Engineering.

[91]  Paolo Tonella,et al.  Static and dynamic C++ code analysis for the recovery of the object diagram , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[92]  Ivar Jacobson,et al.  The Unified Modeling Language User Guide , 1998, J. Database Manag..

[93]  Arie van Deursen,et al.  Symphony: view-driven software architecture reconstruction , 2004, Proceedings. Fourth Working IEEE/IFIP Conference on Software Architecture (WICSA 2004).

[94]  Jeff Kramer,et al.  Developing an approach for the recovery of distributed software architectures , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[95]  Yann-Gaël Guéhéneuc A systematic study of UML class diagram constituents for their abstract and precise recovery , 2004, 11th Asia-Pacific Software Engineering Conference.

[96]  Vasant Dhar,et al.  Supporting Systems Development by Capturing Deliberations During Requirements Engineering , 1992, IEEE Trans. Software Eng..

[97]  Antony Tang,et al.  Design Reasoning Improves Software Design Quality , 2008, QoSA.

[98]  Nenad Medvidovic,et al.  Toward Predicting Architectural Significance of Implementation Issues , 2018, 2018 IEEE/ACM 15th International Conference on Mining Software Repositories (MSR).