Missed Architectural Dependencies: The Elephant in the Room

Research in code and architectural analysis has demonstrated that a clear understanding of structural dependencies among software elements helps developers comprehend the impact of change. Yet examples are abundant from industry of major issues due to missed dependencies associated with different views of the architecture. Key concerns include dependencies related to allocation of modules to implementation packages to improve safety-critical testing and allocation of implementation packages to hardware partitions to optimize performance. In this paper, we present an in-depth study of a safety-critical system that underwent major changes as a result of missed architectural dependencies. We describe the challenges that resulted in re-architecting the system, the techniques we used for intervention, our results, and the developers' perspective. While the engineering tools provided coverage of design concerns, they missed implications of end-to-end integration testing, latency, and cost of change. In our study, we observed that the tools led the engineers to focus on data and control flow and therefore to miss many data-entity relationships, resource behavior, and deployment-related dependencies. Research continues to focus on more tooling and automation to assist with dependency analysis rather than interim, easier-to-adopt solutions. Our findings demonstrate that providing developers with a lightweight, semantically well-defined description of dependencies enables them to reason about change impact and propagation implications that they might otherwise overlook.

[1]  Yuanfang Cai,et al.  Detecting software modularity violations , 2011, 2011 33rd International Conference on Software Engineering (ICSE).

[2]  Robert L. Nord,et al.  Architectural dependency analysis to understand rework costs for safety-critical systems , 2014, ICSE Companion.

[3]  Ali A. Yassine,et al.  Characterizing complex product architectures , 2004, Syst. Eng..

[4]  Colin J. Neill,et al.  How Business Goals Drive Architectural Design , 2007, Computer.

[5]  Laurent Pautet,et al.  Design Patterns for Rule-Based Refinement of Safety Critical Embedded Systems Models , 2012, 2012 IEEE 17th International Conference on Engineering of Complex Computer Systems.

[6]  Peri L. Tarr,et al.  Model-driven development : The good , the bad , and the ugly & , 2006 .

[7]  Henry Muccini,et al.  What Industry Needs from Architectural Languages: A Survey , 2013, IEEE Transactions on Software Engineering.

[8]  Heiko Koziolek,et al.  Sustainability evaluation of software architectures: a systematic review , 2011, QoSA-ISARCS '11.

[9]  Paris Avgeriou,et al.  A practice-driven systematic review of dependency analysis solutions , 2011, Empirical Software Engineering.

[10]  Paris Avgeriou,et al.  Difficulty of Architectural Decisions - A Survey with Professional Architects , 2013, ECSA.

[11]  Petri Selonen,et al.  UML-based reverse engineering and model analysis approaches for software architecture maintenance , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[12]  Cláudio Sant'Anna,et al.  From retrospect to prospect: Assessing modularity and stability from software architecture , 2009, 2009 Joint Working IEEE/IFIP Conference on Software Architecture & European Conference on Software Architecture.

[13]  L. Wrage,et al.  System Architecture Virtual Integration : A Case Study , 2010 .

[14]  Tyson R. Browning,et al.  Applying the design structure matrix to system decomposition and integration problems: a review and new directions , 2001, IEEE Trans. Engineering Management.

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

[16]  Colin J. Neill,et al.  Characterizing essential and incidental complexity in software architectures , 2009, 2009 Joint Working IEEE/IFIP Conference on Software Architecture & European Conference on Software Architecture.

[17]  Peng Liang,et al.  An empirical investigation of modularity metrics for indicating architectural technical debt , 2014, QoSA '14.

[18]  Peng Liang,et al.  Software Architecture Documentation: The Road Ahead , 2011, 2011 Ninth Working IEEE/IFIP Conference on Software Architecture.

[19]  Shuai Li,et al.  Applicability of real-time schedulability analysis on a software radio protocol , 2012, HILT '12.

[20]  Udo Lindemann,et al.  Structural Complexity Management: An Approach for the Field of Product Design , 2008 .

[21]  Heiko Koziolek,et al.  A Large-Scale Industrial Case Study on Architecture-Based Software Reliability Analysis , 2010, 2010 IEEE 21st International Symposium on Software Reliability Engineering.

[22]  Judith A. Stafford,et al.  Achieving Agility through Architecture Visibility , 2009, QoSA.

[23]  Lucian Voinea,et al.  Visual Tools for Software Architecture Understanding: A Stakeholder Perspective , 2010, IEEE Software.

[24]  Jan Marco Leimeister,et al.  Using MDM-methods in order to improve managing of iterations in design processes , 2010 .

[25]  Hoyt Lougee,et al.  SOFTWARE CONSIDERATIONS IN AIRBORNE SYSTEMS AND EQUIPMENT CERTIFICATION , 2001 .

[26]  Peter H. Feiler,et al.  Model-Based Engineering with AADL: An Introduction to the SAE Architecture Analysis & Design Language , 2012 .

[27]  J. David Morgenthaler,et al.  Searching for build debt: Experiences managing technical debt at Google , 2012, 2012 Third International Workshop on Managing Technical Debt (MTD).

[28]  Alan MacCormack,et al.  Exploring the Structure of Complex Software Designs: An Empirical Study of Open Source and Proprietary Code , 2006, Manag. Sci..