Software Architecture in Practice

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

The Definitive, Practical, Proven Guide to Architecting Modern Software--Fully Updated with New Content on Mobility, the Cloud, Energy Management, DevOps, Quantum Computing, and More

Updated with eleven new chapters,
Software Architecture in Practice, Fourth Edition, thoroughly explains what software architecture is, why it's important, and how to design, instantiate, analyze, evolve, and manage it in disciplined and effective ways.

Three renowned software architects cover the entire lifecycle, presenting practical guidance, expert methods, and tested models for use in any project, no matter how complex. You'll learn how to use architecture to address accelerating growth in requirements, system size, and abstraction, and to manage emergent quality attributes as systems are dynamically combined in new ways.

With insights for utilizing architecture to optimize key quality attributes--including performance, modifiability, security, availability, interoperability, testability, usability, deployability, and more--this guide explains how to manage and refine existing architectures, transform them to solve new problems, and build reusable architectures that become strategic business assets.
  • Discover how architecture influences (and is influenced by) technical environments, project lifecycles, business profiles, and your own practices
  • Leverage proven patterns, interfaces, and practices for optimizing quality through architecture
  • Architect for mobility, the cloud, machine learning, and quantum computing
  • Design for increasingly crucial attributes such as energy efficiency and safety
  • Scale systems by discovering architecturally significant influences, using DevOps and deployment pipelines, and managing architecture debt
  • Understand architecture's role in the organization, so you can deliver more value
Register your book for convenient access to downloads, updates, and/or corrections as they become available. See inside book for details.

Author(s): Len Bass, Paul Clements, Rick Kazman
Series: SEI Series in Software Engineering
Edition: 4
Publisher: Addison-Wesley Professional
Year: 2021

Language: English
Pages: 464
Tags: Software Architecture; Continuous Deployment; Integrability; Scalable Software Architecture; Architecture Organization

Preface

Acknowledgments

PART I INTRODUCTION

CHAPTER 1 What Is Software Architecture?

1.1 What Software Architecture Is and What It Isn’t

1.2 Architectural Structures and Views

1.3 What Makes a “Good” Architecture?

1.4 Summary

1.5 For Further Reading

1.6 Discussion Questions

CHAPTER 2 Why Is Software Architecture Important?

2.1 Inhibiting or Enabling a System’s Quality Attributes

2.2 Reasoning about and Managing Change

2.3 Predicting System Qualities

2.4 Communication among Stakeholders

2.5 Early Design Decisions

2.6 Constraints on Implementation

2.7 Influences on Organizational Structure

2.8 Enabling Incremental Development

2.9 Cost and Schedule Estimates

2.10 Transferable, Reusable Model

2.11 Architecture Allows Incorporation of Independently Developed Elements

2.12 Restricting the Vocabulary of Design Alternatives

2.13 A Basis for Training

2.14 Summary

2.15 For Further Reading

2.16 Discussion Questions

PART II QUALITY ATTRIBUTES

CHAPTER 3 Understanding Quality Attributes

3.1 Functionality

3.2 Quality Attribute Considerations

3.3 Specifying Quality Attribute Requirements: Quality Attribute Scenarios

3.4 Achieving Quality Attributes through Architectural Patterns and Tactics

3.5 Designing with Tactics

3.6 Analyzing Quality Attribute Design Decisions: Tactics-Based Questionnaires

3.7 Summary

3.8 For Further Reading

3.9 Discussion Questions

CHAPTER 4 Availability

4.1 Availability General Scenario

4.2 Tactics for Availability

4.3 Tactics-Based Questionnaire for Availability

4.4 Patterns for Availability

4.5 For Further Reading

4.6 Discussion Questions

CHAPTER 5 Deployability

5.1 Continuous Deployment

5.2 Deployability

5.3 Deployability General Scenario

5.4 Tactics for Deployability

5.5 Tactics-Based Questionnaire for Deployability

5.6 Patterns for Deployability

5.7 For Further Reading

5.8 Discussion Questions

CHAPTER 6 Energy Efficiency

6.1 Energy Efficiency General Scenario

6.2 Tactics for Energy Efficiency

6.3 Tactics-Based Questionnaire for Energy Efficiency

6.4 Patterns

6.5 For Further Reading

6.6 Discussion Questions

CHAPTER 7 Integrability

7.1 Evaluating the Integrability of an Architecture

7.2 General Scenario for Integrability

7.3 Integrability Tactics

7.4 Tactics-Based Questionnaire for Integrability

7.5 Patterns

7.6 For Further Reading

7.7 Discussion Questions

CHAPTER 8 Modifiability

8.1 Modifiability General Scenario

8.2 Tactics for Modifiability

8.3 Tactics-Based Questionnaire for Modifiability

8.4 Patterns

8.5 For Further Reading

8.6 Discussion Questions

CHAPTER 9 Performance

9.1 Performance General Scenario

9.2 Tactics for Performance

9.3 Tactics-Based Questionnaire for Performance

9.4 Patterns for Performance

9.5 For Further Reading

9.6 Discussion Questions

CHAPTER 10 Safety

10.1 Safety General Scenario

10.2 Tactics for Safety

10.3 Tactics-Based Questionnaire for Safety

10.4 Patterns for Safety

