Architecture consistency: State of the practice, challenges and requirements

  • Nour Ali
  • Sean Baker
  • Ross O’Crowley
  • Sebastian Herold
  • Jim Buckley
Article
  • 117 Downloads

Abstract

Architecture Consistency (AC) aims to align implemented systems with their intended architectures. Several AC approaches and tools have been proposed and empirically evaluated, suggesting favourable results. In this paper, we empirically examine the state of practice with respect to Architecture Consistency, through interviews with nineteen experienced software engineers. Our goal is to identify 1) any practises that the companies these architects work for, currently undertake to achieve AC; 2) any barriers to undertaking explicit AC approaches in these companies; 3) software development situations where practitioners perceive AC approaches would be useful, and 4) AC tool needs, as perceived by practitioners. We also assess current commercial AC tool offerings in terms of these perceived needs. The study reveals that many practitioners apply informal AC approaches as there are barriers for adopting more formal and explicit approaches. These barriers are: 1) Difficulty in quantifying architectural inconsistency effects, and thus justifying the allocation of resources to fix them to senior management, 2) The near invisibility of architectural inconsistency to customers, 3) Practitioners’ reluctance towards fixing architectural inconsistencies, and 4) Practitioners perception that huge effort is required to map the system to the architecture when using more formal AC approaches and tools. Practitioners still believe that AC would be useful in supporting several of the software development activities such as auditing, evolution and ensuring quality attributes. After reviewing several commercial tools, we posit that AC tool vendors need to work on their ability to support analysis of systems made up of different technologies, that AC tools need to enhance their capabilities with respect to artefacts such as services and meta-data, and to focus more on non-maintainability architectural concerns.

Keywords

Software architecture Consistency Architectural drift Empirical study Architecture recovery Architecture conformance and erosion 

