注册 登录 进入教材巡展
#
  • #

出版时间:2023-12

出版社:机械工业出版社

以下为《软件工程原理与实践》的配套数字资源,这些资源在您购买图书后将免费附送给您:
试读
  • 机械工业出版社
  • 9787111739449
  • 1-1
  • 503573
  • 46257854-3
  • 平装
  • 16开
  • 2023-12
  • 555
  • 软件工程
  • 本科
内容简介
本书共分四篇。第一篇(第1、2章)对软件工程进行概述,介绍了什么是软件、软件工程和软件过程。第二篇(第3~9章)讲解了软件工程的模型和方法、软件需求工程、软件架构设计、软件详细设计、编码和版本管理、软件测试,以及软件运行和维护。第三篇(第10~14章)介绍了软件项目管理和规划、软件质量管理、软件风险管理、软件度量以及软件开发中人的管理。第四篇(第15、16章)介绍了软件工程的新进展,包括智能软件工程和群体软件工程等新技术和新方法。
本书知识全面、实践性强、紧跟学术和实践前沿,适合作为本科生和研究生“软件工程”“高级软件工程”“软件过程”“软件项目管理”等课程的教材,同时对从事软件开发、运维和管理的各类技术人员也有非常好的借鉴作用。
目录
C O N T E N T S
目 录
丛书序言

