Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8

Software Engineering A Practitioners Approach CHAPTER 1 1.1 THE PRODUCT 3 The Evolving Role of Software 4 1.1.

.1 An Industry Perspective 7 1.1.2 An Aging Software Plant 8 1.1.3 Software Competitiveness 9 Software 9 1.2.1 Software Characteristics 10 1.2.2 Software Components 13 1.2.3 Software Applications 14 Software: A Crisis on the Horizon? 16 Software Myths 17 Summary 19 REFERENCES 19 THE PROCESS 22

Fourth Edition

1.2

1.3 1.4 1.5

CHAPTER 2 2.1

2.2 2.3 2.4 2.5 2.6 2.7

2.8 2.9 2.10 2.11 2.12

Software Engineering: A Layered Technology 22 2.1.1 Process, Methods, and Tools 23 2.1.2 A Generic View of Software Engineering 24 The Software Process 26 Software Process Models 28 The Linear Sequential Model 29 The Prototyping Model 32 The RAD Model 34 Evolutionary Software Process Models 37 2.7.1 The Incremental Model 37 2.7.2 The Spiral Model 39 2.7.3 The Component Assembly Model 42 2.7.4 The Concurrent Development Model 43 The Formal Methods Model 45 Fourth Generation Techniques 46 Process Technology 47 Product and Process 48 Summary 49 REFERENCES 49

CHAPTER 4 4.1 4.2

SOFTWARE PROCESS AND PROJECT METRICS

76

MEASURES, METRICS, AND INDICATORS 77 METRICS IN THE PROCESS AND PROJECT DOMAINS 77 4.2.1 Process Metrics and Software Process Improvement 78

4.3

4.4 4.5

4.6 4.7

4.2.2 Project Metrics 82 SOFTWARE MEASUREMENT 83 4.3.1 Size-Oriented Metrics 84 4.3.2 Function-Oriented Metrics 85 4.3.3 Extended Function Point Metrics 87 RECONCILING DIFFERENT METRICS APPROACHES 90 METRICS FOR SOFTWARE QUALITY 92 4.5.1 An Overview of Factors That Affect Quality 92 4.5.2 Measuring Quality 93 4.5.3 Defect Removal Efficiency 94 INTEGRATING METRICS WITHIN THE SOFTWARE ENGINEERING PROCESS 95 SUMMARY 97 REFERENCES 107 SOFTWARE PROJECT PLANNING 102

CHAPTER 5 5.1 5.2 5.3

5.4

5.5 5.6

5.7

5.8

5.9 5.10

OBSERVATIONS ON ESTIMATING 102 PROJECT PLANNING OBJECTIVES 104 SOFTWARE SCOPE 104 5.3.1 Obtaining Information Necessary for Scope 104 5.3.2 A Scoping Example 106 RESOURCES 108 5.4.1 Human Resources 109 5.4.2 Reusable Software Resources 109 5.4.3 Environmental Resources 110 SOFTWARE PROJECT ESTIMATION 111 DECOMPOSITION TECHNIQUES 112 5.6.1 Software Sizing 112 5.6.2 Problem-Based Estimation 113 5.6.3 An Example of LOC-Based Estimation 115 5.6.4 An Example of FP-Based Estimation 116 5.6.5 Process-Based Estimation 130 5.6.6 An Example of Process-Based Estimation 131 EMPIRICAL ESTIMATION MODELS 132 5.7.1 The Structure of Estimation Models 132 5.7.2 The COCOMO Model 133 5.7.3 The Software Equation 135 THE MAKE-BUY DECISION 136 5.8.1 Creating a Decision Tree 137 5.8.2 Outsourcing 138 AUTOMATED ESTIMATION TOOLS 139 SUMMARY 129 REFERENCES 129

CHAPTER 6 6.1

RISK MANAGEMENT

132 133

REACTIVE VERSUS PROACTIVE RISK STRATEGIES

6.2 6.3

6.4

6.5 6.6 6.7 6.8 6.9

SOFTWARE RISKS 133 RISK IDENTIFICATION 134 6.3.1 Product Size Risks 6.3.2 Business Impact Risks 6.3.3 Customer-Related risks 6.3.4 Process Risks 6.3.5 Technology Risks 6.3.6 Development Environmental Risks 6.3.7 Risk Associated with Staff Size and Experience 6.3.8 Risk Components and Drivers 141 RISK PROJECTION 141 6.4.1 Developing a Risk Table 141 6.4.2 Assessing Risk Impact 144 6.4.3 Risk Assessment 145 RISK REFINEMENT 156 RISK MITIGATION, MONITORING, AND MANAGEMENT SAFETY RISKS AND HAZARDS 148 THE RMMM PLAN 149 SUMMARY 149 REFERENCES 150

146

CHAPTER 8 8.1

8.9 8.10

