《编程卓越之道(卷3):软件工程化》简介:
《编程卓越之道(卷3):软件工程化》深入介绍了从开发方法、生产力到面向对象的设计需求和系统文档的方方面面。通过本书,你将学习到:为什么遵循软件匠艺模型可以让你做到最好;如何利用可追溯性来加强文档的一致性;如何通过用例分析来创建自己的UML需求;如何利用IEEE文档标准开发出更好的软件。
通过对高质量软件开发中技能、态度和道德方面的深入讲解,本书揭示了如何将工程原理应用于编程的正确方法。在这个过程中,Hyde不仅会教给你规则,还会告诉你什么时候该打破规则。他不仅会启发你认识什么是最佳实践,同时还会让你发现适合自己的最佳实践。
《编程卓越之道(卷3):软件工程化》目录:
第 1 部分 个人软件工程
1 软件开发的比喻 ................................................................................................. 2
1.1 什么是软件 .......................................................................................................... 2
1.1.1 软件不是被制造出来的 ........................................................................... 3
1.1.2 软件不会磨损 ........................................................................................... 3
1.1.3 大多数软件都是定制化的 ....................................................................... 3
1.1.4 软件可以很容易升级 ............................................................................... 4
1.1.5 软件不是一个独立的实体 ....................................................................... 4
1.2 与其他领域的相似性 ........................................................................................... 4
1.2.1 程序员像艺术家一样 ............................................................................... 4
1.2.2 程序员像建筑师一样 ............................................................................... 5
1.2.3 程序员像工程师一样 ............................................................................... 6
1.2.4 程序员像工匠一样 ................................................................................... 7
1.2.5 究竟是艺术家、建筑师、工程师还是工匠 ........................................... 7
1.3 软件工程 .............................................................................................................. 8
1.3.1 一个正式的定义 ....................................................................................... 9
1.3.2 项目规模 ................................................................................................. 10
1.3.3 软件工程的问题 ..................................................................................... 12
1.4 软件匠艺 ............................................................................................................ 13
1.4.1 教育 ......................................................................................................... 13
1.4.2 学徒阶段 ................................................................................................. 14
1.4.3 软件熟练工 ............................................................................................. 15
1.4.4 大师级工匠 ............................................................................................. 15
1.4.5 软件匠艺的不足 ..................................................................................... 16
1.5 通往卓越编程的道路 ......................................................................................... 16
1.6 获取更多信息 .................................................................................................... 17
2 生产力 ............................................................................................................. 18
2.1 什么是生产力 .................................................................................................... 18
2.2 程序员生产力与团队生产力的比较 ................................................................. 19
2.3 工时和实际时间 ................................................................................................ 20
2.4 概念复杂性和范围复杂性 ................................................................................. 21
2.5 预测生产力 ........................................................................................................ 22
2.6 度量指标,以及我们为什么需要它们 ............................................................. 23
2.6.1 可执行文件大小度量指标 ..................................................................... 24
2.6.2 机器指令度量指标 ................................................................................. 24
2.6.3 代码行数度量指标 ................................................................................. 25
2.6.4 语句数量度量指标 ................................................................................. 25
2.6.5 功能点分析 ............................................................................................. 26
2.6.6 McCabe 圈复杂度度量指标 ................................................................... 26
2.6.7 其他度量指标 ......................................................................................... 27
2.6.8 度量指标的问题 ..................................................................................... 28
2.7 我们怎样才能每天写出 10 行代码 ................................................................... 29
2.8 估计开发时间 .................................................................................................... 30
2.8.1 估计小型项目的开发时间 ..................................................................... 30
2.8.2 估计中型项目和大型项目的开发时间 ................................................. 31
2.8.3 估计开发时间的问题 ............................................................................. 32
2.9 危机模式项目管理............................................................................................. 33
2.10 如何提高工作效率 ........................................................................................... 34
2.10.1 合理选择软件开发工具 ....................................................................... 34
2.10.2 管理开销 ............................................................................................... 36
2.10.3 设置明确的目标和里程碑 ................................................................... 37
2.10.4 练习自我激励 ....................................................................................... 37
2.10.5 集中注意力,消除干扰 ....................................................................... 38
2.10.6 如果你觉得无聊,那么就做点别的事情 ........................................... 39
2.10.7 尽可能自立 ........................................................................................... 39
2.10.8 识别何时需要帮助 ............................................................................... 40
2.10.9 克服士气低落 ....................................................................................... 40
2.11 获取更多信息 ................................................................................................... 41
3 软件开发模型................................................................................................... 42
3.1 软件开发生命周期............................................................................................. 42
3.2 软件开发模型 .................................................................................................... 45
3.2.1 非正式模型 ............................................................................................. 46
3.2.2 瀑布模型 ................................................................................................. 47
3.2.3 V 模型 ..................................................................................................... 49
3.2.4 迭代模型 ................................................................................................. 50
3.2.5 螺旋模型 ................................................................................................. 52
3.2.6 快速应用程序开发模型 ......................................................................... 54
3.2.7 增量模型 ................................................................................................. 56
3.3 软件开发方法论 ................................................................................................ 57
3.3.1 传统的(预测型)方法论 ..................................................................... 57
3.3.2 自适应型方法论 ..................................................................................... 57
3.3.3 敏捷开发 ................................................................................................. 58
3.3.4 极限编程 ................................................................................................. 60
3.3.5 Scrum ....................................................................................................... 73
3.3.6 功能驱动开发 ......................................................................................... 74
3.4 卓越程序员的模型和方法论 ............................................................................. 77
3.5 获取更多信息 .................................................................................................... 77
第 2 部分 UML
4 UML 和用例介绍 .............................................................................................. 80
4.1 UML 标准 ........................................................................................................... 80
4.2 UML 用例模型 ................................................................................................... 81
4.2.1 用例图的元素 ......................................................................................... 81
4.2.2 用例包 ..................................................................................................... 84
4.2.3 用例包含 ................................................................................................. 84
4.2.4 用例泛化 ................................................................................................. 85
4.2.5 用例扩展 ................................................................................................. 87
4.2.6 用例故事 ................................................................................................. 88
4.2.7 用例场景 ................................................................................................. 95
4.3 UML 系统边界图 ............................................................................................... 97
4.4 除用例以外 ........................................................................................................ 97
4.5 获取更多信息 .................................................................................................... 98
5 UML 活动图 ..................................................................................................... 99
5.1 UML 活动状态符号 ........................................................................................... 99
5.1.1 开始和结束状态 ................................................................................... 100
5.1.2 活动 ....................................................................................................... 100
5.1.3 状态 ....................................................................................................... 101
5.1.4 转移 ....................................................................................................... 101
5.1.5 条件 ....................................................................................................... 102
5.1.6 合并点 ................................................................................................... 104
5.1.7 事件和触发器 ....................................................................................... 105
5.1.8 分叉和合并(同步) ........................................................................... 107
5.1.9 调用符号 ............................................................................................... 108
5.1.10 分区 ..................................................................................................... 108
5.1.11 注释和注解 ......................................................................................... 110
5.1.12 连接器 ................................................................................................. 110
5.1.13 其他活动图符号 ................................................................................. 111
5.2 扩展 UML 活动图 ............................................................................................ 111
5.3 获取更多信息 .................................................................................................. 113
6 UML 类图 ...................................................................................................... 114
6.1 UML 中的面向对象分析与设计 ..................................................................... 114
6.2 类图中的可见性 .............................................................................................. 116
6.2.1 公共的类可见性 ................................................................................... 116
6.2.2 私有的类可见性 ................................................................................... 117
6.2.3 受保护的类可见性 ............................................................................... 118
6.2.4 包级别的类可见性 ............................................................................... 118
6.2.5 不支持的可见性类型 ........................................................................... 119
6.3 类属性 .............................................................................................................. 120
6.3.1 属性可见性 ........................................................................................... 120
6.3.2 属性派生值 ........................................................................................... 120
6.3.3 属性名称 ............................................................................................... 121
6.3.4 属性数据类型 ....................................................................................... 122
6.3.5 操作数据类型(返回值) ................................................................... 122
6.3.6 属性多重性 ........................................................................................... 123
6.3.7 属性初始值 ........................................................................................... 123
6.3.8 属性字符串 ........................................................................................... 124
6.3.9 属性语法 ............................................................................................... 124
6.4 类操作 .............................................................................................................. 125
6.5 UML 的类关系 ................................................................................................. 126
6.5.1 类的依赖关系 ....................................................................................... 127
6.5.2 类的关联关系 ....................................................................................... 127
6.5.3 类的聚合关系 ....................................................................................... 129
6.5.4 类的组合关系 ....................................................................................... 130
6.5.5 关系特性 ............................................................................................... 131
6.5.6 类的继承关系 ....................................................................................... 140
6.6 对象 .................................................................................................................. 140
6.7 获取更多信息 .................................................................................................. 141
7 UML 交互图 ................................................................................................... 142
7.1 时序图 .............................................................................................................. 142
7.1.1 生命线 ................................................................................................... 143
7.1.2 消息类型 ............................................................................................... 143
7.1.3 消息标签 ............................................................................................... 145
7.1.4 消息序号 ............................................................................................... 145
7.1.5 守卫条件 ............................................................................................... 146
7.1.6 迭代 ....................................................................................................... 147
7.1.7 长延迟和时间约束 ............................................................................... 148
7.1.8 外部对象 ............................................................................................... 149
7.1.9 激活条 ................................................................................................... 150
7.1.10 分支 ..................................................................................................... 150
7.1.11 可选流 ................................................................................................. 152
7.1.12 对象的创建和销毁 ............................................................................. 153
7.1.13 时序片段 ............................................................................................. 154
7.2 协作图 .............................................................................................................. 173
7.3 获取更多信息 .................................................................................................. 174
8 其他 UML 图 .................................................................................................. 175
8.1 组件图 .............................................................................................................. 175
8.2 包图 .................................................................................................................. 178
8.3 部署图 .............................................................................................................. 179
8.4 合成结构图 ...................................................................................................... 181
8.5 状态图 .............................................................................................................. 185
8.6 关于 UML 的更多信息 .................................................................................... 187
8.7 获取更多信息 .................................................................................................. 188
第 3 部分 文档
9 系统文档 ........................................................................................................ 190
9.1 系统文档类型 .................................................................................................. 191
9.2 可追溯性 .......................................................................................................... 193
9.2.1 建立文档可追溯性的方法 ................................................................... 193
9.2.2 标签格式 ............................................................................................... 194
9.2.3 需求/反向可追溯性矩阵 ...................................................................... 200
9.3 确认、验证和审查........................................................................................... 204
9.4 通过文档降低开发成本 ................................................................................... 205
9.4.1 通过确认降低成本 ............................................................................... 205
9.4.2 通过验证降低成本 ............................................................................... 206
9.5 获取更多信息 .................................................................................................. 207
10 需求文档 ...................................................................................................... 209
10.1 需求的来源和可追溯性 ................................................................................. 209
10.1.1 建议的需求格式 ................................................................................. 210
10.1.2 好需求的特点 ..................................................................................... 211
10.2 设计目标 ........................................................................................................ 218
10.3 系统需求规范文档 ......................................................................................... 218
10.4 软件需求规范文档 ......................................................................................... 219
10.4.1 介绍 ..................................................................................................... 221
10.4.2 总体描述 ............................................................................................. 222
10.4.3 具体需求 ............................................................................................. 224
10.4.4 支持信息 ............................................................................................. 229
10.4.5 软件需求规范示例 ............................................................................. 230
10.5 创建需求 ........................................................................................................ 240
10.6 用例 ................................................................................................................ 242
10.6.1 启用/禁用调试模式 ............................................................................ 244
10.6.2 启用/禁用以太网 ................................................................................ 244
10.6.3 启用/禁用 RS-232 ............................................................................... 246
10.6.4 启用/禁用测试模式 ............................................................................ 246
10.6.5 启用/禁用 USB ................................................................................... 246
10.6.6 读取拨码开关 ..................................................................................... 247
10.7 根据用例创建 DAQ 软件需求 ...................................................................... 247
10.8 (从 SRS 中选择的)DAQ 软件需求 .......................................................... 248
10.9 用需求信息更新可追溯性矩阵 ..................................................................... 252
10.9.1 通过审查验证的需求 ......................................................................... 253
10.9.2 通过测试验证的需求 ......................................................................... 255
10.10 获取更多信息 .............................................................................................. 255
11 软件设计描述文档 ........................................................................................ 256
11.1 IEEE Std 1016-1998 和 IEEE Std 1016-2009 ................................................ 257
11.2 IEEE 1016-2009 的概念模型 ......................................................................... 257
11.2.1 设计关注点和设计利益相关方 ......................................................... 257
11.2.2 设计观点和设计元素 ......................................................................... 258
11.2.3 设计视图、设计覆盖和设计原理 ..................................................... 270
11.2.4 IEEE Std 1016-2009 的概念模型 ....................................................... 273
11.3 SDD 所需内容 ................................................................................................ 275
11.3.1 SDD 标识 ............................................................................................ 275
11.3.2 设计利益相关方和设计关注点 ......................................................... 276
11.3.3 设计视图、设计观点、设计覆盖和设计原理 .................................. 276
11.4 SDD 的可追溯性和标签 ................................................................................ 276
11.5 建议的 SDD 大纲 ........................................................................................... 277
11.6 SDD 文档示例 ................................................................................................ 278
11.7 用设计信息更新可追溯性矩阵 ..................................................................... 293
11.8 创建软件设计 ................................................................................................. 293
11.9 获取更多信息 ................................................................................................... 294
12 软件测试文档 ............................................................................................... 295
12.1 Std 829 中的软件测试文档 ........................................................................... 295
12.1.1 流程支持 ............................................................................................. 296
12.1.2 完整性级别和风险评估 ..................................................................... 297
12.1.3 软件开发测试级别 ............................................................................. 299
12.2 测试计划 ........................................................................................................ 300
12.2.1 主测试计划 ......................................................................................... 300
12.2.2 级别测试计划 ..................................................................................... 302
12.2.3 级别测试设计文档 ............................................................................. 304
12.3 软件审查列表文档 ......................................................................................... 305
12.3.1 SRL 大纲示例 ..................................................................................... 306
12.3.2 SRL 文档示例 ..................................................................................... 306
12.3.3 将 SRL 项添加到可追溯性矩阵中 .................................................... 310
12.4 软件测试用例文档 ......................................................................................... 310
12.4.1 STC 文档中的介绍 ............................................................................. 313
12.4.2 详细说明 ............................................................................................. 314
12.4.3 其他 ..................................................................................................... 317
12.4.4 软件测试用例文档示例 ..................................................................... 318
12.4.5 用 STC 信息更新 RTM 文档.............................................................. 327
12.5 软件测试过程文档 ......................................................................................... 327
12.5.1 IEEE Std 829-2009 软件测试过程 ..................................................... 329
12.5.2 软件测试过程的大纲扩展 ................................................................. 329
12.5.3 STP 文档中的介绍 ............................................................................. 332
12.5.4 测试过程 ............................................................................................. 334
12.5.5 其他 ..................................................................................................... 337
12.5.6 索引 ..................................................................................................... 337
12.5.7 STP 文档示例 ..................................................................................... 338
12.5.8 用 STP 信息更新 RTM 文档 .............................................................. 344
12.6 级别测试日志 ................................................................................................ 345
12.6.1 级别测试日志文档中的介绍 ............................................................. 346
12.6.2 详细说明 ............................................................................................. 346
12.6.3 术语表 ................................................................................................. 347
12.6.4 关于测试日志的一些注释 ................................................................. 347
12.7 异常报告 ........................................................................................................ 351
12.7.1 异常报告文档中的介绍 ..................................................................... 352
12.7.2 详细说明 ............................................................................................. 353
12.7.3 对异常报告的几点建议 ..................................................................... 354
12.8 测试报告 ........................................................................................................ 355
12.8.1 主测试报告的简要介绍 ..................................................................... 356
12.8.2 级别测试报告 ..................................................................................... 357
12.9 你真的需要这些吗 ......................................................................................... 358
12.10 获取更多信息 .............................................................................................. 359
后记:如何设计卓越的代码................................................................................. 360
· · · · · ·