《基于重用的软件工程-技术、组织和控制 英文版》PDF下载

  • 购买积分:18 如何计算积分?
  • 作  者:(美)米利(Mili,H.)等著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2003
  • ISBN:7505386247
  • 页数:636 页
图书介绍:本书主要介绍了基于重用的软件工程实践模型和其他有关的基础问题,全面分析了基于重用的软件工程的当前状态和未来发展,重点讨论了软件重用的关键技术、管理和组织问题,详细论述了这些理论知识在基于组件的软件开发生命周期和产品线工程中的运用问题。全书的结构清晰,内容全面,并且提供了相关练习,可以使读者对软件开发有更深刻的认识。

PART Ⅰ INTRODUCTION 3

1 Software Reuse and Software Engineering 3

1.1 Concepts and Terms 4

1.1.1 A Definition of Software Reuse 4

1.1.2 Software Reuse:Potentials and Pitfalls 6

1.1.3 Exercises 7

1.2 Software Reuse Products 7

1.2.1 Reusable Assets 7

1.2.2 Reuse Libraries:Vertical versus Horizontal Sets 9

1.2.3 Exercises 10

1.3 Software Reuse Processes 11

1.3.1 Organizational Structures 12

1.3.2 Domain Engineering 13

1.3.3 Application Engineering 14

1.3.4 Corporate Oversight 15

1.3.5 Exercises 15

1.4 Software Reuse Paradigms 17

1.4.1 Paradigms for Software Retrieval 17

1.4.2 Paradigms for Software Adaptation 17

1.4.3 Paradigms for Software Composition 19

1.4.4 Exercises 19

1.5 Further Reading 20

2.1 Software Reuse Management 22

2.1.1 State of the Art 22

2 State of the Art and the Practice 22

2.1.2 State of the Practice 24

2.1.3 Perspectives 26

2.1.4 Exercises 27

2.2 Software Reuse Techniques 27

2.2.1 State of the Art 27

2.2.2 State of the Practice 31

2.2.3 Perspectives 32

2.2.4 Exercises 33

2.3 Software Reuse Initiatives 33

2.3.1 Software Reuse Libraries 33

2.3.2 Software Reuse Methodologies 36

2.3.3 Software Reuse Standards 41

2.3.4 Exercises 42

2.4 Further Reading 42

3 Aspects of Software Reuse 45

3.1 Organizational Aspects 45

3.1.1 Managerial Infrastructure 45

3.1.2 Technological Infrastructure 46

3.1.3 Reuse Introduction 46

3.1.4 Exercises 47

3.2 Technical Aspects 47

3.2.1 Domain Engineering Aspects 47

3.2.2 Component Engineering Aspects 48

3.2.3 Application Engineering Aspects 48

3.3.2 Software Reuse Cost Estimation 49

3.3.1 Software Reuse Metrics 49

3.2.4 Exercises 49

3.3 Economic Aspects 49

3.3.3 Software Reuse Return on Investment 50

3.4 Further Reading 50

PART Ⅱ ORGANIZATIONAL ASPECTS 53

4 Software Reuse Organizations 53

4.1 Software Reuse Team Structures 53

4.1.1 Characteristic Features 53

4.1.2 Software Reuse Team Structures 55

4.1.3 Determining Factors 61

4.1.4 Exercises 62

4.2.1 Librarian 63

4.2 Reuse Skills 63

4.2.2 Reuse Manager 64

4.2.3 Domain Engineer 64

4.2.4 Application Engineer 65

4.2.5 Component Engineer 66

4.2.6 Exercises 66

4.3 Further Reading 66

5 Support Services 68

5.1 Configuration Management 68

5.2 Quality Assurance 70

5.3 Testing 71

5.4 Verification and Validation 71

5.4.1 Domain-Level Tasks 74

5.4.2 Correspondence Tasks 75

5.4.3 Communicating Results 76

5.5 Risk Management 76

5.6 Certification 77

5.7 Exercises 78

5.8 Further Reading 78

6 Institutionalizing Reuse 79

6.1 Organizational Readiness 79

6.2 Barriers to Reuse 80

6.2.2 Managerial 88

6.2.3 Technological 88

6.2.1 Cultural 88

6.2.4 Infrastructural 89

6.3 Overcoming the Barriers to Reuse 89

6.3.1 Executive Support 89

6.3.2 Training 89

6.3.3 Incentives 90

6.3.4 Incremental Approach 90

6.4 Exercises 93

