Preface |
|
xv | |
Acknowledgments |
|
xxv | |
Part I Overview |
|
|
|
3 | (9) |
|
|
3 | (1) |
|
1.2 Real-Time Embedded Systems and Applications |
|
|
3 | (2) |
|
1.3 Characteristics of Real-Time Embedded Systems |
|
|
5 | (2) |
|
1.4 Distributed Real-Time Embedded Systems |
|
|
7 | (2) |
|
1.5 Cyber-Physical Systems |
|
|
9 | (1) |
|
1.6 Requirements for Real-Time Software Design Method for Embedded Systems |
|
|
10 | (1) |
|
1.7 COMET/RTE: A Real-Time Software Design Method for Embedded Systems |
|
|
10 | (1) |
|
1.8 Visual Modeling Languages: UML, SysML, and MARTE |
|
|
11 | (1) |
|
|
11 | (1) |
|
2 Overview of UML, SysML, and MARTE |
|
|
12 | (20) |
|
2.1 Model-Driven Architecture with SysML and UML |
|
|
12 | (2) |
|
|
14 | (1) |
|
|
14 | (1) |
|
|
15 | (2) |
|
|
17 | (2) |
|
2.6 State Machine Diagrams |
|
|
19 | (1) |
|
|
20 | (1) |
|
2.8 Concurrent Sequence and Communication Diagrams |
|
|
20 | (3) |
|
|
23 | (1) |
|
2.10 Composite Structure Diagrams |
|
|
24 | (2) |
|
2.11 UML Extension Mechanisms and Profiles |
|
|
26 | (1) |
|
|
27 | (1) |
|
|
28 | (1) |
|
|
29 | (1) |
|
2.15 Tool Support for UML, SysML, and MARTE |
|
|
30 | (1) |
|
|
31 | (1) |
|
3 Real-Time Software Design and Architecture Concepts |
|
|
32 | (19) |
|
3.1 Object-Oriented Concepts |
|
|
32 | (2) |
|
|
34 | (2) |
|
|
36 | (1) |
|
3.4 Active and Passive Objects |
|
|
37 | (1) |
|
3.5 Concurrent Processing |
|
|
37 | (2) |
|
3.6 Cooperation between Concurrent Tasks |
|
|
39 | (3) |
|
3.7 Information Hiding Applied to Access Synchronization |
|
|
42 | (1) |
|
3.8 Runtime Support for Real-Time Concurrent Processing |
|
|
43 | (2) |
|
|
45 | (2) |
|
3.10 Software Architecture and Components |
|
|
47 | (1) |
|
|
48 | (3) |
Part II Real-Time Software Design Method |
|
|
4 Overview of Real-Time Software Design Method for Embedded Systems |
|
|
51 | (10) |
|
4.1 COMET/RTE System and Software Life Cycle model |
|
|
51 | (1) |
|
4.2 Phases in COMET/RTE Life Cycle model |
|
|
52 | (4) |
|
4.3 Comparison of the COMET/RTE Life Cycle with Other Software Processes |
|
|
56 | (1) |
|
4.4 Survey of Design Methods for Real-Time Embedded Systems |
|
|
57 | (2) |
|
4.5 Multiple Views of System and Software Architecture |
|
|
59 | (1) |
|
|
60 | (1) |
|
5 Structural Modeling for Real-Time Embedded Systems with SysML and UML |
|
|
61 | (18) |
|
5.1 Static Modeling Concepts |
|
|
62 | (4) |
|
5.2 Categorization of Blocks and Classes using Stereotypes |
|
|
66 | (1) |
|
5.3 Structural Modeling of the Problem Domain with SysML |
|
|
66 | (3) |
|
5.4 Structural Modeling of the System Context |
|
|
69 | (3) |
|
5.5 Hardware/Software Boundary Modeling |
|
|
72 | (1) |
|
5.6 Structural Modeling of the Software System Context |
|
|
72 | (4) |
|
5.7 Defining Hardware/Software Interfaces |
|
|
76 | (1) |
|
5.8 System Deployment Modeling |
|
|
77 | (1) |
|
|
78 | (1) |
|
6 Use Case Modeling for Real-Time Embedded Systems |
|
|
79 | (21) |
|
|
79 | (1) |
|
|
80 | (5) |
|
6.3 Identifying Use Cases |
|
|
85 | (2) |
|
6.4 Documenting Use Cases in the Use Case Model |
|
|
87 | (1) |
|
6.5 Specifying Nonfunctional Requirements |
|
|
88 | (1) |
|
6.6 Examples of Use Case Descriptions |
|
|
88 | (4) |
|
6.7 Use Case Relationships |
|
|
92 | (1) |
|
6.8 The Include Use Case Relationship |
|
|
92 | (2) |
|
6.9 The Extend Use Case Relationship |
|
|
94 | (4) |
|
|
98 | (1) |
|
|
99 | (1) |
|
7 State Machines for Real-Time Embedded Systems |
|
|
100 | (26) |
|
|
101 | (2) |
|
7.2 Examples of State Machine |
|
|
103 | (1) |
|
7.3 Events and Guard Conditions |
|
|
103 | (2) |
|
|
105 | (8) |
|
7.5 Hierarchical State Machines |
|
|
113 | (5) |
|
7.6 Cooperating State Machines |
|
|
118 | (1) |
|
7.7 Inherited State Machines |
|
|
119 | (2) |
|
7.8 Developing State Machines from Use Cases |
|
|
121 | (1) |
|
7.9 Example of Developing a State Machine from a Use Case |
|
|
122 | (3) |
|
|
125 | (1) |
|
8 Object and Class Structuring for Real-Time Embedded Software |
|
|
126 | (17) |
|
8.1 Object and Class Structuring Criteria |
|
|
126 | (1) |
|
8.2 Object and Class Structuring Categories |
|
|
127 | (1) |
|
8.3 Object Behavior and Patterns |
|
|
128 | (1) |
|
8.4 Boundary Classes and Objects |
|
|
129 | (7) |
|
8.5 Entity Classes and Objects |
|
|
136 | (1) |
|
8.6 Control Classes and Objects |
|
|
137 | (2) |
|
8.7 Application Logic Classes and Objects |
|
|
139 | (2) |
|
|
141 | (2) |
|
9 Dynamic Interaction Modeling for Real-Time Embedded Software |
|
|
143 | (20) |
|
9.1 Object Interaction Modeling |
|
|
144 | (1) |
|
9.2 Message Sequence Description |
|
|
145 | (1) |
|
9.3 Approach for Dynamic Interaction Modeling |
|
|
145 | (1) |
|
9.4 Stateless Dynamic Interaction Modeling |
|
|
146 | (1) |
|
9.5 Examples of Stateless Dynamic Interaction Modeling |
|
|
147 | (3) |
|
9.6 State Dependent Dynamic Interaction Modeling |
|
|
150 | (4) |
|
9.7 Example of State Dependent Dynamic Interaction Modeling: Microwave Oven System |
|
|
154 | (8) |
|
|
162 | (1) |
|
10 Software Architectures for Real-Time Embedded Systems |
|
|
163 | (21) |
|
10.1 Overview of Software Architectures |
|
|
164 | (2) |
|
10.2 Multiple Views of a Software Architecture |
|
|
166 | (4) |
|
10.3 Transition from Analysis to Design |
|
|
170 | (2) |
|
10.4 Separation of Concerns in Subsystem Design |
|
|
172 | (3) |
|
10.5 Subsystem Structuring Criteria |
|
|
175 | (6) |
|
10.6 Decisions about Message Communication between Subsystems |
|
|
181 | (2) |
|
|
183 | (1) |
|
11 Software Architectural Patterns for Real-Time Embedded Systems |
|
|
184 | (27) |
|
11.1 Software Design Patterns |
|
|
184 | (2) |
|
11.2 Layered Software Architectural Patterns |
|
|
186 | (4) |
|
11.3 Control Patterns for Real-Time Software Architectures |
|
|
190 | (4) |
|
11.4 Client/Service Software Architectural Patterns |
|
|
194 | (3) |
|
11.5 Basic Software Architectural Communication Patterns |
|
|
197 | (6) |
|
11.6 Software Architectural Broker Patterns |
|
|
203 | (3) |
|
11.7 Group Message Communication Patterns |
|
|
206 | (3) |
|
11.8 Documenting Software Architectural Patterns |
|
|
209 | (1) |
|
11.9 Applying Software Architectural Patterns |
|
|
209 | (1) |
|
|
210 | (1) |
|
12 Component-Based Software Architectures for Real-Time Embedded Systems |
|
|
211 | (22) |
|
12.1 Concepts for Component-Based Software Architectures |
|
|
212 | (1) |
|
12.2 Designing Distributed Component-Based Software Architectures |
|
|
212 | (1) |
|
12.3 Component Interface Design |
|
|
213 | (4) |
|
12.4 Designing Composite Components |
|
|
217 | (1) |
|
12.5 Examples of Component-Based Software Architecture |
|
|
218 | (3) |
|
12.6 Component Structuring Criteria |
|
|
221 | (2) |
|
12.7 Design of Service Components |
|
|
223 | (4) |
|
12.8 Distribution of Data |
|
|
227 | (1) |
|
|
228 | (1) |
|
12.10 Design of Software Connectors |
|
|
229 | (3) |
|
|
232 | (1) |
|
13 Concurrent Real-Time Software Task Design |
|
|
233 | (33) |
|
13.1 Concurrent Task Structuring Issues |
|
|
234 | (1) |
|
13.2 Categorizing Concurrent Tasks |
|
|
234 | (1) |
|
13.3 I/O Task Structuring Criteria |
|
|
235 | (7) |
|
13.4 Internal Task Structuring Criteria |
|
|
242 | (6) |
|
13.5 Task Priority Criteria |
|
|
248 | (1) |
|
13.6 Task Clustering Criteria |
|
|
249 | (7) |
|
13.7 Design Restructuring by Using Task Inversion |
|
|
256 | (1) |
|
13.8 Developing the Task Architecture |
|
|
257 | (1) |
|
13.9 Task Communication and Synchronization |
|
|
258 | (6) |
|
13.10 Task Interface and Task Behavior Specifications |
|
|
264 | (1) |
|
|
265 | (1) |
|
14 Detailed Real-Time Software Design |
|
|
266 | (31) |
|
14.1 Design of Composite Tasks |
|
|
266 | (8) |
|
14.2 Synchronization of Access to Classes |
|
|
274 | (4) |
|
|
278 | (6) |
|
14.4 Designing Connectors for Inter-Task Communication |
|
|
284 | (7) |
|
14.5 Task Event Sequencing Logic |
|
|
291 | (2) |
|
14.6 Detailed Real-Time Software Design in Robot and Vision Systems |
|
|
293 | (2) |
|
14.7 Implementing Concurrent Tasks in Java |
|
|
295 | (1) |
|
|
296 | (1) |
|
15 Designing Real-Time Software Product Line Architectures |
|
|
297 | (16) |
|
15.1 Software Product Line Engineering |
|
|
298 | (1) |
|
15.2 Problem Description of Microwave Oven SPL |
|
|
299 | (1) |
|
15.3 Requirements Modeling for Software Product Lines |
|
|
299 | (4) |
|
15.4 Analysis Modeling for Software Product Lines |
|
|
303 | (5) |
|
15.5 Design Modeling for Software Product Lines |
|
|
308 | (2) |
|
|
310 | (3) |
Part III Analysis of Real-Time Software Designs |
|
|
16 System and Software Quality Attributes for Real-Time Embedded Systems |
|
|
313 | (11) |
|
|
313 | (2) |
|
|
315 | (1) |
|
|
315 | (1) |
|
|
316 | (1) |
|
|
317 | (1) |
|
|
318 | (1) |
|
|
319 | (1) |
|
|
320 | (1) |
|
|
321 | (1) |
|
|
322 | (1) |
|
|
323 | (1) |
|
17 Performance Analysis of Real-Time Software Designs |
|
|
324 | (22) |
|
17.1 Real-Time Scheduling Theory |
|
|
325 | (5) |
|
17.2 Real-Time Scheduling for Aperiodic Tasks and Task Synchronization |
|
|
330 | (1) |
|
17.3 Generalized Real-Time Scheduling Theory |
|
|
331 | (5) |
|
17.4 Performance Analysis Using Event Sequence Analysis |
|
|
336 | (2) |
|
17.5 Performance Analysis Using Real-Time Scheduling Theory and Event Sequence Analysis |
|
|
338 | (1) |
|
17.6 Advanced Real-Time Scheduling Algorithms |
|
|
339 | (1) |
|
17.7 Performance Analysis of Multiprocessor Systems |
|
|
340 | (3) |
|
17.8 Estimation and Measurement of Performance Parameters |
|
|
343 | (2) |
|
|
345 | (1) |
|
18 Applying Performance Analysis to Real-Time Software Designs |
|
|
346 | (25) |
|
18.1 Example of Performance Analysis Using Event Sequence Analysis |
|
|
346 | (5) |
|
18.2 Example of Performance Analysis Using Real-Time Scheduling Theory |
|
|
351 | (3) |
|
18.3 Example of Performance Analysis Using Real-Time Scheduling Theory and Event Sequence Analysis |
|
|
354 | (13) |
|
18.4 Design Restructuring |
|
|
367 | (1) |
|
|
368 | (3) |
Part IV Real-Time Software Design Case Studies for Embedded Systems |
|
|
19 Microwave Oven Control System Case Study |
|
|
371 | (46) |
|
|
371 | (1) |
|
|
372 | (1) |
|
|
373 | (4) |
|
19.4 Object and Class Structuring |
|
|
377 | (2) |
|
19.5 Dynamic State Machine Modeling |
|
|
379 | (4) |
|
19.6 Dynamic Interaction Modeling |
|
|
383 | (12) |
|
|
395 | (8) |
|
19.8 Performance Analysis of Real-Time Software Design |
|
|
403 | (3) |
|
19.9 Component-Based Software Architecture |
|
|
406 | (7) |
|
19.10 Detailed Software Design |
|
|
413 | (2) |
|
19.11 System Configuration and Deployment |
|
|
415 | (2) |
|
20 Railroad Crossing Control System Case Study |
|
|
417 | (34) |
|
|
417 | (1) |
|
|
418 | (4) |
|
|
422 | (4) |
|
20.4 Dynamic State Machine Modeling |
|
|
426 | (3) |
|
20.5 Object and Class Structuring |
|
|
429 | (1) |
|
20.6 Dynamic Interaction Modeling |
|
|
429 | (6) |
|
|
435 | (6) |
|
20.8 Performance Analysis of Real-Time Software Design |
|
|
441 | (2) |
|
20.9 Component-Based Software Architecture |
|
|
443 | (7) |
|
20.10 System Configuration and Deployment |
|
|
450 | (1) |
|
21 Light Rail Control System Case Study |
|
|
451 | (49) |
|
|
451 | (1) |
|
|
452 | (3) |
|
|
455 | (9) |
|
21.4 Dynamic State Machine Modeling |
|
|
464 | (7) |
|
21.5 Subsystem Structuring |
|
|
471 | (1) |
|
21.6 Object and Class Structuring |
|
|
471 | (3) |
|
21.7 Dynamic Interaction Modeling |
|
|
474 | (12) |
|
|
486 | (1) |
|
21.9 Subsystem Integrated Communication Diagrams |
|
|
486 | (1) |
|
21.10 Design of Distributed Light Rail System |
|
|
487 | (8) |
|
21.11 Component-Based Software Architecture |
|
|
495 | (4) |
|
21.12 System Configuration and Deployment |
|
|
499 | (1) |
|
22 Pump Control System Case Study |
|
|
500 | (13) |
|
|
500 | (1) |
|
|
501 | (1) |
|
|
501 | (3) |
|
22.4 Object and Class Structuring |
|
|
504 | (1) |
|
22.5 Dynamic State Machine Modeling |
|
|
504 | (2) |
|
22.6 Dynamic Interaction Modeling |
|
|
506 | (1) |
|
|
507 | (6) |
|
23 Highway Toll Control System Case Study |
|
|
513 | (12) |
|
|
513 | (1) |
|
|
514 | (2) |
|
23.3 Software System Context Modeling |
|
|
516 | (1) |
|
23.4 Object and Class Structuring |
|
|
516 | (1) |
|
23.5 Dynamic State Machine Modeling |
|
|
517 | (1) |
|
23.6 Dynamic Interaction Modeling |
|
|
517 | (2) |
|
|
519 | (6) |
Appendix A: Conventions Used in This Textbook |
|
525 | (5) |
Appendix B: Catalog of Software Architectural Patterns |
|
530 | (21) |
Appendix C: Pseudocode Templates for Concurrent Tasks |
|
551 | (6) |
Appendix D: Teaching Considerations |
|
557 | (2) |
Glossary |
|
559 | (14) |
Bibliography |
|
573 | (8) |
Index |
|
581 | |