SOFTWARE QUALITY ASSURANCE 193 Quality Concepts 194 8.1.1 Quality 195 8.1.2 Quality Control 196 8.1.3 Quality Assurance 196 8.1.4 Cost of Quality 196 8.2 The Quality Movement 198 8.3 Software Quality Assurance 199 8.3.1 Background Issues 200 8.3.2 SQA Activities 201 8.4 Software Reviews 202 8.4.1 Cost Impact of Software Defects 203 8.4.2 Defect Amplification and Removal 204 8.5 Formal Technical Reviews 205 8.5.1 The Review Meeting 206 8.5.2 Review Reporting and Record Keeping 207 8.5.3 Review Guidelines 207 8.6 Formal Approaches to SQA 209 8.7 Statistical Software Quality Assurance 209 8.8 Software Reliability 212 8.8.1 Measures of Reliability and Availability 212 8.8.2 Software Safety 213 The SQA Plan 218 The ISO 9000 Quality Standards 216 8.10.1 The ISO Approach to Quality Assurance Systems 217 8.10.2 The ISO 9001 Standard 217

8.11

Summary 219 REFERENCES 220

CHAPTER 9 9.1

SOFTWARE CONFIGURATION MANAGEMENT

225

9.2 9.3 9.4 9.5 9.6 9.7 9.8 9.9

Software Configuration Management 226 9.1.1 Baselines 227 9.1.2 Software Configuration Items 228 The SCM Process 230 Identification of Objects in the Software Configuration 230 Version Control 232 Change Control 234 Configuration Audit 237 Status Reporting 237 SCM Standards 238 Summary 238 REFERENCES 239 PROBLEMS AND POINTS TO PONDER 239 FURTHER READINGS AND INFORMATION SOURCES 240 ANALYSIS CONCEPTS AND PRINCIPLES 271

CHAPTER 11 11.1 11.2

11.3

11.4

11.5

11.6 11.7

Requirements Analysis 272 Requirements Elicitation for Software 274 11.2.1 Initiating the Process 274 11.2.2 Facilitated Application Specification Techniques 275 11.2.3 Quality Function Deployment 279 11.2.4 Use-Cases 280 Analysis Principles 282 11.3.1 The Information Domain 283 11.3.2 Modeling 285 11.3.3 Partitioning 286 11.3.4 Essential and Implementation Views 288 Software Prototyping 289 11.4.1 Selecting the Prototyping Approach 289 11.4.2 Prototyping Methods and Tools 290 Specification 291 11.5.1 Specification Principles 291 11.5.2 Representation 292 11.5.3 The Software Requirements Specification 293 Specification Review 294 Summary 294 REFERENCES 295 PROBLEMS AND POINTS TO PONDER 296 FURTHER READINGS AND INFORMATION SOURCES 297

CHAPTER 13 13.1 13.2

DESIGN CONCEPTS AND PRINCIPLES

335

13.3 13.4

13.5

13.6 13.7 13.8 13.9

Software Design and Software Engineering 336 The Design Process 338 13.2.1 Design and Software Quality 338 13.2.2 The Evolution of Software Design 339 Design Principles 340 Design Concepts 341 13.4.1 Abstraction 342 13.4.2 Refinement 343 13.4.3 Modularity 343 13.4.4 Software Architecture 346 13.4.5 Control Hierarchy 347 13.4.6 Structural Partitioning 348 13.4.7 Data Structure 349 13.4.8 Software Procedure 351 13.4.9 Information Hiding 351 Effective Modular Design 352 13.5.1 Functional Independence 352 13.5.2 Cohesion 353 13.5.3 Coupling 354 Design Heuristics for Effective Modularity 355 The Design Model 357 Design Documentation 358 Summary 359 REFERENCES 359 PROBLEMS AND POINTS TO PONDER 361 FURTHER READINGS AND INFORMATION SOURCES 362

CHAPTER 16 16.1

SOFTWARE TESTING METHODS 448 SOFTWARE TESTING FUNDAMENTALS 449 16.1.1 Testing Objectives 449 16.1.2 Testing Principles 450 16.1.3 Testability 451 TEST CASE DESIGN 453 WHITE-BOX TESTING 455 BASIS PATH TESTING 445 16.4.1 Flow Graph Notation 445 16.4.2 Cyclomatic Complexity 446 16.4.3 Deriving Test Cases 449 16.4.4 Graph Matrices 452 Control Structure Testing 454 16.5.1 Condition Testing 454 16.5.2 Data Flow Testing 456 16.5.3 Loop Testing 458 Black-Box Testing 459

16.2 16.3 16.4

16.5

16.6

16.7

16.8

16.6.1 Graph-Based Testing Methods 460 16.6.2 Equivalence Partitioning 463 16.6.3 Boundary Value Analysis 465 16.6.4 Comparison Testing 465 Testing for Specialized Environments 468 16.7.1 Testing GUIs 469 16.7.2 Testing of Client/Server Architectures 469 16.7.3 Testing Documentation and Help Facilities 469 16.7.4 Testing for Real-Time Systems 470 Summary 472 REFERENCES 473 PROBLEMS AND POINTS TO PONDER 474 FURTHER READINGS AND INFORMATION SOURCES 475 SOFTWARE TESTING STRATEGIES 487

