[套装书]软件工程:实践者的研究方法(英文精编版·原书第9版)+软件工程:实践者的研究方法(原书第9版)(2册)

作者
罗杰·S.普莱斯曼 布鲁斯·R. 马克西姆
丛书名
经典原版书库
出版社
机械工业出版社
ISBN
9782109181352
简要
简介
内容简介书籍计算机书籍 ---------------------------8084067 - 软件工程:实践者的研究方法(英文精编版·原书第9版)--------------------------- 本书的各个版本一直都是软件专业人士熟悉的读物,在国际软件工程界享有无可质疑的权威地位。它在全面而系统、概括而清晰地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评。此外,本书在给出传统的、对学科发展具有深刻影响的方法时,又适当地介绍了当前正在发展的、具有生命力的新技术。 ---------------------------8082134 - 软件工程:实践者的研究方法(原书第9版)--------------------------- 本书的各个版本一直都是软件专业人士熟悉的读物,在国际软件工程界享有无可质疑的权威地位。它在全面而系统、概括而清晰地介绍软件工程的有关概念、原则、方法和工具方面获得了广大读者的好评。此外,本书在给出传统的、对学科发展具有深刻影响的方法时,又适当地介绍了当前正在发展的、具有生命力的新技术。
目录
[套装书具体书目]
8082134 - 软件工程:实践者的研究方法(原书第9版) - 9787111683940 - 机械工业出版社 - 定价 149
8084067 - 软件工程:实践者的研究方法(英文精编版·原书第9版) - 9787111690726 - 机械工业出版社 - 定价 89



