《面向对象软件工程 使用UML、模式与Java 英文影印版》PDF下载

  • 购买积分:21 如何计算积分?
  • 作  者:(美)布鲁格著
  • 出 版 社:北京:清华大学出版社
  • 出版年份:2011
  • ISBN:9787302243243
  • 页数:778 页
图书介绍:本书是作为软件工程项目的课程教程和专业参考书编写的。

PART Ⅰ Getting Started 1

Chapter 1 Introduction to Software Engineering 3

1.1 Introduction:Software Engineering Failures 4

1.2 What Is Software Engineering? 5

1.2.1 Modeling 6

1.2.2 Problem Solving 8

1.2.3 Knowledge Acquisition 8

1.2.4 Rationale 9

1.3 Software Engineering Concepts 10

1.3.1 Paicipants and Roles 11

1.3.2 Systems and Models 12

1.3.3 Wortrk Products 13

1.3.4 Activities,Tasks,and Resources 13

1.3.5 Functional and Nonfunctional Requirements 14

1.3.6 Notations,Methods,and Methodologies 15

1.4 Software Engineering Development Activities 16

1.4.1 Requirements Elicitation 16

1.4.2 Analysis 16

1.4.3 System Design 19

1.4.4 Object Design 19

1.4.5 Implementation 20

1.4.6 Testing 20

1.5 Managing Software Development 21

1.5.1 Communication 21

1.5.2 Rationale Management 22

1.5.3 Software Configuration Management 22

1.5.4 Project Management 23

1.5.5 Software Life Cycle 23

1.5.6 Putting It All Together 23

1.6 ARENA Case Study 23

1.7 Further Reading 25

1.8 Exercises 25

Chapter 2 Modeling with UML 29

2.1 Introduction 30

2.2 An Overview of UML 31

2.2.1 Use Case Diagrams 31

2.2.2 Class Diagrams 32

2.2.3 Interaction Diagrams 32

2.2.4 State Machine Diagrams 33

2.2.5 Activity Diagrams 33

2.3 Modeling Concepts 35

2.3.1 Systems,Models,and Views 35

2.3.2 Data Types,Abstract Data Types,and Instances 37

2.3.3 Classes,Abstract Classes,and Objects 38

2.3.4 Event Classes,Events,and Messages 40

2.3.5 Object-Oriented Modeling 41

2.3.6 Falsification and Prototyping 43

2.4 A Deeper View into UML 43

2.4.1 Use Case Diagrams 44

2.4.2 Class Diagrams 50

2.4.3 Interaction Diagrams 59

2.4.4 State Machine Diagrams 62

2.4.5 Activity Diagrams 65

2.4.6 Diagram Organization 68

2.4.7 Diagram Extensions 70

2.5 Further Readings 71

2.6 Exercises 72

Chapter 3 Project Organization and Communication 77

3.1 Introduction:A Rocket Example 78

3.2 An Overview of Projects 79

3.3 Project Organization Concepts 83

3.3.1 Project Organizations 83

3.3.2 Roles 86

3.3.3 Tasks and Work Products 88

3.3.4 Schedule 90

3.4 Project Communication Concepts 92

3.4.1 Planned Communication 92

3.4.2 Unplanned Communication 99

3.4.3 Communication Mechanisms 102

3.5 Organizational Activities 109

3.5.1 Joining a Team 109

3.5.2 Joining the Communication Infrastructure 109

3.5.3 Attending Team Status Meetings 110

3.5.4 Organizing Client and Project Reviews 113

3.6 Further Readings 114

3.7 Exercises 115

PART Ⅱ Dealing with Complexity 119

Chapter 4 Requirements Elicitation 121

4.1 Introduction:Usability Examples 122

4.2 An Overview of Requirements Elicitation 123

4.3 Requirements Elicitation Concepts 125

4.3.1 Functional Requirements 125

4.3.2 Nonfunctional Requirements 126

4.3.3 Completeness,Consistency,Clarity,and Correctness 128

