PREFACE 1
PREFACE 1
PART ONE THE PRODUCT AND THE PROCESS 1
PART ONE THE PRODUCT ADND THE PROCESS 1
CHAPTER1 THE PRODUCT 3
CHAPTER1 THE PRODUCT 3
1.1THE EVOIVING 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
1.2 SOFTWARE 9
1.2.1 Software Characteristics 10
1.2.2 Software Components 13
1.2.3 Software Applications 14
1.3 SOFTWARE: A CRISIS ON THE HORIZON 16
1.4 SOFTWARE MYTHS 17
1.5 SUMMARY 19
REFERENCES 19
PROBLEMS AND POINTS TO PONDER 20
FURTHER READINGS AND INFORMATION SOURCES 21
CHAPTER2 THE PROCESS 22
CHAPTER2 THE PROCESS 22
2.1 SOFTWARE ENGINEERING—A LAYERED TECHNOLOGY 22
2.1.1 Process, Methods, and Tools 23
2.1.2 A Generic View of Software Engineering 24
2.2 THE SOFTWARE PROCESS 26
2.3 SOFTWARE PROCESS MODELS 28
2.4 THE LINEAR SEQUENTIAL MQDEL 29
2.5 THE PROTOTYPING MODEL 32
2.6 THE RAD MODEL 34
2.7 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
2.8 THE FORMAL METHODS MODEL 45
2.9 FOURTH GENERATION TECHNIQUES 46
2.10 PROCESS TECHNOLOGY 47
2.11 PRODUCT AND PROCESS 48
2.12 SUMMARY 49
REFERENCES 49
PROBLEMS AND POINTS TO PONDER 50
FURTHER READINGS AND OTHER INFORMATION SOURCES 51
PART TWO MANAGING SOFTWARE PROJECTS 55
PART TWO MANAGING SOFTWARE PROJECTS 55
CHAPTER3 PROJECT MANAGEMENT CONCEPTS 57
CHAPTER3 PROJECT MANAGEMENT CONCEPTS 57
3.1 THE MANAGEMENT SPECTRUM 58
3.1.1 Peole 58
3.1.2 The Problem 58
3.1.3 The Process 59
3.2PEOPLE 59
3.2.1 The Players 60
3.2.2 Team Leaders 60
3.2.3 The Software Team 61
3.2.4 Coordination and Communication lssues 65
3.3.1 Software Scope 66
3.3 THE PROBLEM 66
3.3.2 Problem Decomposition 67
3.4 THE PROCESS 68
3.4.1 Melding the Problem and the Process 69
3.4.2 Process Decomposition 70
3.5 THE PROJECT 71
3.6 SUMMARY 72
REFERENCES 72
PROBLEMS AND POINTS TO PONDER 73
FURTHER READINGS AND OTHER INFORMATION SOURCES 74
CHAPTER4 SOFTWARE PROCESS AND PROJECT METRICS 76
CHAPTER4 SOFTWARE PROCESS AND PROJECT METRICS 76
4.1 MEASURES, METRICS, AND INDICATORS 77
4.2 METRICS IN THE PROCESS AND PROJECT DOMAINS 77
4.2.1 Process Metrics and Software Process Improvement 78
4.2.2 Project Metrics 82
4.3 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
4.4 RECONCILING DIFFERENT METRICS APPROACHES 90
4.5 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
4.6 INTEGRATING METRICS WITHIN THE SOFTWARE PROCESS 95
4.7 SUMMARY 97
REFERENCES 98
PROBLEMS AND POINTS TO PONDER 99
FURTHER READINGS AND OTHER INFORMATION SOURCES 100
CHAPTER5 SOFTWARE PROJECT PLANNING 102
CHAPTER5 SOFTWARE PROJECT PLANNING 102
5.1 OBSERVATIONS ON ESTIMATING 102
5.3.1 Obtaining Information Necessary for Scope 104
5.3 SOFTWARE SCOPE 104
5.2 PROJECT PTANNING OBJECTIVES 104
5.3.2 A Scoping Example 106
5.4 RESOURCES 108
5.4.1 Human Resources 109
5.4.2 Reusable Software Resources 109
5.4.3 Environmental Resources 110
5.5 SOFTWARE PROJECT ESTIMATION 111
5.6 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 118
5.6.6 An Example of Process-Based Estimalion 118
5.7.1 The Structure of Estimation Models 120
5.7 EMPIRICAL ESTIMATION MODELS 120
5.7.2 The COCOMO Model 121
5.7.3 The Software Equation 124
5.8 THE MAKE-BUY DECISION 125
5.8.1 Creating a Decision Tree 126
5.8.2 Outsourcing 127
5.9 AUTOMATED ESTIMATION TOOLS 128
5.10 SUMMARY 129
REFERENCES 129
PROBLEMS AND POINTS TO PONDER 129
FURTHER READINGS AND OTHER INFORMATION SOURCES 130
CHAPTER6 RISK MANAGEMAENT 132
CHAPTER6 RISK MANAGEMENT 132
6.2 SOFTWARE RISKS 133
6.1 REACTIVE VS.PROACTIVE RISK STRATEGIES 133
6.3 RISK IDENTIFICATION 134
6.3.1 Product Size Risks 135
6.3.2 Business Impact Risks 136
6.3.3 Customer-Related Risks 136
6.3.4 Process Risks 137
6.3.5 Technology Risk 139
6.3.6 Development Environment Risks 139
6.3.7 Risks Associated with Staff Size and Experience 140
6.3.8 Risk Components and Drivers 141
6.4 RISK PROJECTION 141
6.4.1 Developing a Risk Table 141
6.4.2 Assessing Risk Impact 144
6.4.3 Risk Assessment 145
6.5 RISK MITIGATION, MONITORING, AND MANAGEMENT 146
6.6 SAFETY RISKS AND HAZARDS 148
6.7 THE RMMM PLAN 149
6.8 SUMMARY 149
REFERENCES 150
PROBLEMS AND POINTS TO PONDER 150
FURTHER READINGS AND OTHER INFORMATION SOURCES 151
CHAPTER7 PROJECT SCHEDULING AND TRACKING 153
CHAPTER7 PROJECT SCHEDULING AND TRACKING 153
7.1BASIC CONCEPTS 154
7.1.1 Comments on Lateness 154
7.1.2 Basic Principles 156
7.2 THE RELATIONSHIP BETWEEN PEOPLE AND EFFORT 157
7.2.1 An Example 158
7.2.2 An Empirical Relationship 158
7.2.3 Effort Distribution 159
7.3 DEFINING A TASK SET FOR THE SOFTWARE PROJECT 160
7.3.1 Degree of Rigor 161
7.3.2 Defining Adaptation Criteria 161
7.3.3 Computing a Task Set Selector Value 162
7.3.4 Interpreting the TSS Value and Selecling the Task Set 163
7.4 SELECTING SOFTWARE ENGINEERING TASKS 164
7.5 REFINEMENT OF MAJOR TASKS 165
7.6 DEFINING A TASK NETWORK 168
7.7 SCHEDULING 170
7.7.1 Timeline Charts 170
7.7.2 Tracking the Schedule 172
7.8 THE PROJECT PLAN 174
7.8 SUMMARY 175
REFERENCES 176
PROBLEMS AND POINTS TO PONDER 176
FURTHER READINGS AND OTHER INFORMATION SOURCES 177
CHAPTER8 SOFTWARE QUAUTY ASSURANCE 179
CHAPTER8 SOFTWARE QUALITY ASSURANCE 179
8.1 QUALITY CONCEPTS 180
8.1.1 Quality 181
8.1.2 Quality Control 181
8.1.3 Quality Assurance 182
8.1.4 Cost of Quality 182
8.2 THE QUALITY MOVEMENT 184
8.3 SOFTWARE QUALITY ASSURANCE 185
8.3.1 Background Issues 185
8.3.2 SQA Activities 186
8.4 SOFTWARE REVIEWS 187
8.4.1 Cost Impact of Software Defects 188
8.4.2 Defect Amplification and Removal 189
8.5 FORMAL TECHNICAL REVIEWS 190
8.5.1 The Review Meeting 191
8.5.2 Review Reporling and Record Keeping 192
8.5.3 Review Guidelines 193
8.6 FORMAL APPROACHES TO SQA 194
8.7 STATISTICAL QUALITY ASSURANCE 195
8.8 SOFTWARE RELIABILITY 197
8.8.1 Measures of Reliability and Availability 198
8.8.2 Software Safety and Hazard Analysis 198
8.9 THE SQA PLAN 200
8.10.2 The ISO 9001 Standard 202
8.10 THE ISO 9000 QUALITY STANDARDS 202
8.10.1 The ISO Approach to Quality Assurance Systems 202
8.11 SUMMARY 203
REFERENCES 204
PROBLEMS AND POINTS TO PONDER 205
FURTHER READINGS AND OTHER INFORMATION SOURCES 206
CHAPTER 9 SOFTWARE CONFIGURATION MANAGEMENT 209
CHAPTER9 SOFTWARE CONFIGURATION MANAGEMENT 209
9.1 SOFTWARE CONFIGURATION MANAGEMENT 210
9.1.1 Baselines 210
9.1.2 Software Configuration Items 212
9.2 THE SCM PROCESS 214
9.3 IDENTIFICATION OF OBJECTS IN THE SOFTWARE CONFIGURATION 215
9.4 VERSION CONTROL 218
9.5 CHANGE CONTROL 220
9.6 CONFIGURATION AUDIT 223
9.7 STATUS REPORTING 224
9.8 SCM STANDARDS 224
9.9 SUMMARY 224
REFERENCES 225
PROBLEMS AND POINTS TO PONDER 226
FURTHER READINGS AND OTHER INFORMATION SOURCES 226
PART THREE CONVENTIONAL METHODS FOR SOFTWARE ENGINEERING 229
PART THREE CONVENTIONAL METHODS FOR SOFTWARE ENGINEERING 229
CHAPTER10 SYSTEM ENGINEERING 231
CHAPTER10 SYSTEM ENGINEERING 231
10.1 COMPUTER-BASED SYSTEMS 232
10.2 THE SYSTEM ENGINEERING HIERARCHY 234
10.2.1 System Modeling 235
10.2.2 Information Engineering: An Overview 237
10.2.3 Product Engineering: An Overview 239
10.3 INFORMATION ENGINEERING 241
10.4 INFORMATION STRATEGY PLANNING 241
10.4.1 Enterprise Modeling 242
10.4.2 Business-Level Data Modeling 244
10.5 BUSINESS AREA ANALYSIS 245
10.5.1 Process Modeling 247
10.5.2 Information Flow Modeling 247
10.6 PRODUCT ENGINEERING 250
10.6.3 Feasibility Study 253
10.6.1 System Analysis 253
10.6.2 Identification of Need 253
10.6.4 Economic Analysis 255
10.6.5 Technical Analysis 256
10.7 MODELING THE SYSTEM ARCHITECTURE 259
10.8 SYSTEM MODELING AND SIMULATION 262
10.9 SYSTEM SPECIFICATION 264
10.10 SUMMARY 264
REFERENCES 266
PROBLEMS AND POINTS TO PONDER 266
FURTHER READINGS AND OTHER INFORMATION SOURCES 268
11.1 REQUIREMENTS ANALYSIS 270
CHAPTER11 ANALYSIS CONCEPTS AND PRINCIPLES 270
CHAPTER11 ANALYSIS CONCEPTS AND PRINCIPLES 270
11.2 COMMUNICATION TECHNIQUES 272
11.2.1 Initiating the Process 273
11.2.2 Facilitated Application Specification Techniques 274
11.2.3 Quality Function Deployment 277
11.3 ANALYSIS PRINCIPLES 278
11.3.1 The Information Domain 279
11.3.2 Modeling 281
11.3.3 Partitioning 282
11.3.4 Essential and Implementation Views 284
11.4.1 Selecting the Prototyping Approach 285
11.4 SOFTWARE PROTOTYPING 285
11.4.2 Prototyping Methods and Tools 287
11.5 SPECIFICATION 288
11.5.1 Specification Principles 288
11.5.2 Representation 289
11.5.3 The Software Requirements Specification 290
11.6 SPECIFICATION REVIEW 292
11.7 SUMMARY 293
REFERENCES 294
PROBLEMS AND POINTS TO PONDER 295
FURTHER READINGS AND OTHER INFORMATION SOURCES 296
CHAPTER12 ANALYSIS MODELING 298
CHAPTER12 ANALYSIS MODELING 298
12.1 A BRIEF HISTORY 299
12.2 THE ELEMENTS OF THE ANALYSIS MODEL 300
12.3 DATA MODELING 301
12.3.1 Data Objects, Attributes, and Relationships 301
12.3.2 Cardinality and Modality 304
12.3.3 Entity-Relationship Diagrams 305
12.4 FUNCTIONAL MODELING AND INFORMATION FLOW 309
12.4.1 Data Flow Diagrams 309
12.4.2 Extensions for Real-Time Systems 312
12.4.3 Ward and Mellor Extensions 312
12.4.4 Hatley and Pirbhai Extensions 315
12.5 BEHAVIORAL MODELING 316
12.6 THE MECHANICS OF STRUCTURED ANALYSIS 320
12.6.1 Creating on Entity-Relationship Diagram 321
12.6.2 Creating a Data Flow Model 323
12.6.3 Creating a Control Flow Model 325
12.6.4 The Control Specification 328
12.6.5 The Process Specification 330
12.7 THE DATA DICTIONARY 330
12.8 AN OVERVIEW OF OTHER CLASSICAL ANALYSIS METHODS 334
13.8.1 Data Structured Systems Development 334
12.8.2 Jackson System Development 335
12.8.3 SADT 335
12.9 SUMMARY 336
REFERENCES 336
PROBLEMS AND POINTS TO PONDER 337
FURTHER READINGS AND OTHER INFORMATION SOURCES 339
CHAPTER13 DESIGN CONCEPTS AND PRINCIPLES 341
13.1 SOFTWARE DESIGN AND SOFTWARE ENGINEERING 341
CHAPTER13 DESIGN CONCEPTS AND PRINCIPLES 341
13.2 THE DESIGN PROCESS 343
13.2.1 Design and Software Quality 343
13.2.2 The Evolution of Software Design 344
13.3 DESIGN PRINCIPLES 345
13.4 DESIGN CONCEPTS 346
13.4.1 Abstraction 347
13.4.2 Refinement 348
13.4.3 Modularily 348
13.4.4 Software-Architecture 351
13.4.5 Control Hierarchy 352
13.4.6 Structural Partitioning 353
13.4.7 Data Structure 354
13.4.8 Software Procedure 355
13.4.9 Information Hiding 356
13.5 EFFECTIVE MODULAR DESIGN 357
13.5.1 Functional Independence 357
13.5.2 Cohesion 358
13.5.3 Coupling 359
13.6 DESIGN HEURISTICS FOR EFFECTIVE MODULARITY 361
13.8 DESIGN DOCUMENTATION 363
13.7 THE DESIGN MODEL 363
13.9 SUMMARY 365
REFERENCES 366
PROBLEMS AND POINTS TO PONDER 367
FURTHER READINGS AND OTHER INFORMATION SOURCES 368
CHAPTER14 DESIGN METHODS 371
14.1 DATA SESIGN 371
CHAPTER14 DESIGN METHODS 371
14.2 ARCHITECTURAL DESIGN 373
14.2.1 Contributors 374
14.2.2 Areas of Application 374
14.3.1 Transform Flow 375
14.3 THE ARCHITECTURAL DESIGN PROCESS 375
14.3.2 Transaction Flow 375
14.4 TRANSFORM MAPPING 377
14.4.1 An Example 377
14.4.2 Design Steps 378
14.5 TRANSACTION MAPPING 387
14.5.1 An Example 387
14.5.2 Design Steps 387
14.6 DESIGN POSTPROCESSING 390
14.7 ARCHITECTURAL DESIGN OPTIMIZATION 391
14.8 INTERFACE DESIGN 393
14.8.1 Internal and External Interface Design 394
14.8.2 User Interface Design 394
14.9 HUMAN-COMPUTER INTERFACE DESIGN 395
14.9.1 Interface Design Models 395
14.9.2 Task Analysis and Modeling 396
14.9.3 Design Issues 398
14.9.4 Implementation Tools 400
14.9.5 Design Evaluation 401
14.10.1 General Interaction 403
14.10 INTERFACE DESIGN GUIDELINES 403
14.10.2 Information Display 404
14.10.3 Data Input 405
14.11.1 Structured Programming 406
14.11 PROCEDURAL DESIGN 406
14.11.2 Graphical Design Notation 407
14.11.3 Tabular Design Notation 409
14.11.4 Program Design Language 411
14.11.5 A PDL Example 412
14.12 SUMMARY 415
REFERENCES 416
PROBLEMS AND POINTS TO PONDER 417
FURTHER READINGS AND OTHER INFORMATION SOURCES 421
CHAPTER15 DESIGN FOR REAL-TIME SYSTEMS 423
CHAPTER15 DESIGN FOR REAL-TIME SYSTEMS 423
15.1 SYSTEM CONSIDERATIONS 424
15.2.1 Integration and Performance Issues 425
15.2 REAL-TIME SYSTEMS 425
15.2.2 Interrupt Handing 426
15.2.3 Real-Time Data Bases 426
15.2.4 Real-Time Operating Systems 428
15.2.5 Real-Time Languages 429
15.2.6 Task Synchronization and Communication 430
15.3 ANALYSIS AND SIMULATION OF REAL-TIME SYSTEMS 430
15.3.1 Mathematical Tools for Real-Time System Analysis 431
15.3.2 Simulation and Modeling Techniques 435
15.4 REAL-TIME DESIGN 442
15.5 SUMMARY 443
REFERENCES 444
PROBLEMS AND POINTS TO PONDER 445
FURTHER READINGS AND OTHER INFORMATION SOURCES 445
CHAPTER16 SOFTWARE TESTING TECHNIQUES 448
CHAPTER16 SOFTWARE TESTING METHODS 448
16.1 SOFTWARE TESTING FUNDAMENTALS 449
16.1.1 Testing Objectives 449
16.1.2 Testing Principles 450
16.1.3 Testability 451
16.2 TEST CASE DESIGN 453
16.4 BASIS PATH TESTING 455
16.3 WHITE BOX TESTING 455
16.4.1 Flow Graph Notation 456
16.4.2 Cyclomatic Complexity 458
16.4.3 Deriving Test Cases 460
16.4.4 Graph Matrices 463
16.5 CONTROL STRUCTURE TESTING 464
16.5.1 Condition Testing 465
16.5.2 Data flow Testing 467
16.5.3 Loop Testing 469
16.6 BLACK-BOX TESTING 470
16.6.1 Graph-Based Testing Methods 471
16.6.2 Equivalence Partitioning 474
16.6.3 Boundary Value Analysis 475
16.6.4 Comparison Testing 476
16.7 TESTING FOR SPECIALIZED ENVIRONMENTS 477
16.7.1 Testing GULs 477
16.7.3 Testing Documentation and Help Facilities 479
16.7.2 Testing of Client/Server Architecures 479
16.7.4 Testing for Real-Time Systems 480
16.8 SUMMARY 481
REFERENCES 482
PROBLEMS AND POINTS TO PONDER 483
FURTHER READINGS AND OTHER INFORMATION SOURCES 484
CHAPTER17 SOFTWARE TESTING STRATEGIES 487
CHAPTER17 SOFTWARE TESTING STRATEGIES 487
17.1A 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 TESTNG 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 Performacce 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 OTHER INFORMATION SOURCES 515
CHAPTER18 TECHNICAL METRICS FOR SOFTWARE 517
CHAPTER18 TECHNICAL METRICS FOR SOFTWARE 517
18.1 SOFTWARE QUALITY 518
18.1.1 McCall s Quality Factors 519
18.1.2 FURPS 521
18.1.3 The Transition to a Quantitative View 522
18.2 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
18.3 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
18.4 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
18.5 METRICS FOR SOURCE CODE 540
18.6 METRICS FOR TESTING 542
18.7 METRICS FOR MAINTENANCE 543
18.8 SUMMARY 544
REFERENCES 544
PROBLEMS AND POINTS TO PONDER 546
FURTHER READINGS AND OTHER INFORMATION SOURCES 547
PART FOUR OBJECT-ORIENTED SOFTWARE ENGINEERING 549
PART FOUR OBJECT-ORIENTED SOFTWARE ENGINEERING 549
CHAPTER19 OBJECT-ORIENTED CONCEPTS AND PRINCIPLES 551
CHAPTER19 OBJECT-ORIENTED CONCEPTS AND PRINCIPLES 551
19.1 THE OBJECT-ORIENTED PARADIGM 552
19.2 OBJECT-ORIENTED CONCEPTS 553
19.2.1 Classes and Objects 556
19.2.2 Attributes 557
19.2.3 Operations, Methods, and Services 558
19.2.4 Messages 558
19.2.5 Encapsulation, Inheritance, and Polymorphism 560
19.3 IDENTIFYING THE ELEMENTS OF AN OBJECT MODEL 564
19.3.1 Identifying Classes and Objects 565
19.3.2 Specifying Attributes 568
19.3.3 Defining Operations 569
19.3.4 Finalizing the Object Definition 571
19.4 MANAGEMENT OF OBJECT-ORIENTED SOFTWARE PROJECTS 571
19.4.1 The Common Process Framework for OO 572
19.4.2 Object-Oriented Project Metrics and Estimation 573
19.4.3 An OO Estimating and Scheduling Approach 575
19.4.4 Progress for on Object-Oriented Project 576
19.5 SUMMARY 577
REFERENCES 578
PROBLEMS AND POINTS TO PONDER 578
FURTHER READINGS AND OTHER INFORMATION SOURCES 579
CHAPTER20 OBJECT-ORIENTED ANALYSIS 581
CHAPTER20 OBJECT-ORIENTED ANALYSIS 581
20.1 OBJECT-ORIENTED ANALYSIS 582
20.1.1 Conventional vs. OO Approaches 582
20.1.2 The OOA Landscape 583
20.2 DOMAIN ANALYSIS 586
20.2.1 Reuse and Domain Analysis 587
20.2.2 The Domain Analysis Process 587
20.3 GENERIC COMPONENTS OF THE OO ANALYSIS MODEL 590
20.4 THE OOA PROCESS 591
20.4.1 Use Cases 592
20.4.2 Class-Responsibility-Collaborator Modeling 594
20.4.3 Defining Structures and Hierarchies 599
20.4.4 Defining Subjects and Subsystems 600
20.5 THE OBJECT-RELATIONSHIP MODEL 601
20.6 THE OBJECT-BEHAVIOR MODEL 605
20.6.1 Event Identification with Use Cases 605
20.6.2 State Representaions 606
20.7 SUMMARY 609
REFERENCES 610
PROBLEMS AND POINTS TO PONDER 611
FURTHER READINGS AND OTHER INFORMATION SOURCES 612
CHAPTER21 OBJECT-ORIENTED DESIGN 614
CHAPTER21 OBJECT-ORIENTED DESIGN 614
21.1 DESIGN FOR OBJECT-ORIENTED SYSTEMS 615
21.1.1 Conventional vs. OO Approaches 616
21.1.2 Design Issues 617
21.1.3 The OOD Landscape 618
21.2 THE GENERIC COMPONENTS OF THE OO DESIGN MODEL 623
21.3 THE SYSTEM DESIGN PROCESS 624
21.3.1 Partitioning the Analysis Model 625
21.3.2 Concurrency and Subsystem Allocaion 626
21.3.3 The Task Management Component 626
21.3.4 The Data Management Component 627
21.3.5 The Resource Management Component 628
21.3.6 The Human-Computer Interface Component 628
21.3.7 Inter-Subsystem Communication 629
REFERENCES 630
21.4.1 Object Descriptions 631
21.4 THE OBJECT DESIGN PROCESS 631
21.4.2 Designing Algorithms and Data Structures 632
21.4.3 Program Components and Interfaces 634
21.5 DESIGN PATTERNS 636
21.5.1 Describing a Design Pattern 637
21.5.2 Using Patterns in Design 638
21.6 OBJECT-ORIENTED PROGRAMMING 638
21.7 SUMMARY 639
PROBLEMS AND POINTS TO PONDER 640
FURTHER READINGS AND OTHER INFORMATION SOURCES 641
CHAPTER22 OBJECT-ORIENTED TESTING 644
22.1 BROADENING THE VIEW OF TESTING 644
CHAPTER22 OBJECT-ORIENTED TESTING 644
22.2 TESTING OOA AND OOD MODELS 646
22.2.1 Correctness of OOA and OOD Models 646
22.2.2 Consistency of OOA and OOD Models 646
22.3 OBJECT-ORIENTED TESTING STRATEGIES 648
22.3.1 Unit Testing in the OO Contetx 648
22.3.2 Integration Testing in the OO Context 649
22.3.3 Validation Testing in an OO Context 650
22.4 TEST CASE DESIGN FOR OO SOFTWARE 650
22.4.1 The Test Case Design Implications of OO Concepts 650
22.4.3 Fault-Based Testing 651
22.4.2 Applicability of Conventional Test Case Design Methods 651
22.4.4 The Impact of OO Programming on Testing 652
22.4.5 Test Cases and the Class Hierarchy 653
22.4.6 Scenario-Based Test Design 654
22.4.7 Testing Surface Structure and Deep Structure 655
22.5 TESTING METHODS APPLICABLE AT THE CLASS LEVEL 656
22.5.1 Random Testing for OO Classes 656
22.5.2 Partition Testing of the Class Level 657
22.6 INERCLASS TEST CASE DESIGN 658
22.6.1 Multiple Class Tesing 658
22.6.2 Tests Derived form Behavior Models 659
22.7 SUMMARY 661
REFERENCES 662
PROBLEMS AND POINTS TO PONDER 662
FURTHER READINGS AND OTHER INFORMATION SOURCES 663
CHAPTER23 TECHNICAL METRICS FOR OBJECT-ORIENTED SYSTEMS 664
CHAPTER23 TECHNICAL METRICS FOR OBJECT-ORIENTED SYSTEMS 664
23.1 THE INTENT OF OBJECT-ORIENTED METRICS 664
23.2 THE DISTINGUISHING CHARACTERISTICS 665
23.2.1 Localizotion 665
23.2.3 Information hiding 666
23.2.4 Inheritance 666
23.2.2 Encapsulation 666
23.2.5 Abstraction 667
23.3 METRICS FOR THE OO DESIGN MODEL 667
23.4 CLASS-ORIENTED METRICS 667
23.4.1 The CK Metrics Suite 667
23.4.2 Metrics Proposed by Lorenz and Kidd 670
23.5 OPERATION-ORIENTED METRICS 672
23.6 METRICS FOR OBJECT-ORIENTED TESTING 672
23.7 METRICS FOR OBJECT-ORIENTED PROJECTS 673
23.8 SUMMARY 674
REFERENCES 675
PROBLEMS AND POINTS TO PONDER 675
FURTHER READINGS AND OTHER INFORMATION SOURCES 676
PART FIVE ADVANCED TOPICS IN SOFTWARE ENGINEERING 679
PART FIVE ADVANCED TOPICS IN SOFTWARE ENGINEERING 679
CHAPTER24 FORMAL METHODS 681
24.1 BASIC CONCEPTS 681
CHAPTER24 FORMAL METHODS 681
24.1.1 Deficiencies of Less Formal Approaches 682
24.1.2 Mathematics in Software Development 684
24.1.3 Formal Methods Concepts 685
24.2 MATHEMATICAL PRELIMINARIES 690
24.2.1 Sets and Constructive Specification 690
24.2.2 Set Operators 691
24.2.3 Logic Operators 694
24.3 APPLYING MATHEMATICAL NOTATION FOR FORMAL SPECIFICATION 696
24.4 FORMAL SPECIFICATION LANGUAGES 698
24.5 USING ZTO REPRESENT AN EXAMPLE SOFTWARE COMPONENT 699
24.6 THE TEN COMMANDMENTS OF FORMAL METHODS 701
24.7 FORMAL METHODS—THE ROAD AHEAD 702
24.8 SUMMARY 703
REFERENCES 703
PROBLEMS AND POINTS TO PONDER 704
FURTHER READINGS AND OTHER INFORMATION SOURCES 705
CHAPTER25 CLEANROOM SOFTWARE ENGINEERING 707
CHAPTER25 CLEANROOM SOFTWARE ENGINEERING 707
25.1 THE CLEANROOM APPROACH 708
25.1.1The Cleanroom Strategy 708
25.1.2 What Makes Cleanroom Different? 711
25.2 FUNCTIONAL SPECIFICATION 711
25.2.1 Black-Box Specification 712
25.2.2 State-Box Specification 713
25.3 DESIGN REFINEMENT AND VERIFICATION 714
25.3.1 Design Refinement and Verification 715
25.3.2 Advantages of Design Verification* 719
25.4 CLEANROOM TESTING 720
25.4.1Statistical Use Testing 721
25.4.2 Gertification 722
25.5 SUMMARY 723
PROBLEMS AND POINTS TO PONDER 724
REFERENCES 724
FURTHER READINGS AND OTHER INFORMATION SOURCES 725
CHAPTER26 SOFTWARE REUSE 728
CHAPTER26 SOFTWARE REUSE 728
26.1 MANAGEMENT ISSUES 729
26.1.1 Roadblocks to Reuse 729
26.1.2 A Hardware Analogy 730
26.1.3 Some Suggestions for Establishing on Approach to Reuse 731
26.2 THE REUSE PROCESS 732
26.2.1 Reusable Artifacts 732
26.2.2 A Process Model 734
26.3 DOMAIN ENGINEERING 735
26.3.1 The Domain Analysis Process 736
26.3.2 Characterization Functions 737
26.3.3 Structural Modeling and Structure Points 738
26.4 BUILDING REUSABLE COMPONENTS 740
26.4.1 Analysis and Design for Reuse 740
26.4.2 Construction Methods 741
26.4.3 Component-Based Development 742
26.5 CLASSIFYING AND RETRIEVING COMPONENTS 743
26.5.1 Describing Reusable Components 744
26.5.2 The Reuse Environment 746
26.6 ECONOMICS OF SOFTWARE REUSE 747
26.6.1 Impact on Quality,Productivity,and Cost 747
26.6.2 Cost Analysis Using Structure Points 748
26.6.3 Reuse Metrics 749
26.7 SUMMARY 750
REFERENCES 751
PROBLEMS AND POINTS TO PONDER 752
FURTHER READINGS AND OTHER INFORMATION SOURCES 753
CHAPTER27 REENGINEERING 756
CHAPTER27 REENGINEERING 756
27.1BUSINESS PROCESS REENGINEERING 757
27.1.1 Business Processes 757
27.1.2 Principles of Business Process Reengineering 759
27.1.3 A BPR Model 760
27.1.4 Words of Warning 761
27.2 SOFTWARE REENGINEERING 762
27.2.1 Software Maintenance 762
27.2.2 A Software Reengineering Process Model 763
27.3 REVERSE ENGINEERING 767
27.3.1 Reverse Engineering to Understand Processing 768
27.3.2 Reverse Engineering to Understand Data 770
27.3.3 Reverse Engineering User Interfaces 771
27.4 RESTRUCTURING 773
27.4.1 Code Restructuring 773
27.4.2 Data Restructuring 774
27.5 FORWARD ENGINEERING 774
27.5.1 Forward Engineering for Client/Server Architectures 775
27.5.2 Forward Engineering for Object-Oriented Architectures 777
27.6 THE ECONOMICS OF REENGINEERING 778
27.5.3 Forward Engineering User Interfaces 778
27.7 SUMMARY 779
REFERENCES 780
PROBLEMS AND POINTS TO PONDER 781
FURTHER READINGS AND OTHER INFORMATION SOURCES 782
CHAPTER28 CUENT/SERVER SOFTWARE ENGINEERING 784
CHAPTER28 CUENT/SERVER SOFTWARE ENGINEERING 784
28.1 THE STRUCTURE OF CLIENT/SERVER SYSTEMS 785
28.1.1 Software Components for C/S Systems 786
28.1.2 The Distribution of Software Components 787
28.1.3 Guidelines for Distributing Application Components 788
28.1.4 Linking C/S Software Components 789
28.1.5 Middleware and Object Request Broker Architectures 789
28.2 SOFTWARE ENGINEERING FOR C/S SYSTEMS 791
28.3 ANALYSIS MODELING ISSUES 791
28.4 DESIGN FOR C/S SYSTEMS 792
28.4.2 Database Design 793
28.4.1 Conventional Design Approaches 793
28.4.3 An Overview of a Design Approach 796
28.4.4 Process Design Iteration 797
28.5.1 Overall C/S Testing Strategy 798
28.5 TESTING ISSUES 798
28.5.2 C/S Testing Tactics 801
28.6 SUMMARY 801
REFERENCES 802
PROBLEMS AND POINTS TO PONDER 803
FURTHER READINGS AND OTHER INFORMATION SOURCES 803
CHAPTER29 COMPUTER-AIDED SOFTWARE ENGINEERING 805
CHAPTER29 COMPUTER-AIDED SOFTWARE ENGINEERING 805
29.1 WHAT IS CASE? 806
29.2 BUILDING BLOCKS FOR CASE 806
29.3 A TAXONOMY OF CASE TOOLS 808
29.4 INTEGRATED CASE ENVIRONMENTS 813
29.5 THE INTEGRATION ARCHITECTURE 814
29.6.1 The Role of the Repository in l-CASE 816
29.6 THE CASE REPOSITORY 816
29.6.2 Features and Content 817
29.7 SUMMARY 821
REFERENCES 822
PROBLEMS AND POINTS TO PONDER 822
FURTHER READINGS AND OTHER INFORMATION SOURCES 823
CHAPTER30 THE ROAD AHEAD 826
CHAPTER30 THE ROAD AHEAD 826
30.1 THE IMPORTANCE OF SOFTWARE—REVISITED 827
30.2 THE SCOPE OF CHANGE 827
30.3 PEOPLE AND THE WAY THEY BUILD SYSTEMS 829
30.4 THE NEW SOFTWARE PROCESS 832
30.5 NEW MODES FOR REPRESENTING INFORMATION 833
30.6 TECHNOLOGY AS A DRIVER 835
30.7 A CONCLUDING COMMENT 837
REFERENCES 837
PROBLEMS AND POINTS TO PONDER 838
FURTHER READINGS AND OTHER INFORMATION SOURCES 838
INDEX 840
INDEX 840