羅杰·S. 普萊斯曼(Roger S. Pressman)軟件工程界國(guó)際知名的顧問(wèn)和作家,作為工程師、經(jīng)理人、教授、演講家和企業(yè)家?jiàn)^戰(zhàn)在這一領(lǐng)域近50年。他現(xiàn)任一家咨詢公司的總裁,致力于協(xié)助企業(yè)建立有效的軟件工程實(shí)踐;還是一家汽車(chē)零部件公司的創(chuàng)始人,專注于為特斯拉汽車(chē)設(shè)計(jì)和生產(chǎn)配件產(chǎn)品。布魯斯·R. 馬克西姆(Bruce R. Maxim) 作為軟件工程師、項(xiàng)目經(jīng)理、教授、作家和咨詢師,擁有超過(guò)30年的從業(yè)經(jīng)驗(yàn),研究興趣涉及軟件工程、用戶體驗(yàn)設(shè)計(jì)、游戲開(kāi)發(fā)和工程教育等領(lǐng)域。他曾任某游戲開(kāi)發(fā)公司的首席技術(shù)官,現(xiàn)任密歇根大學(xué)迪爾伯恩分校教授,為該校工程與計(jì)算機(jī)科學(xué)學(xué)院建立了游戲?qū)嶒?yàn)室。
圖書(shū)目錄
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 Prescriptive Process Models 25 2.4.1 The Waterfall Model 25 2.4.2 Prototyping Process Model 26 2.4.3 Evolutionary Process Model 29 2.4.4 Unified Process Model 31 2.5 Product and Process 33 2.6 Summary 35 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 5.3 The Software Team 76 5.4 Team Structures 78 5.5 The Impact of Social Media 79 5.6 Global Teams 80 5.7 Summary 81 PART TWO MODELING 83 CHAPTER 6 UNDERSTANDING REQUIREMENTS 84 6.1 Requirements Engineering 85 6.1.1 Inception 86 6.1.2 Elicitation 86 6.1.3 Elaboration 86 6.1.4 Negotiation 87 6.1.5 Specification 87 6.1.6 Validation 87 6.1.7 Requirements Management 88 6.2 Establishing the Groundwork 89 6.2.1 Identifying Stakeholders 89 6.2.2 Recognizing Multiple Viewpoints 89 6.2.3 Working Toward Collaboration 90 6.2.4 Asking the First Questions 90 6.2.5 Nonfunctional Requirements 91 6.2.6 Traceability 91 CHAPTER 7 REQUIREMENTS MODELING—A RECOMMENDED APPROACH 108 7.1 Requirements Analysis 109 7.1.1 Overall Objectives and Philosophy 110 7.1.2 Analysis Rules of Thumb 110 7.1.3 Requirements Modeling Principles 111 7.2 Scenario-Based Modeling 112 7.2.1 Actors and User Profiles 113 7.2.2 Creating Use Cases 113 7.2.3 Documenting Use Cases 117 7.3 Class-Based Modeling 119 7.3.1 Identifying Analysis Classes 119 7.3.2 Defining Attributes and Operations 122 7.3.3 UML Class Models 123 7.3.4 Class-Responsibility-Collaborator Modeling 126 7.4 Functional Modeling 128 7.4.1 A Procedural View 128 7.4.2 UML Sequence Diagrams 130 7.5 Behavioral Modeling 131 7.5.1 Identifying Events with the Use Case 131 7.5.2 UML State Diagrams 132 7.5.3 UML Activity Diagrams 133 7.6 Summary 136 HAPTER 8 DESIGN CONCEPTS 138 8.1 Design Within the Context of Software Engineering 139 8.2 The Design Process 141 8.2.1 Software Quality Guidelines and Attributes 142 8.2.2 The Evolution of Software Design 143 8.3 Design Concepts 145 8.3.1 Abstraction 145 8.3.2 Architecture 145 8.3.3 Patterns 146 8.3.4 Separation of Concerns 147 8.3.5 Modularity 147 8.3