4.3.4 Realism,Verifiability,and Traceability 129

4.3.5 Greenfield Engineering,Reengineering,and Interface Engineering 129

4.4 Requirements Elicitation Activities 130

4.4.1 Identifying Actors 130

4.4.2 Identifying Scenarios 132

4.4.3 Identifying Use Cases 135

4.4.4 Refining Use Cases 138

4.4.5 Identifying Relationships among Actors and Use Cases 140

4.4.6 Identifying Initial Analysis Objects 143

4.4.7 Identifying Nonfunctional Requirements 146

4.5 Managing Requirements Elicitation 148

4.5.1 Negotiating Specifications with Clients:Joint Application Design 148

4.5.2 Maintaining Traceability 150

4.5.3 Documenting Requirements Elicitation 151

4.6 ARENA Case Study 153

4.6.1 Initial Problem Statement 153

4.6.2 Identifying Actors and Scenarios 155

4.6.3 Identifying Use Cases 159

4.6.4 Refining Use Cases and Identifying Relationships 161

4.6.5 Identifying Nonfunctional Requirements 166

4.6.6 Lessons Learned 168

4.7 Further Readings 168

4.8 Exercises 169

Chapter 5 Analysis 173

5.1 Introduction:An Optical Illusion 174

5.2 An Overview of Analysis 174

5.3 Analysis Concepts 176

5.3.1 Analysis Object Models and Dynamic Models 176

5.3.2 Entity,Boundary,and Control Objects 177

5.3.3 Generalization and Specialization 178

5.4 Analysis Activities:From Use Cases to Objects 179

5.4.1 Identifying Entity Objects 180

5.4.2 Identifying Boundary Objects 182

5.4.3 Identifying Control Objects 184

5.4.4 Mapping Use Cases to Objects with Sequence Diagrams 185

5.4.5 Modeling Interactions among Objects with CRC Cards 189

5.4.6 Identifying Associations 190

5.4.7 Identifying Aggregates 192

5.4.8 Identifying Attributes 193

5.4.9 Modeling State-Dependent Behavior of Individual Objects 194

5.4.10 Modeling Inheritance Relationships between Objects 195

5.4.11 Reviewing the Analysis Model 196

5.4.12 Analysis Summary 197

5.5 Managing Analysis 199

5.5.1 Documenting Analysis 199

5.5.2 Assigning Responsibilities 200

5.5.3 Communicating about Analysis 201

5.5.4 Iterating over the Analysis Model 203

5.5.5 Client Sign-Off 204

5.6 ARENA Case Study 206

5.6.1 Identifying Entity Objects 206

5.6.2 Identifying Boundary Objects 211

5.6.3 Identifying Control Objects 212

5.6.4 Modeling Interactions Among Objects 212

5.6.5 Reviewing and Consolidating the Analysis Model 213

5.6.6 Lessons Learned 217

5.7 Further Readings 218

5.8 Exercises 219

Chapter 6 System Design:Decomposing the System 223

6.1 Introduction:A Floor Plan Example 224

6.2 An Overview of System Design 226

6.3 System Design Concepts 228

6.3.1 Subsystems and Classes 228

6.3.2 Services and Subsystem Interfaces 230

6.3.3 Coupling and Cohesion 230

6.3.4 Layers and Partitions 235

6.3.5 Architectural Styles 238

6.4 System Design Activities:From Objects to Subsystems 247

6.4.1 Starting Point:Analysis Model for a Route Planning System 247

6.4.2 Identifying Design Goals 249

6.4.3 Identifying Subsystems 253

6.5 Further Readings 255

6.6 Exercises 255

Chapter 7 System Design:Addressing Design Goals 259

7.1 Introduction:A Redundancy Example 260

7.2 An Overview of System Design Activities 261

7.3 Concepts:UML Deployment Diagrams 262

7.4 System Design Activities:Addressing Design Goals 264

7.4.1 Mapping Subsystems to Processors and Components 264

7.4.2 Identifying and Storing Persistent Data 266

