Preface
Part 1 Overview
Chapter 1 Introduction
1.1 FAQs about software engineering
1.2 Professional and ethical responsibility
Key Points
Further Reading
Exercises
Chapter 2 Socio-technical systems
2.1 Emergent system prperties
2.2 Systems engineering
2.3 Organisations, people and computer systems
2.4 Legacy systems
Key Points
Further Reading
Exercises
Chapter 3 Critical systems
3.1 A simple safety-critical system
3.2 System dependability
3.3 Availability and reliability
3.4 Safety
3.5 Security
Key Points
Further Reading
Exercises
Chapter 4 Software processes
4.1 Software processes models
4.2 Process iteration
4.3 Process activities
4.4 The Rational Unified Process
4.5 Computer-Aided Software Engineering
Key Points
Further Reading
Exercises
Chapter 5 Project management
5.1 Management activities
5.2 Project planning
5.3 Project scheduling
5.4 Risk management
Key Points
Further Reading
Exercises
Part 2 Requirements
Chapter 6 Software requirements
6.1 Functional and non-functional requirements
6.2 User requirements
6.3 System requirements
6.4 Interface specification
6.5 The software requirements document
Key Points
Further Reading
Exercises
Chapter 7 Requirements engineering processes
7.1 Feasibility studies
7.2 Requirements elicitation and analysis
7.3 Requirements validation
7.4 Requirements management
Key Points
Further Reading
Exercises
Chapter 8 System models
8.1 Context models
8.2 Behavioural models
8.3 Data models
8.4 Object models
8.5 Structured models
Key Points
Further Reading
Exercises
Chapter 9 Critical systems specification
9.1 Risk-driven specification
9.2 Safety specification
9.3 Security specification
9.4 Software reliability specification
Key Points
Further Reading
Exercises
Chapter 10 Formal specification
10.1 Formal specification in the software process
10.2 Sub-system interface specification
10.3 Behavioural specification
Key Points
Further Reading
Exercises
Part 3 Design
Chapter 11 Architectural Design
11.1 Architectural design decisions
11.2 System organisation
11.3 Modular decomposition styles
11.4 Control styles
11.5 Reference architectures
Key Points
Further Reading
Exercises
Chapter 12 Distributed Systems Architectures
12.1 Multiprocessor architectures
12.2 Client-server architectures
12.3 Distributed object architectures
12.4 Inter-organisational distributed computing
Key Points
Further Reading
Exercises
Chapter 13 Application Architectures
13.1 Data processing systems
13.2 Transaction processing systems
13.3 Event processing systems
13.4 Language processing systems
Key Points
Further Reading
Exercises
Chapter 14 Object-oriented Design
14.1 Objects and object classes
14.2 An object-oriented design process
14.3 Design evolution
Key Points
Further Reading
Exercises
Chapter 15 Real-Time Software Design
15.1 System design
15.2 Real-Time operating systems
15.3 Monitoring and control systems
15.4 Data acquisition systems
Key Points
Further Reading
Exercises
Chapter 16 User Interface Design
16.1 Design issues
16.2 The UI design process
16.3 User analysis
16.4 User interface prototyping
16.5 Interface evaluation
Key Points
Further Reading
Exercises
Part 4 Critical Systems
Chapter 17 Rapid Software Development
17.1 Agile methods
17.2 Extreme programming
17.3 Rapid application development
17.4 Software prototyping
Key Points
Further Reading
Exercises
Chapter 18 Software Reuse
18.1 The reuse landscape
18.2 Design patterns
18.3 Generator-based reuse
18.4 Application frameworks
18.5 Application system reuse
Key Points
Further Reading
Exercises
Chapter 19 Component-based Software Engineering
19.1 Component and component models
19.2 The CBSE process
19.3 Component composition
Key Points
Further Reading
Exercises
Chapter 20 Critical Systems Development
20.1 Dependable processes
20.2 Dependable programming
20.3 Fault tolerance
20.4 Fault-tolerant architectures
Key Points
Further Reading
Exercises
Chapter 21 Software Evolution
21.1 Program evolution' dynamics
21.2 Software maintenance
21.3 Evolution processes
21.4 Legacy system evolution
Key Points
Further Reading
Exercises
Part 5 Verification and Validation
Chapter 22 Verification and Validation
22.1 Planning verification and validation
22.2 Software inspections
22.3 Automated static analysis
22.4 Verification and formal methods
Key Points
Further Reading
Exercises
Chapter 23 Software Testing
23.1 System testing
23.2 Component testing
23.3 Test case design
23.4 Test automation
Key Points
Further Reading
Exercises
Chapter 24 Critical Systems Validation
24.1 Reliability validation
24.2 Safety assurance
24.3 Security assessment
24.4 Safety and dependability cases
Key Points
Further Reading
Exercises
Part 6 Managing People
Chapter 25 Managing People
25.1 Selecting staff
25.2 Motivating people
25.3 Managing Groups
25.4 The People Capability Maturity Model
Key Points
Further Reading
Exercises
Chapter 26 Software Cost Estimation
26.1 Software productivity
26.2 Estimation techniques
26.3 Algorithmic cost modelling
26.4 Project duration and staffing
Key Points
Further Reading
Exercises
Chapter 27 Quality Management
27.1 Process and product quality
27.2 Quality assurance and standards
27.3 Quality planning
27.4 Quality control
27.5 Software measurement and metrics
Key Points
Further Reading
Exercises
Chapter 28 Process Improvement
28.1 Process and product quality
28.2 Process classification
28.3 Process measurement
28.4 Process analysis and modelling
28.5 Process change
28.6 The CMMI process improvement framework
Key Points
Further Reading
Exercising
Chapter 29 Configuration Management
29.1 Configuration management planning
29.2 Change management
29.3 Version and release management
29.4 System building
29.5 CASE tools for configuration management
Key Points
Further Reading
Exercises
Glossary
References
Index