CHAPTER 17 17.1

A Strategic Approach to Software Testing 488 17.1.1 Verification and Validation 488 17.1.2 Organizing for Software Testing 489 17.1.3 A Software Testing Strategy 490 17.1.4 Criteria for Completion of Testing 492 17.2 Strategic Issues 493 17.3 Unit Testing 494 17.3.1 Unit Test Considerations 495 17.3.2 Unit Test Procedures 497 17.4 Integration Testing 498 17.4.1 Top-down Integration 499 17.4.2 Bottom-up Integration 501 17.4.3 Regression Testing 501 17.4.4 Comments on Integration Testing 503 17.4.5 Integration Test Documentation 503 17.5 Validation Testing 505 17.5.1 Validation Test Criteria 506 17.5.2 Configuration Review 506 17.5.3 Alpha and Beta Testing 506 17.6 System Testing 507 17.6.1 Recovery Testing 507 17.6.2 Security Testing 508 17.6.3 Stress Testing 508 17.6.4 Performance Testing 509 17.7 The Art of Debugging 509 17.7.1 The Debugging Process 510 17.7.2 Psychological Considerations 511 17.7.3 Debugging Approaches 511 17.8 Summary 513 REFERENCES 514 PROBLEMS AND POINTS TO PONDER 514 FURTHER READINGS AND INFORMATION SOURCES

515

CHAPTER 18 18.1

TECHNICAL METRICS FOR SOFTWARE

517

18.2

18.3

18.4

18.5 18.6 18.7 18.8

Software Quality 518 18.1.1 McCalls Quality Factors 519 18.1.2 FURPS 521 18.1.3 The Transition to a Quantitative View 522 A Framework for Technical Software Metrics 523 18.2.1 The Challenge of Technical Metrics 523 18.2.2 Measurement Principles 524 18.2.3 The Attributes of Effective Software Metrics 525 Metrics for the Analysis Model 526 18.3.1 Function-Based Metrics 527 18.3.2 The Bang Metric 529 18.3.3 Metrics for Specification Quality 531 Metrics for the Design Model 532 18.4.1 High-Level Design Metrics 533 18.4.2 Component-Level Design Metrics 536 18.4.3 Interface Design Metrics 539 Metrics for Source Code 540 Metrics for Testing 542 Metrics for Maintenance 543 Summary 544 REFERENCES 544 PROBLEMS AND POINTS TO PONDER 546 FURTHER READING AND OTHER INFORMATION SOURCES 547\ CLEANROOM SOFTWARE ENGINEERING 699 The Cleanroom Approach 700 25.1.1 The Cleanroom Strategy 701 25.1.2 What Makes Cleanroom Different? 703 Functional Specification 703 25.2.1 Black-Box Specification 705 25.2.2 State-Box Specification 705 25.2.3 Clear-Box Specification 706 Cleanroom Design 706 25.3.1 Design Refinement and Verification 707 25.3.2 Advantages of Design Verification 710 Cleanroom Testing 712 25.4.1 Statistical Use Testing 712 25.4.2 Certification 714 Summary 714 REFERENCES 715 PROBLEMS AND POINTS TO PONDER 716 FURTHER READINGS AND INFORMATION SOURCES 717 SOFTWARE REUSE 728

CHAPTER 25 25.1

25.2

25.3

25.4

25.5

CHAPTER 26

26.6

ECONOMICS OF SOFTWARE REUSE 747 26.1.1 Impact on Quality, Productivity, and Cost 747 26.1.2 Cost Analysis Using Structure Points 748 26.1.3 Reuse Metrics 749

CHAPTER 27 27.1

REENGINEERING

799

27.2

27.3

27.4

27.5

27.6 27.7

Business Process Reengineering 800 27.1.1 Business Processes 800 27.1.2 Principles of Business Process Reengineering 801 27.1.3 A BPR Model 802 27.1.4 Words of Warning 804 Software Reengineering 804 27.2.1 Software Maintenance 804 27.2.2 A Software Reengineering Process Model 805 Reverse Engineering 809 27.3.1 Reverse Engineering to Understand Processing 810 27.3.2 Reverse Engineering to Understand Data 811 27.3.3 Reverse Engineering User Interfaces 812 Restructuring 813 27.4.1 Code Restructuring 814 27.4.2 Data Restructuring 814 Forward Engineering 814 27.5.1 Forward Engineering for Client/Server Architectures 816 27.5.2 Forward Engineering for Object-Oriented Architectures 817 27.5.3 Forward Engineering User Interfaces 818 The Economics of Reengineering 819 Summary 820 REFERENCES 820 PROBLEMS AND POINTS TO PONDER 822 FURTHER READINGS AND INFORMATION SOURCES 823

You might also like