7.4.3 Providing Access Control 269

7.4.4 Designing the Global Control Flow 275

7.4.5 Identifying Services 277

7.4.6 Identifying Boundary Conditions 279

7.4.7 Reviewing System Design 282

7.5 Managing System Design 284

7.5.1 Documenting System Design 284

7.5.2 Assigning Responsibilities 286

7.5.3 Communicating about System Design 287

7.5.4 Iterating over the System Design 288

7.6 ARENA Case Study 290

7.6.1 Identifying Design Goals 290

7.6.2 Identifying Subsystems 291

7.6.3 Mapping Subsystems to Processors and Components 292

7.6.4 Identifying and Storing Persistent Data 294

7.6.5 Providing Access Control 295

7.6.6 Designing the Global Control Flow 296

7.6.7 Identifying Services 297

7.6.8 Identifying Boundary Conditions 299

7.6.9 Lessons Learned 302

7.7 Further Readings 302

7.8 Exercises 303

Chapter 8 Object Design:Reusing Pattern Solutions 307

8.1 Introduction:Bloopers 308

8.2 An Overview of Object Design 309

8.3 Reuse Concepts:Solution Objects,Inheritance,and Design Patterns 313

8.3.1 Application Objects and Solution Objects 313

8.3.2 Specification Inheritance and Implementation Inheritance 313

8.3.3 Delegation 316

8.3.4 The Liskov Substitution Principle 317

8.3.5 Delegation and Inheritance in Design Patterns 317

8.4 Reuse Activities:Selecting Design Patterns and Components 320

8.4.1 Encapsulating Data Stores with the Bridge Pattern 321

8.4.2 Encapsulating Legacy Components with the Adapter Pattern 323

8.4.3 Encapsulating Context with the Strategy Pattern 325

8.4.4 Encapsulating Platforms with the Abstract Factory Pattern 326

8.4.5 Encapsulating Control Flow with the Command Pattern 329

8.4.6 Encapsulating Hierarchies with the Composite Design Pattern 330

8.4.7 Heuristics for Selecting Design Patterns 332

8.4.8 Identifying and Adjusting Application Frameworks 332

8.5 Managing Reuse 337

8.5.1 Documenting Reuse 338

8.5.2 Assigning Responsibilities 340

8.6 ARENA Case Study 341

8.6.1 Applying the Abstract Factory Design Pattern 341

8.6.2 Applying the Command Design Pattern 342

8.6.3 Applying the Observer Design Pattern 342

8.6.4 Lessons Learned 344

8.7 Further Readings 344

8.8 Exercises 345

Chapter 9 Object Design:Specifying Interfaces 349

9.1 Introduction:A Railroad Example 350

9.2 An Overview of Interface Specification 351

9.3 Interface Specification Concepts 352

9.3.1 Class Implementor,Class Extender,and Class User 353

9.3.2 Types,Signatures,and Visibility 354

9.3.3 Contracts:Invariants,Preconditions,and Postconditions 356

9.3.4 Object Constraint Language 357

9.3.5 OCL Collections:Sets,Bags,and Sequences 361

9.3.6 OCL Quantifiers:forAll and exists 365

9.4 Interface Specification Activities 365

9.4.1 Identifying Missing Attributes and Operations 366

9.4.2 Specifying Types,Signatures,and Visibility 368

9.4.3 Specifying Pre- and Postconditions 369

9.4.4 Specifying Invariants 371

9.4.5 Inheriting Contracts 374

9.5 Managing Object Design 375

9.5.1 Documenting Object Design 375

9.5.2 Assigning Responsibilities 381

9.5.3 Using Contracts During Requirements Analysis 382

9.6 ARENA Case Study 382

9.6.1 Identifying Missing Operations in TournamentStyle and Round 383

9.6.2 Specifying the TournamentStyle and Round Contracts 384

9.6.3 Specifying the KnockOutStyl e and KnockOutRound Contracts 386

9.6.4 Lessons Learned 387