10.5 For Further Reading

10.6 Discussion Questions

CHAPTER 11 Security

11.1 Security General Scenario

11.2 Tactics for Security

11.3 Tactics-Based Questionnaire for Security

11.4 Patterns for Security

11.5 For Further Reading

11.6 Discussion Questions

CHAPTER 12 Testability

12.1 Testability General Scenario

12.2 Tactics for Testability

12.3 Tactics-Based Questionnaire for Testability

12.4 Patterns for Testability

12.5 For Further Reading

12.6 Discussion Questions

CHAPTER 13 Usability

13.1 Usability General Scenario

13.2 Tactics for Usability

13.3 Tactics-Based Questionnaire for Usability

13.4 Patterns for Usability

13.5 For Further Reading

13.6 Discussion Questions

CHAPTER 14 Working with Other Quality Attributes

14.1 Other Kinds of Quality Attributes

14.2 Using Standard Lists of Quality Attributes—Or Not

14.3 Dealing with “X-Ability”: Bringing a New QA into the Fold

14.4 For Further Reading

14.5 Discussion Questions

PART III ARCHITECTURAL SOLUTIONS

CHAPTER 15 Software Interfaces

15.1 Interface Concepts

15.2 Designing an Interface

15.3 Documenting the Interface

15.4 Summary

15.5 For Further Reading

15.6 Discussion Questions

CHAPTER 16 Virtualization

16.1 Shared Resources

16.2 Virtual Machines

16.3 VM Images

16.4 Containers

16.5 Containers and VMs

16.6 Container Portability

16.7 Pods

16.8 Serverless Architecture

16.9 Summary

16.10 For Further Reading

16.11 Discussion Questions

CHAPTER 17 The Cloud and Distributed Computing

17.1 Cloud Basics

17.2 Failure in the Cloud

17.3 Using Multiple Instances to Improve Performance and Availability

17.4 Summary

17.5 For Further Reading

17.6 Discussion Questions

CHAPTER 18 Mobile Systems

18.1 Energy

18.2 Network Connectivity

18.3 Sensors and Actuators

18.4 Resources

18.5 Life Cycle

18.6 Summary

18.7 For Further Reading

18.8 Discussion Questions

PART IV SCALABLE ARCHITECTURE PRACTICES

CHAPTER 19 Architecturally Significant Requirements

19.1 Gathering ASRs from Requirements Documents

19.2 Gathering ASRs by Interviewing Stakeholders

19.3 Gathering ASRs by Understanding the Business Goals

19.4 Capturing ASRs in a Utility Tree

19.5 Change Happens

19.6 Summary

19.7 For Further Reading

19.8 Discussion Questions

CHAPTER 20 Designing an Architecture

20.1 Attribute-Driven Design

20.2 The Steps of ADD

20.3 More on ADD Step 4: Choose One or More Design Concepts

20.4 More on ADD Step 5: Producing Structures

20.5 More on ADD Step 6: Creating Preliminary Documentation during the Design

20.6 More on ADD Step 7: Perform Analysis of the Current Design and Review the Iteration Goal and Achievement of the Design Purpose

20.7 Summary

20.8 For Further Reading

20.9 Discussion Questions

CHAPTER 21 Evaluating an Architecture

21.1 Evaluation as a Risk Reduction Activity

21.2 What Are the Key Evaluation Activities?

21.3 Who Can Perform the Evaluation?

21.4 Contextual Factors

21.5 The Architecture Tradeoff Analysis Method

21.6 Lightweight Architecture Evaluation

21.7 Summary

21.8 For Further Reading

21.9 Discussion Questions

CHAPTER 22 Documenting an Architecture

22.1 Uses and Audiences for Architecture Documentation

22.2 Notations

22.3 Views

22.4 Combining Views

22.5 Documenting Behavior

22.6 Beyond Views

22.7 Documenting the Rationale

22.8 Architecture Stakeholders

22.9 Practical Considerations

22.10 Summary

22.11 For Further Reading

22.12 Discussion Questions

CHAPTER 23 Managing Architecture Debt

23.1 Determining Whether You Have an Architecture Debt Problem

23.2 Discovering Hotspots

23.3 Example

23.4 Automation

23.5 Summary

23.6 For Further Reading

23.7 Discussion Questions

PART V ARCHITECTURE AND THE ORGANIZATION

CHAPTER 24 The Role of Architects in Projects

24.1 The Architect and the Project Manager

24.2 Incremental Architecture and Stakeholders

24.3 Architecture and Agile Development

24.4 Architecture and Distributed Development

24.5 Summary

24.6 For Further Reading

24.7 Discussion Questions

CHAPTER 25 Architecture Competence

25.1 Competence of Individuals: Duties, Skills, and Knowledge of Architects

25.2 Competence of a Software Architecture Organization

25.3 Become a Better Architect

25.4 Summary

25.5 For Further Reading

25.6 Discussion Questions

PART VI CONCLUSIONS

CHAPTER 26 A Glimpse of the Future: Quantum Computing

26.1 Single Qubit

26.2 Quantum Teleportation

26.3 Quantum Computing and Encryption

26.4 Other Algorithms

26.5 Potential Applications

26.6 Final Thoughts

26.7 For Further Reading

References

About the Authors

Index