Skip to main content

Software Architecture and Design

  • Chapter
  • First Online:
Handbook of Software Engineering

Abstract

The activity of designing is pervasive in software development. A software system’s architecture is the set of principal design decisions made about the system. As such, architecture and design are central pillars of software engineering. This chapter provides a coherent set of definitions for architecture, highlights key techniques for designing, and illustrates their application in well-known, influential applications. The development of the central concepts is traced from early beginnings in both domain-specific and domain-independent contexts. Techniques for analysis of architectures are discussed, and particular emphasis is placed on the distinctive role that connectors play in complex systems. Cost-benefit trade-offs are examined, the importance of maintaining conceptual integrity is stressed, and future directions for the field are explored.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 169.00
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Hardcover Book
USD 219.99
Price excludes VAT (USA)
  • Durable hardcover edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  • Abbott, R.J.: Program design by informal English descriptions. Commun. ACM. 26, 882–894 (1983)

    Article  Google Scholar 

  • Alexander, C.: The Timeless Way of Building. Oxford University Press, New York (1979)

    Google Scholar 

  • Alexander, C., Ishikawa, S., Silverstein, M.: A Pattern Language: Towns, Buildings, Construction. Oxford University Press, New York (1977)

    Google Scholar 

  • Allen, R.: A formal approach to software architecture. PhD Dissertation, Carnegie Mellon University, Pittsburgh, CMU-CS-97-144, p. 248 (1997)

    Google Scholar 

  • Beaver, D., Kumar, S., Li, H.C., Sobel, J., Vajgel, P.: Finding a needle in Haystack: Facebook’s photo storage. OSDI’10: Symposium on Operating System Design and Implementation, pp. 1–8 (2010)

    Google Scholar 

  • Booch, G.: Object-oriented development. IEEE Trans. Softw. Eng. 12, 211–221 (1986)

    Article  Google Scholar 

  • Bosch, J.: From software product lines to software ecosystems. Proceedings of the 13th International Software Product Line Conference, San Francisco, CA, pp. 111–119 (2009)

    Google Scholar 

  • Brooks Jr., F.P.: The Mythical Man-Month: Essays on Software Engineering. Addison-Wesley, Reading, MA (1975)

    Google Scholar 

  • Brown, N., Cai, Y., Guo, Y., et al.: Managing technical debt in software-reliant systems. Proceedings of the FSE/SDP Workshop on Future of Software Engineering Research, pp. 47–52. ACM, Santa Fe, NM (2010)

    Google Scholar 

  • Clements, P., Kazman, R., Klein, M.: Evaluating Software Architectures: Methods and Case Studies. Addison-Wesley Professional, Reading, MA (2002)

    Google Scholar 

  • Clements, P., Northrop, L.: Software Product Lines: Practices and Patterns. Addison-Wesley, New York, NY (2002)

    Google Scholar 

  • Dean, J., Ghernawat, S.: MapReduce: simplified data processing on large clusters. OSDI’04: Sixth Symposium on Operating System Design and Implementation, San Francisco, CA (2004)

    Google Scholar 

  • DeRemer, F., Kron, H.H.: Programming-in-the-large versus programming-in-the-small. IEEE Trans. Softw. Eng. 2, 80–86 (1976)

    Article  MathSciNet  Google Scholar 

  • Di Nitto, E., Rosenblum, D.S. Exploiting ADLs to specify architectural styles induced by middleware infrastructures. 21st International Conference on Software Engineering, pp. 13–22. IEEE Computer Society, Los Angeles, CA (1999)

    Google Scholar 

  • Dobrica, L., Niemela, E.: A survey on software architecture analysis methods. IEEE Trans. Softw. Eng. 28, 638–653 (2002)

    Article  Google Scholar 

  • Estublier, J., Leblang, D.B., Clemm, G., et al.: Impact of the research community on the field of software configuration management. ACM Trans. Softw. Eng. Methodol. 14, 383–430 (2005)

    Article  Google Scholar 

  • Fielding, R.T., Taylor, R.N.: Principled design of the modern web architecture. ACM Trans. Internet Technol. 2, 115–150 (2002)

    Article  Google Scholar 

  • Fielding, R.T., Taylor, R.N., Erenkrantz, J.R., et al.: Reflections on the REST architectural style and “Principled design of the modern web architecture”. In: Proceedings of the 2017 11th Joint Meeting on Foundations of Software Engineering (ESEC/FSE 2017), pp. 4–14. ACM, New York, NY (2017)

    Google Scholar 

  • Freeman, P.: The central role of design in software engineering. In: Freeman, P., Wasserman, A. (eds.) Software Engineering Education, pp. 116–119. Springer, New York (1976)

    Chapter  Google Scholar 

  • Gamma, E., Helm, R., Johnson, R., Vlissides, J.: Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional, Reading, MA (1995)

    MATH  Google Scholar 

  • Garlan, D., Shaw, M.: An introduction to software architecture. In: Ambriola, V., Tortora, G. (eds.) Advances in Software Engineering and Knowledge Engineering, pp. 1–39. World Scientific Publishing Company, Singapore (1993)

    Google Scholar 

  • Jackson, M.: System Development. Prentice Hall, Englewood Cliffs, NJ (1983)

    Google Scholar 

  • Jackson, M.A.: Principles of Program Design. Academic Press, Orlando, FL (1975)

    Google Scholar 

  • Kang, K.-C., Lee, J., Donohoe, P.: Feature-oriented product line engineering. IEEE Softw. 19, 58–65 (2002)

    Article  Google Scholar 

  • Krasner, G.E., Pope, S.T.: A cookbook for using the Model-View-Controller user interface paradigm in Smalltalk-80. J. Object Orient. Program. 1, 26–49 (1988)

    Google Scholar 

  • Kruchten, P.: The 4+1 view model of architecture. IEEE Softw. 12, 42–50 (1995)

    Article  Google Scholar 

  • Marcus Vitruvius Pollio. On Architecture (De Architectura). http://penelope.uchicago.edu/Thayer/E/Roman/Texts/Vitruvius/home.html

    Google Scholar 

  • Medvidovic, N., Dashofy, E., Taylor, R.N.: Moving architectural description from under the technology lamppost. Inf. Softw. Technol. 49, 12–31 (2007)

    Article  Google Scholar 

  • Medvidovic, N., Taylor, R.N.: A classification and comparison framework for software architecture description languages. IEEE Trans. Softw. Eng. 26, 70–93 (2000)

    Article  Google Scholar 

  • Mehta, N.R., Medvidovic, N., Phadke, S.: Towards a taxonomy of software connectors. 2000 International Conference on Software Engineering, pp. 178–187. ACM Press, Limerick, IE (2000)

    Google Scholar 

  • Metzger, A., Pohl, K.: Software product line engineering and variability management: achievements and challenges. Proceedings of Future of Software Engineering, pp. 70–84. ACM, Hyderabad, India (2014)

    Google Scholar 

  • Ommering, R., Linden, F., Kramer, J., Magee, J.: The Koala component model for consumer electronics software. IEEE Comput. 33, 78–85 (2000)

    Article  Google Scholar 

  • Oreizy, P., Gorlick, M.M., Taylor, R.N., et al.: An architecture-based approach to self-adaptive software. IEEE Intell. Syst. [see also IEEE Expert]. 14, 54–62 (1999)

    Article  Google Scholar 

  • Oreizy, P., Medvidovic, N., Taylor, R.N.: Runtime software adaptation: framework, approaches, and styles. Companion of the 30th International Conference on Software Engineering, Leipzig, pp. 899–910. ACM, New York, NY (2008)

    Google Scholar 

  • Parnas, D.L.: On the criteria to be used in decomposing systems into modules. Commun. ACM. 15, 1053–1058 (1972)

    Article  Google Scholar 

  • Parnas, D.L.: On the design and development of program families. IEEE Trans. Softw. Eng. 2, 1–9 (1976)

    Article  Google Scholar 

  • Parnas, D.L.: Designing software for ease of extension and contraction. IEEE Trans. Softw. Eng. 5, 128–137 (1979)

    Article  Google Scholar 

  • Perry, D.E.: Software interconnection models. 9th International Conference on Software Engineering (ICSE), pp. 61–69. IEEE Computer Society (1987)

    Google Scholar 

  • Perry, D.E., Wolf, A.L.: Foundations for the study of software architecture. ACM SIGSOFT Softw. Eng. Notes. 17, 40–52 (1992)

    Article  Google Scholar 

  • Prieto-Diaz, R., Neighbors, J.M.: Module interconnection languages. J. Syst. Softw. 6, 307–334 (1986)

    Article  Google Scholar 

  • Roshandel, R., van der Hoek, A., Mikic-Rakic, M., Medvidovic, N.: Mae – a system model and environment for managing architectural evolution. ACM Trans. Softw. Eng. Methodol. 13, 240–276 (2004)

    Article  Google Scholar 

  • Shaw, M., DeLine, R., Klein, D.V., Ross, T.L., Young, D.M., Zelesnik, G.: Abstractions for software architecture and tools to support them. IEEE Trans. Softw. Eng. 21, 314–335 (1995)

    Article  Google Scholar 

  • Taylor, R.N., Medvidovic, N., Dashofy, E.M.: Software Architecture: Foundations, Theory, and Practice. Wiley, Hoboken, NJ (2010)

    Google Scholar 

  • Tracz, W.: DSSA (Domain-Specific Software Architecture): pedagogical example. ACM SIGSOFT Softw. Eng. Notes. 20, 49–62 (1995)

    Article  Google Scholar 

  • van der Hoek, A.: Design-Time Product Line Architectures for Any-Time Variability. Sci. Comput. Program. Spec. Issue Softw. Var. Manag. 53, 285–304 (2004)

    MathSciNet  Google Scholar 

  • van Duyne, D.K., Landay, J.A., Hong, J.I.: The Design of Sites: Patterns, Principles, and Processes for Crafting a Customer-Centered Web Experience. Addison-Wesley, Boston (2003)

    Google Scholar 

  • Wolf, A.L., Clarke, L.A., Wileden, J.C.: The AdaPIC toolset: Supporting interface control and analysis throughout the software development process. IEEE Trans. Softw. Eng. SE-15, 250–263 (1989)

    Article  Google Scholar 

  • Yourdon, E., Constantine, L.L.: Structured Design: Fundamentals of a Discipline of Computer Program and Systems Design. Prentice-Hall, Upper Saddle River, NJ (1979)

    MATH  Google Scholar 

  • Zheng, Y., Cu, C., Taylor, R.N.: Maintaining architecture-implementation conformance to support architecture centrality: from single system to product line development. ACM Trans. Softw. Eng. Methodol. 27(2), Article 8, 52 pages (2018)

    Article  Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Richard N. Taylor .

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2019 Springer Nature Switzerland AG

About this chapter

Check for updates. Verify currency and authenticity via CrossMark

Cite this chapter

Taylor, R.N. (2019). Software Architecture and Design. In: Cha, S., Taylor, R., Kang, K. (eds) Handbook of Software Engineering. Springer, Cham. https://doi.org/10.1007/978-3-030-00262-6_3

Download citation

  • DOI: https://doi.org/10.1007/978-3-030-00262-6_3

  • Published:

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-030-00261-9

  • Online ISBN: 978-3-030-00262-6

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics