| |
| |
Preface | |
| |
| |
| |
Overview | |
| |
| |
| |
Introduction | |
| |
| |
| |
FAQs about software engineering | |
| |
| |
| |
Professional and ethical responsibility | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Socio-technical systems | |
| |
| |
| |
Emergent system properties | |
| |
| |
| |
Systems engineering | |
| |
| |
| |
Organisations, people and computer systems | |
| |
| |
| |
Legacy systems | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Critical systems | |
| |
| |
| |
A simple safety-critical system | |
| |
| |
| |
System dependability | |
| |
| |
| |
Availability and reliability | |
| |
| |
| |
Safety | |
| |
| |
| |
Security | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Software processes | |
| |
| |
| |
Software process models | |
| |
| |
| |
Process iteration | |
| |
| |
| |
Process activities | |
| |
| |
| |
The Rational Unified Process | |
| |
| |
| |
Computer-Aided Software Engineering | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Project management | |
| |
| |
| |
Management activities | |
| |
| |
| |
Project planning | |
| |
| |
| |
Project scheduling | |
| |
| |
| |
Risk management | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Requirements | |
| |
| |
| |
Software requirements | |
| |
| |
| |
Functional and non-functional requirements | |
| |
| |
| |
User requirements | |
| |
| |
| |
System requirements | |
| |
| |
| |
Interface specification | |
| |
| |
| |
The software requirements document | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Requirements engineering processes | |
| |
| |
| |
Feasibility studies | |
| |
| |
| |
Requirements elicitation and analysis | |
| |
| |
| |
Requirements validation | |
| |
| |
| |
Requirements management | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
System models | |
| |
| |
| |
Context models | |
| |
| |
| |
Behavioural models | |
| |
| |
| |
Data models | |
| |
| |
| |
Object models | |
| |
| |
| |
Structured methods | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Critical systems specification | |
| |
| |
| |
Risk-driven specification | |
| |
| |
| |
Safety specification | |
| |
| |
| |
Security specification | |
| |
| |
| |
Software reliability specification | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Formal specification | |
| |
| |
| |
Formal specification in the software process | |
| |
| |
| |
Sub-system interface specification | |
| |
| |
| |
Behavioural specification | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Design | |
| |
| |
| |
Architectural design | |
| |
| |
| |
Architectural design decisions | |
| |
| |
| |
System organisation | |
| |
| |
| |
Modular decomposition styles | |
| |
| |
| |
Control styles | |
| |
| |
| |
Reference architectures | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Distributed systems architectures | |
| |
| |
| |
Multiprocessor architectures | |
| |
| |
| |
Client-server architectures | |
| |
| |
| |
Distributed object architectures | |
| |
| |
| |
Inter-organisational distributed computing | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Application architectures | |
| |
| |
| |
Data processing systems | |
| |
| |
| |
Transaction processing systems | |
| |
| |
| |
Event processing systems | |
| |
| |
| |
Language processing systems | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Object-oriented design | |
| |
| |
| |
Objects and object classes | |
| |
| |
| |
An object-oriented design process | |
| |
| |
| |
Design evolution | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Real-time software design | |
| |
| |
| |
System design | |
| |
| |
| |
Real-time operating systems | |
| |
| |
| |
Monitoring and control systems | |
| |
| |
| |
Data acquisition systems | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
User interface design | |
| |
| |
| |
Design issues | |
| |
| |
| |
The UI design process | |
| |
| |
| |
User analysis | |
| |
| |
| |
User interface prototyping | |
| |
| |
| |
Interface evaluation | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Development | |
| |
| |
| |
Rapid software development | |
| |
| |
| |
Agile methods | |
| |
| |
| |
Extreme programming | |
| |
| |
| |
Rapid application development | |
| |
| |
| |
Software prototyping | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Software reuse | |
| |
| |
| |
The reuse landscape | |
| |
| |
| |
Design patterns | |
| |
| |
| |
Generator-based reuse | |
| |
| |
| |
Application frameworks | |
| |
| |
| |
Application system reuse | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Component-based software engineering | |
| |
| |
| |
Components and component models | |
| |
| |
| |
The CBSE process | |
| |
| |
| |
Component composition | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Critical systems development | |
| |
| |
| |
Dependable processes | |
| |
| |
| |
Dependable programming | |
| |
| |
| |
Fault tolerance | |
| |
| |
| |
Fault-tolerant architectures | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Software evolution | |
| |
| |
| |
Program evolution dynamics | |
| |
| |
| |
Software maintenance | |
| |
| |
| |
Evolution processes | |
| |
| |
| |
Legacy system evolution | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Verification and Validation | |
| |
| |
| |
Verification and validation | |
| |
| |
| |
Planning verification and validation | |
| |
| |
| |
Software inspections | |
| |
| |
| |
Automated static analysis | |
| |
| |
| |
Verification and formal methods | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Software testing | |
| |
| |
| |
System testing | |
| |
| |
| |
Component testing | |
| |
| |
| |
Test case design | |
| |
| |
| |
Test automation | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Critical systems validation | |
| |
| |
| |
Reliability validation | |
| |
| |
| |
Safety assurance | |
| |
| |
| |
Security assessment | |
| |
| |
| |
Safety and dependability cases | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Management | |
| |
| |
| |
Managing people | |
| |
| |
| |
Selecting staff | |
| |
| |
| |
Motivating people | |
| |
| |
| |
Managing groups | |
| |
| |
| |
The People Capability Maturity Model | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Software cost estimation | |
| |
| |
| |
Software productivity | |
| |
| |
| |
Estimation techniques | |
| |
| |
| |
Algorithmic cost modelling | |
| |
| |
| |
Project duration and staffing | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Quality management | |
| |
| |
| |
Process and product quality | |
| |
| |
| |
Quality assurance and standards | |
| |
| |
| |
Quality planning | |
| |
| |
| |
Quality control | |
| |
| |
| |
Software measurement and metrics | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Process improvement | |
| |
| |
| |
Process and product quality | |
| |
| |
| |
Process classification | |
| |
| |
| |
Process measurement | |
| |
| |
| |
Process analysis and modelling | |
| |
| |
| |
Process change | |
| |
| |
| |
The CMMI process improvement framework | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Configuration management | |
| |
| |
| |
Configuration management planning | |
| |
| |
| |
Change management | |
| |
| |
| |
Version and release management | |
| |
| |
| |
System building | |
| |
| |
| |
CASE tools for configuration management | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Emerging Technologies | |
| |
| |
| |
Security engineering | |
| |
| |
| |
Security concepts | |
| |
| |
| |
Security risk management | |
| |
| |
| |
Design for security | |
| |
| |
| |
System survivability | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Service-oriented software engineering | |
| |
| |
| |
Services as reusable components | |
| |
| |
| |
Service engineering | |
| |
| |
| |
Software development with services | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
| |
Aspect-oriented software development | |
| |
| |
| |
The separation of concerns | |
| |
| |
| |
Aspects, join points and pointcuts | |
| |
| |
| |
Software engineering with aspects | |
| |
| |
Key Points | |
| |
| |
Further Reading | |
| |
| |
Exercises | |
| |
| |
Glossary | |
| |
| |
References | |
| |
| |
Index | |