| |
| |
Preface | |
| |
| |
| |
Foundations | |
| |
| |
| |
Real-Time Systems--Setting the Scene | |
| |
| |
| |
Categorizing computer systems | |
| |
| |
| |
Real-time computer systems | |
| |
| |
| |
The computing elements of real-time systems | |
| |
| |
| |
Software for real-time applications--some general comments | |
| |
| |
Review | |
| |
| |
References and further reading | |
| |
| |
| |
The Search for Dependable Software | |
| |
| |
| |
What do we want in our software? | |
| |
| |
| |
Software errors | |
| |
| |
| |
The basics of good software | |
| |
| |
| |
A final comment | |
| |
| |
Review | |
| |
| |
References and further reading | |
| |
| |
| |
First Steps--Requirements Analysis and Specification | |
| |
| |
| |
The software life-cycle | |
| |
| |
| |
The importance of the requirements stage | |
| |
| |
| |
Making mistakes--sources and causes | |
| |
| |
| |
Practical approaches to analysis and specification | |
| |
| |
| |
Communication aspects--the role of prototyping | |
| |
| |
Review | |
| |
| |
Exercises | |
| |
| |
References and further reading | |
| |
| |
| |
Software and Program Design Concepts | |
| |
| |
| |
Design fundamentals | |
| |
| |
| |
The elements of modular design | |
| |
| |
| |
Program control structures--the influence of structured programming | |
| |
| |
| |
Functional structuring of software designs | |
| |
| |
| |
Object-oriented design | |
| |
| |
| |
Data flow design | |
| |
| |
Review | |
| |
| |
Exercises | |
| |
| |
References and further reading | |
| |
| |
| |
Operating Systems for Real-Time Applications | |
| |
| |
| |
Why use an operating system? | |
| |
| |
| |
Basic features of real-time operating systems | |
| |
| |
| |
Scheduling--concepts | |
| |
| |
| |
Scheduling--implementation | |
| |
| |
| |
Control of shared resources--mutual exclusion | |
| |
| |
| |
Inter-task communication | |
| |
| |
| |
Memory management | |
| |
| |
| |
Distributed systems | |
| |
| |
| |
Analysis and review of scheduling policies | |
| |
| |
Review | |
| |
| |
Exercises | |
| |
| |
References and further reading | |
| |
| |
| |
Designing and Developing Real-Time Software | |
| |
| |
| |
Practical Aspects of Real-Time Operating Systems | |
| |
| |
| |
Operating systems--basic structures and features | |
| |
| |
| |
Inter-processor communication | |
| |
| |
| |
File handling | |
| |
| |
| |
Graphical user interfaces in embedded systems | |
| |
| |
| |
Performance and benchmarking of RTOSs | |
| |
| |
| |
Development support | |
| |
| |
| |
POSIX--Portable Operating System Interface | |
| |
| |
Review | |
| |
| |
References and further reading | |
| |
| |
| |
Diagramming--An Introduction | |
| |
| |
| |
Diagrams--why? | |
| |
| |
| |
The essentials of software diagrams | |
| |
| |
Review | |
| |
| |
Exercises | |
| |
| |
References and further reading | |
| |
| |
| |
Practical Diagramming Methods | |
| |
| |
| |
Introduction | |
| |
| |
| |
Diagrams for structured and data flow designs | |
| |
| |
| |
UML diagrams for object-oriented designs | |
| |
| |
| |
Extensions, variations and project-specific diagrams | |
| |
| |
| |
Diagrams and the design process | |
| |
| |
Review | |
| |
| |
Exercises | |
| |
| |
References and further reading | |
| |
| |
| |
Designing and Constructing Software--Code-Related Issues | |
| |
| |
| |
Fundamental design and construction methods | |
| |
| |
| |
Code development and packaging | |
| |
| |
| |
Important features of programming languages | |
| |
| |
| |
Choosing a high-level language for embedded systems | |
| |
| |
Review | |
| |
| |
References and further reading | |
| |
| |
| |
Software Analysis and Design--Methods and Methodologies | |
| |
| |
| |
The development process | |
| |
| |
| |
Requirements analysis using viewpoint techniques--CORE | |
| |
| |
| |
Yourdon Structured Method | |
| |
| |
| |
Object-oriented analysis and design | |
| |
| |
Review | |
| |
| |
References and further reading | |
| |
| |
| |
Implementation and Performance Issues | |
| |
| |
| |
Analysing and Testing Source Code | |
| |
| |
| |
Introduction | |
| |
| |
| |
Static analysis | |
| |
| |
| |
Source code metrics--code size, content and complexity | |
| |
| |
| |
Dynamic analysis--testing and coverage analysis | |
| |
| |
| |
Integration testing | |
| |
| |
| |
Metrics for OO designs | |
| |
| |
Review | |
| |
| |
References and further reading | |
| |
| |
| |
Development Tools | |
| |
| |
| |
The development process | |
| |
| |
| |
Software debugging--an overview | |
| |
| |
| |
Software debugging on the host | |
| |
| |
| |
Software debugging in the target--software-based techniques | |
| |
| |
| |
Software debugging in the target--hardware-based methods | |
| |
| |
| |
Software debugging in the target--combined hardware/software techniques | |
| |
| |
| |
Debugging in host-as-target combinations | |
| |
| |
| |
In-target analysis tools | |
| |
| |
| |
Installing code into the target--non-volatile software (firmware) | |
| |
| |
| |
Integrated development environments | |
| |
| |
Review | |
| |
| |
References and further reading | |
| |
| |
| |
Mission-Critical and Safety-Critical Systems | |
| |
| |
| |
Introduction | |
| |
| |
| |
System specification aspects | |
| |
| |
| |
Numerical issues | |
| |
| |
| |
Application software aspects | |
| |
| |
| |
Real-world interfacing | |
| |
| |
| |
Operating systems aspects | |
| |
| |
| |
Processor problems | |
| |
| |
| |
Hardware-based fault tolerance | |
| |
| |
Review | |
| |
| |
References and further reading | |
| |
| |
| |
Performance Engineering | |
| |
| |
| |
Why performance engineering is important | |
| |
| |
| |
Performance engineering--requirements, targets and achievables | |
| |
| |
| |
Top-down (requirements-driven) performance modelling | |
| |
| |
| |
Bottom-up (results-driven) performance modelling | |
| |
| |
| |
Middle-out (risk-driven) performance modelling | |
| |
| |
| |
Some practical issues in performance engineering | |
| |
| |
Review | |
| |
| |
References and further reading | |
| |
| |
| |
Documentation | |
| |
| |
| |
Documentation--what and why? | |
| |
| |
| |
Software life-cycle documentation--overview | |
| |
| |
| |
System functional specifications | |
| |
| |
| |
Software system specifications | |
| |
| |
| |
Source code aspects | |
| |
| |
| |
Configuration management and version control | |
| |
| |
Review | |
| |
| |
Applicable standards | |
| |
| |
References and further reading | |
| |
| |
Glossary | |
| |
| |
Index | |