Preface |
|
xiii | |
Acknowledgments |
|
xvii | |
Chapter 1 Introduction |
|
1 | (10) |
|
|
1 | (2) |
|
1.2 Software Architecture |
|
|
3 | (4) |
|
1.2.1 The Importance of Software Architecture |
|
|
3 | (1) |
|
1.2.2 Life-Cycle Activities |
|
|
4 | (3) |
|
1.3 The Role of the Architect |
|
|
7 | (1) |
|
1.4 A Brief History of ADD |
|
|
8 | (1) |
|
|
9 | (1) |
|
|
10 | (1) |
Chapter 2 Architectural Design |
|
11 | (32) |
|
|
11 | (2) |
|
2.2 Design in Software Architecture |
|
|
13 | (3) |
|
2.2.1 Architectural Design |
|
|
14 | (1) |
|
2.2.2 Element Interaction Design |
|
|
14 | (1) |
|
2.2.3 Element Internals Design |
|
|
15 | (1) |
|
2.3 Why Is Architectural Design So Important? |
|
|
16 | (1) |
|
2.4 Architectural Drivers |
|
|
17 | (11) |
|
|
18 | (1) |
|
|
19 | (6) |
|
2.4.3 Primary Functionality |
|
|
25 | (1) |
|
2.4.4 Architectural Concerns |
|
|
26 | (1) |
|
|
27 | (1) |
|
2.5 Design Concepts: The Building Blocks for Creating Structures |
|
|
28 | (10) |
|
2.5.1 Reference Architectures |
|
|
29 | (1) |
|
2.5.2 Architectural Design Patterns |
|
|
29 | (3) |
|
2.5.3 Deployment Patterns |
|
|
32 | (1) |
|
|
33 | (2) |
|
2.5.5 Externally Developed Components |
|
|
35 | (3) |
|
2.6 Architecture Design Decisions |
|
|
38 | (2) |
|
|
40 | (1) |
|
|
41 | (2) |
Chapter 3 The Architecture Design Process |
|
43 | (32) |
|
3.1 The Need for a Principled Method |
|
|
43 | (1) |
|
3.2 Attribute-Driven Design 3.0 |
|
|
44 | (5) |
|
3.2.1 Step 1: Review Inputs |
|
|
44 | (2) |
|
3.2.2 Step 2: Establish the Iteration Goal by Selecting Drivers |
|
|
46 | (1) |
|
3.2.3 Step 3: Choose One or More Elements of the System to Refine |
|
|
46 | (1) |
|
3.2.4 Step 4: Choose One or More Design Concepts That Satisfy the Selected Drivers |
|
|
47 | (1) |
|
3.2.5 Step 5: Instantiate Architectural Elements, Allocate Responsibilities, and Define Interfaces |
|
|
47 | (1) |
|
3.2.6 Step 6: Sketch Views and Record Design Decisions |
|
|
48 | (1) |
|
3.2.7 Step 7: Perform Analysis of Current Design and Review Iteration Goal and Achievement of Design Purpose |
|
|
48 | (1) |
|
3.2.8 Iterate If Necessary |
|
|
49 | (1) |
|
3.3 Following a Design Roadmap According to System Type |
|
|
49 | (4) |
|
3.3.1 Design of Greenfield Systems for Mature Domains |
|
|
50 | (2) |
|
3.3.2 Design of Greenfield Systems for Novel Domains |
|
|
52 | (1) |
|
3.3.3 Design for an Existing System (Brownfield) |
|
|
53 | (1) |
|
3.4 Identifying and Selecting Design Concepts |
|
|
53 | (5) |
|
3.4.1 Identification of Design Concepts |
|
|
54 | (1) |
|
3.4.2 Selection of Design Concepts |
|
|
55 | (3) |
|
|
58 | (3) |
|
3.5.1 Instantiating Elements |
|
|
59 | (1) |
|
3.5.2 Associating Responsibilities and Identifying Properties |
|
|
60 | (1) |
|
3.5.3 Establishing Relationships Between the Elements |
|
|
61 | (1) |
|
|
61 | (4) |
|
3.6.1 External Interfaces |
|
|
61 | (1) |
|
3.6.2 Internal Interfaces |
|
|
61 | (4) |
|
3.7 Creating Preliminary Documentation During Design |
|
|
65 | (4) |
|
3.7.1 Recording Sketches of the Views |
|
|
65 | (3) |
|
3.7.2 Recording Design Decisions |
|
|
68 | (1) |
|
3.8 Tracking Design Progress |
|
|
69 | (3) |
|
3.8.1 Use of an Architectural Backlog |
|
|
69 | (1) |
|
3.8.2 Use of a Design Kanban Board |
|
|
70 | (2) |
|
|
72 | (1) |
|
|
72 | (3) |
Chapter 4 Case Study: FCAPS System |
|
75 | (32) |
|
|
75 | (2) |
|
|
77 | (3) |
|
|
77 | (1) |
|
4.2.2 Quality Attribute Scenarios |
|
|
78 | (1) |
|
|
79 | (1) |
|
4.2.4 Architectural Concerns |
|
|
80 | (1) |
|
|
80 | (25) |
|
4.3.1 ADD Step 1: Review Inputs |
|
|
80 | (1) |
|
4.3.2 Iteration 1: Establishing an Overall System Structure |
|
|
81 | (8) |
|
4.3.3 Iteration 2: Identifying Structures to Support Primary Functionality |
|
|
89 | (12) |
|
4.3.4 Iteration 3: Addressing Quality Attribute Scenario Driver (QA-3) |
|
|
101 | (4) |
|
|
105 | (1) |
|
|
105 | (2) |
Chapter 5 Case Study: Big Data System |
|
107 | (38) |
|
|
107 | (1) |
|
|
108 | (3) |
|
|
108 | (1) |
|
5.2.2 Quality Attribute Scenarios |
|
|
109 | (1) |
|
|
110 | (1) |
|
5.2.4 Architectural Concerns |
|
|
110 | (1) |
|
|
111 | (32) |
|
5.3.1 ADD Step 1: Review Inputs |
|
|
111 | (1) |
|
5.3.2 Iteration 1: Reference Architecture and Overall System Structure |
|
|
112 | (8) |
|
5.3.3 Iteration 2: Selection of Technologies |
|
|
120 | (11) |
|
5.3.4 Iteration 3: Refinement of the Data Stream Element |
|
|
131 | (7) |
|
5.3.5 Iteration 4: Refinement of the Serving Layer |
|
|
138 | (5) |
|
|
143 | (1) |
|
|
144 | (1) |
Chapter 6 Case Study: Banking System |
|
145 | (16) |
|
|
145 | (4) |
|
|
147 | (1) |
|
6.1.2 Quality Attribute Scenarios |
|
|
148 | (1) |
|
|
148 | (1) |
|
6.1.4 Architectural Concerns |
|
|
148 | (1) |
|
6.2 Existing Architectural Documentation |
|
|
149 | (2) |
|
|
149 | (1) |
|
|
150 | (1) |
|
|
151 | (7) |
|
6.3.1 ADD Step 1: Review Inputs |
|
|
152 | (1) |
|
6.3.2 Iteration 1: Supporting the New Drivers |
|
|
152 | (6) |
|
|
158 | (1) |
|
|
159 | (2) |
Chapter 7 Other Design Methods |
|
161 | (14) |
|
7.1 A General Model of Software Architecture Design |
|
|
161 | (3) |
|
7.2 Architecture-Centric Design Method |
|
|
164 | (1) |
|
7.3 Architecture Activities in the Rational Unified Process |
|
|
165 | (2) |
|
7.4 The Process of Software Architecting |
|
|
167 | (2) |
|
7.5 A Technique for Architecture and Design |
|
|
169 | (2) |
|
7.6 Viewpoints and Perspectives Method |
|
|
171 | (2) |
|
|
173 | (1) |
|
|
174 | (1) |
Chapter 8 Analysis in the Design Process |
|
175 | (18) |
|
|
175 | (3) |
|
|
178 | (1) |
|
|
179 | (1) |
|
8.4 Tactics-Based Analysis |
|
|
180 | (6) |
|
|
186 | (1) |
|
8.6 Scenario-Based Design Reviews |
|
|
187 | (3) |
|
8.7 Architecture Description Languages |
|
|
190 | (1) |
|
|
191 | (1) |
|
|
192 | (1) |
Chapter 9 The Architecture Design Process in the Organization |
|
193 | (14) |
|
9.1 Architecture Design and the Development Life Cycle |
|
|
193 | (9) |
|
9.1.1 Architecture Design During Pre-Sales |
|
|
194 | (3) |
|
9.1.2 Architecture Design During Development and Operation |
|
|
197 | (5) |
|
9.2 Organizational Aspects |
|
|
202 | (2) |
|
9.2.1 Designing as an Individual or as a Team |
|
|
202 | (1) |
|
9.2.2 Using a Design Concepts Catalog in Your Organization |
|
|
203 | (1) |
|
|
204 | (1) |
|
|
204 | (3) |
Chapter 10 Final Words |
|
207 | (4) |
|
10.1 On the Need for Methods |
|
|
207 | (2) |
|
|
209 | (1) |
|
|
210 | (1) |
Appendix A A Design Concepts Catalog |
|
211 | (36) |
|
A.1 Reference Architectures |
|
|
211 | (10) |
|
|
212 | (2) |
|
A.1.2 Rich Client Applications |
|
|
214 | (1) |
|
A.1.3 Rich Internet Applications |
|
|
215 | (3) |
|
A.1.4 Mobile Applications |
|
|
218 | (1) |
|
A.1.5 Service Applications |
|
|
218 | (3) |
|
|
221 | (3) |
|
A.2.1 Nondistributed Deployment |
|
|
221 | (1) |
|
A.2.2 Distributed Deployment |
|
|
222 | (1) |
|
A.2.3 Performance Patterns: Load-Balanced Cluster |
|
|
223 | (1) |
|
A.3 Architectural Design Patterns |
|
|
224 | (6) |
|
A.3.1 Structural Patterns |
|
|
224 | (2) |
|
A.3.2 Interface Partitioning |
|
|
226 | (2) |
|
|
228 | (1) |
|
|
229 | (1) |
|
|
230 | (11) |
|
A.4.1 Availability Tactics |
|
|
230 | (2) |
|
A.4.2 Interoperability Tactics |
|
|
232 | (1) |
|
A.4.3 Modifiability Tactics |
|
|
233 | (2) |
|
A.4.4 Performance Tactics |
|
|
235 | (1) |
|
|
236 | (2) |
|
A.4.6 Testability Tactics |
|
|
238 | (2) |
|
|
240 | (1) |
|
A.5 Externally Developed Components |
|
|
241 | (4) |
|
|
241 | (2) |
|
|
243 | (1) |
|
A.5.3 Hibernate Framework |
|
|
244 | (1) |
|
A.5.4 Java Web Start Framework |
|
|
245 | (1) |
|
|
245 | (1) |
|
|
246 | (1) |
Appendix B Tactics-Based Questionnaires |
|
247 | (22) |
|
B.1 Using the Questionnaires |
|
|
247 | (1) |
|
|
248 | (4) |
|
|
252 | (1) |
|
|
253 | (2) |
|
|
255 | (2) |
|
|
257 | (3) |
|
|
260 | (1) |
|
|
261 | (2) |
|
|
263 | (4) |
|
|
267 | (2) |
Glossary |
|
269 | (6) |
About the Authors |
|
275 | (2) |
Index |
|
277 | |