Abstract
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.
![](http://media.springernature.com/m312/springer-static/image/art%3A10.1007%2Fs11334-018-0319-4/MediaObjects/11334_2018_319_Fig1_HTML.png)
![](http://media.springernature.com/m312/springer-static/image/art%3A10.1007%2Fs11334-018-0319-4/MediaObjects/11334_2018_319_Fig2_HTML.png)
![](http://media.springernature.com/m312/springer-static/image/art%3A10.1007%2Fs11334-018-0319-4/MediaObjects/11334_2018_319_Fig3_HTML.png)
![](http://media.springernature.com/m312/springer-static/image/art%3A10.1007%2Fs11334-018-0319-4/MediaObjects/11334_2018_319_Fig4_HTML.png)
![](http://media.springernature.com/m312/springer-static/image/art%3A10.1007%2Fs11334-018-0319-4/MediaObjects/11334_2018_319_Fig5_HTML.png)
Similar content being viewed by others
Explore related subjects
Discover the latest articles, news and stories from top researchers in related subjects.References
Charette RN (2009) This car runs on code. IEEE Spectr 46(3):3
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–874
Microsoft Patterns & Practices Team (2009) Microsoft application architecture guide, 2nd edn. Microsoft Press
Bass RKL, Clements P (2013) Software architecture in practice, 3rd edn. Addison-Wesley, Reading
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–487
Garlan D, Shaw M (1993) An introduction to software architecture. In: Advances in software engineering and knowledge engineering, vol I. World Scientic Publishing Company
Shaw M, Garlan D (1996) Software architecture: perspectives on an emerging discipline, 1st edn. Prentice Hall, Englewood Cliffs
Buschmann F, Henney K, Schmidt DC (2007) Pattern-oriented software architecture, on patterns and pattern languages, 5th edn. Wiley, New York
Avgeriou P, Zdun U (2005) Modeling architectural patterns using architectural primitives. In: ACM SIGPLAN Notices, vol 40, No 10. ACM, pp 133–146
Gamma E (1995) Design patterns: elements of reusable object-oriented software. Pearson Education India, Delhi
Bode S, Riebisch M (2010) Impact evaluation for quality-oriented architectural decisions regarding evolvability. In: European conference on software architecture. Springer, Berlin, pp 182–197
Wood WG (2007) A practical example of applying attribute-driven design (add), version 2.0. Technical report, DTIC Document
Paul C, Kazman R, Klein M (2002) Evaluating software architectures: methods and case studies. Addison-Wesley Professional
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–21
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–446
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–207
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–402
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–24
Christensen HB, Hansen KM (2010) An empirical investigation of architectural prototyping. J Syst Softw 83(1):133–142
Christensen HB, Hansen KM (2008) Architectural prototyping in industrial practice. Springer, Berlin, pp 196–209
Andrews D, Nonnecke B, Preece J (2007) Conducting research on the internet: online survey design, development and implementation guidelines. https://auspace.athabascau.ca/handle/2149/1336
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–66
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):e164
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:37
Wohlin C, Runeson P, Höst M, Ohlsson MC, Regnell B, Wesslén A (2012) Experimentation in software engineering. Springer, Berlin
Qian K (2010) Software architecture and design illuminated. Jones & Bartlett Learning, Burlington
Developer Survey Results—2016. Technical report, StackOverflow (2016). http://stackoverflow.com/research/developer-survey-2016. Visited 26 Feb 2017
Wilcox M, Schuermans S, Voskoglou C (2016) Developer economics, state of the developer nation, Q3 2016. Technical report, VisionMobile Ltd
Harrison NB, Avgeriou P (2007) Leveraging architecture patterns to satisfy quality attributes. In: European conference on software architecture. Springer, Berlin, pp 263–270
ISO I (2001) Software engineering—Product quality—Part 1
Campbell DT, Stanley JC (2015) Experimental and quasi-experimental designs for research. Ravenio Books, San Francisco
Hyman R (1982) Quasi-experimentation: design and analysis issues for field settings (book). J Personal Assess 46(1):96–97
Author information
Authors and Affiliations
Corresponding author
Additional information
Publisher's Note
Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.
Rights and permissions
About this article
Cite this article
Kassab, M., Mazzara, M., Lee, J. et al. Software architectural patterns in practice: an empirical study. Innovations Syst Softw Eng 14, 263–271 (2018). https://doi.org/10.1007/s11334-018-0319-4
Received:
Accepted:
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11334-018-0319-4