1 Why Software Engineeing? 1
1.1 What Is Software Engineeing? 2
1.2 How Successful Have We Been? 5
1.3 What Is Good Software? 9
1.4 Who Does Software Engineering? 14
1.5 A Systems Approach? 16
1.6 An Engineering Approach? 21
1.7 Members of the Development Team 25
1.8 How Has Software Engineering Changed? 27
1.9 Information Systems Example 36
1.10 Real-Time Example 37
1.11 What This Chapter Means for You 39
1.14 Term Project 40
1.12 What This Chapter Means for Your Development Team 40
1.13 What This Chapter Means for Researchers 40
1.15 Key References 42
1.16 Exercises 43
2 Modeling the Process and Life Cycle 45
2.1 The Meaing of Process 45
2.2 Software Process Models 48
2.3 Tools and Techniques for Process Modeling 59
2.4 Practical Process modeling 66
2.5 Information System Example 69
2.6 Real-Time Example 71
2.9 What This Chapter Means for Researchers 72
2.8 What This Chapter Means for Your Development Team 72
2.7 What This Chapter Means for You 72
2.10 Term Project 73
2.11 Key References 75
2.12 Exercises 76
3 Planning and Managing the Project 77
3.1 Tracking Progress 77
3.2 project Personnel 90
3.3 Effort Estimation 99
3.4 Risk Management 114
3.5 The Project Plan 118
3.6 Process Models and Project Management 120
3.7 Information System Example 128
3.8 Real-Time Example 129
3.9 What This Chapter Means for You 130
3.10 What This Chapter Means for Your Development Team 131
3.11 What This Chapter Means for Researchers 131
3.12 Term Project 131
3.13 Key References 132
3.14 Exercises 133
4 Capturing the Requirements 135
4.1 The Requirements Process 136
4.2 Types of Requirements 142
4.3 Characteristics of Requirements 145
4.4 How to Express Requirements 147
4.5 Additional Requirements Notations 161
4.6 Portotyping Requirements 168
4.7 Requirements Documentation 170
4.8 Participants in the Requirements Process 173
4.9 Requirements Validation 174
4.10 Measuring Requirements 176
4.11 Choosing a Requirements Specification Technique 179
4.12 Information Systems Example 183
4.13 Real-Time Example 185
4.14 What This Chapter Means for You 186
4.15 What This Chapter Means for Your Development Team 187
4.16 What This Chapter Means for Researchers 187
4.17 Term Project 188
4.18 Key References 191
4.19 Exercises 192
5.1 Whet Is Design? 195
5 Designing the System 195
5.2 Decomposition and Modularity 198
5.3 Architectural Styles and Strategies 201
5.4 Issues in Design Creation 209
5.5 Characteristics of Good Design 220
5.6 Techniques for Improving Design 231
5.7 Design Evaluation and Validation 239
5.8 Documenting the Design 248
5.9 Information System Example 249
5.10 Real-Time Example 251
5.11 What This Chapter Means for You 252
5.12 What This Chapter Means for Your Development Team 253
5.15 Key References 254
5.13 What This Chapter Means for Researchers 254
5.14 Term Project 254
5.16 Exercises 255
6 Concerning Objects 257
6.1 What Is OO? 257
6.2 The OO Development Process 262
6.3 Use Cases 265
6.4 Representing OO:An Example Using UML 269
6.5 OO System Design 271
6.6 OO Program Design 286
6.7 OO Measurement 294
6.8 Information Systems Example 303
6.10 What This Chapter Means for You 304
6.9 Real-Time Example 304
6.11 What This Chapter Means for Your Development Team 305
6.12 What This Chapter Means for Researchers 305
6.13 Term Project 305
6.14 Key References 306
6.15 Exercises 306
7 Writing the Programs 307
7.1 Programming Standards and procedures 307
7.2 Programming Guidelines 310
7.3 Documentation 321
7.4 Information Systems Example 325
7.5 Real-Time Example 327
7.7 What This Chapter Means for Your Development Team 328
7.6 What This Chapter Means for You 328
7.8 What This Chapter Means for Researchers 329
7.9 Term Project 329
7.10 Key References 329
7.11 Exercises 330
8 Testing the Programs 331
8.1 Software Faults and Failures 331
8.2 Testing Issues 337
8.3 Unit Testing 342
8.4 Integration Testing 356
8.5 Testing Object-Oriented Systems 363
8.6 Test Planning 366
8.7 Automated Testing Tools 368
8.8 When to Stop Testing 371
8.9 Information Systems Example 376
8.10 Real-Time Example 377
8.11 What This Chapter Means for You 378
8.12 What This Chapter Means for Your Devlopmet Team 378
8.13 What This Chapter Means for Researchers 379
8.14 Term Project 379
8.15 Key References 379
8.16 Exercises 380
9 Testing the System 383
9.1 Principles of System Testing 383
9.2 Function Testing 396
9.3 Performance Testing 401
9.4 Reliability,Availability,and Maintainability 403
9.5 Acceptance Testing 412
9.6 Installation Testing 415
9.7 Automated System Testing 415
9.8 Test Documentation 417
9.9 Testing Safety-Critical Systems 427
9.10 Information Systems Example 438
9.11 Real-Time Example 440
9.12 What This Chapter Means for You 441
9.13 What This Chapter Means for Your Development Team 442
9.14 What This Chapter Means for Researchers 442
9.17 Exercises 443
9.16 Key References 443
9.15 Term Project 443
10 Delivering the System 448
10.1 Training 448
10.2 Documentation 453
10.3 Information Systems Example 460
10.4 Real-Time Example 461
10.5 What This Chapter Means for You 461
10.6 What This Chapter Means for Your Devlopmet Team 461
10.7 What This Chapter Means for Researchers 462
10.8 Term Project 462
10.9 Key References 462
10.10 Exercises 463
11.1 The Changing system 464
11 Maintaining the System 464
11.2 The Nature of Maintenance 472
11.3 Maintenance Problems 475
11.4 Measuring Maintenance characteristics 483
11.5 Maintenance Techniques and Tools 488
11.6 Software Rejuvenation 496
11.7 Information Systems Example 503
11.8 Real-Time Example 503
11.9 What This Chapter Means for You 504
11.10 What This Chapter Means for Your Development Team 505
11.11 What This Chapter Means for Researchers 505
11.12 Term Project 505
11.14 Exercises 506
11.13 Key References 506
12 Evaluating Products,Processes,and Resoarces 508
12.1 Approaches to Evaluation 508
12.2 Selecting an Evaluation Technique 513
12.3 Assessment vs.Prediction 517
12.4 Evaluating Products 522
12.5 Evaluating Processes 538
12.6 Evaluating Resources 553
12.7 Information Systems Example 558
12.8 Real-Time Example 559
12.9 What This Chapter Means for You 559
12.13 Key References 560
12.12 Term Project 560
12.11 What This Chapter Means for Researchers 560
12.10 What This Chapter Means for Your Development Team 560
12.14 Exercises 561
13 Improving Predictions,Products,Processes,and Resources 563
13.1 Improving Prediction 564
13.2 Improving Products 572
13.3 Improving processes 576
13.4 Improving Resources 584
13.5 General Improvement Guidelines 587
13.6 Information Systems Example 588
13.7 Real-Time Example 589
13.8 What This Chapter Means for You 589
13.10 What This Chapter Means for Researchers 590
13.9 What This Chapter Means for Your Development Team 590
13.11 Term Project 591
13.12 Key References 591
13.13 Exercises 591
14 The Future of Software Engineering 593
14.1 How Have We Done? 593
14.2 Technology Transfer 596
14.3 Decision-Making in Software Engineering 605
14.4 The Future of Software Engineering 617
14.5 Term Project 617
14.6 Key References 617
14.7 Exercises 618
Annotated Bibliography 619
Index 649