6.5 Further Reading 93

PART Ⅲ DOMAIN ENGINEERING:BUILDING FOR REUSE 97

7 Building Reusable Assets:An Overview 97

7.1.1 Usability 98

7.1 Reusability 98

7.1.2 Usefulness 104

7.2 Acquiring Reusable Assets 106

7.2.1 Build versus Buy 107

7.2.2 Building Reusable Assets in House 107

7.2.3 Building Application Generators 110

7.3 Domain Engineering Lifecycles 113

7.3.1 Issues 113

7.3.2 A Sample of Domain Engineering Lifecycles 117

7.3.3 Summary 120

7.4 Summary and Discussion 122

8 Domain Analysis 124

8.1.1 A Domain 125

8.1 Basic Concepts 125

8.1.2 Domain Analysis 126

8.1.3 Domain Models 127

8.1.4 Exercises 128

8.2 Domain Scoping 128

8.2.1 Scoping Criteria 128

8.2.2 Over-and Underscoping 129

8.2.3 Exercises 130

8.3 Domain versus Application Requirements 130

8.4 Anatomy of a Domain Component 133

8.4.1 A Model for Component Families 133

8.4.2 Concerns in Designing Component Families 135

8.5 Abstraction and Domain Analysis 136

8.5.1 Abstraction and Commonality Analysis 136

8.4.3 Exercises 136

8.5.2 Abstraction Dimensions 141

8.5.3 Exercises 145

8.6 Domain Analysis Methods 145

8.6.1 Feature-Oriented Domain Analysis(FODA) 145

8.6.2 Organization Domain Modeling(ODM) 146

8.6.3 Joint Object-Oriented Domain Analysis(JODA) 147

8.6.4 Reuse Library Process Model(RLPM) 148

8.6.5 Domain Analysis and Design Process(DADP) 149

8.6.7 The SYNTHESIS Domain Analysis Method 150

8.6.6 Domain-Specific Software Architecture(DSSA) 150

8.6.8 Reuse Business Methodology 151

8.6.9 Comparison 152

8.6.10 Exercises 158

8.7 Domain Analysis Tools 158

8.7.1 KAPTUR,a Knowledge-Based Tool 158

8.7.2 Genesis,a Builder for Database Management Systems 159

8.7.3 Exercises 159

8.8 Further Reading 159

9 Programming Paradigms and Reusability 160

9.1 Usability Attributes 160

9.1.1 Reusability-Abstraction Boundaries 161

9.1.2 Abstraction and Composability 163

9.2 Representation and Modeling Paradigms 167

9.2.1 Declarative versus Procedural Representations 167

9.2.2 Object-Oriented Modeling 173

9.3 Abstraction and Composition in Development Paradigms 175

9.3.1 Declarative Representations:The Case of Logic Programming 176

9.3.2 Procedural(Functional)Programming 179

9.3.3 Object-Oriented Development 185

9.4 Toward Multiparadigm Development 192

PART Ⅳ OBJECT-ORIENTED DOMAIN ENGINEERING 197

10 A Pragmatic Introduction to Object Orientation 197

10.1.1 Overview 198

10.1 Introduction 198

10.1.2 The Financial Domain 199

10.2 The Tenets of Object-Oriented Programming 200

10.2.1 A Sample Program 200

10.2.2 Encapsulation and Information Hiding 202

10.2.3 Overloading and Genericity 207

10.2.4 Subtyping and Class Inheritance 213

10.2.5 Method Resolution,Late Binding,and Polymorphism. 225

10.3 The Language Wars 231

10.4 Discussion 236

11 Abstraction and Parameterization Techniques in Object Orientation 237

11.1 Abstraction Techniques in Object-Oriented Modeling 239

11.1.1 An Ontology of Objects 240

11.1.2 Inheritance in Knowledge Representation 243

11.1.3 Inheritance in Obiect-Oriented Analysis 245

11.1.4 Metamodeling 246

11.1.5 Understanding Metamodeling 253

11.1.6 In Practice—a Summary 257

11.2 Abstraction Techniques in Object-Oriented Programming Languages 262

11.2.1 Abstract C1asses 263

11.2.2 Generic Classes 267

11.3 Metaprogramming 271

11.3.1 Building an Interpreter 272

11.3.2 Computational Refiection and Metaclasses 275

11.3.3 Implementing Powertypes 280

11.4.1 Structural Abstraction Patterns 282

11.4 Design Patterns 282

