The new edition of this best-selling book provides a comprehensive discussion of software engineering techniques and shows how they can be applied in practical software projects. This book features new coverage of the software process and software process technology, system integration, requirements management, and risk analysis, as well as new chapters on pattern-based reuse, distributed system engineering, and legacy systems. Sommerville has incorporated a more object-oriented approach in this edition—using UML and Java—and has removed much of the material on CASE, formal methods, and Ada, making the book more in tune with current technology and practice. A new discussion of professional ethics in the introduction helps to make students aware of the responsibilities that come with engineering software. This book is appropriate for any introductory course on Software Engineering.
- Uses Java for all programming examples, and bases all design examples on UML notation.
- Includes new chapters on patter-based reuse, distributed system engineering, and legacy systems.
- Contains new coverage of the software process and software process technology, system integration, requirements management, and risk analysis.
(NOTE: Each chapter concludes with Key points, Further reading, and Exercises.)
Professional and ethical responsibility.
2. Computer-based system engineering.
Systems and their environment.
The system engineering process.
3. Software Processes.
Software design and implementation.
Automated process support.
4. Project management.
The software requirements document.
6. Requirements engineering processes.
Requirements elicitation and analysis.
7. System Models.
8. Software prototyping.
Rapid prototyping techniques.
User interface prototyping.
9. Formal Specification.
11. Distributed systems design.
Distributed object architectures.
12. Object-oriented design.
An object-oriented design process.
13. Real-time software design.
Monitoring and control systems.
Data acquisition systems.
14. Design with Reuse.
15. User interface design.
IV. CRITICAL SYSTEMS.
Availability and reliability.
17. Critical systems specification.
18. Critical systems development.
Safe system design.
V. VERIFICATION AND VALIDATION.
Automated static analysis.
Cleanroom software development.
20. Software testing.
21. Critical systems validation.
Choosing and keeping people.
The People Capability Maturity Model.
23. Software cost estimation.
Algorithmic cost modelling.
Project duration and staffing.
24. Quality management.
Software measurement and metrics.
25. Process Improvement.
Process analysis and modelling.
The SEI Process Capability Maturity Model.
Legacy system design.
Legacy system assessment.
27. Software change.
28. Software re-engineering.
Program structure improvement.
29. Configuration management.
Version and release management.
CASE tools for configuration management.