๐”– Scriptorium
โœฆ   LIBER   โœฆ

๐Ÿ“

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

โฌ‡  Acquire This Volume

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


Designing Software Architectures: A Prac
โœ Humberto Cervantes;Rick Kazman;; Rick Kazman ๐Ÿ“‚ Library ๐Ÿ“… 2024 ๐Ÿ› Pearson Education (US) ๐ŸŒ English

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 Prac
โœ Humberto Cervantes, Rick Kazman ๐Ÿ“‚ Library ๐Ÿ“… 2016 ๐Ÿ› Addison-Wesley Professional ๐ŸŒ English

<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: a prac
โœ Cervantes, Humberto;Kazman, Rick ๐Ÿ“‚ Library ๐Ÿ“… 2016 ๐Ÿ› Addison-Wesley ๐ŸŒ English

"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

Designing Software Architectures: A Prac
โœ Humberto Cervantes, Rick Kazman ๐Ÿ“‚ Library ๐Ÿ“… 2024 ๐Ÿ› Addison-Wesley Professional ๐ŸŒ English

<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

A Philosophy of Software Design, 2nd Edi
โœ John Ousterhout ๐Ÿ“‚ Library ๐Ÿ“… 2021 ๐Ÿ› Yaknyam Press ๐ŸŒ English

<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