索书号:TP311.5 /V871 (2) (MIT) Software Engineering: Principles

advertisement
索书号:TP311.5 /V871 (2) (MIT)
Software Engineering: Principles and Practice
Contents
Preface
1 Introduction
1.1 What is Software Engineering?
1.2 Phases in the Development of Software
1.3 Maintenance of Evolution
1.4 From the Trenches
1.5 Software Engineering Ethics
1.6 Quo Vadis?
1.7 Summary
1.8 Further Reading
Exercises
Part 1: Software Management
2 Introduction to Software Engineering Management
2.1 Planning a Software Development Project
2.2 Controlling a Software Development Project
2.3 Summary
Exercises
3 The Software Life Cycle Revisited
3.1 The Waterfall Model
3.2 Prototyping
3.3 Incremental Development
3.4 Rapid Application Development
3.5 Intermezzo: Maintenance or Evolution
3.6 The Spiral Model
3.7 Towards a Software Factory
3.8 Process Modeling
3.9 Summary
3.10 Further Reading
Exercises
4 Configuration Management
4.1 Tasks and Responsibilities
4.2 Configuration Management Plan
4.3 Summary
4.4 Further Reading
Exercises
5 People Management and Team Organization
5.1 People Management
5.2 Team Organization
5.3 Summary
5.4 Further Reading
Exercises
6 On Managing Software Quality
6.1 On Measures and Numbers
6.2 A Taxonomy of Quality Attributes
6.3 Perspectives on Quality
6.4 The Quality System
6.5 Software Quality Assurance
6.6 The Capability Maturity Model (CMM)
6.7 Some Critical Notes
6.8 Getting Started
6.9 Summary
6.10 Further Reading
Exercises
7 Cost Estimation
7.1 How Not to Estimate Cost
7.2 Early Algorithmic Models
7.3 Later Algorithmic Models
7.4 Distribution of Manpower over Time
7.5 Summary
7.6 Further Reading
Exercises
8 Project Planning and Control
8.1 A Systems View of Project Control
8.2 A Taxonomy of Software Development Projects
8.3 Risk Management
8.4 Techniques for Project Planning and Control
8.5 Summary
8.6 Further Reading
Exercises
Part 2: The Software Life Cycle
9 Requirements Engineering
9.1 Requirements Elicitation
9.2 The Requirements Specification Document
9.3 Requirements Specification Techniques
9.4 A Modeling Framework
9.5 Verification and Validation
9.6 Summary
9.7 Further Reading
Exercises
10 Software Architecture
10.1 An Example: Producing a KWIC-Index
10.2 Architectural Styles
10.3 Design Patterns
10.4 Verification and Validation
10.5 Summary
10.6 Further Reading
Exercises
11 Software Design
11.1 Design Considerations
11.2 Design Methods
11.3 Notations that Support the Design Process
11.4 Design Documentation
11.5 Verification and Validation
11.6 Summary
11.7 Further Reading
Exercises
12 Object-Oriented Analysis and Design
12.1 On Objects and Related Stuff
12.2 Object-Oriented Analysis and Design Notations
12.3 Object-Oriented Analysis and Design Methods
12.4 Object-Oriented Metrics
12.5 Summary
12.6 Further Reading
Exercises
13 Software Testing
13.1 Test Objectives
13.2 Testing and the Software Life Cycle
13.3 Verification and Validation Planning and Documentation
13.4 Manual Test Techniques
13.5 Coverage-Based Test Techniques
13.6 Fault-Based Test Techniques
13.7 Error-Based Test Techniques
13.8 Comparison of Test Techniques
13.9 Different Test Stages
13.10 Summary
13.11 Further Reading
Exercises
14 Software Maintenance
14.1 Major Causes of Maintenance Problems
14.2 Reverse Engineering and Restructuring
14.3 Organizational and Managerial Issues
14.4 Summary
14.5 Further Reading
Exercises
Part 3: Supporting Technology
15 Formal Specification
15.1 Informal Specification Techniques
15.2 Model-Oriented Specifications
15.3 Algebraic Specifications
15.4 Specification by Pre-and Postconditions
15.5 Thor Shalt Formalize
15.6 Summary
15.7 Further Reading
Exercises
16 User Interface Design
16.1 Where Is the User Interface?
16.2 What Is the User Interface?
16.3 Human Factors in Human—Computer Interaction
16.4 The Role of Models in Human—Computer Interaction
16.5 The Design of Interactive Systems
16.6 Task Analysis
16.7 Specification of the User Interface Details
16.8 Evaluation
16.9 Summary
16.10 Further Reading
Exercises
17 Software Reusability
17.1 Reuse Dimensions
17.2 Reuse of Intermediate Products
17.3 Reuse and the Software Life Cycle
17.4 Reuse Tools and Techniques
17.5 Perspectives of Software Reuse
17.6 Non-Technical Aspects of Software Reuse
17.7 Summary
17.8 Further Reading
Exercises
18 Software Reliability
18.1 An Example: Fault-Tolerant Disks
18.2 Estimating Software Reliability
18.3 Summary
18.4 Further Reading
Exercises
19 Software Tools
19.1 Toolkits
19.2 Language-Centered Environments
19.3 Integrated Environments and Workbenches
19.4 Process-Centered Environments
19.5 Summary
19.6 Further Reading
Exercises
Appendix A: ISO 9001: Quality Systems
Appendix B: IEEE Standard 730: Software Quality Assurance Plans
Appendix C: IEEE Standard 830: Software Requirements Specifications
Appendix D: IEEE Standard 1012: Software Verification and Verification Plans
Bibliography
Index
Abstract
This book challenges the reader to appreciate the issues, design trade-offs and teamwork required for successful
software development. The second edition has been brought fully up-to-date, with complete coverage of all aspects
of the software lifecycle and a strong focus on the management skills needed to carry out software projects on time
and within budget.
Highlights of the second edition include:
●An extended chapter on requirements engineering and elicitation.
●New chapters on software architecture and object-oriented analysis and design.
●A focus chapter on user interface design.
Download