KEY BENEFIT : This introduction to software engineering and practice addresses both procedural and object-oriented development. KEY TOPICS : Is thoroughly updated to reflect significant changes in software engineering, including modeling and agile methods. Emphasizes essential role of modeling design in software engineering. Applies concepts consistently to two common examples — a typical information system and a real-time system. Combines theory with real, practical applications by providing an abundance of case studies and examples from the current literature. MARKET : A useful reference for software engineers. Booknews A textbook designed for an undergraduate software engineering curriculum. Topics include different types of process and life- cycle models, work breakdown structure, requirements analysis, architectural issues, testing approaches and methodologies, documentation, evaluation, and prediction models. The many examples used throughout the text are chosen to reflect students' limited experience but illustrate clearly how large software development projects progress from need to idea to reality. Annotation c. by Book News, Inc., Portland, Or. Cover......Page 1 Contents......Page 8 Preface......Page 14 About the Authors......Page 24 1 Why Software Engineering?......Page 28 1.1 What Is Software Engineering?......Page 29 1.2 How Successful Have We Been?......Page 32 1.3 What Is Good Software?......Page 36 1.4 Who Does Software Engineering?......Page 41 1.5 A Systems Approach......Page 43 1.6 An Engineering Approach......Page 48 1.7 Members of the Development Team......Page 52 1.8 How Has Software Engineering Changed?......Page 54 1.9 Information Systems Example......Page 62 1.10 Real-Time Example......Page 64 1.11 What This Chapter Means for You......Page 66 1.14 Term Project......Page 67 1.15 Key References......Page 69 1.16 Exercises......Page 70 2.1 The Meaning of Process......Page 72 2.2 Software Process Models......Page 75 2.3 Tools and Techniques for Process Modeling......Page 90 2.4 Practical Process Modeling......Page 97 2.5 Information Systems Example......Page 100 2.6 Real-Time Example......Page 102 2.8 What This Chapter Means for Your Development Team......Page 103 2.11 Key References......Page 104 2.12 Exercises......Page 108 3.1 Tracking Progress......Page 109 3.2 Project Personnel......Page 122 3.3 Effort Estimation......Page 131 3.4 Risk Management......Page 146 3.5 The Project Plan......Page 150 3.6 Process Models and Project Management......Page 152 3.7 Information Systems Example......Page 160 3.8 Real-Time Example......Page 162 3.10 What This Chapter Means for Your Development Team......Page 163 3.13 Key References......Page 164 3.14 Exercises......Page 165 4 Capturing the Requirements......Page 168 4.1 The Requirements Process......Page 169 4.2 Requirements Elicitation......Page 171 4.3 Types of Requirements......Page 175 4.4 Characteristics of Requirements......Page 182 4.5 Modeling Notations......Page 183 4.6 Requirements and Specification Languages......Page 214 4.7 Prototyping Requirements......Page 218 4.8 Requirements Documentation......Page 220 4.9 Validation and Verification......Page 225 4.10 Measuring Requirements......Page 231 4.11 Choosing a Specification Technique......Page 233 4.12 Information Systems Example......Page 236 4.13 Real-Time Example......Page 238 4.14 Term Project......Page 242 4.15 Key References......Page 245 4.16 Exercises......Page 246 5.1 The Design Process......Page 250 5.3 Decomposition and Views......Page 258 5.4 Architectural Styles and Strategies......Page 262 5.5 Achieving Quality Attributes......Page 272 5.6 Collaborative Design......Page 283 5.7 Architecture Evaluation and Refinement......Page 285 5.8 Documenting Software Architectures......Page 300 5.9 Architecture Design Review......Page 303 5.10 Software Product Lines......Page 306 5.11 Information Systems Example......Page 311 5.12 Real-Time Example......Page 313 5.13 What This Chapter Means for You......Page 314 5.15 What This Chapter Means for Researchers......Page 315 5.16 Term Project......Page 316 5.18 Exercises......Page 317 6 Designing the Modules......Page 320 6.1 Design Methodology......Page 321 6.2 Design Principles......Page 322 6.3 OO Design......Page 337 6.4 Representing OO Designs in the UML......Page 348 6.5 OO Design Patterns......Page 365 6.6 Other Design Considerations......Page 375 6.7 OO Measurement......Page 380 6.8 Design Documentation......Page 390 6.9 Information Systems Example......Page 393 6.11 What This Chapter Means for You......Page 394 6.14 Term Project......Page 396 6.16 Exercises......Page 397 7.1 Programming Standards and Procedures......Page 400 7.2 Programming Guidelines......Page 403 7.3 Documentation......Page 414 7.4 The Programming Process......Page 418 7.5 Information Systems Example......Page 422 7.6 Real-Time Example......Page 423 7.7 What This Chapter Means for You......Page 424 7.10 Term Project......Page 425 7.12 Exercises......Page 426 8.1 Software Faults and Failures......Page 428 8.2 Testing Issues......Page 434 8.3 Unit Testing......Page 439 8.4 Integration Testing......Page 453 8.5 Testing Object-Oriented Systems......Page 460 8.6 Test Planning......Page 463 8.7 Automated Testing Tools......Page 465 8.8 When to Stop Testing......Page 468 8.9 Information Systems Example......Page 473 8.10 Real-Time Example......Page 474 8.12 What This Chapter Means for Your Development Team......Page 475 8.15 Key References......Page 476 8.16 Exercises......Page 477 9.1 Principles of System Testing......Page 480 9.2 Function Testing......Page 493 9.3 Performance Testing......Page 499 9.4 Reliability,Availability, and Maintainability......Page 501 9.5 Acceptance Testing......Page 510 9.7 Automated System Testing......Page 513 9.8 Test Documentation......Page 514 9.9 Testing Safety-Critical Systems......Page 525 9.10 Information Systems Example......Page 536 9.11 Real-Time Example......Page 538 9.14 What This Chapter Means for Researchers......Page 540 9.16 Key References......Page 541 9.17 Exercises......Page 542 10.1 Training......Page 546 10.2 Documentation......Page 551 10.3 Information Systems Example......Page 558 10.6 What This Chapter Means for Your Development Team......Page 559 10.10 Exercises......Page 560 11.1 The Changing System......Page 562 11.2 The Nature of Maintenance......Page 570 11.3 Maintenance Problems......Page 573 11.4 Measuring Maintenance Characteristics......Page 581 11.5 Maintenance Techniques and Tools......Page 587 11.6 Software Rejuvenation......Page 595 11.7 Information Systems Example......Page 601 11.8 Real-Time Example......Page 602 11.10 What This Chapter Means for Your Development Team......Page 603 11.13 Key References......Page 604 11.14 Exercises......Page 605 12.1 Approaches to Evaluation......Page 607 12.2 Selecting an Evaluation Technique......Page 612 12.3 Assessment vs. Prediction......Page 616 12.4 Evaluating Products......Page 622 12.5 Evaluating Processes......Page 637 12.6 Evaluating Resources......Page 653 12.7 Information Systems Example......Page 658 12.9 What This Chapter Means for You......Page 659 12.12 Term Project......Page 660 12.14 Exercises......Page 661 13.1 Improving Prediction......Page 663 13.2 Improving Products......Page 672 13.3 Improving Processes......Page 676 13.4 Improving Resources......Page 684 13.5 General Improvement Guidelines......Page 687 13.6 Information Systems Example......Page 688 13.9 What This Chapter Means for Your Development Team......Page 689 13.12 Key References......Page 690 13.13 Exercises......Page 691 14.1 How Have We Done?......Page 692 14.2 Technology Transfer......Page 695 14.3 Decision-Making in Software Engineering......Page 703 14.4 The Professionalization of Software Engineering: Licensing Certification, and Ethics......Page 716 14.6 Key References......Page 733 14.7 Exercises......Page 735 Annotated Bibliography......Page 736 C......Page 772 D......Page 774 F......Page 775 I......Page 776 M......Page 777 P......Page 778 R......Page 779 S......Page 781 T......Page 782 Z......Page 783 For introductory courses in Software Engineering. This introduction to software engineering and practice addresses both procedural and object-oriented development. The book applies concepts consistently to two common examples a typical information system and a real-time system. It combines theory with real, practical applications by providing an abundance of case studies and examples from the current literature. This revision has been thoroughly updated to reflect significant changes in software engineering, including modeling and agile methods. "This introduction to software engineering and practice addresses both procedural and object-oriented development. The book applies concepts consistently to two common examples - a typical information system and a real-time system. It combines theory with real, practical applications by providing an abundance of case studies and examples from the current literature. This revision has been thoroughly updated to reflect significant changes in software engineering, including modeling and agile methods."--Jacket Featuring an associated Web page, and consistently combining theory with real-world practical applications, this text includes thought-provoking questions about legal and ethical issues in software engineering