编程卓越之道(卷3):软件工程化 | PDF下载|ePub下载
类别: 计算机
作者:[美] Gayle Laakmann McDowell
出版社: 人民邮电出版社
原作名: Cracking the coding interview:150 programming questions and solutions,fifth edition
译者:李琳骁/漆犇
出版年: 2013-11
页数: 372
定价: 59.00元
装帧: 平装
ISBN: 9787115332912
出版社: 人民邮电出版社
原作名: Cracking the coding interview:150 programming questions and solutions,fifth edition
译者:李琳骁/漆犇
出版年: 2013-11
页数: 372
定价: 59.00元
装帧: 平装
ISBN: 9787115332912
内容简介 · · · · · ·
《编程卓越之道(卷3):软件工程化》深入介绍了从开发方法、生产力到面向对象的设计需求和系统文档的方方面面。通过本书,你将学习到:为什么遵循软件匠艺模型可以让你做到最好;如何利用可追溯性来加强文档的一致性;如何通过用例分析来创建自己的UML需求;如何利用IEEE文档标准开发出更好的软件。
通过对高质量软件开发中技能、态度和道德方面的深入讲解,本书揭示了如何将工程原理应用于编程的正确方法。在这个过程中,Hyde不仅会教给你规则,还会告诉你什么时候该打破规则。他不仅会启发你认识什么是最佳实践,同时还会让你发现适合自己的最佳实践。
作者简介 · · · · · ·
Randall Hyde是The Art of Assembly Language(《汇编语言的编程艺术》)和Write Great Code(《编程卓越之道》)第1~3卷(均由No Starch Press出版),以及Using 6502 Assembly Language和P-Source(由Datamost出版)的作者。他也是Microsoft Macro Assembler 6.0 Bible(由Waite Group出版)一书的合著者。在过去的40年里,Hyde一直从事嵌入式软件/硬件工程师的工作,为核反应堆、交通控制系统和其他电子设备开发相关指令集。他还在加州理工大学波莫纳分校和加州大学河滨分校教授计算机科学课程。
目录 · · · · · ·
第 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
· · · · · ·
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
· · · · · ·
发表回复
要发表评论,您必须先登录。