Learn how to create successful architectural designs and improve your current design practices!Designing Software Architectures, 2nd Edition, provides a practical, step-by-step methodology for architecture design that any professional software engineer can use, with structured methods supported by r
Designing Software Architectures: A Practical Approach, 2nd Edition
โ Scribed by Humberto Cervantes & Rick Kazman
- Publisher
- Independently Published
- Year
- 2024
- Tongue
- English
- Leaves
- 534
- Edition
- 2
- Category
- Library
No coin nor oath required. For personal study only.
โฆ Synopsis
It has now been nearly 8 years since the first edition of
Designing Software Architectures appeared. Much has
changed in the world of technology since then. Cloud
architectures, IoT architectures, DevOps, the rise of AI/ML,
containers, micro-services, and much more. Was our advice
from 8 years ago still relevant? Well, yes and no.
The good news, from our perspective, is that the principles
and practices of designing software architectures have not
changed in 8 years. The ADD method, which provides the
scaffolding for the entire book, did not change at all. During
this time it has been taught to thousands of practitioners
and used successfully in many industrial projects. In all this
time, the feedback has been positive and we have not had
requests to change the method. That was reassuring. What
did change, though, was the technical environment and the
contexts in which we design today.
It is rare today that someone designs a standalone system.
At the least you will be building on top of existing
frameworks and toolkits, incorporating off-the-shelf
components, some of which are likely open source. But you
may be building a system that is interacting with other
systems in real time, possibly sharing resources with them.
It is likely that you are building a system using some kind of
Agile methodology and it is also likely that your system will
be frequently modified, with regular updates and releases. It
is possible that the architectures that you build will include
IoT devices, will be mobile, will be containerized, and will be
adaptive. And it is also possible that the software you are
working with is old, and has accumulated technical debt
over the years.
โฆ Table of Contents
Cover Page
Title Page
Contents
Table of Contents
Preface
1. Introduction
1.1 Motivations
1.2 Software Architecture
1.3 The Role of the Architect
1.4 A Brief History of ADD
1.5 Summary
1.6 Further Reading
1.7 Discussion Questions
2. Architectural Design
2.1 Design in General
2.2 Design in Software Architecture
2.3 Why Is Architectural Design So Important?
2.4 Architectural Drivers
2.5 Summary
2.6 Further Reading
2.7 Discussion questions
3. Making Design Decisions
3.1 Making Design Decisions
3.2 Design Concepts: The Building Blocks for Creating Structures
3.3 Design Concepts to Support Performance
3.4 Design Concepts to Support Availability
3.5 Design Concepts to Support Modifiability
3.6 Design Concepts to Support Security
3.7 Design Concepts to Support Integrability
3.8 Summary
3.9 Further Reading
3.10 Discussion Questions
4. The Architecture Design Process
4.1 The Need for a Principled Method
4.2 Attribute-Driven Design 3.0
4.3 Applying ADD to different system contexts
4.4 Identifying and Selecting Design Concepts
4.5 Producing Structures
4.6 Defining Interfaces
4.7 Creating Preliminary Documentation During Design
4.8 Tracking Design Progress
4.9 Summary
4.10 Further Reading
4.11 Discussion Questions
5. Supporting Business Agility through API-Centric Design [This content is currently in development.]
6. Designing for Deployability
6.1 Deployability Principles and Architectural Design
6.2 Design Decisions to Support Deployability
6.3 Deployability and ADD
6.4 Summary
6.5 Further Reading
6.6 Discussion Questions
7. Designing Cloud-Based Solutions
7.1 Introduction to the cloud
7.2 Drivers and the Cloud
7.3 Cloud-Based Design Concepts
7.4 ADD in the design of cloud-based solutions
7.5 Summary
7.6 Further Reading
7.7 Discussion Questions
8. Case Study - Hotel Pricing System
8.1 Business Case
8.2 System Requirements
8.3 Development and Operations Requirements
8.4 The Software Design Process
8.5 Summary
8.6 Further Reading
8.7 Discussion questions
9. Case Study โ Digital Twin Platform
9.1 Business Case
9.2 System Requirements
9.3 The Design Process
9.4 Summary
9.5 Further Reading
10. Technical Debt in Architectural Design
10.1 Technical Debt
10.2 The Roots of Technical Debt in Design
10.3 Refactoring and Redesign
10.4 Technical Debt and ADD
10.5 Summary
10.6 Further Reading
10.7 Discussion Questions
11. Analysis in the Design Process
11.1 Analysis and design
11.2 Why Analyze?
11.3 Analysis Techniques
11.4 Tactics-based Analysis
11.5 Reflective Questions
11.6 Scenario-Based Design Reviews
11.7 Summary
11.8 Further Reading
11.9 Discussion questions
12. The Architecture Design Process in the Organization
12.1 Architecture Design and the Development Life Cycle
12.2 Architecture Design and the Organization
12.3 Summary
12.4 Further Reading
12.5 Discussion questions
13. Final Thoughts
13.1 On the Need for Methods
13.2 Future Directions
13.3 Next Steps
13.4 Further Reading
13.5 Discussion questions
Appendix A. Tactics-Based Questionnaires
A.1 Availability
A.2 Deployability
A.3 Energy Efficiency
A.4 Integrability
A.5 Modifiability
A.6 Performance
A.7 Safety
A.8 Security
A.9 Testability
A.10 Usability
A.11 Further Reading
Author Bio
๐ SIMILAR VOLUMES
<p style="margin:0px;"> <b> <i>Designing Software Architectures</i> </b> will teach you how to design any software architecture in a systematic, predictable, repeatable, and cost-effective way.</p> <p style="margin:0px;"> <br> </p> <p style="margin:0px;">This book introduces a practical methodology
"Designing Software Architectures" will teach you how to design any software architecture in a systematic, predictable, repeatable, and cost-effective way. This book introduces a practical methodology for architecture design that any professional software engineer can use, provides structured method
<p><span>Learn how to create successful architectural designs and improve your current design practices!<br> <br> </span></p><p><span>Designing Software Architectures, 2nd Edition, </span><span>provides a practical, step-by-step methodology for architecture design that any professional software engi
<span>This book addresses the topic of software design: how to decompose complex software systems into modules (such as classes and methods) that can be implemented relatively independently. The book first introduces the fundamental problem in software design, which is managing complexity. It then d