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 wellknown, 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. Costbenefit trade-offs are examined, the importance of maintaining conceptual integrity is stressed, and future directions for the field are explored.
Taylor, R. N. (2019). Software architecture and design. In Handbook of Software Engineering (pp. 93–122). Springer International Publishing. https://doi.org/10.1007/978-3-030-00262-6_3