Innovations in Systems and Software Engineering

, Volume 14, Issue 4, pp 263–271 | Cite as

Software architectural patterns in practice: an empirical study

  • Mohamad KassabEmail author
  • Manuel Mazzara
  • JooYoung Lee
  • Giancarlo Succi
Original Paper


Software architecture involves a series of decisions based on many factors in a wide range of software development. Architects face recurring issues in different software architecture design, and to reduce huge cost and risks, software architecture decisions can rely on a set of idiomatic patterns commonly named architectural styles or patterns. Architectural pattern determines the vocabulary of components and connectors that are used in instances of the pattern together with a set of constraints to combine the two. Little contemporary data exists to document actual practices used by software professionals when selecting and incorporating architectural patterns for their projects in industry. Therefore, a comprehensive survey of software professionals was conducted to attempt to discover these practices. This exploratory survey and its quantitative results offer opportunities for further interpretation and comparison. Data from this survey are presented in this paper and include characteristics of projects, practices, organizations, and practitioners related to the usage of architectural patterns. Some of the notable findings include that architectural patterns are widely used in software projects with the Model–View–Controller being the most common. Despite reported difficulties in incorporating architectural patterns, the majority of the software professionals revealed that patterns were the most essential for completing the projects. The most difficult pattern to implement and the most expensive to adopt was the peer-to-peer, while the easiest was the client–server.


