Real-Time Reflexion Modelling in architecture reconciliation: A multi case study

ContextReflexion Modelling is considered one of the more successful approaches to architecture reconciliation. Empirical studies strongly suggest that professional developers involved in real-life industrial projects find the information provided by variants of this approach useful and insightful, but the degree to which it resolves architecture conformance issues is still unclear. ObjectiveThis paper aims to assess the level of architecture conformance achieved by professional architects using Reflexion Modelling, and to determine how the approach could be extended to improve its suitability for this task. MethodAn in vivo, multi-case-study protocol was adopted across five software systems, from four different financial services organizations. Think-aloud, video-tape and interview data from professional architects involved in Reflexion Modelling sessions were analysed qualitatively. ResultsThis study showed that (at least) four months after the Reflexion Modelling sessions less than 50% of the architectural violations identified were removed. The majority of participants who did remove violations favoured changes to the architectural model rather than to the code. Participants seemed to work off two specific architectural templates, and interactively explored their architectural model to focus in on the causes of violations, and to assess the ramifications of potential code changes. They expressed a desire for dependency analysis beyond static-source-code analysis and scalable visualizations. ConclusionThe findings support several interesting usage-in-practice traits, previously hinted at in the literature. These include (1) the iterative analysis of systems through Reflexion models, as a precursor to possible code change or as a focusing mechanism to identify the location of architecture conformance issues, (2) the extension of the approach with respect to dependency analysis of software systems and architectural modelling templates, (3) improved visualization support and (4) the insight that identification of architectural violations in itself does not lead to their removal in the majority of instances.

[1]  Rainer Koschke,et al.  Equipping the reflexion method with automated clustering , 2005, 12th Working Conference on Reverse Engineering (WCRE'05).

[2]  Rainer Koschke,et al.  Encapsulating targeted component abstractions using software Reflexion Modelling , 2008, J. Softw. Maintenance Res. Pract..

[3]  Lucas Layman,et al.  Toward Reducing Fault Fix Time: Understanding Developer Behavior for the Design of Automated Fault Detection Tools , 2007, First International Symposium on Empirical Software Engineering and Measurement (ESEM 2007).

[4]  Per Runeson,et al.  Guidelines for conducting and reporting case study research in software engineering , 2009, Empirical Software Engineering.

[5]  A. Gibbons Algorithmic Graph Theory , 1985 .

[6]  Norman Wilde,et al.  A comparison of methods for locating features in legacy software , 2003, J. Syst. Softw..

[7]  Ricardo Terra,et al.  Static Architecture-Conformance Checking: An Illustrative Overview , 2010, IEEE Software.

[8]  Norman Wilde,et al.  Software reconnaissance: Mapping program features to code , 1995, J. Softw. Maintenance Res. Pract..

[9]  Lorin Hochstein,et al.  Diagnosing architectural degeneration , 2003, 28th Annual NASA Goddard Software Engineering Workshop, 2003. Proceedings..

[10]  Thorsten Keuler,et al.  Architecture Compliance Checking at Runtime: An Industry Experience Report , 2008, 2008 The Eighth International Conference on Quality Software.

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

[12]  Muhammad Ali Babar,et al.  Assessing architectural drift in commercial software development: a case study , 2011, Softw. Pract. Exp..

[13]  C. Babbage Passages from the Life of a Philosopher , 1968 .

[14]  Lucas Layman,et al.  Toward Reducing Fault Fix Time: Understanding Developer Behavior for the Design of Automated Fault Detection Tools , 2007, ESEM 2007.

[15]  Muhammad Ali Babar,et al.  Design Requirements for an Architecture Consistency Tool , 2009, PPIG.

[16]  Markus Völter,et al.  Model-Driven Software Development: Technology, Engineering, Management , 2006 .

[17]  J. J. Collins,et al.  Achieving a reuse perspective within a component recovery process: an industrial scale case study , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[18]  Rogério de Lemos,et al.  The Golden Age of Software Architecture , 2015 .

[19]  E. William Noland Hawthorne Revisited. By Henry A. Landsberger. Ithaca, New York: The New York State School of Industrial and Labor Relations, 1958, 132 pp. $3.50 , 1959 .

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

[21]  Gilles Dubochet Computer Code as a Medium for Human Communication: Are Programming Languages Improving? , 2009, PPIG.

[22]  Anders Mattsson,et al.  Modelling and Automatic Enforcement of Architectural Design Rules , 2012 .

[23]  Walter R. Bischofberger,et al.  Sotograph - A Pragmatic Approach to Source Code Architecture Conformance Checking , 2004, EWSA.

[24]  Sjaak Brinkkemper,et al.  A metamodel for the support of semantically rich modular architectures in the context of static architecture compliance checking , 2014, WICSA '14 Companion.

[25]  Jens Knodel,et al.  Sustainable structures in software implementations by live compliance checking , 2011 .

[26]  Dirk Muthig,et al.  Experiences with product line development of embedded systems at Testo AG , 2006 .

[27]  Rainer Koschke,et al.  Atomic architectural component recovery for program understanding and evolution , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[28]  Tom Mens,et al.  Design preservation over subsequent releases of a software product: a case study of Baan ERP: Practice Articles , 2005 .

[29]  Anders Henriksson,et al.  A Definition of Round-trip Engineering , 2003 .

[30]  Robert W. Schwanke,et al.  An intelligent tool for re-engineering software modularity , 1991, [1991 Proceedings] 13th International Conference on Software Engineering.

[31]  Sebastian Herold,et al.  Complementing model-driven development for the detection of software architecture erosion , 2013, 2013 5th International Workshop on Modeling in Software Engineering (MiSE).

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

[33]  Sjaak Brinkkemper,et al.  Journal of Software Maintenance and Evolution: Research and Practice Design Preservation over Subsequent Releases of a Software Product: a Case Study of Baan Erp , 2022 .

[34]  Jens Knodel,et al.  SAVE: Software Architecture Visualization and Evaluation , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[35]  Richard C. Holt,et al.  Architecture recovery of web applications , 2002, ICSE '02.

[36]  Torbjörn Ekman,et al.  Keynote Address: .QL for Source Code Analysis , 2007, Seventh IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2007).

