Preface |
|
xvii | |
Acknowledgments |
|
xix | |
About the Author |
|
xxi | |
|
Chapter 1 Introduction to Software Engineering Design |
|
|
1 | (34) |
|
|
1 | (1) |
|
|
1 | (1) |
|
|
2 | (1) |
|
Engineering Problem Solving |
|
|
3 | (6) |
|
|
4 | (1) |
|
|
4 | (1) |
|
Thinking about the Problem |
|
|
5 | (1) |
|
|
6 | (1) |
|
|
6 | (3) |
|
Software Engineering Design |
|
|
9 | (1) |
|
Why Study Software Engineering Design? |
|
|
10 | (1) |
|
Reasons for Studying Software Design in Product Development |
|
|
10 | (1) |
|
Reasons for Studying Software Design in Project Management |
|
|
11 | (1) |
|
Software Design Challenges |
|
|
11 | (4) |
|
Design Challenge 1 Requirements Volatility |
|
|
12 | (1) |
|
Design Challenge 2 Process |
|
|
12 | (1) |
|
Design Challenge 3 Technology |
|
|
12 | (1) |
|
Design Challenge 4 Ethical and Professional Practices |
|
|
13 | (1) |
|
Design Challenge 5 Managing Design Influences |
|
|
13 | (1) |
|
|
14 | (1) |
|
Development Organization's Structure |
|
|
14 | (1) |
|
Context of Software Design |
|
|
15 | (2) |
|
|
17 | (5) |
|
|
18 | (1) |
|
|
19 | (1) |
|
|
19 | (1) |
|
|
20 | (1) |
|
|
20 | (1) |
|
Human-Computer Interface Design |
|
|
21 | (1) |
|
Software Design Documentation |
|
|
21 | (1) |
|
Software Design Management |
|
|
21 | (1) |
|
Roles of the Software Designer |
|
|
22 | (2) |
|
|
23 | (1) |
|
|
23 | (1) |
|
|
23 | (1) |
|
Software Design Fundamentals |
|
|
24 | (8) |
|
General Software Design Principles |
|
|
24 | (1) |
|
|
25 | (1) |
|
|
25 | (1) |
|
|
26 | (1) |
|
|
27 | (1) |
|
|
28 | (1) |
|
Separation of Interface and Implementation |
|
|
29 | (1) |
|
Completeness and Sufficiency |
|
|
30 | (1) |
|
Practical Software Design Considerations |
|
|
30 | (1) |
|
Design for Minimizing Complexity |
|
|
31 | (1) |
|
|
31 | (1) |
|
Software Design Strategies |
|
|
31 | (1) |
|
|
31 | (1) |
|
|
32 | (1) |
|
|
32 | (1) |
|
|
33 | (1) |
|
|
34 | (1) |
|
Chapter 2 Software Design with Unified Modeling Language |
|
|
35 | (32) |
|
|
35 | (1) |
|
|
35 | (1) |
|
|
36 | (1) |
|
|
37 | (1) |
|
|
37 | (3) |
|
|
40 | (1) |
|
|
40 | (3) |
|
Logical versus Physical Components |
|
|
42 | (1) |
|
|
43 | (10) |
|
|
43 | (1) |
|
|
44 | (1) |
|
|
44 | (1) |
|
|
45 | (1) |
|
|
46 | (1) |
|
|
47 | (1) |
|
|
47 | (1) |
|
|
48 | (1) |
|
|
48 | (1) |
|
|
49 | (1) |
|
|
50 | (3) |
|
|
53 | (2) |
|
|
55 | (1) |
|
|
55 | (2) |
|
|
57 | (6) |
|
|
58 | (1) |
|
|
59 | (1) |
|
Concurrency in Interaction Diagrams |
|
|
59 | (4) |
|
|
63 | (1) |
|
|
63 | (1) |
|
|
64 | (1) |
|
|
65 | (2) |
|
Chapter 3 Principles of Software Architecture |
|
|
67 | (40) |
|
|
67 | (1) |
|
|
67 | (1) |
|
What Is Software Architecture? |
|
|
68 | (2) |
|
Why Study Software Architecture? |
|
|
70 | (1) |
|
Key Tasks in Architectural Design |
|
|
70 | (6) |
|
Identifying Stakeholders' Concerns |
|
|
71 | (1) |
|
Identifying Appropriate Architectural Views |
|
|
71 | (1) |
|
Identifying Architectural Styles and Patterns |
|
|
71 | (1) |
|
Identifying System Interfaces |
|
|
72 | (1) |
|
Identifying Impact of Architectural Decisions in Organization |
|
|
72 | (1) |
|
|
73 | (1) |
|
Impact on Budget and Schedule |
|
|
73 | (1) |
|
Impact from Resource Availability |
|
|
74 | (1) |
|
Identifying the System's Major Components and Interfaces |
|
|
74 | (1) |
|
Evaluating and Validating the Architecture |
|
|
74 | (1) |
|
Introducing Policies for Design Synchronicity |
|
|
75 | (1) |
|
Problem Solving in Software Architecture |
|
|
76 | (2) |
|
|
77 | (1) |
|
|
77 | (1) |
|
|
77 | (1) |
|
Software Architecture Process |
|
|
78 | (1) |
|
Understand and Evaluate Requirements |
|
|
79 | (9) |
|
|
79 | (1) |
|
|
79 | (2) |
|
|
81 | (1) |
|
|
82 | (2) |
|
Specification and Validation |
|
|
84 | (1) |
|
|
85 | (1) |
|
|
86 | (1) |
|
|
86 | (1) |
|
|
87 | (1) |
|
|
87 | (1) |
|
|
88 | (1) |
|
Designing the Architecture |
|
|
88 | (15) |
|
|
89 | (1) |
|
|
89 | (1) |
|
|
90 | (1) |
|
|
90 | (1) |
|
|
91 | (1) |
|
|
91 | (1) |
|
Components and Connectors |
|
|
92 | (1) |
|
Designing Logical Architectural Elements Using Data Flows |
|
|
92 | (1) |
|
Designing Logical Architectural Elements Using Styles and Patterns |
|
|
93 | (1) |
|
Designing the Process Architecture |
|
|
93 | (1) |
|
|
93 | (1) |
|
|
94 | (9) |
|
Evaluating the Architecture |
|
|
103 | (1) |
|
|
104 | (1) |
|
|
105 | (1) |
|
|
106 | (1) |
|
|
106 | (1) |
|
Chapter 4 Patterns and Styles in Software Architecture |
|
|
107 | (32) |
|
|
107 | (1) |
|
|
107 | (1) |
|
Architectural Styles and Patterns |
|
|
108 | (3) |
|
History of Architectural Styles and Patterns |
|
|
108 | (1) |
|
Architectural Pattern Classification |
|
|
109 | (2) |
|
|
111 | (5) |
|
|
111 | (5) |
|
|
116 | (4) |
|
|
116 | (4) |
|
|
120 | (7) |
|
|
120 | (2) |
|
|
122 | (5) |
|
|
127 | (4) |
|
Model-View-Controller Pattern |
|
|
127 | (4) |
|
|
131 | (5) |
|
Main Program and Subroutine |
|
|
131 | (2) |
|
|
133 | (3) |
|
|
136 | (1) |
|
|
136 | (1) |
|
|
137 | (1) |
|
|
137 | (2) |
|
Chapter 5 Principles of Detailed Design |
|
|
139 | (38) |
|
|
139 | (1) |
|
|
139 | (1) |
|
|
140 | (2) |
|
Key Tasks in Detailed Design |
|
|
142 | (1) |
|
|
142 | (1) |
|
Understanding the Architecture and Requirements |
|
|
143 | (1) |
|
Creating Detailed Designs |
|
|
144 | (25) |
|
|
144 | (1) |
|
External Interface Design |
|
|
144 | (1) |
|
Internal Interface Design |
|
|
145 | (1) |
|
Graphical User Interface Design |
|
|
145 | (1) |
|
Designing Internal Structure of Components |
|
|
145 | (1) |
|
|
146 | (1) |
|
Interfaces, Types, Subtypes, Dynamic Binding, and Polymorphism |
|
|
147 | (1) |
|
|
148 | (1) |
|
Design Principles for Internal Component Design |
|
|
149 | (1) |
|
|
149 | (7) |
|
Liskov Substitution Principle |
|
|
156 | (1) |
|
Interface Segregation Principle |
|
|
157 | (2) |
|
Programming Styles in Detailed Design |
|
|
159 | (1) |
|
|
160 | (2) |
|
|
162 | (2) |
|
Modeling Internal Behavior of Components |
|
|
164 | (2) |
|
Design Components Using Design Patterns |
|
|
166 | (1) |
|
Architectural versus Design Patterns |
|
|
167 | (1) |
|
Classification of Design Patterns |
|
|
167 | (1) |
|
Documenting Design Patterns |
|
|
168 | (1) |
|
Document the Software Design |
|
|
169 | (4) |
|
Interface Control Document |
|
|
171 | (1) |
|
Software Version Document |
|
|
172 | (1) |
|
Monitor and Control Implementation |
|
|
173 | (1) |
|
|
173 | (1) |
|
|
174 | (1) |
|
|
175 | (1) |
|
|
175 | (2) |
|
Chapter 6 Creational Design Patterns in Detailed Design |
|
|
177 | (38) |
|
|
177 | (1) |
|
|
177 | (1) |
|
Creational Design Patterns |
|
|
178 | (1) |
|
|
178 | (10) |
|
|
179 | (1) |
|
|
179 | (2) |
|
|
181 | (7) |
|
|
188 | (1) |
|
|
188 | (5) |
|
|
189 | (1) |
|
|
189 | (2) |
|
|
191 | (1) |
|
|
192 | (1) |
|
|
193 | (8) |
|
|
195 | (1) |
|
|
195 | (2) |
|
|
197 | (1) |
|
|
197 | (4) |
|
|
201 | (6) |
|
|
201 | (3) |
|
|
204 | (1) |
|
|
205 | (2) |
|
|
207 | (1) |
|
|
207 | (4) |
|
|
208 | (1) |
|
|
208 | (1) |
|
|
209 | (2) |
|
|
211 | (1) |
|
|
211 | (1) |
|
|
211 | (1) |
|
|
212 | (2) |
|
|
214 | (1) |
|
Chapter 7 Structural and Behavioral Patterns in Detailed Design |
|
|
215 | (44) |
|
|
215 | (1) |
|
|
215 | (1) |
|
Structural Design Patterns |
|
|
216 | (1) |
|
|
216 | (7) |
|
|
217 | (2) |
|
|
219 | (1) |
|
|
219 | (2) |
|
|
221 | (2) |
|
|
223 | (9) |
|
|
224 | (1) |
|
|
225 | (2) |
|
|
227 | (4) |
|
|
231 | (1) |
|
|
232 | (6) |
|
|
234 | (1) |
|
|
235 | (2) |
|
|
237 | (1) |
|
|
238 | (1) |
|
Behavioral Design Patterns |
|
|
238 | (1) |
|
|
238 | (14) |
|
|
239 | (2) |
|
|
241 | (4) |
|
|
245 | (6) |
|
|
251 | (1) |
|
|
252 | (4) |
|
|
252 | (1) |
|
|
252 | (2) |
|
|
254 | (1) |
|
|
254 | (2) |
|
|
256 | (1) |
|
|
256 | (1) |
|
|
257 | (1) |
|
|
258 | (1) |
|
Chapter 8 Principles of Construction Design |
|
|
259 | (34) |
|
|
259 | (1) |
|
|
259 | (1) |
|
What Is Construction Design? |
|
|
259 | (1) |
|
Why Study Construction Design? |
|
|
260 | (1) |
|
Behavioral Construction Design |
|
|
261 | (13) |
|
|
261 | (1) |
|
|
262 | (2) |
|
|
264 | (2) |
|
Limited-Entry Decision Table |
|
|
266 | (2) |
|
Extended-Entry Decision Table |
|
|
268 | (2) |
|
Mixed-Entry Decision Table |
|
|
270 | (1) |
|
|
270 | (1) |
|
Programming Design Language |
|
|
271 | (3) |
|
Software Construction Using Styles |
|
|
274 | (9) |
|
|
275 | (1) |
|
|
276 | (2) |
|
|
278 | (1) |
|
|
279 | (3) |
|
Documentation Conventions |
|
|
282 | (1) |
|
|
282 | (1) |
|
|
282 | (1) |
|
Minimizing Complexity in Construction Design |
|
|
283 | (1) |
|
Quality Evaluation of Construction Design |
|
|
284 | (6) |
|
|
285 | (1) |
|
|
286 | (1) |
|
|
286 | (4) |
|
|
290 | (1) |
|
|
290 | (1) |
|
|
291 | (1) |
|
|
292 | (1) |
|
Chapter 9 Human-Computer Interface Design |
|
|
293 | (18) |
|
|
|
293 | (1) |
|
|
293 | (1) |
|
What Is Human-Computer Interface Design? |
|
|
294 | (1) |
|
Why Study Human-Computer Interface Design? |
|
|
294 | (3) |
|
General HCI Design Principles |
|
|
297 | (2) |
|
Human-Computer Interface Design Methods |
|
|
299 | (6) |
|
|
299 | (1) |
|
|
300 | (1) |
|
|
301 | (2) |
|
|
303 | (2) |
|
|
305 | (1) |
|
Evaluation of HCI Quality |
|
|
305 | (4) |
|
|
305 | (1) |
|
|
306 | (1) |
|
|
307 | (2) |
|
|
309 | (1) |
|
|
309 | (1) |
|
|
309 | (1) |
|
|
310 | (1) |
|
Chapter 10 Software Design Management, Leadership, and Ethics |
|
|
311 | (30) |
|
|
|
311 | (1) |
|
|
311 | (1) |
|
What Is Software Design Management? |
|
|
312 | (1) |
|
Why Study Design Management? |
|
|
312 | (1) |
|
|
312 | (1) |
|
Design Management Framework |
|
|
313 | (1) |
|
|
314 | (11) |
|
|
315 | (1) |
|
|
315 | (1) |
|
|
316 | (1) |
|
|
317 | (1) |
|
Linear Responsibility Chart |
|
|
318 | (1) |
|
Scheduling with Gantt Charts and Network Diagrams |
|
|
318 | (4) |
|
Probability of Time to Completion |
|
|
322 | (2) |
|
Establish Change Control Policy |
|
|
324 | (1) |
|
|
325 | (4) |
|
|
326 | (3) |
|
|
329 | (1) |
|
Leading the Design Effort |
|
|
329 | (3) |
|
Personality Traits and Leadership |
|
|
329 | (1) |
|
|
329 | (1) |
|
Traits of Effective Leaders |
|
|
330 | (1) |
|
|
330 | (1) |
|
|
331 | (1) |
|
|
332 | (3) |
|
|
332 | (1) |
|
|
333 | (1) |
|
|
333 | (1) |
|
|
334 | (1) |
|
Ethics in Software Design |
|
|
335 | (1) |
|
Public and Product Principles |
|
|
335 | (1) |
|
|
336 | (1) |
|
|
336 | (1) |
|
|
336 | (2) |
|
|
338 | (1) |
|
|
339 | (1) |
|
|
340 | (1) |
Index |
|
341 | |