This International Student Edition is for use outside of the U.S. NINTH EDITION Software Engineering A PRACTITIONER'S APPROACH ROGER S.PRESSMAN 筋 BRUCE R.MAXIM
Software Engineering A PRACTITIONER’S APPROACH NINTH EDITION This International Student Edition is for use outside of the U.S. ROGER S. PRESSMAN BRUCE R. MAXIM
CONTENTS AT A GLANCE CHAPTER 1 Software and Software Engineering 1 PART ONE THE SOFTWARE PROCESS 19 CHAPTER 2 Process Models 20 CHAPTER 3 Agility and Process 37 CHAPTER 4 Recommended Process Model 54 CHAPTER 5 Human Aspects of Software Engineering 74 PART TWO MODELING 83 CHAPTER 6 Principles That Guide Practice 84 CHAPTER 7 Understanding Requirements 102 CHAPTER 8 Requirements Modeling-A Recommended Approach 126 CHAPTER 9 Desian Concepts 156 CHAPTER 10 Architectural Design-A Recommended Approach 181 CHAPTER 11 Component-Level Design 206 CHAPTER 12 User Experience Design 233 CHAPTER 13 Design for Mobility 264 CHAPTER 14 Pattern-Based Design 289 PART THREE QUALITY AND SECURITY 309 CHAPTER 15 Quality Concepts 310 CHAPTER 16 Reviews-A Recommended Approach 325 CHAPTER 17 Software Quality Assurance 339 CHAPTER 18 Software Security Engineering 356 CHAPTER 19 Software Testing-Component Level 372 CHAPTER 20 Software Testing-Integration Level 395 CHAPTER 21 Software Testing-Specialized Testing for Mobility 412 CHAPTER 22 Software Configuration Management 437 CHAPTER 23 Software Metrics and Analytics 460 5011T
vii CHAPTER 1 Software and Software Engineering 1 PART ONE THE SOFTWARE PROCESS 19 CHAPTER 2 Process Models 20 CHAPTER 3 Agility and Process 37 CHAPTER 4 Recommended Process Model 54 CHAPTER 5 Human Aspects of Software Engineering 74 PART TWO MODELING 83 CHAPTER 6 Principles That Guide Practice 84 CHAPTER 7 Understanding Requirements 102 CHAPTER 8 Requirements Modeling—A Recommended Approach 126 CHAPTER 9 Design Concepts 156 CHAPTER 10 Architectural Design—A Recommended Approach 181 CHAPTER 11 Component-Level Design 206 CHAPTER 12 User Experience Design 233 CHAPTER 13 Design for Mobility 264 CHAPTER 14 Pattern-Based Design 289 PART THREE QUALITY AND SECURITY 309 CHAPTER 15 Quality Concepts 310 CHAPTER 16 Reviews—A Recommended Approach 325 CHAPTER 17 Software Quality Assurance 339 CHAPTER 18 Software Security Engineering 356 CHAPTER 19 Software Testing—Component Level 372 CHAPTER 20 Software Testing—Integration Level 395 CHAPTER 21 Software Testing—Specialized Testing for Mobility 412 CHAPTER 22 Software Configuration Management 437 CHAPTER 23 Software Metrics and Analytics 460 Contents at a Glance
CONTENTS AT A GLANCE PART FOUR MANAGING SOFTWARE PROJECTS 489 CHAPTER 24 Project Management Concepts 490 CHAPTER 25 Creating a Viable Software Plan 504 CHAPTER 26 Risk Management 532 CHAPTER 27 A Strategy for Software Support 549 PART FIVE ADVANCED TOPICS 567 CHAPTER 28 Software Process Improvement 568 CHAPTER 29 Emerging Trends in Software Engineering 583 CHAPTER 30 Concluding Comments 602 APPENDIX 1 An Introduction to UML 611 APPENDIX 2 Data Science for Software Engineers 629 REFERENCES 639 INDEX 659
viii CONTENTS AT A GLANCE PART FOUR MANAGING SOFTWARE PROJECTS 489 CHAPTER 24 Project Management Concepts 490 CHAPTER 25 Creating a Viable Software Plan 504 CHAPTER 26 Risk Management 532 CHAPTER 27 A Strategy for Software Support 549 PART FIVE ADVANCED TOPICS 567 CHAPTER 28 Software Process Improvement 568 CHAPTER 29 Emerging Trends in Software Engineering 583 CHAPTER 30 Concluding Comments 602 APPENDIX 1 An Introduction to UML 611 APPENDIX 2 Data Science for Software Engineers 629 REFERENCES 639 INDEX 659
TABLE OF CONTENTS Preface xxvii CHAPTER 1 SOFTWARE AND SOFTWARE ENGINEERING 1 1.1 The Nature of Software 4 1.1.1 Defining Software 5 112 Software Application Domains 7 1.13 Legacy Software 8 1.2 Defining the Discipline 8 1.3 The Software Process 9 13.1 The Process Framework 10 1.3.2 Umbrella Activities 11 1.3.3 Process Adaptation 11 1.4 Software Engineering Practice 12 141 he Ess 1.4.2 1.5 How It All Starts 15 1.6 Summary 17 PART ONE THE SOFTWARE PROCESS 19 CHAPTER 2 PROCESS MODELS 20 2.1 A Generic Process Model 21 2.2 Defining a Framework Activity 23 2.3 Identifying a Task Set 23 2.4 Process Assessment and Improvement 24 2.5 Prescriptive Process Models 25 2.5.1 The Waterfall Model 25 2.5. Prototyping Process Model 26 2.5.3 Evolutionary Process Model 29 254 Unified Process Model 31 2.6 Product and Process 33 2.7 Summary 35
ix Table of Contents Preface xxvii CHAPTER 1 SOFTWARE AND SOFTWARE ENGINEERING 1 1.1 The Nature of Software 4 1.1.1 Defining Software 5 1.1.2 Software Application Domains 7 1.1.3 Legacy Software 8 1.2 Defining the Discipline 8 1.3 The Software Process 9 1.3.1 The Process Framework 10 1.3.2 Umbrella Activities 11 1.3.3 Process Adaptation 11 1.4 Software Engineering Practice 12 1.4.1 The Essence of Practice 12 1.4.2 General Principles 14 1.5 How It All Starts 15 1.6 Summary 17 PART ONE THE SOFTWARE PROCESS 19 CHAPTER 2 PROCESS MODELS 20 2.1 A Generic Process Model 21 2.2 Defining a Framework Activity 23 2.3 Identifying a Task Set 23 2.4 Process Assessment and Improvement 24 2.5 Prescriptive Process Models 25 2.5.1 The Waterfall Model 25 2.5.2 Prototyping Process Model 26 2.5.3 Evolutionary Process Model 29 2.5.4 Unified Process Model 31 2.6 Product and Process 33 2.7 Summary 35
TABLE OF CONTENTS CHAPTER 3 AGILITY AND PROCESS 37 3.1 What Is Agility?38 3.2 Agility and the Cost of Change 39 3.3 What Is an Agile Process?40 3.3.1 Agility Principles 40 3.3.2 The Politics of Agile Development 41 3.4 Scrum 42 3.4. Scrum Teams and Artifacts 43 342 Sprint Planning Meeting 44 3.43 Daily Scrum Meeting 44 3.4.4 Sprint Review Meeting 5 3.4.5 Sprint Retrospective 45 3.5 The XP Framework 46 3.5.2 Kanban 48 3.5.3 DevOps 50 3.6 Summary 51 CHAPTER 4 RECOMMENDED PROCESS MODEL 54 4.1 Requirements Definition 57 4.2 Preliminary Architectural Design 59 4.3 Resource Estimation 60 4.4 First Prototype Construction 61 4.5 Prototype Evaluation 64 4.6 Go.No-Go Decision 65 4.7 Prototype Evolution 67 471 New Prototype Scope 67 4.7.2 Constructing New Prototypes 68 4.7.3 Testing New Prototypes 68 4.8 Prototype Release 68 4.9 Maintain Release Software 69 4.10 Summary 72 CHAPTER 5 HUMAN ASPECTS OF SOFTWARE ENGINEERING 74 5.1 Characteristics of a Software Engineer 75 5.2 The Psychology of Software Engineering 75
x TABLE OF CONTENTS CHAPTER 3 AGILITY AND PROCESS 37 3.1 What Is Agility? 38 3.2 Agility and the Cost of Change 39 3.3 What Is an Agile Process? 40 3.3.1 Agility Principles 40 3.3.2 The Politics of Agile Development 41 3.4 Scrum 42 3.4.1 Scrum Teams and Artifacts 43 3.4.2 Sprint Planning Meeting 44 3.4.3 Daily Scrum Meeting 44 3.4.4 Sprint Review Meeting 45 3.4.5 Sprint Retrospective 45 3.5 Other Agile Frameworks 46 3.5.1 The XP Framework 46 3.5.2 Kanban 48 3.5.3 DevOps 50 3.6 Summary 51 CHAPTER 4 RECOMMENDED PROCESS MODEL 54 4.1 Requirements Definition 57 4.2 Preliminary Architectural Design 59 4.3 Resource Estimation 60 4.4 First Prototype Construction 61 4.5 Prototype Evaluation 64 4.6 Go, No-Go Decision 65 4.7 Prototype Evolution 67 4.7.1 New Prototype Scope 67 4.7.2 Constructing New Prototypes 68 4.7.3 Testing New Prototypes 68 4.8 Prototype Release 68 4.9 Maintain Release Software 69 4.10 Summary 72 CHAPTER 5 HUMAN ASPECTS OF SOFTWARE ENGINEERING 74 5.1 Characteristics of a Software Engineer 75 5.2 The Psychology of Software Engineering 75