前言
第一篇 软件工程概述
第1 章 绪论 ··································· 2
1.1 什么是软件 ·························· 2
1.1.1 软件的定义和作用 ········ 2
1.1.2 软件的发展历史 ··········· 3
1.1.3 挑战与问题 ················· 4
1.2 什么是工程 ·························· 6
1.2.1 软件是一门工程学科 ····· 6
1.2.2 工程的定义和特性 ········ 6
1.2.3 工程过程 ···················· 7
1.3 什么是软件工程 ···················· 7
1.3.1 软件工程的概念和知
识体系 ······················· 7
1.3.2 软件价值工程 ·············· 8
1.3.3 软件系统工程 ·············· 8
1.3.4 软件工程的发展趋势 ···10
1.4 软件工程职业道德规范 ··········10
1.4.1 SEEPP 标准 ···············10
1.4.2 软件工程师的职业
责任 ·························12
1.5 案例概述 ····························13
思考题 ·····································13
第2 章 软件过程 ····························14
2.1 软件过程概述 ······················14
2.1.1 软件过程的概念 ··········14
2.1.2 软件生存周期过程
标准 ·························15
2.2 软件过程模型 ······················16
2.2.1 瀑布模型 ···················16
2.2.2 增量模型 ···················17
2.2.3 演化模型 ···················18
2.3 敏捷过程 ····························22
2.3.1 敏捷过程的价值观
和原则 ······················22
2.3.2 Scrum ·······················24
2.3.3 Kanban ·····················26
2.4 开发运维一体化 ···················27
2.4.1 DevOps 的生命周期 ·····27
2.4.2 应用DevOps 的原则 ····28
2.4.3 持续集成、持续交付和
持续部署 ···················28
2.4.4 DevOps 工具链 ···········29
2.5 软件过程的选择、裁剪、
评估和改进 ·························29
2.5.1 软件过程的选择
和裁剪 ······················29
2.5.2 软件过程的评估 ··········30
2.5.3 软件过程的改进 ··········33
思考题 ·····································34
第二篇 软件工程技术
第3 章 软件工程模型和方法 ·············36
3.1 软件工程模型 ······················36
3.1.1 什么是模型 ················36
3.1.2 CIM、PIM 和PSM ······37
3.2 结构化方法 ·························37
3.2.1 结构化分析 ················38
3.2.2 结构化概要设计 ··········41
3.2.3 结构化详细设计 ··········43
3.3 面向对象方法 ······················43
3.3.1 面向对象的基本概念 ····44
3.3.2 面向对象的基本原则 ····44
3.3.3 面向对象的模型 ··········45
3.3.4 面向对象的分析 ··········46
3.3.5 面向对象的设计 ··········47
3.4 基于构件的开发方法 ·············47
3.4.1 概述 ·························48
3.4.2 方法框架 ···················49
3.4.3 构件开发 ···················49
3.4.4 构件管理 ···················50
3.4.5 构件组装 ···················51
3.5 面向服务方法 ······················51
3.5.1 面向服务架构的基本
概念 ·························52
3.5.2 面向服务建模的内涵 ········54
3.5.3 面向服务建模的方法 ····55
3.6 模型驱动开发方法 ················56
3.6.1 方法概述 ···················57
3.6.2 模型和元模型 ·············58
3.6.3 模型转换 ···················59
3.6.4 领域特定语言 ·············59
3.7 软件产品线工程 ···················60
3.7.1 方法概述 ···················60
3.7.2 产品线的可变性 ··········62
3.7.3 领域工程 ···················63
3.8 形式化方法 ·························64
3.8.1 方法概述 ···················65
3.8.2 形式化规约 ················65
3.8.3 形式化开发 ················66
3.8.4 形式化验证 ················66
思考题 ·····································67
第4 章 软件需求工程 ······················68
4.1 面临的挑战 ·························68
4.2 软件需求 ····························70
4.2.1 什么是软件需求 ··········70
4.2.2 优秀需求具有的
特性 ·························71
4.3 软件需求工程的5 个阶段 ·······72
4.3.1 需求获取 ···················73
4.3.2 需求分析 ···················79
4.3.3 需求定义 ···················80
4.3.4 需求验证 ···················82
4.3.5 需求管理 ···················83
4.4 UML 图 ·····························86
4.4.1 用例图 ······················86
4.4.2 活动图 ······················87
4.4.3 类图 ·························88
4.4.4 时序图 ······················93
4.4.5 通信图 ······················95
4.4.6 状态机图 ···················95
4.4.7 构件图 ······················97
4.4.8 部署图 ······················99
4.4.9 包图 ······················· 101
4.5 面向对象分析建模 ·············· 101
4.5.1 建立用例模型 ··········· 102
4.5.2 建立概念模型 ··········· 113
4.5.3 识别用例实现 ··········· 115
4.5.4 识别分析类 ·············· 116
4.5.5 建立分析模型 ··········· 119
4.6 敏捷开发中的需求工程 ········ 122
思考题 ··································· 124
第5 章 软件架构设计 ···················· 125
5.1 软件设计概述 ···················· 125
5.1.1 软件设计过程 ··········· 125
5.1.2 软件设计模型 ··········· 126
5.1.3 软件设计原则 ··········· 126
5.1.4 软件设计的复用 ········ 128
5.2 软件架构风格 ···················· 129
5.2.1 通用结构的架构
风格 ······················· 129
5.2.2 分布式系统的架构
风格 ······················· 133
5.2.3 交互式系统的架构
风格 ······················· 140
5.2.4 自适应系统的架构
风格 ······················· 142
5.2.5 其他架构风格 ··········· 143
5.3 软件架构多视图的设计 ········ 146
5.3.1 4+1 架构视图 ··········· 147
5.3.2 逻辑视图的设计 ········ 147
5.3.3 进程视图的设计 ········ 148
5.3.4 开发视图的设计 ········ 150
5.3.5 物理视图的设计 ········ 151
5.3.6 场景视图的设计 ········ 152
5.3.7 视图的选择 ·············· 152
5.4 软件质量属性的设计策略 ····· 154
5.4.1 可用性设计策略 ········ 154
5.4.2 可修改性设计策略 ····· 156
5.4.3 性能设计策略 ··········· 158
5.4.4 安全性设计策略 ········ 160
5.4.5 可测试性设计策略 ····· 162
5.4.6 易用性设计策略 ········ 162
思考题 ··································· 163
第6 章 软件详细设计 ···················· 164
6.1 软件详细设计概述 ·············· 164
6.2 设计模式 ·························· 165
6.2.1 创建型设计模式 ········ 165
6.2.2 结构型设计模式 ········ 171
6.2.3 行为型设计模式 ········ 177
6.3 包和子系统设计 ················· 187
6.3.1 包设计的原则 ··········· 187
6.3.2 子系统设计 ·············· 190
6.4 类设计 ····························· 191
6.4.1 类设计的原则 ··········· 191
6.4.2 类设计的过程 ··········· 196
6.5 持久性设计 ······················· 199
6.5.1 实体对象模型与数据
库设计 ···················· 199
6.5.2 数据库设计 ·············· 203
6.5.3 持久性框架 ·············· 207
6.6 人机界面设计 ···················· 208
6.6.1 界面设计原则 ··········· 208
6.6.2 界面设计过程 ··········· 209
6.6.3 人机交互方式 ··········· 210
6.6.4 界面设计因素 ··········· 211
6.7 软件设计的质量控制 ··········· 213
6.7.1 设计评审 ················· 213
6.7.2 设计质量度量 ··········· 214
6.7.3 设计的静态分析 ········ 214
6.7.4 设计的形式化验证 ····· 214
6.7.5 设计的模拟仿真和原型 ·· 215
思考题 ··································· 215
第7 章 编码和版本管理 ················· 216
7.1 软件编码的准则 ················· 216
7.2 代码质量 ·························· 217
7.3 编码规范 ·························· 218
7.3.1 命名 ······················· 219
7.3.2 布局格式 ················· 219
7.3.3 注释 ······················· 219
7.4 编写可靠的代码 ················· 220
7.4.1 防御式编程 ·············· 220
7.4.2 契约式设计 ·············· 221
7.4.3 异常处理 ················· 221
7.5 代码质量控制 ···················· 222
7.5.1 代码的质量问题 ········ 222
7.5.2 开发者测试 ·············· 222
7.5.3 代码静态检查 ··········· 223
7.5.4 代码质量度量 ··········· 223
7.5.5 代码评审 ················· 224
7.6 版本管理 ·························· 225
7.6.1 基本概念 ················· 225
7.6.2 版本控制系统 ··········· 226
7.6.3 并行开发和分支
管理 ······················· 228
7.7 展望:AI 时代的编程 ·········· 229
思考题 ··································· 230
第8 章 软件测试 ·························· 231
8.1 软件测试概述 ···················· 231
8.1.1 软件测试概念 ··········· 232
8.1.2 软件测试原则 ··········· 232
8.1.3 软件可测试性 ··········· 234
8.2 软件测试层次 ···················· 235
8.2.1 单元测试 ················· 235
8.2.2 集成测试 ················· 237
8.2.3 系统测试 ················· 238
8.3 软件测试方法 ···················· 239
8.3.1 白盒测试方法 ··········· 239
8.3.2 黑盒测试方法 ··········· 243
8.4 系统测试技术 ···················· 248
8.4.1 功能测试 ················· 248
8.4.2 性能测试 ················· 249
8.4.3 可靠性测试 ·············· 250
8.4.4 易用性测试 ·············· 250
8.4.5 兼容性测试 ·············· 251
8.4.6 信息安全测试 ··········· 251
8.5 其他软件测试技术 ·············· 252
8.5.1 回归测试 ················· 252
8.5.2 α 测试和
β 测试 ··················· 253
8.5.3 变异测试 ················· 253
8.5.4 蜕变测试 ················· 254
8.5.5 模糊测试 ················· 254
8.5.6 对抗样本测试 ··········· 255
8.6 软件测试过程 ···················· 255
8.6.1 测试规划 ················· 256
8.6.2 测试设计 ················· 257
8.6.3 测试开发 ················· 257
8.6.4 测试执行 ················· 257
8.6.5 测试评估 ················· 258
8.7 软件测试的质量控制 ··········· 258
8.7.1 软件测试评审 ··········· 258
8.7.2 软件测试的质量
度量 ······················ 259
思考题 ··································· 260
第9 章 软件运营与维护 ················· 261
9.1 软件运营 ·························· 261
9.1.1 ITIL 和最佳实践 ······· 261
9.1.2 软件部署 ················· 263
9.2 软件维护 ·························· 265
9.2.1 维护的分类 ·············· 265
9.2.2 维护的技术 ·············· 266
思考题 ··································· 268
第三篇 软件工程管理
第10 章 软件项目管理和规划 ·········· 270
10.1 项目管理的基本概念 ········· 270
10.2 项目管理知识体系 ············ 271
10.2.1 项目成功的标准 ···· 272
10.2.2 十二大原则 ·········· 272
10.2.3 八大绩效域 ·········· 272
10.2.4 五大过程组 ·········· 273
10.3 软件项目规划 ·················· 274
10.3.1 软件项目计划的
内容 ··················· 274
10.3.2 软件项目规划的关
键活动 ················ 274
10.4 软件估算 ························ 277
10.4.1 估算的影响 ·········· 277
10.4.2 估算原则 ············· 277
10.4.3 估算方法 ············· 279
10.4.4 软件规模估算 ······· 282
10.4.5 工作量和进度估算 ··· 287
10.5 进度安排 ························ 291
10.5.1 关键路径法 ·········· 291
10.5.2 进度计划 ············· 293
10.5.3 战胜进度压力 ······· 294
10.6 项目监控和挣值管理 ········· 295
10.6.1 项目监控 ············· 295
10.6.2 挣值管理 ············· 296
思考题 ··································· 299
第11 章 软件质量管理 ··················· 300
11.1 软件质量管理概述 ············ 300
11.1.1 软件质量的概念
和模型 ················ 300
11.1.2 软件质量的价值
和成本 ················ 302
11.1.3 软件可信性和完整
性级别 ················ 302
11.1.4 软件质量管理的
活动 ··················· 304
11.2 项目级软件质量管理 ········· 304
11.2.1 质量策划 ·············· 305
11.2.2 验证和确认 ··········· 306
11.2.3 质量评价 ·············· 308
11.3 组织级软件质量管理 ········· 309
11.3.1 质量管理体系标准
ISO 9000 ·············· 310
11.3.2 质量管理体系的建
立和运行 ············· 311
11.3.3 质量管理体系的
评估 ··················· 312
11.3.4 质量管理体系的
持续改进 ············· 312
11.4 软件质量管理技术 ············ 313
11.4.1 静态技术 ·············· 313
11.4.2 动态技术 ·············· 314
11.5 软件评审 ························ 315
11.5.1 评审方法 ·············· 315
11.5.2 审查 ···················· 319
11.5.3 评审的陷阱 ··········· 322
思考题 ··································· 323
第12 章 软件风险管理 ··················· 324
12.1 风险管理概述 ·················· 324
12.1.1 概念 ··················· 324
12.1.2 风险管理的成本
和收益 ················ 325
12.1.3 被动和主动的风险
策略 ··················· 325
12.2 风险管理的成熟度模型 ······ 326
12.3 风险管理过程 ·················· 327
12.3.1 风险识别 ············· 328
12.3.2 风险分析和排序 ···· 329
12.3.3 风险管理计划制订 ··· 330
12.3.4 风险跟踪和报告 ···· 332
12.3.5 风险控制 ············· 332
12.3.6 风险学习 ············· 332
12.4 十大软件风险 ·················· 333
12.4.1 需求误解 ············· 333
12.4.2 缺少上层的支持 ···· 333
12.4.3 需求变更失控 ······· 334
12.4.4 未能合理管理客户
期望值 ················ 334
12.4.5 不现实的进度计划
和成本预算 ·········· 335
12.4.6 质量低劣 ············· 335
12.4.7 人员薄弱 ············· 336
12.4.8 技术和架构风险 ···· 336
12.4.9 软件外包失败 ······· 336
12.4.10 缺乏足够的用户
参与 ·················· 337
思考题 ··································· 337
第13 章 软件度量 ························· 338
13.1 软件度量概述 ·················· 338
13.1.1 度量 ··················· 338
13.1.2 度量指标 ············· 339
13.1.3 GQM 度量模型 ······ 340
13.2 软件度量过程 ·················· 341
13.2.1 确立和维持度量
承诺 ··················· 341
13.2.2 准备度量 ············· 342
13.2.3 实施度量 ············· 343
13.2.4 评价度量 ············· 343
13.3 软件研发效能度量 ············ 344
13.3.1 软件研发效能度量
的常用指标 ·········· 344
13.3.2 软件研发效能度量
的分析技术 ·········· 346
13.4 软件度量的反模式 ············ 350
思考题 ··································· 352
第14 章 软件开发中人的管理 ·········· 353
14.1 软件工程师的管理 ············ 353
14.1.1 软件工程师的
特点 ··················· 353
14.1.2 激励 ··················· 354
14.1.3 自我管理 ············· 358
14.2 干系人管理 ····················· 359
14.3 软件团队的管理 ··············· 360
14.3.1 高绩效团队 ·········· 360
14.3.2 团队模式 ············· 362
14.3.3 团队沟通 ············· 366
14.3.4 团队建设 ············· 367
14.4  软件组织的人力资源管理
模型 ······························ 368
思考题 ··································· 370
第四篇 软件工程新进展
第15 章 智能软件工程 ··················· 374
15.1 人工智能赋能的软件工程 ··· 374
15.1.1 软件工程各环节的
智能化 ················ 374
15.1.2 代码表征学习和预
训练语言模型 ······· 376
15.1.3 智能编程 ············· 379
15.1.4 展望 ··················· 383
15.2 面向人工智能的软件工程 ··· 384
15.2.1 人工智能系统的
开发 ··················· 384
15.2.2 人工智能系统的
质量 ··················· 386
15.2.3 人工智能系统的
测试 ··················· 387
思考题 ··································· 389
第16 章 群体软件工程 ··················· 391
16.1 群体软件工程概述 ············ 391
16.2 开源软件 ························ 392
16.2.1 开源软件运动 ······· 392
16.2.2 开源软件生态 ······· 393
16.2.3 开源软件的开发模式 ··· 395
16.2.4 开源项目贡献 ······· 396
16.3 软件众包 ························ 396
16.3.1 众包概念 ············· 396
16.3.2 众包模型 ············· 397
16.3.3 众包流程 ············· 398
16.3.4 众包质量保障 ······· 398
16.3.5 众包激励机制 ······· 399
16.4 应用程序商店 ·················· 400
16.4.1 应用程序商店的
分类 ··················· 400
16.4.2 应用程序商店的
架构 ··················· 401
16.4.3 应用程序商店的成
功因素 ················ 402
16.5 研究展望 ························ 403
思考题 ··································· 403