---------------------------8084067 - 软件工程:实践者的研究方法(英文精编版·原书第9版)---------------------------


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.6 Information Hiding 148
8.3.7 Functional Independence 149
8.3.8 Stepwise Renement 149
8.3.9 Refactoring 150
8.3.10 Design Classes 151
8.4 The Design Model 153
8.4.1 Design Modeling Principles 155
8.4.2 Data Design Elements 156
8.4.3 Architectural Design Elements 157
8.4.4 Interface Design Elements 157
8.4.5 Component-Level Design Elements 158
8.4.6 Deployment-Level Design Elements 159
8.5 Summary 160
CHAPTER 9 ARCHITECTURAL DESIGN—
A RECOMMENDED APPROACH 163
9.1 Software Architecture 164
9.1.1 What Is Architecture 164
9.1.2 Why Is Architecture Important 165
9.1.3 Architectural Descriptions 165
9.1.4 Architectural Decisions 166
9.2 Agility and Architecture 167
9.3 Architectural Styles 168
9.3.1 A Brief Taxonomy of Architectural Styles 169
9.3.2 Architectural Patterns 174
9.3.3 Organization and Refinement 175
9.4 Architectural Considerations 175
9.5 Architectural Decisions 177
9.6 Architectural Design 178
9.6.1 Representing the System in Context 178
9.6.2 Dening Archetypes 179
9.6.3 Rening the Architecture into Components 180
9.6.4 Describing Instantiations of the System 182
9.7 Assessing Alternative Architectural Designs 183
9.7.1 Architectural Reviews 184
9.7.2 Pattern-Based Architecture Review 185
9.7.3 Architecture Conformance Checking 186
9.8 Summary 186
CHAPTER 10 COMPONENT-LEVEL DESIGN 188
10.1 What Is a Component 189
10.1.1 An Object-Oriented View 189
10.1.2 The Traditional View 191
10.1.3 A Process-Related View 193
10.2 Designing Class-Based Components 194
10.2.1 Basic Design Principles 194
10.2.2 Component-Level Design Guidelines 197
10.2.3 Cohesion 198
10.2.4 Coupling 200
10.3 Conducting Component-Level Design 201
10.4 Specialized Component-Level Design 207
10.5 Component Refactoring 211
10.6 Summary 212
CHAPTER 11 USER EXPERIENCE DESIGN 215
11.1 User Experience Design Elements 216
11.1.1 Information Architecture 217
11.1.2 User Interaction Design 218
11.1.3 Usability Engineering 218
11.1.4 Visual Design 219
ART THREE QUALITY AND SECURITY 241
CHAPTER 12 QUALITY CONCEPTS 242
12.1 What Is Quality 243
12.2 Software Quality 244
12.2.1 Quality Factors 244
12.2.2 Qualitative Quality Assessment 246
12.2.3 Quantitative Quality Assessment 247
12.3 The Software Quality Dilemma 247
12.3.1 “Good Enough” Software 248
12.3.2 The Cost of Quality 24912.3.3 Risks 251
12.3.4 Negligence and Liability 252
12.3.5 The Impact of Management Actions 252
12.4 Achieving Software Quality 253
12.4.1 Software Engineering Methods 253
12.4.2 Project Management Techniques 254
12.4.3 Quality Control 254
12.4.4 Quality Assurance 254
12.5 Summary 254
HAPTER 13 REVIEWS—A RECOMMENDED APPROACH 257
13.1 Cost Impact of Software Defects 258
13.2 Defect Amplication and Removal 259
13.3 Review Metrics and Their Use 259
13.4 Criteria for Types of Reviews 262
13.5 Informal Reviews 263
13.6 Formal Technical Reviews 264
13.6.1 The Review Meeting 264
13.6.2 Review Reporting and Record Keeping 265
13.6.3 Review Guidelines 266
13.7 Postmortem Evaluations 268
13.8 Agile Reviews 268
13.9 Summary 269
CHAPTER 14 SOFTWARE QUALITY ASSURANCE 271
14.1 Background Issues 273
14.2 Elements of Software Quality Assurance 273
14.3 SQA Processes and Product Characteristics 275
14.4 SQA Tasks, Goals, and Metrics 275
14.4.1 SQA Tasks 275
14.4.2 Goals, Attributes, and Metrics 277
14.5 27914.5.1 A Generic Example 279
14.5.2 Six Sigma for Software Engineering 281
14.6 The ISO 9000 Quality Standards 281
14.7 The SQA Plan 282
14.8 Summary 283
CHAPTER 15 SOFTWARE TESTING—COMPONENT LEVEL 284
15.1 A Strategic Approach to Software Testing 285
15.1.1 Verication and Validation 285
15.1.2 Organizing for Software Testing 286
15.1.3 The Big Picture 287
15.1.4 Criteria for “Done” 289
15.2 Planning and Recordkeeping 290
15.2.1 Role of Scaolding 291
15.2.2 Cost-Eective Testing 291
15.3 Test-Case Design 293
15.3.1 Requirements and Use Cases 294
15.3.2 Traceability 295
15.4 White-Box Testing 295
15.4.1 Basis Path Testing 296
15.4.2 Control Structure Testing 298
15.5 300Black-Box Testing
15.5.1 Interface Testing 300
15.5.2 Equivalence Partitioning 301
15.5.3 Boundary Value Analysis 301
15.6 Object-Oriented Testing 302
15.6.1 Class Testing 302
15.6.2 Behavioral Testing 304
15.7 Summary 305
CHAPTER 16 SOFTWARE TESTING—INTEGRATION LEVEL 307
16.1 Software Testing Fundamentals 308
16.1.1 Black-Box Testing 309
16.1.2 White-Box Testing 309
16.2 Integration Testing 310
16.2.1 Top-Down Integration 310
16.2.2 Bottom-Up Integration 311
16.2.3 Continuous Integration 312
16.2.4 Integration Test Work Products 314
16.3 Artificial Intelligence and Regression Testing 314
16.4 Integration Testing in the OO Context 316
16.4.1 Fault-Based Test-Case Design 317
16.4.2 Scenario-Based Test-Case Design 319
16.5 Validation Testing 319
16.6 Summary 321
CHAPTER 17 SOFTWARE CONFIGURATION MANAGEMENT 323
17.1 Software Conguration Management 324
17.1.1 An SCM Scenario 325
17.1.2 Elements of a Conguration Management System 326
17.1.3 Baselines 327
17.1.4 Software Conguration Items 327
17.1.5 Management of Dependencies and Changes 328
17.2 The SCM Repository 329
17.2.1 General Features and Content 330
17.2.2 SCM Features 330
17.3 Version Control Systems 331
17.4 Continuous Integration 332
17.5 The Change Management Process 333
17.5.1 Change Control 334
17.5.2 Impact Management 337
17.5.3 Conguration Audit 337
17.5.4 Status Reporting 338
17.6 Summary 338
HAPTER 18 SOFTWARE METRICS AND ANALYTICS 340
18.1 Software Measurement 341
18.1.1 Measures, Metrics, and Indicators 341
18.1.2 Attributes of Eective Software Metrics 342
18.2 Software Analytics 342
18.3 Product Metrics 343
18.3.1 Metrics for the Requirements Model 344
18.3.2 Design Metrics for Conventional Software 346
18.3.3 Design Metrics for Object-Oriented Software 348
18.3.4 User Interface Design Metrics 351
18.3.5 Metrics for Source Code 353
18.4 Process and Project Metrics 354
18.5 Software Metrics 357
18.6 Metrics for Software Quality 360
18.7 Summary 363
PART FOUR MANAGING SOFTWARE PROJECTS 365
CHAPTER 19 PROJECT MANAGEMENT CONCEPTS 366
19.1 The Management Spectrum 367
19.1.1 The People 367
19.1.2 The Product 367
19.1.3 The Process 368
19.1.4 The Project 368
19.2 People 369
19.2.1 The Stakeholders 369
19.2.2 Team Leaders 369
19.2.3 The Software Team 370
19.2.4 Coordination and Communications Issues 372
19.3 Product 373
19.3.1 Software Scope 373
19.3.2 Problem Decomposition 373
19.4 Process 374
19.4.1 Melding the Product and the Process 374
19.4.2 Process Decomposition 374
19.5 Project 376
19.6 The W5HH Principle 377
19.7 Critical Practices 378
19.8 Summary 378
CHAPTER 20 CREATING A VIABLE SOFTWARE PLAN 380
20.1 Comments on Estimation 381
20.2 The Project Planning Process 382
20.3 Software Scope and Feasibility 383
20.4 Resources 384
20.4.1 uman Resources 384
20.4.2 Reusable Software Resources 385
20.4.3 Environmental Resources 385
20.5 Project Scheduling 386
20.5.1 Basic Principles 387
20.5.2 The Relationship Between People and Eort 388
20.6 Defining a Project Task Set 389
20.6.1 A Task Set Example 390
20.6.2 efnement of Major Tasks 390
20.7 Defning a Task Network 391
20.8 Scheduling 392
20.8.1 Time-Line Charts 392
20.8.2 racking the Schedule 394
20.9 Summary 396
CHAPTER 21 RISK MANAGEMENT 398
21.1 Reactive Versus Proactive Risk Strategies 399
21.2 Software Risks 400
21.3Risk Identication 401
21.3.1 Assessing Overall Project Risk 402
21.3.2 Risk Components and Drivers 403
21.4 Risk Projection 404
21.4.1 Developing a Risk Table 404
21.4.2 Assessing Risk Impact 406
21.5 Risk Renement 408
21.6 Risk Mitigation, Monitoring, and Management 409
21.7 The RMMM Plan 412
21.8 Summary 413
CHAPTER 22 A STRATEGY FOR SOFTWARE SUPPORT 415
22.1 Software Support 416
22.2 Software Maintenance 418
22.3 Proactive Software Support 423
22.3.1 Use of Software Analytics 424
22.3.2 Role of Social Media 425
22.3.3 Cost of Support 425
22.4 Refactoring 426
22.4.1 Data Refactoring 427
22.4.2 Code Refactoring 427
22.4.3 Architecture Refactoring 427
22.5 Software Evolution 428
22.5.1 Inventory Analysis 429
22.5.2 Document Restructuring 430
22.5.3 Reverse Engineering 430
22.5.4 Code Refactoring 430
22.5.5 Data Refactoring 430
22.5.6 Forward Engineering 431
22.6 Summary 431
APPENDIX 1
REFERENCES
Online Resources