Software architecture Architectural patterns Quality attributes Common practices Software professionals Architectural tactics 



  1. 1.
    Charette RN (2009) This car runs on code. IEEE Spectr 46(3):3MathSciNetGoogle Scholar
  2. 2.
    Aad G, Abbott B, Abdallah J, Abdelalim A, Abdesselam A, Abdinov O, Abi B, Abolins M, Abramowicz H, Abreu H et al (2010) The ATLAS simulation infrastructure. Eur Phys J C 70(3):823–874CrossRefGoogle Scholar
  3. 3.
    Microsoft Patterns & Practices Team (2009) Microsoft application architecture guide, 2nd edn. Microsoft PressGoogle Scholar
  4. 4.
    Bass RKL, Clements P (2013) Software architecture in practice, 3rd edn. Addison-Wesley, ReadingGoogle Scholar
  5. 5.
    Kassab M, El-Boussaidi G, Mili H (2012) A quantitative evaluation of the impact of architectural patterns on quality requirements. In: Lee R (ed) Software engineering research, management and applications. Springer, Berlin, pp 173–487Google Scholar
  6. 6.
    Garlan D, Shaw M (1993) An introduction to software architecture. In: Advances in software engineering and knowledge engineering, vol I. World Scientic Publishing CompanyGoogle Scholar
  7. 7.
    Shaw M, Garlan D (1996) Software architecture: perspectives on an emerging discipline, 1st edn. Prentice Hall, Englewood CliffszbMATHGoogle Scholar
  8. 8.
    Buschmann F, Henney K, Schmidt DC (2007) Pattern-oriented software architecture, on patterns and pattern languages, 5th edn. Wiley, New YorkGoogle Scholar
  9. 9.
    Avgeriou P, Zdun U (2005) Modeling architectural patterns using architectural primitives. In: ACM SIGPLAN Notices, vol 40, No 10. ACM, pp 133–146Google Scholar
  10. 10.
    Gamma E (1995) Design patterns: elements of reusable object-oriented software. Pearson Education India, DelhiGoogle Scholar
  11. 11.
    Bode S, Riebisch M (2010) Impact evaluation for quality-oriented architectural decisions regarding evolvability. In: European conference on software architecture. Springer, Berlin, pp 182–197Google Scholar
  12. 12.
    Wood WG (2007) A practical example of applying attribute-driven design (add), version 2.0. Technical report, DTIC DocumentGoogle Scholar
  13. 13.
    Paul C, Kazman R, Klein M (2002) Evaluating software architectures: methods and case studies. Addison-Wesley ProfessionalGoogle Scholar
  14. 14.
    Harrison NB, Avgeriou P, Zdun U (2010) Incorporating fault tolerance tactics in software architecture patterns. In: Proceedings of the 2nd international workshop on software engineering for resilient systems (ACM), pp 12–21Google Scholar
  15. 15.
    Kassab M, El-Boussaidi G (2013) Towards quantifying quality, tactics and architectural patterns interactions. In: The 25th international conference on software engineering and knowledge engineering, Boston, 510 MA, USA, June 27–29, pp 441–446Google Scholar
  16. 16.
    Soni D, Nord RL, Hofmeister C (1995) Software architecture in industrial applications. In: Proceedings of the 17th international conference on software engineering, ICSE ’95. ACM, New York, pp 196–207Google Scholar
  17. 17.
    Gardazi SU, Shahid AA (2009) Survey of software architecture description and usage in software industry of Pakistan. In: 2009 international conference on emerging technologies, pp 395–402Google Scholar
  18. 18.
    Bardram JE, Christensen HB, Hansen KM (2004) Architectural prototyping: an approach for grounding architectural design and learning. In: Proceedings. Fourth working IEEE/IFIP conference on software architecture (WICSA 2004), pp 15–24Google Scholar
  19. 19.
    Christensen HB, Hansen KM (2010) An empirical investigation of architectural prototyping. J Syst Softw 83(1):133–142CrossRefGoogle Scholar
  20. 20.
    Christensen HB, Hansen KM (2008) Architectural prototyping in industrial practice. Springer, Berlin, pp 196–209Google Scholar
  21. 21.
    Andrews D, Nonnecke B, Preece J (2007) Conducting research on the internet: online survey design, development and implementation guidelines.
  22. 22.
    Szolnoki G, Hoffmann D (2013) Online, face-to-face and telephone surveys–comparing different sampling methods in wine consumer research. Wine Econ Policy 2(2):57–66CrossRefGoogle Scholar
  23. 23.
    Khazaal Y, van Singer M, Chatton A, Achab S, Zullino D, Rothen S, Khan R, Billieux J, Thorens G (2014) Does self-selection affect samples’ representativeness in online surveys? An investigation in online video game research. J Med Internet Res 16(7):e164CrossRefGoogle Scholar
  24. 24.
    Maalej W, Tiarks R, Roehm T, Koschke R (2014) On the comprehension of program comprehension. ACM Trans Softw Eng Methodol 23(4):31:1–31:37Google Scholar
  25. 25.
    Wohlin C, Runeson P, Höst M, Ohlsson MC, Regnell B, Wesslén A (2012) Experimentation in software engineering. Springer, BerlinCrossRefzbMATHGoogle Scholar
  26. 26.
    Qian K (2010) Software architecture and design illuminated. Jones & Bartlett Learning, BurlingtonGoogle Scholar
  27. 27.
    Developer Survey Results—2016. Technical report, StackOverflow (2016). Visited 26 Feb 2017
  28. 28.
    Wilcox M, Schuermans S, Voskoglou C (2016) Developer economics, state of the developer nation, Q3 2016. Technical report, VisionMobile LtdGoogle Scholar
  29. 29.
    Harrison NB, Avgeriou P (2007) Leveraging architecture patterns to satisfy quality attributes. In: European conference on software architecture. Springer, Berlin, pp 263–270Google Scholar
  30. 30.
    ISO I (2001) Software engineering—Product quality—Part 1Google Scholar
  31. 31.
    Campbell DT, Stanley JC (2015) Experimental and quasi-experimental designs for research. Ravenio Books, San FranciscoGoogle Scholar
  32. 32.
    Hyman R (1982) Quasi-experimentation: design and analysis issues for field settings (book). J Personal Assess 46(1):96–97CrossRefGoogle Scholar

Copyright information

© Springer-Verlag London Ltd., part of Springer Nature 2018

Authors and Affiliations

  1. 1.Pennsylvania State UniversityMalvernUSA
  2. 2.Innopolis UniversityInnopolisRussia

Personalised recommendations