《软件工程实践者的研究方法 英文版·第4版》PDF下载

  • 购买积分:23 如何计算积分?
  • 作  者:(美)(R.S.普雷斯曼)Roger S.Pressman著
  • 出 版 社:北京:机械工业出版社
  • 出版年份:1999
  • ISBN:7111067118
  • 页数:852 页
图书介绍:

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