Skip to main content

Software Architecture and Design

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, access via your institution.

Buying options

Chapter
USD   29.95
Price excludes VAT (USA)
  • DOI: 10.1007/978-3-030-00262-6_3
  • Chapter length: 30 pages
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
eBook
USD   169.00
Price excludes VAT (USA)
  • ISBN: 978-3-030-00262-6
  • Instant PDF download
  • Readable on all devices
  • Own it forever
  • Exclusive offer for individuals only
  • Tax calculation will be finalised during checkout
Hardcover Book
USD   219.99
Price excludes VAT (USA)

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)

    CrossRef  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)

    CrossRef  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)

    MathSciNet  CrossRef  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)

    CrossRef  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)

    CrossRef  Google Scholar 

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

    CrossRef  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)

    CrossRef  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)

    CrossRef  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)

    CrossRef  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)

    CrossRef  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)

    CrossRef  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)

    CrossRef  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)

    CrossRef  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)

    CrossRef  Google Scholar 

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

    CrossRef  Google Scholar 

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

    CrossRef  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)

    CrossRef  Google Scholar 

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

    CrossRef  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)

    CrossRef  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)

    CrossRef  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)

    CrossRef  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)

    CrossRef  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)

    CrossRef  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

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)