9.7 Further Readings 388

9.8 Exercises 389

Chapter 10 Mapping Models to Code 393

10.1 Introduction:A Book Example 394

10.2 An Overview of Mapping 395

10.3 Mapping Concepts 396

10.3.1 Model Transformation 397

10.3.2 Refactoring 398

10.3.3 Forward Engineering 400

10.3.4 Reverse Engineering 401

10.3.5 Transformation Principles 401

10.4 Mapping Activities 402

10.4.1 Optimizing the Object Design Model 402

10.4.2 Mapping Associations to Collections 406

10.4.3 Mapping Contracts to Exceptions 412

10.4.4 Mapping Object Models to a Persistent Storage Schema 416

10.5 Managing Implementation 422

10.5.1 Documenting Transformations 422

10.5.2 Assigning Responsibilities 424

10.6 ARENA Case Study 424

10.6.1 ARENA Statistics 424

10.6.2 Mapping Associations to Collections 426

10.6.3 Mapping Contracts to Exceptions 428

10.6.4 Mapping the Object Model to a Database Schema 430

10.6.5 Lessons Learned 431

10.7 Further Readings 432

10.8 Exercises 432

Chapter 11 Testing 437

11.1 Introduction:Testing The Space Shuttle 438

11.2 An Overview of Testing 440

11.3 Testing Concepts 444

11.3.1 Faults,Erroneous States,and Failures 445

11.3.2 Test Cases 448

11.3.3 Test Stubs and Drivers 450

11.3.4 Corrections 451

11.4 Testing Activities 451

11.4.1 Component Inspection 452

11.4.2 Usability Testing 453

11.4.3 Unit Testing 455

11.4.4 Integration Testing 465

11.4.5 System Testing 471

11.5 Managing Testing 476

11.5.1 Planning Testing 476

11.5.2 Documenting Testing 478

11.5.3 Assigning Responsibilities 480

11.5.4 Regression Testing 481

11.5.5 Automating Testing 482

11.5.6 Model-Based Testing 484

11.6 Further Readings 487

11.7 Exercises 488

PART Ⅲ Managing Change 491

Chapter 12 Rationale Management 493

12.1 Introduction:Slicing Ham 494

12.2 An Overview of Rationale 495

12.3 Rationale Concepts 497

12.3.1 Centralized Traffic Control 498

12.3.2 Defining the Problem:Issues 499

12.3.3 Exploring the Solution Space:Proposals 500

12.3.4 Evaluating the Solution Space:Criteria and Arguments 502

12.3.5 Collapsing the Solution Space:Resolutions 504

12.3.6 Implementing Resolutions:Action Items 504

12.3.7 Examples of Issue-Based Models and Systems 505

12.4 Rationale Activities:From Issues to Decisions 510

12.4.1 CTC System Design 510

12.4.2 Capturing Rationale in Meetings 511

12.4.3 Capturing Rationale Asynchronously 519

12.4.4 Capturing Rationale when Discussing Change 520

12.4.5 Reconstructing Rationale 524

12.5 Managing Rationale 526

12.5.1 Documenting Rationale 526

12.5.2 Assigning Responsibilities 528

12.5.3 Heuristics for Communicating about Rationale 529

12.5.4 Issue Modeling and Negotiation 530

12.5.5 Conflict Resolution Strategies 531

12.6 Further Readings 533

12.7 Exercises 533

Chapter 13 Configuration Management 537

13.1 Introduction:An Aircraft Example 538

13.2 An Overview of Configuration Management 540

13.3 Configuration Management Concepts 541

13.3.1 Configuration Items and CM Aggregates 542

13.3.2 Versions and Configurations 543

13.3.3 Change Requests 544

13.3.4 Promotions and Releases 544

13.3.5 Repositories and Workspaces 545

13.3.6 Version Identification Schemes 545

13.3.7 Changes and Change Sets 548

13.3.8 Configuration Management Tools 548

13.4 Configuration Management Activities 550