[37]  S. V. Subrahmanya,et al.  A Survey of Enterprise Software Development Risks in a Flat World , 2007, ESEM 2007.

[38]  B. Kitchenham,et al.  Case Studies for Method and Tool Evaluation , 1995, IEEE Softw..

[39]  Jan Bosch,et al.  Design erosion: problems and causes , 2002, J. Syst. Softw..

[40]  Brian Fitzgerald,et al.  Linking Model-Driven Development and Software Architecture: A Case Study , 2009, IEEE Transactions on Software Engineering.

[41]  Torbjörn Ekman,et al.  .QL: Object-Oriented Queries Made Easy , 2007, GTTSE.

[42]  Maria Kutar,et al.  Cognitive Dimensions of Notations: Design Tools for Cognitive Technology , 2001, Cognitive Technology.

[43]  Daniel Popescu Ensuring Architectural Conformance in Message-Based Systems , 2008 .

[44]  Mikael Lindvall,et al.  Avoiding architectural degeneration: an evaluation process for software architecture , 2002, Proceedings Eighth IEEE Symposium on Software Metrics.

[45]  Daniele Romano,et al.  Using source code metrics to predict change-prone Java interfaces , 2011, 2011 27th IEEE International Conference on Software Maintenance (ICSM).

[46]  Christian Kästner,et al.  Variability Mining: Consistent Semi-automatic Detection of Product-Line Features , 2014, IEEE Transactions on Software Engineering.

[47]  Dharini Balasubramaniam,et al.  PANDArch: A Pluggable Automated Non-intrusive Dynamic Architecture Conformance Checker , 2013, ECSA.

[48]  Sylwia Męcfal Recenzja książki. Robert K. yin, Case Study Research. Design and Methods (fourth Edition), thousand Oaks, CA: Sage Publications, 2009 , 2012 .

[49]  Vineet Sinha,et al.  Using dependency models to manage complex software architecture , 2005, OOPSLA '05.

[50]  Jens Knodel,et al.  Architecture Compliance Checking - Experiences from Successful Technology Transfer to Industry , 2008, 2008 12th European Conference on Software Maintenance and Reengineering.

[51]  John Daniels,et al.  UML Components: A Simple Process for Specifying Component-Based Software , 2000 .

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

[53]  Jens Knodel,et al.  A Comparison of Static Architecture Compliance Checking Approaches , 2007, 2007 Working IEEE/IFIP Conference on Software Architecture (WICSA'07).

[54]  Bogdan Dit,et al.  Feature location in source code: a taxonomy and survey , 2013, J. Softw. Evol. Process..

[55]  Nour Ali,et al.  JITTAC: A Just-in-Time tool for architectural consistency , 2013, 2013 35th International Conference on Software Engineering (ICSE).

[56]  David Notkin,et al.  Reengineering Reflexion Models: A Case Study , 1997 .

[57]  Krzysztof Czarnecki,et al.  Generative programming - methods, tools and applications , 2000 .

[58]  Mark L. Mitchell,et al.  Research Design Explained , 1987 .

[59]  Jens Knodel,et al.  Constructive architecture compliance checking — an experiment on support by live feedback , 2008, 2008 IEEE International Conference on Software Maintenance.

[60]  L. Ward Social Forces , 1911, The Psychological Clinic.

[61]  Martin P. Robillard,et al.  FEAT a tool for locating, describing, and analyzing concerns in source code , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[62]  Davydd J. Greenwood Action research : from practice to writing in an international action research development program , 1999 .

[63]  R. Yin Case Study Research: Design and Methods , 1984 .

[64]  Mikael Lindvall,et al.  Does the code match the design? A process for architecture evaluation , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[65]  Rainer Koschke,et al.  Extending the reflexion method for consolidating software variants into product lines , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[66]  Michael Eichberg,et al.  Defining and continuous checking of structural program dependencies , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[67]  Michael W. Godfrey,et al.  Architectural repair of open source software , 2000, Proceedings IWPC 2000. 8th International Workshop on Program Comprehension.

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

[69]  Sebastian Herold Architectural Compliance in Component-Based Systems. Foundations, Specification, and Checking of Architectural Rules , 2011 .

[70]  Leon J. Osterweil,et al.  Proceedings of the 16th international conference on Software engineering , 1994, ICSE 1994.

[71]  David Garlan,et al.  Software architecture: a roadmap , 2000, ICSE '00.

[72]  Mikael Lindvall,et al.  Evaluating software architectures , 2004, Adv. Comput..

[73]  Brian Fitzgerald,et al.  An Approach for Modeling Architectural Design Rules in UML and its Application to Embedded Software , 2012, TSEM.

[74]  Nour Ali,et al.  Characterizing real-time reflexion-based architecture recovery: an in-vivo multi-case study , 2012, QoSA '12.

[75]  Kerstin Mueller,et al.  Software Product Line Engineering Foundations Principles And Techniques , 2016 .

[76]  Jens Knodel,et al.  Static evaluation of software architectures , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[77]  Roy H. Campbell,et al.  Monitoring compliance of a software system with its high-level design models , 1996, Proceedings of IEEE 18th International Conference on Software Engineering.

[78]  A. Strauss,et al.  Grounded theory , 2017 .

[79]  Giuseppe Visaggio,et al.  Software salvaging and the call dominance tree , 1995, J. Syst. Softw..