---------------------------8082134 - 软件工程:实践者的研究方法(原书第9版)---------------------------


出版者的话
译者序
前言
作者简介
第1章  软件与软件工程 1
1.1 软件的本质 3
1.1.1 定义软件 4
1.1.2 软件应用领域 5
1.1.3 遗留软件 6
1.2 定义软件工程学科 6
1.3 软件过程 7
1.3.1 过程框架 7
1.3.2 普适性活动 8
1.3.3 过程的适应性调整 9
1.4 软件工程实践 9
1.4.1 实践的精髓 9
1.4.2 通用原则 10
1.5 这一切是如何开始的 12
1.6 小结 13
习题与思考题 13
第一部分 软件过程
第2章 过程模型 16
2.1 通用过程模型 16
2.2 定义框架活动 18
2.3 明确任务集 19
2.4 过程评估与改进 19
2.5 惯用过程模型 20
2.5.1 瀑布模型 20
2.5.2 原型开发过程模型 21
2.5.3 演化过程模型 23
2.5.4 统一过程模型25
2.6 产品和过程 26
2.7 小结 27
习题与思考题 28
第3章 敏捷和敏捷过程 29
3.1 什么是敏捷 30
3.2 敏捷及变更成本 30
3.3 什么是敏捷过程 31
3.3.1 敏捷原则 31
3.3.2 敏捷开发战略 32
3.4 Scrum 32
3.4.1 Scrum团队和制品 34
3.4.2 冲刺规划会议 34
3.4.3 每日Scrum会议 34
3.4.4 冲刺评审会议 35
3.4.5 冲刺回顾 35
3.5 其他敏捷框架 35
3.5.1 XP框架 36
3.5.2 看板法 37
3.5.3 DevOps 38
3.6 小结 39
习题与思考题 40
第4章 推荐的过程模型 41
4.1 需求定义 44
4.2 初步体系结构设计 44
4.3 资源估算 45
4.4 首次原型构建 46
4.5 原型评价 48
4.6 继续与否的决策 49
4.7 原型演化 50
4.7.1 新原型范围 51
4.7.2 构建新原型 51
4.7.3 测试新原型 51
4.8 原型发布 52
4.9 维护发布软件 52
4.10 小结 54
习题与思考题 55
第5章 软件工程的人员方面 56
5.1 软件工程师的特质 56
5.2 软件工程心理学 57
5.3 软件团队 58
5.4 团队结构 59
5.5 社交媒体的影响 60
5.6 全球化团队 60
5.7 小结 61
习题与思考题 61
第二部分 建模
第6章 指导实践的原则 64
6.1 核心原则 65
6.1.1 指导过程的原则 65
6.1.2 指导实践的原则 66
6.2 指导每个框架活动的原则 67
6.2.1 沟通原则 67
6.2.2 策划原则 69
6.2.3 建模原则 71
6.2.4 构建原则 72
6.2.5 部署原则 75
6.3 小结 76
习题与思考题 77
第7章 理解需求 78
7.1 需求工程 79
7.1.1 起始 79
7.1.2 获取 79
7.1.3 细化 80
7.1.4 协商 80
7.1.5 规格说明 80
7.1.6 确认 81
7.1.7 需求管理 81
7.2 建立根基 82
7.2.1 确认利益相关者 82
7.2.2 识别多重观点 82
7.2.3 协作 82
7.2.4 首次提问 83
7.2.5 非功能需求 84
7.2.6 可追溯性 84
7.3 获取需求 84
7.3.1 协作收集需求 84
7.3.2 使用场景 87
7.3.3 获取工作产品 88
7.4 开发用例 88
7.5 构建分析模型 91
7.5.1 分析模型的元素 92
7.5.2 分析模式 93
7.6 协商需求 94
7.7 需求监控 95
7.8 确认需求 95
7.9 小结 95
习题与思考题 96
第8章 需求建模——一种推荐的方法 97
8.1 需求分析 98
8.1.1 总体目标和原理 98
8.1.2 分析的经验原则 99
8.1.3 需求建模原则 99
8.2 基于场景建模 100
8.2.1 参与者和用户概要文件 100
8.2.2 创建用例 100
8.2.3 编写用例 103
8.3 基于类建模 105
8.3.1 识别分析类 105
8.3.2 定义属性和操作 107
8.3.3 UML类模型 108
8.3.4 类–职责–协作者建模 110
8.4 功能建模 112
8.4.1 过程视图 112
8.4.2 UML顺序图 113
8.5 行为建模 114
8.5.1 识别用例事件 114
8.5.2 UML状态图 115
8.5.3 UML活动图 116
8.6 小结 118
习题与思考题 119
第9章 设计概念 120
9.1 软件工程中的设计 121
9.2 设计过程 123
9.2.1 软件质量指导原则和属性 123
9.2.2 软件设计的演化 124
9.3 设计概念 125
9.3.1 抽象 125
9.3.2 体系结构 126
9.3.3 模式 126
9.3.4 关注点分离 127
9.3.5 模块化 127
9.3.6 信息隐蔽 128
9.3.7 功能独立 128
9.3.8 逐步求精 129
9.3.9 重构 129
9.3.10 设计类 130
9.4 设计模型 132
9.4.1 设计建模原则 133
9.4.2 数据设计元素 134
9.4.3 体系结构设计元素 134
9.4.4 接口设计元素 134
9.4.5 构件级设计元素 136
9.4.6 部署级设计元素 136
9.5 小结 137
习题与思考题 138
第10章 体系结构设计——一种推荐的方法 139
10.1 软件体系结构 140
10.1.1 什么是体系结构 140
10.1.2 体系结构的重要性 140
10.1.3 体系结构描述 141
10.1.4 体系结构决策 141
10.2 敏捷性和体系结构 142
10.3 体系结构风格 143
10.3.1 体系结构风格的简单分类 144
10.3.2 体系结构模式 147
10.3.3 组织和求精 148
10.4 体系结构考虑要素 148
10.5 体系结构决策 149
10.6 体系结构设计 150
10.6.1 系统在上下文中的表示 150
10.6.2 定义体系结构原型 151
10.6.3 将体系结构细化为构件 152
10.6.4 描述系统实例 153
10.7 评估候选的体系结构设计 153
10.7.1 体系结构评审 155
10.7.2 基于模式的体系结构评审 155
10.7.3 体系结构的一致性检查 156
10.8 小结 156
习题与思考题 157
第11章 构件级设计 158
11.1 什么是构件 158
11.1.1 面向对象的观点 159
11.1.2 传统的观点 159
11.1.3 过程相关的观点 161
11.2 设计基于类的构件 162
11.2.1 基本设计原则 162
11.2.2 构件级设计指导方针 165
11.2.3 内聚性 165
11.2.4 耦合 167
11.3 实施构件级设计 168
11.4 专用的构件级设计 173
11.4.1 WebApp的构件级设计 173
11.4.2 移动App的构件级设计 173
11.4.3 设计传统构件 174
11.4.4 基于构件的开发 174
11.5 构件重构 176
11.6 小结 176
习题与思考题 177
第12章 用户体验设计 178
12.1 用户体验设计元素 179
12.1.1 信息体系结构 179
12.1.2 用户交互设计 180
12.1.3 可用性工程 180
12.1.4 可视化设计 181
12.2 黄金规则 181
12.2.1 把控制权交给用户 182
12.2.2 减轻用户的记忆负担 182
12.2.3 保持界面一致 183
12.3 用户界面的分析和设计 184
12.3.1 用户界面分析和设计模型 184
12.3.2 过程 185
12.4 用户体验分析 186
12.4.1 用户研究 186
12.4.2 用户建模 187
12.4.3 任务分析 189
12.4.4 工作环境分析 190
12.5 用户体验设计 190
12.6 用户界面设计 191
12.6.1 应用界面设计步骤 191
12.6.2 用户界面设计模式 193
12.7 设计评估 193
12.7.1 原型审查 194
12.7.2 用户测试 195
12.8 可用性和可访问性 195
12.8.1 可用性准则 196
12.8.2 可访问性准则 198
12.9 传统软件UX和移动性 199
12.10 小结 199
习题与思考题 200
第13章 移动设计 201
13.1 挑战 202
13.1.1 开发因素 202
13.1.2 技术因素 202
13.2 移动开发生命周期 204
13.2.1 用户界面设计 205
13.2.2 经验教训 206
13.3 移动体系结构 208
13.4 环境感知App 208
13.5 Web设计金字塔 209
13.5.1 WebApp界面设计 209
13.5.2 美学设计 210
13.5.3 内容设计 211
13.5.4 体系结构设计 211
13.5.5 导航设计 212
13.6 构件级设计 214
13.7 移动性与设计质量 214
13.8 移动设计的最佳实践 216
13.9 小结 217
习题与思考题 218
第14章 基于模式的设计 219
14.1 设计模式 220
14.1.1 模式的种类 220
14.1.2 框架 222
14.1.3 描述模式 222
14.1.4 机器学习和模式发现 223
14.2 基于模式的软件设计 223
14.2.1 不同环境下基于模式的设计 223
14.2.2 用模式思考 224
14.2.3 设计任务 225
14.2.4 建立模式组织表 226
14.2.5 常见设计错误 226
14.3 体系结构模式 227
14.4 构件级设计模式 227
14.5 反模式 229
14.6 用户界面设计模式 230
14.7 移动设计模式 231
14.8 小结 232
习题与思考题 232
第三部分 质量与安全
第15章 质量概念 234
15.1 什么是质量 234
15.2 软件质量 235
15.2.1 质量因素 236
15.2.2 定性质量评估 237
15.2.3 定量质量评估 237
15.3 软件质量困境 238
15.3.1 “足够好”的软件 238
15.3.2 质量的成本 239
15.3.3 风险 241
15.3.4 疏忽和责任 242
15.3.5 质量和安全 242
15.3.6 管理活动的影响 242
15.4 实现软件质量 243
15.4.1 软件工程方法 243
15.4.2 项目管理技术 243
15.4.3 机器学习和缺陷预测 243
15.4.4 质量控制 244
15.4.5 质量保证 244
15.5 小结 244
习题与思考题 244
第16章 评审—一种推荐的方法 246
16.1 软件缺陷对成本的影响 247
16.2 缺陷的放大和消除 247
16.3 评审度量及其应用 248
16.4 不同形式评审的标准 250
16.5 非正式评审 250
16.6 正式技术评审 251
16.6.1 评审会议 252
16.6.2 评审报告和记录保存 252
16.6.3 评审指导原则 253
16.7 产品完成后评估 254
16.8 敏捷评审 254
16.9 小结 255
习题与思考题 255
第17章 软件质量保证 257
17.1 背景问题 258
17.2 软件质量保证的要素 258
17.3 软件质量保证的过程和产品特征 259
17.4 软件质量保证的任务、目标和度量 260
17.4.1 软件质量保证的任务 260
17.4.2 目标、属性和度量 261
17.5 软件质量保证的形式化方法 262
17.6 统计软件质量保证 263
17.6.1 一个普通的例子 263
17.6.2 软件工程的六西格玛 264
17.7 软件可靠性 265
17.7.1 可靠性和可用性的测量 265
17.7.2 使用人工智能对可靠性进行建模 266
17.7.3 软件安全 267
17.8 ISO 9000质量标准 267
17.9 软件质量保证计划 268
17.10 小结 269
习题与思考题 269
第18章 软件安全性工程 270
18.1 软件安全性工程的重要性 270
18.2 安全生命周期模型 271
18.3 安全开发生命周期活动 272
18.4 安全需求工程 273
18.4.1 SQUARE 273
18.4.2 SQUARE过程 273
18.5 误用例、滥用例及攻击方式 275
18.6 安全性风险分析 276
18.7 威胁建模、优先级排序和缓解 277
18.8 攻击面 278
18.9 安全编码 278
18.10 测量 279
18.11 安全过程改进和成熟度模型 280
18.12 小结 281
习题与思考题 281
第19章 软件测试—构件级 282
19.1 软件测试的策略性方法 282
19.1.1 验证与确认 283
19.1.2 软件测试组织 283
19.1.3 宏观 284
19.1.4 测试完成的标准 286
19.2 规划和记录保存 286
19.2.1 “脚手架”的作用 287
19.2.2 高效测试 288
19.3 测试用例设计 288
19.3.1 需求和用例 290
19.3.2 可追溯性 290
19.4 白盒测试 290
19.4.1 基本路径测试 290
19.4.2 控制结构测试 293
19.5 黑盒测试 293
19.5.1 接口测试 294
19.5.2 等价类划分 294
19.5.3 边界值分析 295
19.6 面向对象测试 295
19.6.1 类测试 295
19.6.2 行为测试 297
19.7 小结 298
习题与思考题 298
第20章 软件测试—集成级 299
20.1 软件测试基础 300
20.1.1 黑盒测试 300
20.1.2 白盒测试 300
20.2 集成测试 301
20.2.1 自顶向下集成 301
20.2.2 自底向上集成 302
20.2.3 持续集成 303
20.2.4 集成测试工作产品 304
20.3 人工智能与回归测试 304
20.4 面向对象环境中的集成测试 305
20.4.1 基于故障的测试用例设计 306
20.4.2 基于场景的测试用例设计 307
20.5 确认测试 308
20.6 测试模式 309
20.7 小结 309
习题与思考题 310
第21章 软件测试—专门的移动性测试 311
21.1 移动测试准则 311
21.2 测试策略 312
21.3 用户体验测试相关问题 313
21.3.1 手势测试 313
21.3.2 虚拟键盘输入 314
21.3.3 语音输入和识别 314
21.3.4 警报和异常条件 315
21.4 Web应用测试 315
21.5 Web测试策略 316
21.5.1 内容测试 317
21.5.2 界面测试 318
21.5.3 导航测试 318
21.6 国际化 319
21.7 安全性测试 319
21.8 性能测试 320
21.9 实时测试 322
21.10 测试AI系统 323
21.10.1 静态测试和动态测试 323
21.10.2 基于模型的测试 324
21.11 测试虚拟环境 324
21.11.1 可用性测试 325
21.11.2 可访问性测试 326
21.11.3 可玩性测试 327
21.12 测试文档和帮助设施 327
21.13 小结 328
习题与思考题 329
第22章 软件配置管理 330
22.1 软件配置管理概述 331
22.1.1 SCM场景 331
22.1.2 配置管理系统的元素 332
22.1.3 基线 333
22.1.4 软件配置项 334
22.1.5 依赖性和变更管理 334
22.2 SCM中心存储库 335
22.2.1 一般特征和内容 335
22.2.2 SCM特征 336
22.3 版本控制系统 336
22.4 持续集成 337
22.5 变更管理过程 337
22.5.1 变更控制 338
22.5.2 影响管理 340
22.5.3 配置审核 341
22.5.4 状态报告 341
22.6 移动性和敏捷变更管理 341
22.6.1 变更控制 342
22.6.2 内容管理 343
22.6.3 集成和发布 344
22.6.4 版本控制 345
22.6.5 审核和报告 345
22.7 小结 346
习题与思考题 346
第23章 软件度量和分析 347
23.1 软件测量 348
23.1.1 测度、度量和指标 348
23.1.2 有效软件度量的属性 348
23.2 软件分析 348
23.3 产品指标 349
23.3.1 需求模型的度量 350
23.3.2 常规软件的设计度量 352
23.3.3 面向对象软件的设计度量 353
23.3.4 用户界面的设计度量 355
23.3.5 源代码的度量 357
23.4  测试的度量 357
23.5 维护的度量 358
23.6 过程和项目度量 359
23.7 软件测量 361
23.8 软件质量的度量 363
23.9 制定软件度量大纲 365
23.10 小结 367
习题与思考题 368
第四部分 软件项目管理
第24章 项目管理概念 370
24.1 管理涉及的范围 371
24.1.1 人员 371
24.1.2 产品 371
24.1.3 过程 371
24.1.4 项目 372
24.2 人员 372
24.2.1 利益相关者 372
24.2.2 团队负责人 372
24.2.3 软件团队 373
24.2.4 协调和沟通问题 374
24.3 产品 375
24.3.1 软件范围  375
24.3.2 问题分解 376
24.4 过程 376
24.4.1 合并产品和过程 376
24.4.2 过程分解 377
24.5 项目 378
24.6 W5HH原则 379
24.7 关键实践 379
24.8 小结 379
习题与思考题 380
第25章 制定可行的软件计划 381
25.1 对估算的看法 382
25.2 项目计划过程 383
25.3 软件范围和可行性 383
25.4 资源 384
25.4.1 人力资源 384
25.4.2 可复用软件资源 384
25.4.3 环境资源 385
25.5 数据分析和软件项目估算 385
25.6 分解和估算技术 386
25.6.1 软件规模估算 386
25.6.2 基于问题的估算 387
25.6.3 基于LOC估算的实例 387
25.6.4 基于FP估算的实例 388
25.6.5 基于过程估算的实例 389
25.6.6 基于用例点估算的实例 390
25.6.7 调和不同的估算方法 392
25.6.8 敏捷开发的估算 392
25.7 项目进度安排 393
25.7.1 基本原则 394
25.7.2 人员与工作量之间的关系 394
25.8 定义项目任务集 396
25.8.1 任务集举例 396
25.8.2 主要任务的细化 397
25.9 定义任务网络 397
25.10 进度安排 398
25.10.1 时序图 398
25.10.2 跟踪进度 399
25.11 小结401
习题与思考题 401
第26章 风险管理 403
26.1 被动风险策略和主动风险策略 404
26.2 软件风险 404
26.3 风险识别 405
26.3.1 评估整体项目风险 406
26.3.2 风险因素和驱动因子 407
26.4 风险预测 407
26.4.1 建立风险表 407
26.4.2 评估风险影响 409
26.5 风险细化 410
26.6 风险缓解、监测和管理 411
26.7 RMMM计划 413
26.8 小结 414
习题与思考题 414
第27章 软件支持策略 416
27.1 软件支持 417
27.2 软件维护 418
27.2.1 维护类型 419
27.2.2 维护任务 419
27.2.3 逆向工程 420
27.3 主动软件支持 422
27.3.1 软件分析的使用 422
27.3.2 社交媒体的作用 423
27.3.3 支持成本 423
27.4 重构 424
27.4.1 数据重构 424
27.4.2 代码重构 425
27.4.3 体系结构重构 425
27.5 软件演化 425
27.5.1 库存分析 426
27.5.2 文档重构 427
27.5.3 逆向工程 427
27.5.4 代码重构 427
27.5.5 数据重构 427
27.5.6 正向工程 427
27.6 小结 428
习题与思考题 428
第五部分 高级课题
第28章 软件过程改进 430
28.1 什么是SPI 431
28.1.1 SPI的方法 431
28.1.2 成熟度模型 432
28.1.3 SPI适合每个人吗 432
28.2 SPI过程 432
28.2.1 评估和差异分析 433
28.2.2 教育和培训 434
28.2.3 选择和合理性判定 434
28.2.4 设置/迁移 434
28.2.5 评价 435
28.2.6 SPI的风险管理 435
28.3 CMMI 436
28.4 其他SPI框架 438
28.4.1 SPICE 438
28.4.2 TickIT Plus 439
28.5 SPI的投资回报率 439
28.6 SPI趋势 439
28.7 小结 440
习题与思考题 440
第29章 软件工程新趋势 442
29.1 技术演变 443
29.2 作为一门学科的软件工程 444
29.3 观察软件工程的发展趋势 444
29.4 识别“软趋势” 445
29.4.1 管理复杂性 446
29.4.2 开放世界软件 447
29.4.3 意外需求 447
29.4.4 人才技能结合 448
29.4.5 软件构造块 448
29.4.6 对“价值”认识的转变 449
29.4.7 开源 449
29.5 技术方向 449
29.5.1 过程趋势 449
29.5.2 巨大的挑战 450
29.5.3 协同开发 451
29.5.4 需求工程 451
29.5.5 模型驱动的软件开发 452
29.5.6 基于搜索的软件工程 452
29.5.7 测试驱动的开发 453
29.6 相关工具的趋势 454
29.7 小结 455
习题与思考题 455
第30章 结束语 456
30.1 再论软件的重要性 457
30.2 人员及其构造系统的方式 457
30.3 知识发现 458
30.4 愿景 459
30.5 软件工程师的责任 460
30.6 写在最后 461
索引 462
在线资源
附录1 UML 简介
附录2 面向软件工程师的数据科学
参考文献

推荐

车牌查询
桂ICP备20004708号-3