13.4.1 Configuration Item and CM Aggregate Identification 552

13.4.2 Promotion Management 554

13.4.3 Release Management 555

13.4.4 Branch Management 557

13.4.5 Variant Management 562

13.4.6 Change Management 565

13.5 Managing Configuration Management 566

13.5.1 Documenting Configuration Management 567

13.5.2 Assigning Configuration Management Responsibilities 568

13.5.3 Planning Configuration Management Activities 568

13.5.4 Continuous Integration:Testing and Promotion Management 569

13.6 Further Readings 571

13.7 Exercises 572

Chapter 14 Project Management 575

14.1 Introduction:The STS-51L Launch Decision 576

14.2 An Overview of Project Management 577

14.3 Project Management Concepts 584

14.3.1 Tasks and Activities 584

14.3.2 Work Products,Work Packages,and Roles 585

14.3.3 Work Breakdown Structure 586

14.3.4 Task Model 586

14.3.5 Skill Matrix 588

14.3.6 The Software Project Management Plan 589

14.4 Classical Project Management Activities 592

14.4.1 Planning the Project 592

14.4.2 Organizing the Project 598

14.4.3 Controlling the Project 603

14.4.4 Terminating the Project 609

14.5 Agile Project Management Activities 611

14.5.1 Planning the Project:Create Product and Sprint Backlogs 611

14.5.2 Organizing the Project 612

14.5.3 Controlling the Project:Daily Scrums and Burn Down Charts 613

14.5.4 Terminating the Project:Sprint Reviews 614

14.6 Further Readings 616

14.7 Exercises 617

Chapter 15 Software Life Cycle 621

15.1 Introduction:Polynesian Navigation 622

15.2 IEEE 1074:Standard for Developing Life Cycle Processes 626

15.2.1 Processes and Activities 626

15.2.2 Life Cycle Modeling 628

15.2.3 Project Management 628

15.2.4 Pre-Development 629

15.2.5 Development 630

15.2.6 Post-Development 631

15.2.7 Integral Processes(Cross-Development) 632

15.3 Characterizing the Maturity of Software Life Cycle Models 633

15.4 Life Cycle Models 636

15.4.1 Sequential Activity-Centered Models 637

15.4.2 Iterative Activity-Centered Models 639

15.4.3 Entity-Centered Models 644

15.5 Further Readings 647

15.6 Exercises 648

Chapter 16 Methodologies:Putting It All Together 651

16.1 Introduction:The First Ascent of K2 652

16.2 Project Environment 655

16.3 Methodology Issues 657

16.3.1 How Much Planning? 657

16.3.2 How Much Reuse? 658

16.3.3 How Much Modeling? 659

16.3.4 How Much Process? 661

16.3.5 How Much Control and Monitoring? 661

16.3.6 When to Redefine Project Goals? 662

16.4 A Spectrum of Methodologies 662

16.4.1 Royce’s Methodology 663

16.4.2 Extreme Programming 669

16.4.3 Rugby Methodologies 673

16.5 Case Studies 680

16.5.1 XP Project:ATRACT 681

16.5.2 Local King Client:FRIEND 684

16.5.3 Distributed Project:JAMES 691

16.5.4 Case Studies Summary 698

16.6 Further Readings 703

16.7 Exercises 703

PART Ⅳ Appendices 707

AppendixA Design Patterns 709

A.1 Abstract Factory:Encapsulating Platforms 710

A.2 Adapter:Wrapping Around Legacy Code 711

A.3 Bridge:Allowing for Alternate Implementations 712

A.4 Command:Encapsulating Control Flow 713

A.5 Composite:Representing Recursive Hierarchies 714

A.6 Facade:Encapsulating Subsystems 715

A.7 Observer:Decoupling Entities from Views 716

A.8 Proxy:Encapsulating Expensive Objects 717

A.9 Strategy:Encapsulating Algorithms 718

A.10 Heuristics for Selecting Design Patterns 719

AppendixB Glossary 721

Appendix C Bibliography 753

Index 767