本书全面而系统地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评。第7版在结构和内容上均有调整、更新和充实,更加突出软件过程,强调普遍使用的软件工程方法。本版基于原书第7版进行改编,保留其中的基本内容,压缩或删除了一些高级内容,更加适合作为国内高校计算机、软件工程及相关专业本科生的软件工程课程教材。
Roger Pressman编写的这部翔实而全面的软件工程指南,广泛适合软件工程专业的学生及投身软件工程实践或需要参与这种实践的软件开发人员和管理人员。
——《IEEE Software》
这是一本经典的现代教材,叙述清晰而又具有权威性。本书包含大量插图、例子、习题和参考资料……如果读者心存疑问:“软件工程是什么?它现在在哪里?”那么最好阅读这本书。
——《ACM Computing Reviews》
本书自30年前第1版问世以来,一直受到软件工程界的高度重视,对该学科的发展具有深刻影响,其权威性是公认的、无可置疑的。它在全面而系统地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评。第7版在结构和内容上均有调整、更新和充实,更加突出软件过程,强调普遍使用的软件工程方法。
本版基于原书第7版进行改编,保留其中的基本内容,压缩或删除了一些高级内容,更加适合作为国内高校计算机、软件工程及相关专业本科生的软件工程课程教材。
本书主要内容包括:
第一部分 软件过程,介绍了说明性模型和敏捷过程模型。
第二部分 建模,介绍了现代分析与设计方法,重点放在基于UML的建模方面。
第三部分 质量管理,是第7版中新增加的内容,描述质量评审技术、软件质量保证、软件 测试、软件配置管理的各个方面。
第四部分 软件项目管理,介绍与计划、管理和控制软件项目有关的主题。
Roger S. Pressman 软件过程改善和软件工程技术方面的国际知名的权威人士。30多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终工作在软件工程领域。Pressman博士著有6部著作,并撰写了很多技术文章,是多种行业期刊的固定撰稿人,曾任多种行业杂志的编委,多年来一直担任《IEEE Software》杂志的Manager专栏的编辑。Pressman博士是知名的演讲者,曾在许多行业会议上演讲,他还是美国计算机协会(ACM)、美国电气与电子工程师协会(IEEE)等组织的成员。
When computer software succeeds—when it meets the needs of the people who use it, when it performs flawlessly over a long period of time, when it is easy to modify and even easier to use—it can and does change things for the better. But when software fails—when its users are dissatisfied, when it is error prone, when it is difficult to change and even harder to use—bad things can and do happen. We all want to build software that makes things better, avoiding the bad things that lurk in the shadow of failed efforts. To succeed, we need discipline when software is designed and built. We need an engineering approach.
It has been almost three decades since the first edition of this book was written. During that time, software engineering has evolved from an obscure idea practiced by a relatively small number of zealots to a legitimate engineering discipline. Today, it is recognized as a subject worthy of serious research, conscientious study, and tumultuous debate. Throughout the industry, software engineer has replaced programmer as the job title of preference. Software process models, software engineering methods, and software tools have been adopted successfully across a broad spectrum of industry segments.
Although managers and practitioners alike recognize the need for a more disciplined approach to software, they continue to debate the manner in which discipline is to be applied. Many individuals and companies still develop software haphazardly, even as they build systems to service today抯 most advanced technologies. Many professionals and students are unaware of modern methods. And as a result, the quality of the software that we produce suffers, and bad things happen. In addition, debate and controversy about the true nature of the software engineering approach continue. The status of software engineering is a study in contrasts. Attitudes have changed, progress has been made, but much remains to be done before the discipline reaches full maturity.
The seventh edition of Software Engineering: A Practitioner抯 Approach is intended to serve as a guide to a maturing engineering discipline. Like the six editions that preceded it, the seventh edition is intended for both students and practitioners, retaining its appeal as a guide to the industry professional and a comprehensive introduction to the student at the upper-level undergraduate or first-year graduate level.
The seventh edition is considerably more than a simple update. The book has been revised and restructured to improve pedagogical flow and emphasize new and important software engineering processes and practices. In addition, a revised and updated 搒upport system, illustrated in the figure, provides a comprehensive set of student, instructor, and professional resources to complement the content of the book. These resources are presented as part of a website (www.mhhe.com/ pressman) specifically designed for Software Engineering: A Practitioner's Approach.
The Seventh Edition. The 22 chapters of this edition have been reorganized into four parts.
Part 1, The Process, presents a variety of different views of software process, considering all important process models and addressing the debate between prescriptive and agile process philosophies. Part 2, Modeling, presents analysis and design methods with an emphasis on object-oriented techniques and UML modeling. Part 3, Quality Management, presents the concepts, procedures, techniques, and methods that enable a software team to assess software quality, review software engineering work products, conduct SQA procedures, and apply an effective testing strategy and tactics. Part 4, Managing Software Projects, presents topics that are relevant to those who plan, manage, and control a software development project. Continuing in the tradition of past editions, a series of sidebars is used throughout the book to present the trials and tribulations of a (fictional) software team and to provide supplementary materials about methods and tools that are relevant to chapter topics.
Acknowledgments. My work on the seven editions of Software Engineering: A Practitioner抯 Approach has been the longest continuing technical project of my life. Even when the writing stops, information extracted from the technical literature continues to be assimilated and organized, and criticism and suggestions from readers worldwide is evaluated and cataloged. For this reason, my thanks to the many authors of books, papers, and articles (in both hardcopy and electronic media) who have provided me with additional insight, ideas, and commentary over nearly 30 years.
Special thanks go to Tim Lethbridge of the University of Ottawa, who assisted me in the development of UML and OCL examples and developed the case study that accompanies this book, and Dale Skrien of Colby College, who developed the UML tutorial in Appendix 1. Their assistance and comments were invaluable. Special thanks also go to Bruce Maxim of the University of Michigan-Dearborn, who assisted me in developing much of the pedagogical website content that accompanies this book. Finally, I wish to thank the reviewers of the seventh edition: Their in-depth comments and thoughtful criticism have been invaluable.
Osman Balci, SK Jain,
Virginia Tech University National Institute of Technology Hamirpur
Max Fomitchev, Saeed Monemi,
Penn State University Cal Poly Pomona
Jerry (Zeyu) Gao, Ahmed Salem,
San Jose State University California State University
Guillermo Garcia, Vasudeva Varma,
Universidad Alfonso X Madrid IIIT Hyderabad
Pablo Gervas,
Universidad Complutense de Madrid
The content of the seventh edition of Software Engineering: A Practitioner抯 Approach has been shaped by industry professionals, university professors, and students who have used earlier editions of the book and have taken the time to communicate their suggestions, criticisms, and ideas. My thanks to each of you. In addition, my personal thanks go to our many industry clients worldwide, who certainly have taught me as much or more than I could ever teach them.
As the editions of this book have evolved, my sons, Mathew and Michael, have grown from boys to men. Their maturity, character, and success in the real world have been an inspiration to me. Nothing has filled me with more pride. And finally, to Barbara, my love and thanks for tolerating the many, many hours in the office and encouraging still another edition of 搕he book.
Roger S. Pressman
计算机\软件工程
Roger Pressman编写的这部翔实而全面的软件工程指南,广泛适合软件工程专业的学生及投身软件工程实践或需要参与这种实践的软件开发人员和管理人员。
——《IEEE Software》
这是一本经典的现代教材,叙述清晰而又具有权威性。本书包含大量插图、例子、习题和参考资料……如果读者心存疑问:“软件工程是什么?它现在在哪里?”那么最好阅读这本书。
——《ACM Computing Reviews》
本书自30年前第1版问世以来,一直受到软件工程界的高度重视,对该学科的发展具有深刻影响,其权威性是公认的、无可置疑的。它在全面而系统地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评。第7版在结构和内容上均有调整、更新和充实,更加突出软件过程,强调普遍使用的软件工程方法。
本版基于原书第7版进行改编,保留其中的基本内容,压缩或删除了一些高级内容,更加适合作为国内高校计算机、软件工程及相关专业本科生的软件工程课程教材。
本版基于原书第7版进行精简,使内容更符合普通高校本科生的课程大纲,让本科生可以在一学期内掌握软件工程的最核心基础内容:
第一部分 软件过程,介绍了说明性模型和敏捷过程模型。
第二部分 建模,介绍了现代分析与设计方法,重点放在基于UML的建模方面。
第三部分 质量管理,是第7版中新增加的内容,描述质量评审技术、软件质量保证、软件测试、软件配置管理的各个方面。
第四部分 软件项目管理,介绍与计划、管理和控制软件项目有关的主题。
作者简介:
Roger S. Pressman 软件过程改善和软件工程技术方面的国际知名的权威人士。30多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终工作在软件工程领域。Pressman博士著有6部著作,并撰写了很多技术文章,是多种行业期刊的固定撰稿人,曾任多种行业杂志的编委,多年来一直担任《IEEE Software》杂志的Manager专栏的编辑。Pressman博士是知名的演讲者,曾在许多行业会议上演讲,他还是美国计算机协会(ACM)、美国电气与电子工程师协会(IEEE)等组织的成员。
翻译版:
ISBN:978-7-111-33581-8
定价:79.00
英文版:
ISBN:978-7-111-31871-2
定价:75.00
本科教学版:
ISBN:978-7-111-3
定价:
(美)Roger S.Pressman 著:Roger S.Pressman 博士是软件过程改善和软件工程技术方面的国际知名的权威人士。30多年来,他作为软件工程师、管理人员、教授、作者及咨询顾问始终工作在软件工程领域。Pressman博士著有6部著作,并撰写了很多技术文章,是多种行业期刊的固定撰稿人,曾任多种行业杂志的编委,多年来一直担任引《IEEE Software》杂志的Manager专栏的编辑。Pressman博士是知名的演讲者,曾在许多行业会议上演讲,他还是美国计算机协会(ACM)、美国电气与电子工程师协会(1EEE)等组织的成员。
出版者的话
Adapter's Foreword
Preface
About the Author
CHAPTER 1SOFTWARE AND SOFTWARE ENGINEERING 1
1.1The Nature of Software 3
1.1.1Defining Software 4
1.1.2Software Application Domains 7
1.1.3Legacy Software 9
1.2Software Engineering 10
1.3The Software Process 12
1.4Software Engineering Practice 15
1.4.1The Essence of Practice 16
1.4.2General Principles 17
1.5Software Myths 19
1.6Summary 22
PROBLEMS AND POINTS TO PONDER 22
FURTHER READINGS AND INFORMATION SOURCES 23
PART ONETHE SOFTWARE PROCESS
CHAPTER 2PROCESS MODELS 26
2.1A Generic Process Model 27
2.1.1Defining a Framework Activity 28
2.1.2Identifying a Task Set 30
2.1.3Process Patterns 31
2.2Prescriptive Process Models 32
2.2.1The Waterfall Model 34
2.2.2Incremental Process Models 36
2.2.3Evolutionary Process Models 37
2.2.4Concurrent Models 43
2.2.5A Final Word on Evolutionary Processes 44
2.3Specialized Process Models 45
2.3.1Component-Based Development 45
2.3.2The Formal Methods Model 46
2.3.3Aspect-Oriented Software Development 47
2.4The Unified Process 48
2.4.1A Brief History 49
2.4.2Phases of the Unified Process 49
2.5Process Technology 51
2.6Product and Process 52
2.7Summary 53
PROBLEMS AND POINTS TO PONDER 54
FURTHER READINGS AND INFORMATION SOURCES 55
CHAPTER 3AGILE DEVELOPMENT 56
3.1What Is Agility 58
3.2Agility and the Cost of Change 58
3.3What Is an Agile Process 59
3.3.1Agility Principles 60
3.3.2The Politics of Agile Development 61
3.3.3Human Factors 62
3.4Extreme Programming (XP) 63
3.4.1XP Values 63
3.4.2The XP Process 64
3.4.3Industrial XP 68
3.4.4The XP Debate 69
3.5Other Agile Process Models 71
3.5.1Adaptive Software Development (ASD) 72
3.5.2Scrum 73
3.5.3Dynamic Systems Development Method (DSDM) 75
3.5.4Crystal 76
3.5.5Feature Driven Development (FDD) 77
3.5.6Lean Software Development (LSD) 78
3.5.7Agile Modeling (AM) 79
3.5.8Agile Unified Process (AUP) 80
3.6A Tool Set for the Agile Process 82
3.7Summary 82
PROBLEMS AND POINTS TO PONDER 83
FURTHER READINGS AND INFORMATION SOURCES 84
PART TWOMODELING
CHAPTER 4UNDERSTANDING REQUIREMENTS 88
4.1Requirements Engineering 89
4.2Establishing the Groundwork 94
4.2.1Identifying Stakeholders 94
4.2.2Recognizing Multiple Viewpoints 95
4.2.3Working toward Collaboration 95
4.2.4Asking the First Questions 96
4.3Eliciting Requirements 97
4.3.1Collaborative Requirements Gathering 97
4.3.2Quality Function Deployment 100
4.3.3Usage Scenarios 101
4.3.4Elicitation Work Products 102
4.4Developing Use Cases 102
4.5Building the Requirements Model 107
4.5.1Elements of the Requirements Model 108
4.5.2Analysis Patterns 111
4.6Negotiating Requirements 111
4.7Validating Requirements 113
4.8Summary 114
PROBLEMS AND POINTS TO PONDER 114
FURTHER READINGS AND INFORMATION SOURCES 115
CHAPTER 5REQUIREMENTS MODELING: SCENARIOS,INFORMATION, AND ANALYSIS CLASSES 117
5.1Requirements Analysis 118
5.1.1Overall Objectives and Philosophy 119
5.1.2Analysis Rules of Thumb 120
5.1.3Domain Analysis 120
5.1.4Requirements Modeling Approaches 122
5.2Scenario-Based Modeling 123
5.2.1Creating a Preliminary Use Case 124
5.2.2Refining a Preliminary Use Case 127
5.2.3Writing a Formal Use Case 128
5.3UML Models That Supplement the Use Case 130
5.3.1Developing an Activity Diagram 130
5.3.2Swimlane Diagrams 131
5.4Data Modeling Concepts 133
5.4.1Data Objects 133
5.4.2Data Attributes 133
5.4.3Relationships 134
5.5Class-Based Modeling 136
5.5.1Identifying Analysis Classes 136
5.5.2Specifying Attributes 140
5.5.3Defining Operations 140
5.5.4Class-Responsibility-Collaborator (CRC) Modeling 142
5.5.5Associations and Dependencies 149
5.5.6Analysis Packages 151
5.6Summary 152
PROBLEMS AND POINTS TO PONDER 152
FURTHER READINGS AND INFORMATION SOURCES 153
CHAPTER 6REQUIREMENTS MODELING: FLOW, BEHAVIOR, PATTERNS 155
6.1Requirements Modeling Strategies 155
6.2Flow-Oriented Modeling 156
6.2.1Creating a Data Flow Model 157
6.2.2Creating a Control Flow Model 160
6.2.3The Control Specification 160
6.2.4The Process Specification 161
6.3Creating a Behavioral Model 164
6.3.1Identifying Events with the Use Case 164
6.3.2State Representations 165
6.4Patterns for Requirements Modeling 168
6.4.1Discovering Analysis Patterns 169
6.4.2A Requirements Pattern Example: Actuator-Sensor 169
6.5Summary 174
PROBLEMS AND POINTS TO PONDER 174
FURTHER READINGS AND INFORMATION SOURCES 175
CHAPTER 7DESIGN CONCEPTS 176
7.1Design within the Context of Software Engineering 177
7.2The Design Process 180
7.2.1Software Quality Guidelines and Attributes 180
7.2.2The Evolution of Software Design 182
7.3Design Concepts 183
7.3.1Abstraction 184
7.3.2Architecture 184
7.3.3Patterns 185
7.3.4Separation of Concerns 186
7.3.5Modularity 186
7.3.6Information Hiding 187
7.3.7Functional Independence 188
7.3.8Refinement 189
7.3.9Aspects 189
7.3.10Refactoring 190
7.3.11Object-Oriented Design Concepts 191
7.3.12Design Classes 191
7.4The Design Model 194
7.4.1Data Design Elements 195
7.4.2Architectural Design Elements 195
7.4.3Interface Design Elements 196
7.4.4Component-Level Design Elements 198
7.4.5Deployment-Level Design Elements 198
7.5Summary 200
PROBLEMS AND POINTS TO PONDER 201
FURTHER READINGS AND INFORMATION SOURCES 201
CHAPTER 8ARCHITECTURAL DESIGN 203
8.1Software Architecture 204
8.1.1What Is Architecture 204
8.1.2Why Is Architecture Important 206
8.1.3Architectural Descriptions 206
8.1.4Architectural Decisions 207
8.2Architectural Genres 207
8.3Architectural Styles 210
8.3.1A Brief Taxonomy of Architectural Styles 211
8.3.2Architectural Patterns 214
8.3.3Organization and Refinement 216
8.4Architectural Design 216
8.4.1Representing the System in Context 217
8.4.2Defining Archetypes 218
8.4.3Refining the Architecture into Components 219
8.4.4Describing Instantiations of the System 221
8.5Assessing Alternative Architectural Designs 222
8.5.1An Architecture Trade-Off Analysis Method 223
8.5.2Architectural Complexity 224
8.5.3Architectural Description Languages 225
8.6Architectural Mapping Using Data Flow 226
8.6.1Transform Mapping 226
8.6.2Refining the Architectural Design 232
8.7Summary 234
PROBLEMS AND POINTS TO PONDER 234
FURTHER READINGS AND INFORMATION SOURCES 235
CHAPTER 9COMPONENT-LEVEL DESIGN 236
9.1What Is a Component 237
9.1.1An Object-Oriented View 237
9.1.2The Traditional View 239
9.1.3A Process-Related View 241
9.2Designing Class-Based Components 242
9.2.1Basic Design Principles 242
9.2.2Component-Level Design Guidelines 245
9.2.3Cohesion 246
9.2.4Coupling 248
9.3Conducting Component-Level Design 250
9.4Designing Traditional Components 256
9.4.1Graphical Design Notation 257
9.4.2Tabular Design Notation 258
9.4.3Program Design Language 259
9.5Component-Based Development 261
9.5.1Domain Engineering 261
9.5.2Component Qualification, Adaptation, and Composition 262
9.5.3Analysis and Design for Reuse 264
9.5.4Classifying and Retrieving Components 265
9.6Summary 267
PROBLEMS AND POINTS TO PONDER 268
FURTHER READINGS AND INFORMATION SOURCES 269
CHAPTER 10USER INTERFACE DESIGN 270
10.1The Golden Rules 271
10.1.1Place the User in Control 271
10.1.2Reduce the User's Memory Load 272
10.1.3Make the Interface Consistent 274
10.2User Interface Analysis and Design 275
10.2.1Interface Analysis and Design Models 275
10.2.2The Process 277
10.3Interface Analysis 278
10.3.1User Analysis 279
10.3.2Task Analysis and Modeling 280
10.3.3Analysis of Display Content 285
10.3.4Analysis of the Work Environment 286
10.4Interface Design Steps 286
10.4.1Applying Interface Design Steps 287
10.4.2User Interface Design Patterns 288
10.4.3Design Issues 289
10.5Design Evaluation 292
10.6Summary 294
PROBLEMS AND POINTS TO PONDER 295
FURTHER READINGS AND INFORMATION SOURCES 296
PART THREEQUALITY MANAGEMENT 297
CHAPTER 11QUALITY CONCEPTS 298
11.1What Is Quality 299
11.2Software Quality 300
11.2.1Garvin抯 Quality Dimensions 301
11.2.2McCall抯 Quality Factors 302
11.2.3ISO 9126 Quality Factors 303
11.2.4Targeted Quality Factors 304
11.2.5The Transition to a Quantitative View 305
11.3The Software Quality Dilemma 306
11.3.1揋ood Enough Software 306
11.3.2The Cost of Quality 307
11.3.3Risks 309
11.3.4Negligence and Liability 310
11.3.5Quality and Security 310
11.3.6The Impact of Management Actions 311
11.4Achieving Software Quality 312
11.4.1Software Engineering Methods 312
11.4.2Project Management Techniques 312
11.4.3Quality Control 312
11.4.4Quality Assurance 313
11.5 Summary 313
PROBLEMS AND POINTS TO PONDER 314
FURTHER READINGS AND INFORMATION SOURCES 314
CHAPTER 12REVIEW TECHNIQUES 316
12.1Cost Impact of Software Defects 317
12.2Defect Amplification and Removal 318
12.3Review Metrics and Their Use 320
12.3.1Analyzing Metrics 320
12.3.2Cost Effectiveness of Reviews 321
12.4Reviews: A Formality Spectrum 323
12.5Informal Reviews 324
12.6Formal Technical Reviews 326
12.6.1The Review Meeting 326
12.6.2Review Reporting and Record Keeping 327
12.6.3Review Guidelines 327
12.6.4Sample-Driven Reviews 329
12.7Summary 330
PROBLEMS AND POINTS TO PONDER 331
FURTHER READINGS AND INFORMATION SOURCES 331
CHAPTER 13SOFTWARE QUALITY ASSURANCE 332
13.1Background Issues 333
13.2Elements of Software Quality Assurance 334
13.3SQA Tasks, Goals, and Metrics 336
13.3.1SQA Tasks 336
13.3.2Goals, Attributes, and Metrics 337
13.4Formal Approaches to SQA 338
13.5Statistical Software Quality Assurance 339
13.5.1A Generic Example 339
13.5.2Six Sigma for Software Engineering 341
13.6Software Reliability 342
13.6.1Measures of Reliability and Availability 342
13.6.2Software Safety 343
13.7The ISO 9000 Quality Standards 344
13.8The SQA Plan 345
13.9A Framework for Product Metrics 346
13.9.1Measures, Metrics, and Indicators 347
13.9.2The Challenge of Product Metrics 347
13.9.3Measurement Principles 348
13.9.4Goal-Oriented Software Measurement 350
13.9.5The Attributes of Effective Software Metrics 350
13.10Function-Based Metrics 351
13.11Summary 355
PROBLEMS AND POINTS TO PONDER 355
FURTHER READINGS AND INFORMATION SOURCES 356
CHAPTER 14SOFTWARE TESTING STRATEGIES 357
14.1A Strategic Approach to Software Testing 358
14.1.1Verification and Validation 358
14.1.2Organizing for Software Testing 359
14.1.3Software Testing Strategy-The Big Picture 360
14.1.4Criteria for Completion of Testing 363
14.2Strategic Issues 363
14.3Test Strategies for Conventional Software 364
14.3.1Unit Testing 364
14.3.2Integration Testing 367
14.4Test Strategies for Object-Oriented Software 373
14.4.1Unit Testing in the OO Context 374
14.4.2Integration Testing in the OO Context 374
14.5Validation Testing 375
14.5.1Validation-Test Criteria 375
14.5.2Configuration Review 376
14.5.3Alpha and Beta Testing 376
14.6System Testing 377
14.6.1Recovery Testing 378
14.6.2Security Testing 378
14.6.3Stress Testing 378
14.6.4Performance Testing 379
14.6.5Deployment Testing 379
14.7The Art of Debugging 380
14.7.1The Debugging Process 380
14.7.2Psychological Considerations 382
14.7.3Debugging Strategies 382
14.7.4Correcting the Error 385
14.8Summary 385
PROBLEMS AND POINTS TO PONDER 386
FURTHER READINGS AND INFORMATION SOURCES 386
CHAPTER 15TESTING CONVENTIONAL APPLICATIONS 388
15.1Software Testing Fundamentals 389
15.2Internal and External Views of Testing 391
15.3White-Box Testing 392
15.4Basis Path Testing 392
15.4.1Flow Graph Notation 392
15.4.2Independent Program Paths 394
15.4.3Deriving Test Cases 396
15.5Control Structure Testing 398
15.5.1Condition Testing 398
15.5.2Data Flow Testing 399
15.5.3Loop Testing 399
15.6Black-Box Testing 401
15.6.1Equivalence Partitioning 401
15.6.2Boundary Value Analysis 402
15.7Summary 403
PROBLEMS AND POINTS TO PONDER 404
FURTHER READINGS AND INFORMATION SOURCES 404
CHAPTER 16TESTING OBJECT-ORIENTED APPLICATIONS 406
16.1Broadening the View of Testing 407
16.2Testing OOA and OOD Models 408
16.2.1Correctness of OOA and OOD Models 408
16.2.2Consistency of Object-Oriented Models 409
16.3Object-Oriented Testing Strategies 411
16.3.1Unit Testing in the OO Context 411
16.3.2Integration Testing in the OO Context 411
16.3.3Validation Testing in an OO Context 412
16.4Object-Oriented Testing Methods 412
16.4.1The Test-Case Design Implications of OO Concepts 413
16.4.2Applicability of Conventional Test-Case Design Methods 413
16.4.3Fault-Based Testing 414
16.4.4Test Cases and the Class Hierarchy 414
16.4.5Scenario-Based Test Design 415
16.4.6Testing Surface Structure and Deep Structure 417
16.5Testing Methods Applicable at the Class Level 417
16.5.1Random Testing for OO Classes 417
16.5.2Partition Testing at the Class Level 419
16.6Interclass Test-Case Design 419
16.6.1Multiple Class Testing 419
16.6.2Tests Derived from Behavior Models 421
16.7Summary 422
PROBLEMS AND POINTS TO PONDER 423
FURTHER READINGS AND INFORMATION SOURCES 423
CHAPTER 17SOFTWARE CONFIGURATION MANAGEMENT 424
17.1Software Configuration Management 425
17.1.1An SCM Scenario 426
17.1.2Elements of a Configuration Management System 427
17.1.3Baselines 427
17.1.4Software Configuration Items 429
17.2The SCM Repository 430
17.2.1The Role of the Repository 430
17.2.2General Features and Content 431
17.2.3SCM Features 432
17.3The SCM Process 433
17.3.1Identification of Objects in the Software Configuration 434
17.3.2Version Control 435
17.3.3Change Control 436
17.3.4Configuration Audit 439
17.3.5Status Reporting 440
17.4Summary 441
PROBLEMS AND POINTS TO PONDER 441
FURTHER READINGS AND INFORMATION SOURCES 442
PART FOURMANAGING SOFTWARE PROJECTS 443
CHAPTER 18PROJECT MANAGEMENT CONCEPTS 444
18.1The Management Spectrum 445
18.1.1The People 445
18.1.2The Product 446
18.1.3The Process 446
18.1.4The Project 446
18.2People 447
18.2.1The Stakeholders 447
18.2.2Team Leaders 448
18.2.3The Software Team 449
18.2.4Agile Teams 452
18.2.5Coordination and Communication Issues 453
18.3The Product 454
18.3.1Software Scope 454
18.3.2Problem Decomposition 454
18.4The Process 455
18.4.1Melding the Product and the Process 455
18.4.2Process Decomposition 456
18.5The Project 458
18.6The W5HH Principle 459
18.7Critical Practices 460
18.8Summary 461
PROBLEMS AND POINTS TO PONDER 461
FURTHER READINGS AND INFORMATION SOURCES 462
CHAPTER 19PROCESS AND PROJECT METRICS 464
19.1Metrics in the Process and Project Domains 465
19.1.1Process Metrics and Software Process Improvement 465
19.1.2Project Metrics 468
19.2Software Measurement 469
19.2.1Size-Oriented Metrics 470
19.2.2Function-Oriented Metrics 471
19.2.3Reconciling LOC and FP Metrics 471
19.2.4Object-Oriented Metrics 473
19.2.5Use-Case-Oriented Metrics 474
19.3Metrics for Software Quality 475
19.3.1Measuring Quality 476
19.3.2Defect Removal Efficiency 477
19.4Summary 479
PROBLEMS AND POINTS TO PONDER 479
FURTHER READINGS AND INFORMATION SOURCES 480
CHAPTER 20ESTIMATION FOR SOFTWARE PROJECTS 481
20.1Observations on Estimation 482
20.2The Project Planning Process 483
20.3Software Scope and Feasibility 484
20.4Resources 485
20.4.1Human Resources 485
20.4.2Reusable Software Resources 486
20.4.3Environmental Resources 486
20.5Software Project Estimation 487
20.6Decomposition Techniques 488
20.6.1Software Sizing 488
20.6.2Problem-Based Estimation 489
20.6.3An Example of LOC-Based Estimation 491
20.6.4An Example of FP-Based Estimation 492
20.6.5Process-Based Estimation 493
20.6.6An Example of Process-Based Estimation 494
20.6.7Estimation with Use Cases 495
20.6.8An Example of Use-Case-Based Estimation 496
20.6.9Reconciling Estimates 497
20.7Empirical Estimation Models 498
20.7.1The Structure of Estimation Models 499
20.7.2The COCOMO II Model 499
20.7.3The Software Equation 501
20.8Estimation for Object-Oriented Projects 502
20.9Summary 503
PROBLEMS AND POINTS TO PONDER 504
FURTHER READINGS AND INFORMATION SOURCES 505
CHAPTER 21PROJECT SCHEDULING 506
21.1Basic Concepts 507
21.2Project Scheduling 509
21.2.1Basic Principles 510
21.2.2The Relationship Between People and Effort 510
21.2.3Effort Distribution 512
21.3Defining a Task Set for the Software Project 513
21.3.1A Task Set Example 514
21.3.2Refinement of Software Engineering Actions 515
21.4Defining a Task Network 516
21.5Scheduling 517
21.5.1Time-Line Charts 517
21.5.2Tracking the Schedule 519
21.5.3Tracking Progress for an OO Project 520
21.6Earned Value Analysis 522
21.7Summary 523
PROBLEMS AND POINTS TO PONDER 524
FURTHER READINGS AND INFORMATION SOURCES 525
CHAPTER 22RISK MANAGEMENT 526
22.1Reactive versus Proactive Risk Strategies 527
22.2Software Risks 527
22.3Risk Identification 529
22.3.1Assessing Overall Project Risk 530
22.3.2Risk Components and Drivers 531
22.4Risk Projection 531
22.4.1Developing a Risk Table 532
22.4.2Assessing Risk Impact 534
22.5Risk Refinement 536
22.6Risk Mitigation, Monitoring, and Management 537
22.7The RMMM Plan 539
22.8Summary 541
PROBLEMS AND POINTS TO PONDER 541
FURTHER READINGS AND INFORMATION SOURCES 542
APPENDIX 1AN INTRODUCTION TO UML
APPENDIX 2OBJECT-ORIENTED CONCEPTS
REFERENCES
For the details of this appendix, see the publisher's website (www.hzbook.com).
For the details of this references, see the publisher's website (www.hzbook.com).