索书号: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.