Atnaujinkite slapukų nuostatas

El. knyga: Software Architecture in Practice

3.85/5 (722 ratings by Goodreads)
Kitos knygos pagal šią temą:
Kitos knygos pagal šią temą:

DRM apribojimai

  • Kopijuoti:

    neleidžiama

  • Spausdinti:

    neleidžiama

  • El. knygos naudojimas:

    Skaitmeninių teisių valdymas (DRM)
    Leidykla pateikė šią knygą šifruota forma, o tai reiškia, kad norint ją atrakinti ir perskaityti reikia įdiegti nemokamą programinę įrangą. Norint skaityti šią el. knygą, turite susikurti Adobe ID . Daugiau informacijos  čia. El. knygą galima atsisiųsti į 6 įrenginius (vienas vartotojas su tuo pačiu Adobe ID).

    Reikalinga programinė įranga
    Norint skaityti šią el. knygą mobiliajame įrenginyje (telefone ar planšetiniame kompiuteryje), turite įdiegti šią nemokamą programėlę: PocketBook Reader (iOS / Android)

    Norint skaityti šią el. knygą asmeniniame arba „Mac“ kompiuteryje, Jums reikalinga  Adobe Digital Editions “ (tai nemokama programa, specialiai sukurta el. knygoms. Tai nėra tas pats, kas „Adobe Reader“, kurią tikriausiai jau turite savo kompiuteryje.)

    Negalite skaityti šios el. knygos naudodami „Amazon Kindle“.

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 in uences (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.
Preface xv
Acknowledgments xvii
PART I INTRODUCTION
1(38)
Chapter 1 What is Software Architecture?
1(24)
1.1 What Software Architecture is and What It Isn't
2(3)
1.2 Architectural Structures and Views
5(14)
1.3 What Makes a "Good" Architecture?
19(2)
1.4 Summary
21(1)
1.5 For Further Reading
21(1)
1.6 Discussion Questions
22(3)
Chapter 2 Why is Software Architecture Important?
25(14)
2.1 Inhibiting or Enabling a System's Quality Attributes
26(1)
2.2 Reasoning about and Managing Change
27(1)
2.3 Predicting System Qualities
28(1)
2.4 Communication among Stakeholders
28(3)
2.5 Early Design Decisions
31(1)
2.6 Constraints on Implementation
31(1)
2.7 Influences on Organizational Structure
32(1)
2.8 Enabling Incremental Development
33(1)
2.9 Cost and Schedule Estimates
33(1)
2.10 Transferable, Reusable Model
34(1)
2.11 Architecture Allows Incorporation of Independently Developed Elements
34(1)
2.12 Restricting the Vocabulary of Design Alternatives
35(1)
2.13 A Basis for Training
36(1)
2.14 Summary
36(1)
2.15 For Further Reading
37(1)
2.16 Discussion Questions
37(2)
PART II QUALITY ATTRIBUTES
39(178)
Chapter 3 Understanding Quality Attributes
39(12)
3.1 Functionality
40(1)
3.2 Quality Attribute Considerations
41(1)
3.3 Specifying Quality Attribute Requirements: Quality Attribute Scenarios
42(3)
3.4 Achieving Quality Attributes through Architectural Patterns and Tactics
45(1)
3.5 Designing with Tactics
46(2)
3.6 Analyzing Quality Attribute Design Decisions: Tactics-Based Questionnaires
48(1)
3.7 Summary
49(1)
3.8 For Further Reading
49(1)
3.9 Discussion Questions
50(1)
Chapter 4 Availability
51(20)
4.1 Availability General Scenario
53(2)
4.2 Tactics for Availability
55(7)
4.3 Tactics-Based Questionnaire for Availability
62(4)
4.4 Patterns for Availability
66(2)
4.5 For Further Reading
68(1)
4.6 Discussion Questions
69(2)
Chapter 5 Deployability
71(18)
5.1 Continuous Deployment
72(3)
5.2 Deployability
75(1)
5.3 Deployability General Scenario
76(2)
5.4 Tactics for Deployability
78(2)
5.5 Tactics-Based Questionnaire for Deployability
80(1)
5.6 Patterns for Deployability
81(6)
5.7 For Further Reading
87(1)
5.8 Discussion Questions
87(2)
Chapter 6 Energy Efficiency
89(12)
6.1 Energy Efficiency General Scenario
90(2)
6.2 Tactics for Energy Efficiency
92(3)
6.3 Tactics-Based Questionnaire for Energy Efficiency
95(2)
6.4 Patterns
97(1)
6.5 For Further Reading
98(1)
6.6 Discussion Questions
99(2)
Chapter 7 Integrability
101(16)
7.1 Evaluating the Integrability of an Architecture
102(2)
7.2 General Scenario for Integrability
104(1)
7.3 Integrability Tactics
105(5)
7.4 Tactics-Based Questionnaire for Integrability
110(2)
7.5 Patterns
112(2)
7.6 For Further Reading
114(1)
7.7 Discussion Questions
115(2)
Chapter 8 Modifiability
117(16)
8.1 Modifiability General Scenario
120(1)
8.2 Tactics for Modifiability
121(4)
8.3 Tactics-Based Questionnaire for Modifiability
125(1)
8.4 Patterns
126(4)
8.5 For Further Reading
130(1)
8.6 Discussion Questions
131(2)
Chapter 9 Performance
133(18)
9.1 Performance General Scenario
134(3)
9.2 Tactics for Performance
137(8)
9.3 Tactics-Based Questionnaire for Performance
145(1)
9.4 Patterns for Performance
146(3)
9.5 For Further Reading
149(1)
9.6 Discussion Questions
150(1)
Chapter 10 Safety
151(18)
10.1 Safety General Scenario
154(2)
10.2 Tactics for Safety
156(4)
10.3 Tactics-Based Questionnaire for Safety
160(3)
10.4 Patterns for Safety
163(2)
10.5 For Further Reading
165(1)
10.6 Discussion Questions
166(3)
Chapter 11 Security
169(14)
11.1 Security General Scenario
170(2)
11.2 Tactics for Security
172(4)
11.3 Tactics-Based Questionnaire for Security
176(3)
11.4 Patterns for Security
179(1)
11.5 For Further Reading
180(1)
11.6 Discussion Questions
180(3)
Chapter 12 Testability
183(14)
12.1 Testability General Scenario
186(1)
12.2 Tactics for Testability
187(5)
12.3 Tactics-Based Questionnaire for Testability
192(1)
12.4 Patterns for Testability
192(2)
12.5 For Further Reading
194(1)
12.6 Discussion Questions
195(2)
Chapter 13 Usability
197(10)
13.1 Usability General Scenario
198(2)
13.2 Tactics for Usability
200(2)
13.3 Tactics-Based Questionnaire for Usability
202(1)
13.4 Patterns for Usability
203(2)
13.5 For Further Reading
205(1)
13.6 Discussion Questions
205(2)
Chapter 14 Working With Other Quality Attributes
207(10)
14.1 Other Kinds of Quality Attributes
207(2)
14.2 Using Standard Lists of Quality Attributes---Or Not
209(3)
14.3 Dealing with "X-Ability": Bringing a New QA into the Fold
212(3)
14.4 For Further Reading
215(1)
14.5 Discussion Questions
215(2)
PART III ARCHITECTURAL SOLUTIONS
217(60)
Chapter 15 Software Interfaces
217(16)
15.1 Interface Concepts
218(4)
15.2 Designing an Interface
222(6)
15.3 Documenting the Interface
228(2)
15.4 Summary
230(1)
15.5 For Further Reading
230(1)
15.6 Discussion Questions
231(2)
Chapter 16 Visualization
233(14)
16.1 Shared Resources
234(1)
16.2 Virtual Machines
235(3)
16.3 VM Images
238(1)
16.4 Containers
239(2)
16.5 Containers and VMs
241(1)
16.6 Container Portability
242(1)
16.7 Pods
242(1)
16.8 Serverless Architecture
243(1)
16.9 Summary
244(1)
16.10 For Further Reading
245(1)
16.11 Discussion Questions
245(2)
Chapter 17 The Cloud and Distributed Computing
247(16)
17.1 Cloud Basics
248(3)
17.2 Failure in the Cloud
251(2)
17.3 Using Multiple Instances to Improve Performance and Availability
253(8)
17.4 Summary
261(1)
17.5 For Further Reading
262(1)
17.6 Discussion Questions
262(1)
Chapter 18 Mobile Systems
263(14)
18.1 Energy
264(2)
18.2 Network Connectivity
266(1)
18.3 Sensors and Actuators
267(1)
18.4 Resources
268(2)
18.5 Life Cycle
270(3)
18.6 Summary
273(1)
18.7 For Further Reading
274(1)
18.8 Discussion Questions
275(2)
PART IV SCALABLE ARCHITECTURE PRACTICES
277(90)
Chapter 19 Architecturally Significant Requirements
277(12)
19.1 Gathering ASRs from Requirements Documents
278(1)
19.2 Gathering ASRs by Interviewing Stakeholders
279(3)
19.3 Gathering ASRs by Understanding the Business Goals
282(2)
19.4 Capturing ASRs in a Utility Tree
284(2)
19.5 Change Happens
286(1)
19.6 Summary
286(1)
19.7 For Further Reading
287(1)
19.8 Discussion Questions
287(2)
Chapter 20 Designing An Architecture
289(20)
20.1 Attribute-Driven Design
289(3)
20.2 The Steps of ADD
292(3)
20.3 More on ADD Step 4: Choose One or More Design Concepts
295(3)
20.4 More on ADD Step 5: Producing Structures
298(3)
20.5 More on ADD Step 6: Creating Preliminary Documentation during the Design
301(3)
20.6 More on ADD Step 7: Perform Analysis of the Current Design and Review the Iteration Goal and Achievement of the Design Purpose
304(2)
20.7 Summary
306(1)
20.8 For Further Reading
306(1)
20.9 Discussion Questions
307(2)
Chapter 21 Evaluating An Architecture
309(20)
21.1 Evaluation as a Risk Reduction Activity
309(1)
21.2 What are the Key Evaluation Activities?
310(1)
21.3 Who Can Perform the Evaluation?
311(1)
21.4 Contextual Factors
312(1)
21.5 The Architecture Tradeoff Analysis Method
313(11)
21.6 Lightweight Architecture Evaluation
324(2)
21.7 Summary
326(1)
21.8 For Further Reading
327(1)
21.9 Discussion Questions
327(2)
Chapter 22 Documenting An Architecture
329(26)
22.1 Uses and Audiences for Architecture Documentation
330(1)
22.2 Notations
331(1)
22.3 Views
332(7)
22.4 Combining Views
339(1)
22.5 Documenting Behavior
340(5)
22.6 Beyond Views
345(1)
22.7 Documenting the Rationale
346(1)
22.8 Architecture Stakeholders
347(3)
22.9 Practical Considerations
350(3)
22.10 Summary
353(1)
22.11 For Further Reading
353(1)
22.12 Discussion Questions
354(1)
Chapter 23 Managing Architecture Debt
355(12)
23.1 Determining Whether you Have an Architecture Debt Problem
356(2)
23.2 Discovering Hotspots
358(4)
23.3 Example
362(1)
23.4 Automation
363(1)
23.5 Summary
364(1)
23.6 For Further Reading
364(1)
23.7 Discussion Questions
365(2)
PART V ARCHITECTURE and the ORGANIZATION
367(24)
Chapter 24 The Role of Architects in Projects
367(12)
24.1 The Architect and the Project Manager
367(2)
24.2 Incremental Architecture and Stakeholders
369(1)
24.3 Architecture and Agile Development
370(3)
24.4 Architecture and Distributed Development
373(3)
24.5 Summary
376(1)
24.6 For Further Reading
376(1)
24.7 Discussion Questions
377(2)
Chapter 25 Architecture Competence
379(12)
25.1 Competence of Individuals: Duties, Skills, and Knowledge of Architects
379(7)
25.2 Competence of a Software Architecture Organization
386(1)
25.3 Become a Better Architect
387(1)
25.4 Summary
388(1)
25.5 For Further Reading
388(1)
25.6 Discussion Questions
389(2)
PART VI CONCLUSIONS
391(8)
Chapter 26 A Glimpse of the Future: Quantum Computing
391(8)
26.1 Single Qubit
392(2)
26.2 Quantum Teleportation
394(1)
26.3 Quantum Computing and Encryption
394(1)
26.4 Other Algorithms
395(1)
26.5 Potential Applications
396(1)
26.6 Final Thoughts
397(1)
26.7 For Further Reading
398(1)
References 399(16)
About the Authors 415(2)
Index 417
Len Bass, an award-winning author and lecturer, has more than 50 years of advanced software experience, including 25 years at Carnegie Mellon Universitys (CMU) Software Engineering Institute (SEI). He now teaches DevOps as an adjunct faculty member at CMU.

Dr. Paul Clements, VP of Customer Success with BigLever Software, helps organizations gain value from Product Line Engineering (PLE). As senior member of technical staff at SEI, he led advanced projects in PLE and software architecture.

Rick Kazman is Professor, University of Hawaii, and Visiting Researcher at SEI. His interests include software architecture, visualization, design, analysis, and economics. He co-created influential architecture analysis methods and tools, including SAAM, ATAM, CBAM, Dali, and Titan.