11.4.2 Behavioral Abstraction Patterns 286

11.5 Conclusion 290

12 Composition Techniques in Object Orientation 292

12.1 Issues 293

12.1.1 Composability Requirements 293

12.1.2 Structural and Behavioral Composition 294

12.1.3 Abstraction and Granularity 297

12.1.4 Binding Time 297

12.2 Linguistic Approaches 298

12.2.1 Constraint and Logic-Based Programming 298

12.2.2 Functional Composition 301

12.2.3 Hybrid Object-Oriented and Declarative Approaches 305

12.3 Modularization and Packaging Approaches 309

12.3.1 Aspect-Oriented Programming 310

12.3.2 Subject-Oriented Programming 312

12.3.3 View-Oriented Programming 317

12.3.4 Other Approaches 321

12.4 Design-Based Approaches 323

12.4.1 Event-Based Composition 323

12.4.2 Simulated Reflection 328

12.4.3 Composition Design Patterns 336

12.5 Summary and Discussion 341

13 Application Frameworks 343

13.1.1 A First Definition 344

13.1 What Is in a Framework 344

13.1.2 The Anatomy of a Framework 345

13.1.3 The Framework Reuse Lifecycle 350

13.2 Fulfilling the Framework Contract 351

13.2.1 Component Substitutability 353

13.2.2 Composition Issues 360

13.3 Building Frameworks 368

13.3.1 Frameworks as Products of Domain Engineering 369

13.3.2 Frameworks as Planned Byproducts of Application Development 370

13.4 The SWING Framework 372

13.4.1 Overview 372

13.4.2 The Event-Handling Framework 374

13.4.3 The Pluggable Look and Feel Framework 377

13.5 Conclusion 380

14 Architectural Frameworks 381

14.1 What Is an Architecture 382

14.1.1 Definition 382

14.1.2 Quality Attributes of Architectures 385

14.1.3 Architectural Styles and Connectors 387

14.2 Architecture and Reuse 393

14.2.1 The Development Lifecycle of a Software Architecture 393

14.2.2 Dimensions of Reusability 395

14.2.3 Issues in Architectural Frameworks 398

14.3.1 The Problem 399

14.3 CORBA 399

14.3.2 The Core Architecture 402

14.3.3 Handling Method Calls 406

14.3.4 Implementing Application Objects 408

14.4 Java-Based Technologies 411

14.4.1 Java RMI 412

14.4.2 The EJB Architecture 416

14.5 The COM Family 423

14.6 Summary and Discussion 429

14.7 Further Reading 431

15 Application Engineering 435

15.1 Application Engineering Paradigms 435

PART Ⅴ APPLICATION ENGINEERING 435

15.2 Application Engineering Lifecycles 437

15.3 Application Engineering Development Tasks and Heuristics 440

16 Component Storage and Retrieval 444

16.1 An Introduction to Software Libraries 444

16.1.1 Terminology for Storage and Retrieval 445

16.1.2 Assessment Criteria 447

16.1.3 Characterizing a Storage-Retrieval Method 450

16.1.4 Exercises 452

16.2 Classifying Software Assets for Storage and Retrieval 454

16.2.1 Obstacles to Software Assets Classification 454

16.2.2 Issues in Software Storage and Retrieval 455

16.2.3 Classifying Software Libraries 456

16.2.4 Exercises 458

16.3 Further Reading 459

17 Reusable Asset Integration 463

17.1 Asset Instantiation Paradigms 464

17.1.1 Component Selection 465

17.1.2 Component Generation 465

17.1.3 Component Specialization 465

17.2 Asset Composition Paradigms 466

17.2.1 Composability Scenarios 466

17.2.2 Composability Media 469

17.3 Issues in Integrating Components 470

17.3.1 Component Issues 471

17.3.2 Process Issues 472

17.3.3 Quality Issues 474

PART Ⅵ MANAGERIAL ASPECTS OF SOFTWARE REUSE 479

18 Software Reuse Metrics 479

18.1 Software Engineering Metrics 479

18.1.1 Attributes and Metrics 479

18.1.2 Structural Metrics 480

18.1.3 Functional Metrics 481

18.1.4 Exercises 483

18.2 Component Engineering Metrics 484

18.2.1 Concept 485

18.2.3 Context 486

18.2.2 Content 486

18.2.4 Exercises 487

18.3 Application Engineering Metrics 488

18.3.1 Project-Level Functions 488

18.3.2 Exercises 489

18.4 Domain Engineering Metrics 490

