Springer, 2023. — 264 p. — (Undergraduate Topics in Computer Science).
This unique, accessible textbook gives a comprehensive introduction to software architecture, using ‘clean architecture’ concepts with agile methods and model-driven development.
The work introduces the key concepts of software architectures and explains the importance of architectural design for the long-term usefulness and sustainability of software systems. In addition, it describes more than 30 architectural styles and patterns that can be used for constructing mobile applications, enterprise and web applications, machine-learning systems, and safety-critical systems.
Software architecture has become recognized as a key factor in the maintainability and sustainability of software systems – poor quality architectures are likely to doom a system becoming an expensive drain on business resources, costing more and more money to maintain over time as the system structure deteriorates and hinders evolution. In contrast, the choice of a good quality and appropriate architecture can ensure that a system retains its usefulness for many years and remains open to extension and enhancement.
This book provides a comprehensive introduction to software architecture concepts and techniques, with a focus on the ‘clean architecture’ principles (Chapter 2), which are effective for a wide range of software systems.
We introduce the key concepts of software architectures in Chapter 1 and provide a ‘toolkit’ of 30 architectural styles and patterns wthatcan be used for constructing mobile apps, enterprise and web applications, Machine Learning systems, and safety-critical systems (Chapters 5 to 11).
We describe how architectural design can be applied within agile or model-driven software development processes (Chapter 3), and consider in detail the specialized issues of architecture for specific kinds of applications: mobile apps (Chapter 6), web applications, and enterprise systems (Chapters 7 and 8), service-oriented systems (Chapter 9), Machine Learning systems (Chapter 11) and safety-critical systems (Chapter 10). We also look at architecture in the context of software re-engineering and examine to what extent an improved architecture can be ‘retro-fitted’ into a legacy system (Chapter 12).
Topics and features:Combines clean-architecture principles with agile model-driven development.
Employs practical examples and real industrial cases to illustrate architectures for mobile apps, web apps, enterprise systems, safety-critical systems, and machine-learning systems.
Explores support tools for architectural design and system development using the approach.
Provides tutorial questions and slides to support teaching and learning.
Delivers material that has been class-tested over 10 years with more than 1,000 students.
The textbook can be used to support the teaching of an undergraduate module in software architecture, yet also includes more advanced topics suitable for a specialized software architecture module at the master’s level. It also will be eminently suitable and relevant for software practitioners and researchers needing or wanting to explore the field in short courses or self-study.