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

出版时间:2026-01-21

出版社:机械工业出版社

以下为《软件工程:原理与实践》的配套数字资源,这些资源在您购买图书后将免费附送给您:
  • 机械工业出版社
  • 9787111796237
  • 1-1
  • 2026-01-21
  • 382
内容简介
本书结合作者在学术与实践中的经验,阐述了软件工程的核心。全书共10章,覆盖开发全生命周期。对于设有团队项目的课程,本书提供实用建议与模板,帮助实现课堂概念与学生项目需求的有机结合。学生将通过采用敏捷方法、需求挖掘、模块化系统设计、高效测试方法选择及进度追踪度量指标运用,深入了解工业界的软件开发流程。本书不仅讲解"如何实施",更阐释"实施原因",帮助学生为行业实践的改进做好储备。各章节深入探讨了诸多核心主题:如何精准获取用户真实需求,如何清晰分解架构并攻克软件系统固有的复杂性,测试覆盖率为何对检测代码中不可避免的缺陷至关重要等。本书适合作为软件工程专业的教科书,也适合软件从业者及相关技术人员参考。
目录
译者序
前言
第1章 绪论 1
1.1 什么是软件工程 1
1.1.1 软件工程的定义 1
1.1.2 两家公司的故事 2
1.2 需求挑战 4
1.2.1 识别客户和需求 4
1.2.2 应对需求变更 5
1.3 软件本质上具有复杂性 5
1.3.1 复杂性的来源 5
1.3.2 架构:应对程序复杂性 6
1.4 缺陷是不可避免的 8
1.4.1 修复缺陷以避免运行故障 8
1.4.2 测试简介 9
1.4.3 黑盒测试和白盒测试 9
1.5 平衡约束:一个铁三角模型 10
1.6 社会责任 10
1.6.1 案例研究:大众汽车排放
丑闻 11
1.6.2 ACM守则 11
1.6.3 案例研究:Therac-25
事故 12
1.6.4 软件项目的教训 12
1.7 结论 13
延伸阅读 14
练习 14
第2章 软件过程 17
2.1 过程与价值观指导的开发 17
2.1.1 什么是软件过程 17
2.1.2 两种开发文化:计划型与
成长型 18
2.1.3 角色模型:UNIX文化与敏捷
价值观 19
2.1.4 选择过程模型 21
2.2 团队协作的架构:Scrum
框架 22
2.2.1 Scrum概述 23
2.2.2 Scrum角色 24
2.2.3 Scrum事件 24
2.2.4 Scrum工件 26
2.2.5 小结 26
2.3 敏捷开发:极限编程 26
2.3.1 倾听:用户故事 27
2.3.2 测试:开发的核心 28
2.3.3 何时进行设计 29
2.3.4 Scrum + XP混合方法 30
2.3.5 小结 31
2.4 瀑布模型的局限性 31
2.4.1 大爆炸集成和测试的
风险 32
2.4.2 瀑布过程软件修改成本
曲线 32
2.4.3 瀑布模型风险管理 33
2.4.4 小结 35
2.5 设计和测试的层次:V模型 35
2.5.1 V模型概述 35
2.5.2 测试的层次:从单元测试
到验收测试 36
2.5.3 小结 36
2.6 额外的项目风险 36
2.6.1 粗略风险评估 37
2.6.2 Netscape Navigator 3.0:
一个成功的迭代项目 38
2.6.3 Netscape Communicator 4.0:
一个问题重重的项目 38
2.7 降低风险:螺旋模型 39
2.7.1 螺旋模型概述 39
2.7.2 小结 41
2.8 结论 41
延伸阅读 43
练习 43
第3章 用户需求 45
3.1 什么是需求 45
3.1.1 基本需求周期 45
3.1.2 案例研究:需求挑战 46
3.1.3 需求的种类 47
3.2 开发需求和软件 48
3.2.1 敏捷方法验证工作软件 49
3.2.2 案例研究:敏捷开发强调
需求 49
3.2.3 计划驱动方法验证规范 50
3.3 征询用户需求 51
3.3.1 用户需求分类 51
3.3.2 访问用户需求 52
3.3.3 案例研究:Intuit的“以用户
幸福为设计核心” 53
3.4 撰写需求:故事和功能 54
3.4.1 如何撰写有效的用户
故事 54
3.4.2 系统功能的指南 57
3.4.3 用户故事的视角 57
3.5 编写用户体验场景 58
3.5.1 用户体验场景指南 58
3.5.2 案例研究:一个医疗
场景 59
3.6 澄清用户目标 60
3.6.1 目标的属性 60
3.6.2 提出澄清问题 61
3.6.3 将目标组织成层次结构 63
3.6.4 互促与冲突的目标 64
3.7 识别安全攻击 66
3.7.1 攻击树:像攻击者一样
思考 66
3.7.2 发现可能的攻击 66
3.8 结论 68
延伸阅读 69
练习 69
第4章 需求分析 71
4.1 清单法 71
4.2 相对估算:迭代计划 73
4.2.1 锚定会让决策产生偏差 73
4.2.2 敏捷故事点 74
4.2.3 工作速率 75
4.3 结构化小组共识估算 76
4.3.1 宽带Delphi与计划扑克 76
4.3.2 原始的Delphi方法 77
4.4 平衡优先级 78
4.4.1 MoSCoW优先级排序 78
4.4.2 平衡价值和成本 79
4.4.3 平衡价值、成本与风险 79
4.5 客户满意因素与不满因素 80
4.5.1 Kano分析 81
4.5.2 功能分类 81
4.5.3 功能吸引力的生命周期 83
4.5.4 充足度的级别 83
4.6 计划驱动的估算模型 84
4.6.1 大小与工作量怎样相关 84
4.6.2 Cocomo系列估算模型 85
4.7 结论 86
延伸阅读 87
练习 87
第5章 用例 89
5.1 用例中的元素 89
5.1.1 使用参与者与目标概述一个
系统 89
5.1.2 流程和基本流程 90
5.2 备选流程:条件行为 91
5.2.1 特定的备选流程 92
5.2.2 扩展点 93
5.2.3 有界的备选流程 94
5.3 编写用例 94
5.3.1 用例模板 95
5.3.2 从参与者意图到系统
交互 95
5.3.3 如何构建用例 96
5.4 用例图 97
5.5 用例之间的关系 98
5.5.1 子流程 98
5.5.2 用例的包含 98
5.5.3 用例的扩展 98
5.6 结论 99
延伸阅读 100
练习 100
第6章 设计与架构 101
6.1 架构的角色 101
6.1.1 什么是架构 101
6.1.2 设计包含架构 102
6.1.3 什么是好的软件架构 102
6.2 设计模块化系统 103
6.2.1 模块化原则 103
6.2.2 耦合和内聚 105
6.2.3 模块设计指南 106
6.3 类图 106
6.3.1 表示一个类 107
6.3.2 类之间的关系 109
6.4 架构视图 111
6.4.1 4+1视图分组 111
6.4.2 结构与视图 114
6.5 描述系统架构 115
6.5.1 架构描述大纲 115
6.5.2 通信应用程序的系统
概述 116
6.5.3 开发视图:模块层次
结构 117
6.6 结论 118
延伸阅读 119
练习 119
第7章 架构模式 122
7.1 软件分层 122
7.1.1 分层模式 123
7.1.2 设计权衡 124
7.2 三个构建模块 126
7.2.1 共享数据模式 126
7.2.2 观察者和订阅者 127
7.3 用户界面:模型-视图-
控制器 128
7.3.1 设计决策 128
7.3.2 基本的模型-视图-控制器
模式 130
7.3.3 保持视图简洁 131
7.4 数据流架构 131
7.4.1 数据流流水线 132
7.4.2 数据流网络 134
7.4.3 无界流 135
7.4.4 大规模数据流 136
7.5 连接客户端与服务器 136
7.5.1 客户端-服务器模式 137
7.5.2 部署测试服务器 138
7.5.3 代理模式 139
7.6 产品系列和产品线 139
7.6.1 共性和差异 140
7.6.2 软件架构和产品线 140
7.6.3 产品线工程经济学 141
7.7 结论 141
延伸阅读 141
练习 141
第8章 静态检测 144
8.1 架构审查 144
8.1.1 架构审查的指导原则 144
8.1.2 发现性审查、深度挖掘审查和
回顾性审查 145
8.2 进行软件检查 146
8.2.1 传统检查的阶段 146
8.2.2 案例研究:利用数据确保
有效性 148
8.2.3 组织检查 149
8.3 代码审查:检查意图和建立
信任 150
8.3.1 投入的专家审查员 150
8.3.2 审查在几小时内完成 150
8.4 自动化静态分析 151
8.4.1 各类静态检查器 152
8.4.2 假阳性和假阴性 154
8.5 结论 154
延伸阅读 155
练习 156
第9章 测试 157
9.1 测试概述 157
9.1.1 测试中的问题 158
9.1.2 测试选择 159
9.1.3 测试充分性:何时停止
测试 159
9.1.4 测试预言:评估对测试的
响应 160
9.2 测试的层级 161
9.2.1 单元测试 161
9.2.2 集成测试 162
9.2.3 功能测试、系统测试和验收
测试 164
9.2.4 案例研究:尽早并频繁地
进行测试 164
9.3 代码覆盖Ⅰ:白盒测试 165
9.3.1 控制流图 165
9.3.2 控制流覆盖标准 167
9.4 输入覆盖Ⅰ:黑盒测试 169
9.4.1 等价类覆盖 169
9.4.2 边界值覆盖 171
9.5 代码覆盖Ⅱ: MC/DC 171
9.5.1 条件覆盖和判定覆盖是
独立的 172
9.5.2 MC/DC测试对 172
9.6 输入覆盖Ⅱ:组合测试 175
9.7 结论 178
延伸阅读 179
练习 179
第10章 质量度量指标 181
10.1 有效的度量指标 181
10.1.1 量化属性的度量指标 181
10.1.2 选择有效的度量指标 182
10.1.3 目标导向度量 184
10.2 软件质量 184
10.2.1 软件质量的多种形式 185
10.2.2 客户支持度量 186
10.3 数据集可视化 187
10.3.1 数据集 187
10.3.2 度量标准 188
10.3.3 柱状图:按类别展示
数据 189
10.3.4 甘特图:进度可视化
工具 190
10.4 产品质量:度量缺陷 191
10.4.1 缺陷的严重性 191
10.4.2 缺陷移除效率 192
10.4.3 客户发现的缺陷 193
10.4.4 CFD度量安装量而非
质量 193
10.5 运营质量提升:案例研究 194
10.5.1 如何提升软件质量 194
10.5.2 客户质量度量指标(Customer Quality Metric, CQM) 195
10.5.3 子目标:产品和过程
改进 196
10.5.4 度量过程改进 197
10.6 数据离散度:箱线图和
直方图 197
10.6.1 中位数和四分位数 197
10.6.2 箱线图通过四分位数总结
数据 199
10.6.3 数据分布的直方图 200
10.7 数据离散:统计 201
10.7.1 均值方差 201
10.7.2 离散概率分布 203
10.7.3 连续分布 203
10.7.4 正态分布 204
10.7.5 学生t分布 204
10.8 置信区间 205
10.8.1 置信区间的定义 205
10.8.2 总体标准差已知的情况 206
10.8.3 总体标准差未知的情况 207
10.9 简单线性回归 208
10.9.1 简单情况:回归线通过
原点 209
10.9.2 普通最小二乘法拟合 210
10.10 结论 211
延伸阅读 213
练习 213
附录 团队项目 214
参考文献 225