References

  1. Ali N, Rosik J, Buckley J (2012) Characterizing real-time reflexion-based architecture recovery: an in-vivo multi-case study. Proceedings of the 8th international ACM SIGSOFT conference on quality of software Architectures (QoSA '12). ACM, New York, pp. 23–32Google Scholar
  2. Bachmann F, Bass L, Klein M, Shelton C (2005) Designing Software Architectures to Achieve Quality Attribute Requirements. IEEE Softw 152(4):153–165CrossRefGoogle Scholar
  3. Bang JY, Medvidovic N (2015) Proactive detection of higher-order software design conflicts. 12th working IEEE/IFIP conference on software Architecture (WICSA 2015), pp 155-164Google Scholar
  4. Barbar MA (2009) An exploratory study of architectural practices and challenges in using agile software development approaches. In: Proceedings of the European Conference on Software Architecture, pp 81–90Google Scholar
  5. Behnamghader P, Ming LD, Garcia J, Link D, Shahbazian A, Medvidovic N (2016) A large-scale study of architectural evolution in open-source software systems. Empir Softw Eng:1–48Google Scholar
  6. Boehm B (2002) Get ready for Agile methods, with care. IEEE Computer 35(1):64–69CrossRefGoogle Scholar
  7. Brunet J, Bittencourt RA, Serey D, Figueiredo J (2012) On the evolutionary nature of architectural violations. Proceedings of working conference on reverse engineering (WCRE), pp 257–266Google Scholar
  8. Brunet J, Murphy GC, Serey D, Figueiredo J (2015) Five years of software architecture checking: a case study of eclipse. IEEE Softw 32(5):30–36CrossRefGoogle Scholar
  9. Buchgeher G, Weinreich R (2011) Automatic tracing of decisions to architecture and implementation. In: Proceedings of the 2011 Ninth working IEEE/IFIP conference on software Architecture (WICSA '11). IEEE Computer Society, Washington, DC, pp 46–55Google Scholar
  10. Buckley J, Ali N, English M, Rosik J, Herold S (2015) Real-Time Reflexion Modelling in Architecture Reconciliation. Inf Softw Technol 61:107–123CrossRefGoogle Scholar
  11. Buckley J, Le Gear A, Johnston T, Cadogan R, Looby B, Exton C, Koschke R (2008) Encapsulating targeted component abstractions using software reflexion modelling. International Journal Software Evolution and Maintenance: Research and Practice 20:107–134CrossRefGoogle Scholar
  12. Buckley J, Mooney S, Rosik J, Ali N (2013) JITTAC: a Just-In-Time Tool for Architectural Consistency. Proceedings of the 2013 international conference on software engineering (ICSE '13). IEEE Press, Piscataway, pp. 1291–1294Google Scholar
  13. CoderGears CoderGears product webpage. (2016) http://www.codergears.com/home. Retrieved March 30, 2016
  14. Coplien J, Bjornvig G (2010) Lean architecture of agile software development. Wiley, ChichesterGoogle Scholar
  15. Crucible: (2016) https://www.atlassian.com/software/crucible/overview. Last accessed 26 May 2016
  16. De Silva L, Balasubramaniam D (2012) Controlling software architecture erosion: a survey. J Syst Softw 85(1):132–151CrossRefGoogle Scholar
  17. De Silva L, Balasubramaniam D (2013) PANDArch: a pluggable automated non-intrusive dynamic architecture conformance checker. In: Drira K (ed) Software architecture. Lecture notes in Computer science 7957. Springer Berlin Heidelberg, pp 240–248Google Scholar
  18. Ducasse S, Pollet D (2009) Software architecture reconstruction: a process-oriented taxonomy. IEEE Trans Softw Eng 35(4):573–591CrossRefGoogle Scholar
  19. Falessi D, Cantone G, Sarcia SA, Calavaro G, Subiaco P, D’Amore C (2010) Peaceful coexistence: agile developer perspectives on software architecture. IEEE Softw 2:23–25CrossRefGoogle Scholar
  20. Forster T, Keuler T, Knodel J, Becker MC (2013) Recovering component dependencies hidden by frameworks--experiences from analyzing OSGi and Qt. 17th European conference on, Genova software maintenance and reengineering (CSMR), pp 295-304Google Scholar
  21. Ganesan D, Keuler T, and Nishimura, Y (2008) Architecture compliance checking at runtime: an industry experience report. In: The Eighth International Conference on Quality SoftwareGoogle Scholar
  22. Garlan D, Schmerl B (2004) Using architectural models at runtime: research challenges. First European Workshop on software Architecture, LNCS 3047. Springer, pp 200-205Google Scholar
  23. Girard J, Koschke, R (1997) Finding components in a hierarchy of modules: a step towards architectural understanding. ICSM, pp 58–65Google Scholar
  24. Haizer T, Zdun U (2012) DSL-based support for semi-automated architectural component model abstraction throughout the software lifecycle. Proceedings of quality of software Architecture (QoSA’12), pp 61-70Google Scholar
  25. Hello2morrow Sonargraph product family webpage. (2016) https://www.hello2morrow.com/products/sonargraph. Retrieved March 30, 2016
  26. Herold S, Buckley J (2015) Feature-oriented reflexion modelling. In: Proceedings of the 2015 European conference on software Architecture workshops (ECSAW '15). ACM, New YorkGoogle Scholar
  27. Hochstein L, Lindvall M (2005) Combating architectural degeneration: a survey. Inf Softw Technol 47(10):643–656CrossRefGoogle Scholar
  28. Ihme T, Abrahamsson P (2005) The use of architectural patterns in the agile software development of mobile applications. International Conference on Agility, HelsinkiGoogle Scholar
  29. Javed MA, Zdun U (2014) A systematic literature review of traceability approaches between software architecture and source code. In: Proceedings of the 18th international conference on evaluation and assessment in software engineering (EASE '14). ACM, New YorkGoogle Scholar
  30. Knodel J (2010) Sustainable structures in software implementations by live compliance checking. PhD Thesis, Fraunhofer Institute for Experimental Software EngineeringGoogle Scholar
  31. Knodel J, Muthig D, Haury U, Meier G (2008a) Architecture compliance checking-experiences from successful technology transfer to industry. Proceedings of 12th European conference on software maintenance and reengineering (CSMR 2008). IEEE, pp 43–52Google Scholar
  32. Knodel J, Muthig D, Naab M, Lindvall M (2008b) Static evaluation of software architectures. Proceedings of European conference on software maintenance and reengineering, pp 279–294Google Scholar
  33. Koschke R, Simon D (2003) Hierarchical reflexion models. Proceedings 10th working conference on reverse engineering, pp 36–45Google Scholar
  34. Krutchen P (2010) Software Architecture and agile software development: a clash of two cultures?. 32nd international conference on software engineering, pp 497-498Google Scholar
  35. Lago P, Malavolta I, Muccini H, Pelliccione P, Tang A (2015) The road ahead for architectural languages. IEEE Softw 32(1):98–105CrossRefGoogle Scholar
  36. Lattix Lattix Architect webpage. (2016) http://lattix.com/lattix-architect. Last Accessed 26 May 2016
  37. Le Gear A, Buckley J, Collins JJ, O’Dea K (2005) Software reconnexion: understanding software using a variation on software reconnaissance and reflexion modelling. Proceedings of international symposium on empirical software engineering, pp 34-43Google Scholar
  38. Lindvall M, Tesoriero, R, Costa P (2002) Avoiding architectural degeneration: an evaluation process for software architecture. In: Eighth IEEE Symposium on Software Metrics, pp 77–86Google Scholar
  39. MacCormack A, Sturtevant DJ (2016) Technical debt and system architecture: the impact of coupling on defect-related activity. J Syst Softw 120:170–182Google Scholar
  40. Madison J (2010) Agile Architecture Interactions. IEEE Softw 2:41–48CrossRefGoogle Scholar
  41. Malavolta I, Lago P, Muccini H, Pelliccione P, Tang A (2013) What industry needs from architectural languages: a survey. IEEE Trans Softw Eng 39(6):869–891CrossRefGoogle Scholar
  42. Mattsson A (2010) Automatic enforcement of architectural design rules. In: Proceedings of the 32nd ACM/IEEE international conference on software engineering - volume 2 (ICSE '10), vol 2. ACM, New York, pp 369–372Google Scholar
  43. Mattsson A (2012) Modelling and automatic enforcement of architectural design rules. University of LimerickGoogle Scholar
  44. Medvidovic N, Egyed A, Gruenbacher P (2003) Stemming architectural erosion by coupling architectural discovery and recovery. Second international SofTware requirements to Architectures Workshop (STRAW’03), pp 61-68Google Scholar
  45. Ming LD, Behnamghader P, Garcia J, Link D, Shahbazian A, Medvidovic N. (2015) An empirical study of architectural change in open-source software systems. Twelfth Working Conference on Mining Software Repositories, pp. 235–245Google Scholar
  46. Mirakhorli M, Fakhry A, Grechko A, Wieloch M, Cleland-Huang J (2014) Archie: a tool for detecting, monitoring, and preserving architecturally significant code. In: Proceedings of the 22nd ACM SIGSOFT international symposium on foundations of software engineering (FSE 2014). ACM, New York, pp 39–742Google Scholar
  47. Mirakhorli M, Shin Y, Cleland-Huang J, Cinar M (2012) A tactic-centric approach for automating traceability of quality concerns. In: Proceedings of the 34th international conference on software engineering (ICSE '12). IEEE Press, Piscataway, pp 639–649Google Scholar
  48. Mitchel MI (2004) Research design explained, 5th edn Thomson-WadsworthGoogle Scholar
  49. Murphy GC, Notkin D (1997) Reengineering with Reflexion models: a case study. Computer 30(8):29–36CrossRefGoogle Scholar
  50. Murphy GC, Notkin D, Sullivan KJ (1995) Software reflexion models: bridging the gap between source and high-level models. Proc. of the 3rd ACM SIGSOFT symposium on foundations of software engineering, pp 18–23Google Scholar
  51. Murta LGP, van der Hoek A, Werner CML (2008) Continuous and automated evolution of architecture-to-implementation traceability links. Autom Softw Eng 15(1):75–107CrossRefGoogle Scholar
  52. Nguyen TN, Munson EV, Thao C (2005) Object-oriented configuration management technology can improve software architectural traceability. Third ACIS Int'l conference on software engineering research, management and applications (SERA'05), pp 6-93Google Scholar
  53. Nord RL, Ozkaya I, Kruchten P, Gonzalez-Rojas M (2012) In search of a metric for managing architectural technical debt, 2012 Joint working IEEE/IFIP conference on software Architecture and European conference on software Architecture, Helsinki, pp 91–100Google Scholar
  54. Oates BJ (2005) Researching information systems and computing. Sage publications, LondonGoogle Scholar
  55. Passos LT, Terra R, Diniz M, Valente R, Mendonça NC (2010) Static architecture-conformance checking: an illustrative overview. IEEE Softw 27(5):82–89CrossRefGoogle Scholar
  56. Perry D, Porter A, Votta LA (1997) Primer on empirical studies. Tutorial Presented at the International Conference on Software Maintenance, Boston, U.S.A., pp 657Google Scholar
  57. Popescu D, Medvidovic N (2008) Ensuring architectural conformance in message-based systems. In: Workshop on architecting dependable systems (WADS)Google Scholar
  58. Prechelt L (1999) The 28:1 Grant Sackman Legend is Misleading: How large is Interpersonal Variation Really?. Technical Report, 1999–18. Universitat Karlsruhe, GermanyGoogle Scholar
  59. Pruijt L, Köppe C, van der Werf JM, Brinkkemper S (2016) The accuracy of dependency analysis in static Architecture compliance checking. Software Practice and Experience 47(2):273-309Google Scholar
  60. Qualyzer: (2016) http://qualyzer.bitbucket.org/. Last accessed 26 May 2016
  61. Romano D, Pinzger M, Bouwers E (2011) Extracting dynamic dependencies between web services using vector clocks. 2011 I.E. International Conference on Service-Oriented Computing and Applications (SOCA), Irvine, CA, pp. 1–8Google Scholar
  62. Rosik J (2014) A continuous approach for software architecture consistency. PhD Thesis, University of LimerickGoogle Scholar
  63. Rosik J, Gear A, Buckley J, Babar M, Connolly D (2011) Assessing architectural drift in commercial software development: a case study. Softw Pract Exper 41(1):63–86CrossRefGoogle Scholar
  64. Rosik J, Le Gear A, Buckley J, Babar MA (2008) An industrial case study of architecture conformance. Proceedings of the second ACM-IEEE international symposium on empirical software engineering and measurement (ESEM '08). ACM, New York, pp. 80–89Google Scholar
  65. Sangal N, Jordan E,Sinha V, Jackson, D (2005) Using dependency models to manage complex software architecture. Proceedings of 20th Conf. Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA). ACM Press, pp 67–176Google Scholar
  66. Sarkar S, Ramachandran S, Kumar GS, Iyengar MK, Rangarajan K, Sivagnanam S (2009) Modularization of a large-scale business application: a case study. IEEE Softw 26(2):28–35CrossRefGoogle Scholar
  67. Schmit F, MacDonnel SG, Connor A (2011) An automatic architecture reconstruction and refactoring framework. Proceedings of the 9th ACIS international conference on software engineering research, management and applications (SERA2011). Sprnger, pp 95-111Google Scholar
  68. Seaman C (1999) Qualitative Methods in Empirical Studies of Software Engineering. IEEE Trans Softw Eng 25(4):557–572CrossRefGoogle Scholar
  69. Sefika M, Sane A, Campbell RH (1996) Monitoring compliance of a software system with its high-level design models. Proceedings of the 18th international conference on software engineering, pp 387–396Google Scholar
  70. SOA Dependency Analyser: (2016) https://www.openhub.net/p/SOA-Dependency-Analyzer. Last accessed 19 May 2016
  71. SonarQube: (2014) http://www.sonarqube.org/. Last accessed 02 Sept 2014
  72. Stoermer C, Rowe A, O’Brien L, Verhoef C (2006) Model-centric software architecture reconstruction. Software: Practice and Exper 36(4):333–363Google Scholar
  73. Strauss A, Corbin J (1998) Basics of Qualitative Research: Techniques and Procedures for Developing Grounded Theory (2nd ed.). Thousand oaks: sage publications, Inc xiii, 312Google Scholar
  74. Structure 101 Structure 101 webpage. (2016) http://structure101.com. Retrieved March 30, 2016
  75. Techbeacon Is Agile the new Norm: (2017) http://techbeacon.com/survey-agile-new-norm. Last accessed 16 Jan 2017
  76. Tesoriero RT, Costa P, Lindvall M (2004) Evaluating software architectures. Adv Comput 61:1–43CrossRefGoogle Scholar
  77. Tran JB, Holt RC (1999) Forward and reverse repair of software architecture. Proceedings of the Conference of the Centre for Advanced Studies on Collaborative Research. IBM, pp. 12–20Google Scholar
  78. Tran H, Zdun U, Dustdar S (2011) VbTrace: using view-based and model-driven development to support traceability in process-driven SOAs. Softw Syst Model 10(1):5–29CrossRefGoogle Scholar
  79. Verbaere M, Godfrey MW, Girba T (2008) Query technologies and applications for program comprehension. ICPC:285–288Google Scholar
  80. West D, Grant T, Gerush M, DeSilva D (2010) Agile development: minstream adoption has changed agility. Forrester Research IncGoogle Scholar
  81. Yin R (2003) Case Study Research: Design and Methods. Sage Publications, Thousand OaksGoogle Scholar
  82. Zheng Y, Taylor RN (2011) Taming changes with 1.x-way architecture-mplementation mapping. 26th IEEE/ACM International Conference on Automated Software Engineering (ASE), pp. 396–399Google Scholar
  83. Zheng Y, Taylor RN (2003) Enhancing architecture-implementation conformance with change management and support for behavioural mapping. 34th International Conference on Software Engineering (ICSE), Zurich, pp. 628–638Google Scholar

Copyright information

© Springer Science+Business Media New York 2017

Authors and Affiliations

  1. 1.Brunel UniversityUxbridge, LondonUK
  2. 2.LeroUniversity of LimerickLimerickIreland
  3. 3.Red Orkid LimitedDublinIreland
  4. 4.Karlstad UniversityKarlstadSweden

Personalised recommendations