Software
Engineering
Modern Approaches
SECOND EDITION
Eric J. Braude
Boston University, Metropolitan College
Michael E. Bernstein
Boston University, Metropolitan College
TECHNISCHE
INFORM ATIONSBIBLIOTHEK
UNIVERSITATSBIBLIOTHEK
HANNOVER
*
'
WILEY
JOHN WILEY & SONS, INC.
Contents
Preface x'v
The Issue of Scale xiv
This Edition Compared with the First xiv
How Instructors Can Use This Book xv
Acknowledgments xvn
PART I Introduction to Software Engineering
1 The Goals and Terminology of Software Engineering 1
1.1 What is Software Engineering 2
1.2 Why Software Engineering Is Critical: Software Disasters 3
1.3 Why Software Fails or Succeeds 4
1.4 Software Engineering Activities 5
1.5 Software Engineering Principles 10
1.6 Ethics in Software Engineering 12
1.7 Case Studies 14
1.8 Summary '9
1.9 Exercises '9
Bibliography 20
2 Introduction to Quality and Metrics in Software Engineering 21
2.1 The Meaning of Software Quality 22
2.2 Defects in Software 23
2.3 Verification and Validation 25
2.4 Planning for Quality 27
2.5 Metrics 28
2.6 Summary 30
2.7 Exercises 31
Bibliography 31
PART II Software Process
3 Software Process 32
3.1 The Activities of Software Process 33
3.2 Software Process Models 37
3.3 Case Study; Student Team Guidance 55
Vi CONTENTS
3.4 Summary 59
3.5 Exercises 60
Bibliography 62
4 Agile Software Processes 63
4.1 Agile History and Agile Manifesto 64
4.2 Agile Principles 65
4.3 Agile Methods 66
4.4 Agile Processes 68
4.5 Integrating Agile with Non-Agile Processes 74
4.6 Summary 77
4.7 Exercises 78
Bibliography 79
5 Quality in the Software Process 80
5.1 Principles of Managing Quality 81
5.2 Managing Quality in Agile Processes 82
5.3 Quality Planning 83
5.4 Inspections 87
5.5 QA Reviews and Audits 92
5.6 Defect Management 93
5.7 Process Improvement and Process Metrics 96
5.8 Organization-Level Quality and the CMMI 100
5.9 Case Study.- Software Quality Assurance Plan for Encounter 103
5.10 Summary 118
5.11 Exercises 118
Bibliography 119
6 Software Configuration Management 120
6.1 Software Configuration Management Goals 121
6.2 SCM Activities 121
6.3 Configuration Management Plans 128
6.4 Configuration Management Systems 128
6.5 Case Study: Encounter Video Game 129
6.6 Case Study: Eclipse 134
6.7 Student Team Guidance: Configuration Management 136
6.8 Summary 137
6.9 Exercises 138
Bibliography 139
PART III Project Management
7 Principles of Software Project Management I: Organization, Tools, and Risk Management . 140
.
7.1 Software Project Organization 142
7.2 Team Size 144
7.3 Geographically Distributed Development 146
7.4 The Team Software Process 151
7.5 Software Project Tools and Techniques 153
CONTENTS Vii
7.6 Risk Management 159
7.7 Student Team Guidance: Organizing the Software Project's Management 162
7.8 Summary 165
7.9 Exercises '66
Bibliography 167
8 Principles of Software Project Management II: Estimation, Scheduling, and Planning 168
8.1 Cost Estimation 169
8.2 Scheduling 182
8.3 The Software Project Management Plan 185
8.4 Case Study: Encounter Project Management Plan 187
8.5 Case Study: Project Management in Eclipse 196
8.6 Case Study: Project Management for OpenOffice 205
8.7 Case Study: Student Team Guidance 208
8.8 Summary 210
8.9 Exercises 211
Bibliography 212
9 Quality and Metrics in Project Management 213
9.1 Cultivating and Planning Internal Quality 214
9.2 Project Metrics 215
9.3 Using Metrics for Improvement 219
9.4 Software Verification and Validation Plan 223
9.5 Case Study: Software Verification and Validation Plan for Encounter 225
9.6 Summary 228
9.7 Exercises 228
Bibliography 229
PART IV Requirement Analysis
10 Principles of Requirements Analysis 230
10.1 The Value of Requirements Analysis 231
10.2 Sources of Requirements 231
10.3 High-level vs. Detailed Requirements 232
10.4 Types of Requirements 233
10.5 Nonfunctional Requirements 233
10.6 Documenting Requirements 238
10.7 Traceability 239
10.8 Agile Methods and Requirements 239
10.9 Updating the Project to Reflect Requirements Analysis 241
10.10 Summary 243
10.11 Exercises 244
Bibliography 244
11 Analyzing High-Level Requirements 245
11.1 Examples of Customer Wants 246
11.2 Stakeholder Vision 247
11.3 The Interview and Documentation Process 248
Viii CONTENTS
11.4 Writing an Overview 249
11.5 Describing Main Functions and Use Cases 249
11.6 Agile Methods for High-Level Requirements 252
1 1.7 Specifying User Interfaces.- High Level 254
11.8 Security Requirements 258
11.9 Using Diagrams for High-Level Requirement 260
11.10 Case Study: High-Level Software Requirements Specification
(SRS) for the Encounter Video Came 264
11.11 Case Study: High-Level Requirements for Eclipse 268
11.12 Eclipse Platform Subproject (First of three) 269
11.13 Case Study: High-Level Requirements for OpenOffice 273
11.14 Summary 275
11.15 Exercises 275
Bibliography 276
12 Analyzing Detailed Requirements 278
12.1 The Meaning of Detailed Requirements 279
12.2 Organizing Detailed Requirements 280
12.3 User Interfaces: Detailed Requirements 291
12.4 Detailed Security Requirements 296
12.5 Error Conditions 296
12.6 Traceability of Detailed Requirements 297
12.7 Using Detailed Requirements to Manage Projects 300
12.8 Prioritizing Requirements 301
12.9 Associating Requirements with Tests 302
12.10 Agile Methods for Detailed Requirements 303
12.11 Using Tools and the Web for Requirements Analysis 305
12.12 The Effects on Projects of the Detailed Requirements Process 308
12.13 Student Project Guide: Requirements for the Encounter Case Study 309
12.14 Case Study: Detailed Requirements for the Encounter Video Game 315
12.15 Summary 328
12.16 Exercises 329
Bibliography 330
13 Quality and Metrics in Requirements Analysis 331
13.1 Quality of Requirements for Agile Projects 332
13.2 Accessibility of Requirements 332
13.3 Comprehensiveness of Requirements 333
13.4 Understandability of Requirements 335
13.5 Llnambiguity of Requirements 335
13.6 Consistency of Requirements 336
13.7 Prioritization of Requirements 337
13.8 Security and High-Level Requirements 338
13.9 Self-Completeness of Requirements 339
13.10 Testability of Requirements 340
13.11 Traceability of Requirements 342
13.12 Metrics for Requirements Analysis 343
13.13 Inspecting Detailed Requirements
13.14 Summary
13.15 Exercises
14 Formal and Emerging Methods in Requirements Analysis: An Introduction
(Online Chapter)
14.1 Provable Requirements Method
14.2 Introduction to Formal Methods
14.3 Mathematical Preliminaries
14.4 The Z-Specification Language
14.5 The B Language System
14.6 Trade-offs for Using a B-like system
14.7 Summary
14.8 Exercises
Bibliography
PART V Software Design
1 5 Principles of Software Design
15.1 The Goals of Software Design
15.2 Integrating Design Models
15.3 Frameworks
15.4 IEEE Standards for Expressing Designs
15.5 Summary
15.6 Exercises
1 6 The Unified Modeling Language
16.1 Classes in UML
16.2 Class Relationships in UML
16.3 Multiplicity
16.4 Inheritance
16.5 Sequence Diagrams
16.6 State Diagrams
16.7 Activity Diagrams
16.8 Data Flow Models
16.9 A Design Example with UML
16.10 Summary
16.11 Exercises
Bibliography
17 Software Design Patterns
17.1 Examples of
Recurring Design Purpose
a
17.2 An Introductionto Design Patterns
17.3 Summary of Design Patterns by Type: Creational,
Structural, and Behavioral
17.4 Characteristics of Design Patterns: Viewpoints, Roles, and Levels . .
17.5 Selected Creational Design Patterns
17.6 Selected Structural Design Patterns
Xii CONTENTS
24 Refactoring 601
24.1 Big Refactorings 604
24.2 Composing Methods 606
24.3 Moving Features between Objects 608
24.4 Organizing Data 609
24.5 Generalization 612
24.6 Introducing Modules 616
24.7 Refactoring in Projects 617
24.8 Summary 619
24.9 Exercises 619
Bibliography 620
PART VII Testing and Maintenance
25 Introduction to Software Testing 621
25.1 Testing Early and Often,-and the Agile Connection 622
25.2 Retesting-. Regression Testing 622
25.3 Black Box and White Box Testing 623
25.4 Unit Testing vs. Post-Unit Testing 624
25.5 Testing Object-Oriented Implementations 625
25.6 Documenting Tests 626
25.7 Test Planning 626
25.8 Testing Test Suites by Fault Injection 628
25.9 Summary 628
25.10 Exercises 629
26 Unit Testing 630
26.1 The Sources of Units for Unit Testing 631
26.2 Unit Test Methods 631
26.3 Testing Methods 642
26.4 Test-Driven Development 647
26.5 CaseStudy-. Encounter Video Game 652
26.6 Summary 662
26.7 Exercises 663
Bibliography 665
27 Module and Integration Testing 666
27.1 Stubs and Drivers 667
27.2 Testing a Class 668
27.3 Integration 672
27.4 Daily Builds 679
27.5 Interface Testing 680
27.6 Module Integration 682
27.7 Case Study: Class Test for Encounter 683
27.8 Case Study: Encounter Integration Plan 688
27.9 Summary 692
27.10 Exercises 692
Bibliography 693
CONTENTS XiN
28 Testing at the System Level 694
28.1 Functional Testing 696
28.2 Nonfunctional Testing 698
28.3 Testing with Lightweight Requirements 708
28.4 Testing Shortly Before Release 713
28.5 Case Study: Encounter Software Test Documentation 714
28.6 Case Study: Eclipse 723
28.7 Case Study: OpenOffice 726
28.8 Summary 728
28.9 Exercises 728
Bibliography 729
19 Software Maintenance 730
29.1 Types of Software Maintenance 731
29.2 Issues of Software Maintenance 734
29.3 Maintenance Process 736
29.4 IEEE Maintenance Standards 741
29.5 Software Evolution 749
29.6 Maintenance Metrics 751
29.7 Case Study 754
29.8 Summary 756
29.9 Exercises 757
Bibliography 758
Glossary 759
Index 767