18.4.1 Reuse Mearns:Software Library Metrics 490

18.4.2 Exercises 491

18.5 Organization Level Metrics 491

18.5.1 Reuse Impacts:Productivity Gains 491

18.5.2 Exercises 492

18.6 Further Reading 492

19.1 Software Engineering Economics:COCOMO 494

19 Software Reuse Cost Estimation 494

19.1.1 Basic COCOMO 495

19.1.2 Intermediate COCOMO 496

19.1.3 Detailed COCOMO 497

19.1.4 Exercises 499

19.2 Component Engineering Economics 499

19.2.1 Development for Reuse 500

19.2.2 Quality Gains 501

19.2.3 Productivity Gains 503

19.2.4 Time-to-Market Gains 505

19.2.5 Exercises 505

19.3.1 Development with Reuse 506

19.3 Application Engineering Economics 506

19.3.2 Productivity Gains 507

19.3.3 Quality Gains 508

19.3.4 Time-to-Market Gains 509

19.3.5 Exercises 509

19.4 Further Reading 510

20 Software Reuse Return on Investment 511

20.1 Modeling Investment Decisions 512

20.1.1 Investment Cost Factors 512

20.1.2 Economic Functions 513

20.1.3 Exercises 515

20.2 Software Reuse Investment Decisions 515

20.2.1 Component Engineering Investment Cycle 516

20.2.2 Application Engineering Investment Cycle 519

20.2.3 Domain Engineering Investment Cycle 520

20.2.4 Corporate Investment Cycle 521

20.2.5 Exercises 522

20.3 Further Reading 523

Part Ⅶ Software Reuse Technologies 529

21 Component-Based Software Engineering(CBSE) 529

21.1 Components 530

21.1.1 What Is a Component 530

21.1.2 The Anatomy of a Component 532

21.1.3 What Makes a Good Component 534

21.2.1 What Is a Component Model 535

21.2 Component Models 535

21.2.2 Things that Component Models Should Address 536

21.2.3 Example Component Models 538

21.3 Component-Based System Development(CBSD) 538

21.3.1 CBSD Process 539

21.3.2 Component Granularity 541

21.4 Issues in Developing with Components 542

21.4.1 Technical Issues 542

21.4.2 Business Issues 544

21.5 Further Reading 545

22 Product-Line Engineering(PLE) 546

22.1 PLE and Software Reuse 547

22.1.1 Exercises 548

22.2 PLE Lifecycle 549

22.2.1 Domain and Application Engineering Aspects 549

22.2.2 Attributes of a PLE Lifecycle 550

22.2.3 Success Factors 551

22.2.4 Exercises 552

22.3 Product-Line Architectures 552

22.3.1 Software Architectures and Product-Line Architectures 552

22.3.2 Conformance and Synchronization in PLAs 553

22.3.3 Evaluating Architectures 554

22.3.4 Exercises 554

22.4.1 The SYNTHESIS Approach 555

22.4 PLE Approaches 555

22.4.2 The Product-Line Practice 559

22.4.3 Product-Line Approaches 564

22.5 Further Reading 564

23 COTS Based Development 566

23.1 Commercial Off the Shelf Software 566

23.1.1 Definition and Background 566

23.1.2 COTS and CBSD 567

23.1.3 Exercises 568

23.2 A Lifecycle for COTS Based Development 569

23.2.1 COTS Selection 569

23.2.2 COTS Integration 570

23.2.3 Verification and Validation of COTS Based Systems 571

23.2.4 Maintenance of COTS Based Systems 572

23.2.5 Cost Estimation for COTS Development 574

23.2.6 Exercises 574

23.3 Developing COTS Certification Criteria 575

23.3.1 Certification Categories 575

23.3.2 COTS Certification Levels 576

23.3.3 COTS Worthiness 577

23.3.4 Domain Pervasiveness 581

23.3.5 Architecture Conformance 582

23.3.6 Application Adequacy 584

23.4 Further Reading 585

APPENDIXES 587

Appendix A Software Reuse Resources 587

A.1 Textbooks 589

A.2 Web Sites 590

A.3 Conference Series 591

A.4 Software Reusc Surveys 593

Appendix B Term Projects 594

B.1 Simulation of Waiting Queues 594

B.1.1 Domain Engineering 594

B.1.2 Application Engineering 595

B.2 Library Systems 597

B.2.1 Domain Engineering 597

B.2.2 Application Engineering 599

Bibliography 602

Index 627