1、 29 第 2 章 软件工程概论 . . 软件也许根本不同于历史上已经出现的任何产品。 故而 , 软件实践不能、 也不应完全参照传统实践进行。 Micheal Mahoney Micheal Mahoney (1939 2008) 是 美 国 普 林 斯 顿 (Princeton) 大 学 科 学 史 教 授 , 对 软 件工程学科有独到研究。 他的个人网址是 : http:/www.princeton.edu/hos/Mahoney/ 。 科学 史 研 究 专 家 Micheal Mahoney 认 为 , 软 件 是 一 类 崭 新 的 产 品 , 具 有 不 同 于 已 有 所 有 产
2、品 的 独 特 之 处。 因 此 , 软 件 工 程 是 人 类 的 又 一 次 创 新 , 软 件 开 发 不 能、 也 不 应 完 全 参 照 传 统 产 品 开 发 模 式 进 行。 软 件 工 程 研 究 者 和 实 践 者 只 有 通 过 不 断 创 新 和 实 践 , 才 能 建 立 起 属 于 软 件 工 程 学 科 的 真 正 知 识 体 系。 目 前, 这 一 体 系 已 经 基 本 建 成 , 以 2004 年 由 IEEE 发布的 “ 软 件 工 程 知 识 体 指 南 ” (SWEBOK) 为标志性里程碑。 本 章 接 续 上 一 章 关 于 软 件 的 介 绍 , 阐
3、 述 软 件 工 程 及 其 学 科 特 征 , 帮 助 读 者 形 成 初 步 的 软 件 工 程 概 念。 本 章 的 内 容 分 为 三 大 块 : 首 先 , 聚 焦 软 件 危 机 , 介 绍 其 含 义 , 并 列 举 若 干 实 证 数 据 , 同 时 分 析 它 存 在 原 因。 其 次 , 讲 述 软 件 工 程 的 定 义 、 核 心 问 题、 “ 魔 鬼 四 角 ” 、 四 大 挑 战 及 四 方 满 意 度 “ 天 平 ” 。 最 后 , 关 注 软 件 工 程 学 科 , 审 定 它 的 学 科 性 质 , 简 介 其 发 展 史 , 描 述它的学科知识体系和核心知识
4、形态。 . . 带着问题去阅读 . (1) 软 件 危 机 真 的 存 在 吗 ? 如 果 存 在 , 又 是 为 什 么 呢 ? 对 此 , 软 件 工 程 师 为 什 么 总 是熟视无睹呢 ? (2) 什么是软件工程 ? 它要解决的核心问题是什么 ? 目前有足够好的解决策略吗 ? (3) 软 件 工 程 实 践 面 临 哪 些 巨 大 挑 战 ? 为 什 么 会 存 在 这 些 挑 战 ? 就 目 前 业 界 实 践 而言 , 这些挑战是否已经得到有效处理 ? (4) 软件工程真是一门工程学科吗 ? 它又有什么区别于一般工程学科的特征 ? (5) 软 件 工 程 学 科 的 核 心 知 识
5、 形 态 有 哪 些 ? 如 何 裁 定 某 项 知 识 是 否 属 于 核 心 知 识 ? 软件工程师为什么需要重点学习和熟练掌握软件工程核心知识 ? (6) 如何学习软件工程核心知识 ? 30 第 2 章 软件工程概论 2.1 引言 在 上 世 纪 四 五 十 年 代 , 程 序 / 软 件 的 规 模 都 很 小 , 主 要 用 于 解 决 一 些 科 学 计 算 问 题。 当 时 的 程 序 员 俗 称 “ 黑 客 ” (Hacker), 其 群 体 规 模 很 小 , 热 衷 于 编 程 且 具 有 卓 越 的 编 程 技 能。 当 时 的 外 部 环 境 对 编 程 . . 非 .
6、 . . 常 . . 宽 . . 容 : 能 够 容 忍 持 续 很 长 时 间 的 编 程 工 作 , 且 一 般 不 计 较 编 程 成 本 ( 主 要 是 程 序 员 薪 资 ) 。 进 入 60 年 代 , “ 程 序 ” 渐 渐 改 称 为 “ 软 件 ”, 所 要 解 决 的 科 学 计 算 和 商 业 问 题 日 趋 复 杂 , 规 模 因 而 迅 速 增 长。 此 时 , 社 会 各 行 各 业 对 软 件 的 需 求 迅 猛 增 长 , 都 要求快 速 开 发出 高 可 靠的 软 件 产品。 但是 , 当时 的 软 件人 才 极其 紧 缺 , 大批 涌 入 软件 业 的 就
7、业者缺乏扎实的编程功底和工程技能 , 无法高效地完成软件开发工作。 计算 机 学 界 察 觉 到 这 种 现 象 , 开 始 探 讨 “ . . 如 . . 何 . . . 提 . . 高 . . . 软 . . 件 . . 开 . . 发 . . . 效 . . 率 ” 这 一 关 键 问 题。 这 其 中 的 一 个 标 志 性 事 件 就 是 1968 年 在 德 国 小 镇 Garmisch 举 行 的 北 大 西 洋 公 约 组 织 (NATO, 简 称 北 约 ) 的 科 学 专 委 会 议。 在 该 会 议 上 , “ 软 件 危 机 ” 和 “ 软 件 工 程 ” 作 为 全
8、新 概 念 被 首 次 正 式 提 出 并 受 到 广 泛 讨 论 ( 两 者 的 定 义 参 见 第 30 和 34 页 ) 。 这 个 会 议 也 因 此 正 式 开 启 了 之 后 几 十 年 的 学 科 发 展 历 程。 接 下 来 的 两 小 节 就 围 绕 这 两 个 概 念展开 , 之后再讨论软件工程的学科特征。 2.2 软件危机 2.2.1 什么是软件危机 ? 在 1968 年 的 北 约 科 学 专 委 会 议 上 , 学 界 先 驱 Friedrich Bauer ( 鲍 尔 ) 首 次 提 出 了 软 件 危 机 (Software Crisis) 概 念 , 以 描 述
9、 当 时 . . . 低 . . 下 . . 的 . . 软 . . 件 . . 生 . . . 产 . . 效 . . 率 . . 难 . . 以 . . . 满 . . 足 . . 日 . . 益 . . 快 . . . 速 . . 增 . . 长 . . 的 . . 计 . . 算 . . . 需 . . 求 . . 的 . . 现 . . 象。 从 那 以 后 , “ 软 件 危 机 ” 就 一 直 被 频 繁 使 用 , 其 含 义 也 不 断 被 扩 充 , 最 终 成 为了各行业人员批评和谴责软件工程行业的所有理由的总代名词。 . . 定义 2.1 ( 软件危机) 软 件 危 机
10、 原 指 低 下 的 软 件 生 产 率 难 以 满 足 快 速 增 长 的 现 实 需 要 的 现 象 , 后 泛 指 以 下 “ 令 人 不 满 意 ” 的 常 见 现 象 : 软 件 生 产 率 低、 成本高、 质量低、 风险高和失败率高等。 从 上 世 纪 60 年 代 至 今 , 软 件 危 机 一 直 普 遍 存 在 于 软 件 业 , 至 今 也 没 有 明 显 消 减 迹 象 , 甚至在某些方面还呈现出愈演愈烈之势。 如下列举的实证数据就充分说明了这一现象。 注 意 , 并 不 是 当 时 的 程 序 员 薪 资 低 到 可 以 “ 不 计 较 ” 的 程 度 , 而 是 因
11、为 当 时 的 硬 件 成 本 过 于 高 昂。 相 比 于 几 十 倍 或 上 百 倍 于 自身的硬件成本 , 编程成本就几乎可以 “ 不计较 ” 。 Friedrich Bauer ( 鲍尔 ) 是一位广受尊敬的计算机科学研究前辈。 他曾获 1988 年 IEEE 计算机先驱奖。2.2. 软件危机 31 2.2.2 危机存在的实证 美 国 著 名 的 IT 调 查 机 构 Standish 发 布 了 一 系 列 的 针 对 全 球 ( 主 要 是 北 美 ) 软 件 项 目 的 Chaos 调 查 报 告 , 其 中 的 一 些 重 要 数 据 如 表 2.1 所 示。 典 型 的 :
12、在 1995 年 , 31% 的 软 件 项 目 中 途 夭 折 ( 即 失 败 ); 在 所 有 项 目 中 , 平 均 成 本 和 时 间 ( 工 期 ) 分 别 超 支 180% 和 164% 。 至 2008 年 , 依 然 有 24% 的 项 目 失 败 , 另 外 项 目 的 平 均 成 本 和 时 间 也 都 显 著 超 支 ( 分 别 为 54% 和 79%) 。 这 些 数 据 表 明 , 在 过 去 的 近 15 年 (1995 2008) 中 , 虽 然 软 件 危 机 ( 如 项 目 的 高 失 败 率 ) 总 体 有 所 缓 减 , 但 负 面 影 响 依 然 很 大
13、。 特 别 是 , 从 2006 年 以 来 , 软 件 项 目 失 败率以及成本和时间超支比例都呈上升趋势。 表 2.1 Standish 机构 Chaos 报告的相关数据 (19952008) 1995 1998 2000 2002 2004 2006 2008 项目失败率 31% 28% 23% 15% 18% 19% 24% 成本超支比例 180% 69% 45% 43% 56% 47% 54% 时间超支比例 164% 79% 63% 82% 84% 72% 79% 著 名 咨 询 公 司 IAG 的 报 告 印 证 了 上 述 Chaos 调 查 结 论 : 近 35% 的 项 目
14、具 备 如 下 三 特 征 中 的 某 两 个 : (1) 成 本 超 支 160%; (2) 时 间 超 支 180%; (3) 功 能 减 少 逾 30% 。 当 然 , 这 也 暗 示 在 软 件 开 发 项 目 中 成 本、 时 间 和 功 能 三 者 之 间 存 在 一 定 程 度 的 “ 消 长 ” 关 系。 另 外 , 著 名 软 件 度 量 专 家 Capers Jones 的 研 究 Jon07a , Jon08 也 发 现 : 开 发 拥 有 大 于 10,000 个 . . 功 . . . 能 . . 点 的 大 型 软 件 的 项 目 失 败 率 超 过 45%; 在
15、已 交 付 的 此 类 软 件 中 , 逾 50% 的 项 目 进 展 超 过 了 之 前 预 定 期 限 达 一 年 或 更 长 时 间 之 久。 依 据 IBM 的 调 查 , 约 33% 的 项 目 超 时 , 20% 的 项 目 超 支 , 20% 的 项 目 所 交 付 的 产 品 没 有 实 现 预 期 的 所 有 功 能。 还 有 很 多 业 界 著 名 实 例 , 都 能 充 分 说 明 软 件 危 机 的 广 泛 存 在。 典 型 的 , 学 者 Robert Glass 的 著 作 软 件 开 发 的 滑 铁 卢 就 描 述 了 二 十 世 纪 很 多 著 名 的 软 件
16、产 品 和 项 目 的 失 败或失控案例 , 其原因都能最终归于 “ 软件危机 ” 。 . . 我 不 喜 欢 “ 危 机 ” 一 词 开 发 大 型 软 件 系 统 自 然 需 要 克 服 极 大 困 难 , 关 键 是 我 们 本 就 不 应 该 期望这能简易完成。 Ken Kolence 但是 , 有 一 个 现 象 也 非 常 明 显 : 从 1968 年 至 今 , 软 件 的 复 杂 度 虽 然 一 直 保 持 快 速 上 升 趋 势 , 但 越 来 越 多 的 复 杂 软 件 也 得 以 成 功 开 发 和 应 用。 这 似 乎 又 表 明 软 件 开 发 并 没 有 遭 遇 所
17、 谓 的 “ 危 机 ” 。 与 此 同 时 , 软 件 业 茁 壮 成 长 , 软 件 工 程 师 群 体 也 迅 速 壮 大。 即 使 真 遭 遇 了 危 机 , 那 这 危 机 的 存 在 时 间 也 过 于 漫 长 , 以 至 于 它 不 再 适 合 于 称 为 “ 危 机 ”, 因 为 我 们 都 已 经 习 以 为 常 了。 从 字 面 意 思 来 看 , “ 危 机 ” 一 词 暗 示 一 种 短 期 的、 急 性 的 严 重 问 题 ; 而 过 去 数 十 年 的 实 践 证 明 , 上 述 问 题 ( 如 软 件 生 产 率 低 和 成 本 高 等 ) 则 是 长 期 的 和
18、 慢 性 的 , 且 这 些 问 题 主 要 源 于 参考 IAG 的商业分析基准研究报告 : http:/www.iag.biz/resources/library/business- analysis- benchmark.html 。 参 考 IBM 商 业 价 值 研 究 院 于 2006 年 发 布 的 白 皮 书 IT 投 资 组 合 管 理 实 战 : http:/www- multimedia/finance_ciocn.pdf 。 原名为 “ Software Runaways ”, 1997 年出版 ; 中文本由陈河南译 , 2002 年出版 (ISBN: 9787505
19、373714) 。 32 第 2 章 软件工程概论 软 件 自 身 固 有 的 复 杂 本 质。 就 连 参 加 1968 年 北 约 会 议 的 学 界 先 驱 Ken Kolenc e (1932 2011) 也公开质疑这个词使用不当。 他认为 , 软件开发本身就是一件难事 ; 附以 “ 危机 ” 只会 令 那 些 不 谙 软 件 开 发 的 人 幻 想 找 到 解 决 危 机 之 道 , 从 而 实 现 “ 简 易 ” 软 件 开 发。 另 外 , 历 史 学家 Thomas Haigh 对 “ 软件危机 ” 一词也持批判态度 。 在本书中 , 笔者依然保留使用 “ 软 件 危 机 ”
20、一 词 , 以 描 述 一 种 常 见 的 软 件 工 程 现 象 ( 如 上 定 义 ) 。 但 是 , 笔 者 建 议 读 者 跟 用 学 界 近年逐渐推广的代用词 “ 软件困扰 ” (Affliction) 或 “ 软件萧条 ” (Depression) 。 笔 者 认 为 , 尽 管 当 前 软 件 业 取 得 了 极 大 功 绩 , 而 且 当 前 整 个 行 业 的 发 展 也 充 满 生 机 和 活 力 , 但 这 些 并 不 能 掩 盖 “ 项 目 失 败 率 超 30%” 的 “ 丑 陋 ” 事 实 , 以 及 更 高 比 例 的 项 目 . . 失 . . 控 ( 时 间
21、和 成 本 的 超 支 ) 或 . . 失 . . . 效 ( 所 开 发 的 产 品 明 显 不 能 满 足 现 实 需 要 ) 现 象。 因 此 , 笔 者 同 多数学者一样 , 认定 . . 软 . . 件 . . 危 . . 机 . . . 现 . . 象 . . 依 . . 然 . . 存 . . . . . . 在 , 且 . . 还 . . 将 . . . 长 . . 期 . . 存 . . 在 . . 下 . . . . 去。 2.2.3 危机存在的原因 软 件 危 机 主 要 源 于 : 软 : 件 : 的 : 复 : 杂 : 本 : 质 ( 页 14 ) 。 工 程 师 的
22、 认 知 能 力 十 分 有 限 , 无 法 有 效 处 理 日 益 复 杂 化 的 软 件。 具 体 的 , 人 的 认 知 局 限 性 在 软 件 开 发 项 目 中 直 接 表 现 为 : 工 程 师 不 能 准 确 获 取 所 有 需 求 , 频 繁 制 造 错 误 , 导 致 项 目 返 工 , 不 能 发 挥 工 程 技 术 的 预 期 效 应 , 团 队 管 理 困 难 或 效 果 不 佳 等。 简 言 之 , . . 只 . . . 要 . . 工 . . 程 . . 师 . . 的 . . . 认 . . 知 . . 能 . . 力 . . 和 . . . 软 . . 件 .
23、 . 的 . . 复 . . 杂 . . 性 . . . 之 . . 间 . . 缺 . . 乏 . . 平 . . . . . . 衡 , 软 . . 件 . . 危 . . . 机 . . 就 . . 会 . . 一 . . 直 . . 存 . . . . 在。 但 显 然 , 这 种 平 衡 永 远 不 会 出 现 , 两 者 之 间 的 差 距 只 会 越 来 越 大。 即 使 当 前 很 多 “ 看 似 先 进 ” 的 技 术 和 工 具 能 在 一 定 程 度 上 帮 助 工 程 师 弥 补 认 知 能 力 的 不 足 , 但 远 不 能 建 立 上 述 缺 失 的 平 衡。 主
24、要 原 因 是 这 些 技 术 和 工 具 仅 能 降 低 软 件 的 伴 随 难 度 而 不 能 影响它的本质难度 ( 页 15 ) 。 图 2.1 软件与硬件的开发成本演化图 从软 件 开 发 的 角 度 来 看 , 软 件 危 机 非 但 没 有 减 弱 , 反 而 愈 演 愈 烈。 其 原 因 就 是 软 件 的 开 发 成 本 相 比 于 硬 件 成 本 的 持 续 攀 升。 如 图 2.1 所 示 , 在 过 去 的 数 十 年 中 , 软 件 的 开 发 成 本 一 直 都 在 快 速 上 升 , 而 硬 件 的 成 本 则 持 续 下 降。 这 使 得 , 对 于 一 个 包
25、含 软 件 和 硬 件 的 系 统 而 言 , 大 比 例 的 开 发 成 本 将 从 硬 件 转 移 至 软 件。 一 方 面 , 硬 件 的 生 产 成 本 随 生 产 技 术 的 改 进 而 逐 年 降 低 , 单 位 硬 件 的 平 均 成 本 每 18 个 月 就 下 降 50% 。 这 就 是 所 谓 的 . . . . . . . . . . Moore ( 摩 . . . . . 尔 ) 定 . . 律 。 而 另 一 方 面 , 软 件 开 发 成 本 趋 势 似 乎 与 摩 尔 定 律 截 然 相 反。 其 主 要 原 因 是 软 件 所 要 解 决 的 现 实 问 题 更
26、 加 复 杂 化 , 导 致 软 件 产 品 规 模 的 参考 Thomas Haigh 的文章 : http:/ 。 据 笔 者 所 知 , “Software Affliction” 一 词 是 由 学 者 Daniel Tiechrow 首 次 提 出 , 而 “Software Depression” 则 是 由 学 者 Stephen Schach 首次使用。 摩 尔 定 律 是 硬 件 领 域 久 负 盛 名 的 一 个 实 证 定 律 , 由 因 特 尔 (Intel) 公 司 创 始 人 Gordon Moore (摩 尔 ) 于 1965 年 提 出。 它 的 原 意 是 指
27、 集 成 电 路 板 上 的 电 子 晶 体 数 目 每 24 个 月 翻 一 番 , 且 性 能 也 随 之 翻 一 番。 当 前 流 行 的 说 法 是 同 样 造 价 的 计 算 机 的 性 能 每 18 个 月 翻 一 番 , 或 同 性 能 的 计 算 机 硬 件 的 造 价 每 18 个 月 降 一 半。 关 于 它 的 更 多 信 息 可 参 考 : http:/en.wikipedia.org/ wiki/Moore s_law 。2.3. 软件工程概述 33 快 速 增 加 和 生 产 效 率 的 相 对 下 降 。 次 要 原 因 包 括 人 力 成 本、 开 发 工 具、
28、 软 硬 件 办 公 成 本 的 持 续 上 升 , 最典 型 的 就 是 软 件 工 程 师 的 平 均 薪 资 水 平 逐 年 稳 步 上 扬 ( 其 趋 势 似 乎 不 受 当 前 经 济萧条大局所左右 ) 。 . . 软 件 危 机 真 是 一 个 无 药 可 治 的 顽 疾。 声 称 能 医 治 它 的 人 都 是 庸 医、 骗 子 和吹牛皮的人。 Edsger Dijkstra 大师 Edsger Dijkstra ( 狄 杰 斯 特 拉 ) 在 回 答 学 生 提 问 时 说 到 , “ 只 要 软 件 依 然 还 是 由 人 来 主 导 开 发 , 软 件 危 机 就 还 将
29、如 同 一 个 无 药 可 治 的 顽 疾 般 长 期 存 在。 ” 他 进 一 步 指 出 , “ 医 治 这 样 的 顽 疾 会 招 来 很 多 庸 医、 骗 子 和 吹 牛 皮 的 人 , 很 多 所 谓 的 学 界 权 威 和 业 界 领 袖 就 是 这 样 一 些 人。 ” 且 不 论 学 界 权 威 和 业 界 领 袖 的 资 质 , 当 前 很 多 软 件 产 品 ( 典 型 的 如 编 程 和 测 试 工 具 ) 的 宣 传 就 常 吹 嘘 它 的 预 防、 避 免 或 解 决 软 件 危 机 的 能 力。 事 实 证 明 , 所有这些产品和说辞统统都是 Dijkstra 所说
30、的庸医和骗子行径。 2.3 软件工程概述 2.3.1 什么是工程 ? 人类 有 两 条 探究 未 知 世界 的 途 径 : . . 科 . . . 学 . . 途 . . 径 . . 和 . . 工 . . 程 . . . 途 . . 径。 科 学 探 究 事 物 的 本 质 , 主要 科 学 活 动 有 . . 观 . . . . . 察、 度 . . . 量 . . 和 . . 实 . . 验 ; 而 工 程 致 力 于 创 造 新 事 物 , 主 要 工 程 活 动 是 . . 构 . . 造 . . 和 . . . 评 . . 估。 笔 者 认 为 , 工 程 是 已 有 知 识 的
31、创 造 性 应 用 , 旨 在 设 计 和 开 发 出 符 合 现 实 需 求 的 产 品。 依 据 待 设 计 和 开 发 产 品 的 多 样 性 , 形 成 了 多 个 工 程 领 域 , 例 如 机 械 工 程、 化 学 工 程、 土 木 工 程、 电 子 工 程、 材料工程、 硬件工程和软件工程等。 图 2.2 科学与工程的关系 如图 2.2 所 示 ( 参 考 Bud04 , 图 1.1 ), . . 科 . . 学 . . . 和 . . 工 . . 程 . . 是 . . . 两 . . 类 . . 互 . . 补 . . 的 . . . 活 . . 动。 科 学 为 工 程 提
32、 供 关 于 事 物 的 知 识 , 而 工 程 则 为 科 学 提 供 更 好 的 工 具。 相 比 于 关 注 “ 是 什 么 ” (What) 和 “ 为 什 么 ” (Why) 的 自 然 科 学 , 工 程 学 关 注 “ 如 何 做 ” (How), 即 科 学 原 理 的 现 实 应 用。 笔 者 在 此 需 要 特 别 指 出 的 是 , 工 程 师 作 为 工 程 的 执 行 者 , 不 仅 需 要 选 择 合 适 工 程 技 术 和 过 程 以 落 实 “ 如 何 做 ”, 而 且 需 要 探 究 工 程 技 术 和 过 程 的 . . 成 . . 本。 毕 竟 , 工 程
33、 活 动 是 经 济 活 动 , 需 要 耗 费 财 力、 物 力 和 人力。 有鉴于工程的这种 . . 经 . . 济 . . 特 . . 性 , 工程师就必须为工程投资人 ( 即项目客户 ) 负责 , 力求以最 低 成 本 完 成 工 程 实 践 并 实 现 既 定 投 资 目 标。 如 图 2.3 所 示 , 工 程 强 调 两 个 方 面。 一、 过 程 规 划。 基 于 既 定 目 标、 需 求 和 约 束 , 规 划 工 程 过 程 , 以 期 在 满 足 既 定 约 束 的 前 提 下 , 满 足 既 定 需求并实现既定目标。 二 、 过 程 控 制。 通过对设计和开发过程的控制
34、 , 以确保工程项目产出 注意 , 相比于上世纪 50 年代 , 当前工程师的工作效率有明显提高 ( 受先进技术和更多知识的推动 ) 。 但与此同时 , 软件产品的 规模和复杂度以更快速度持续攀升, 使得工程师必须频频处理极其复杂的工作任务 , 工作效率也就出现了持续相对降低的现象。 参考 : http:/www.cs.utexas.edu/EWD/transcriptions/EWD13xx/EWD1305.html 。 34 第 2 章 软件工程概论 真 正 能 够 满 足 既 定 现 实 需 求 的 产 品。 过 程 控 制 是 典 型 的 . . 目 . . 标 . . . 制 . .
35、 导 实 践。 一 方 面 , 控 制 旨 在 确保过程按计划完成。 另一方面 , 通过过程追踪和分析 , 度量并改进现用控制策略和方法。 图 2.3 工程的概念框架 2.3.2 什么是软件工程 ? “ 软 件 工 程 ” (Software Engineering, 或 SE ) 一 词 最 先 由 北 约 的 某 研 究 小 组 于 1967 年 提 出 , 并 在 次 年 (1968) 于 德 国 举 办 的 北 约 科 学 专 委 会 议 上 正 式 使 用。 其 最 初 含 义 是 以 类 似 其 他 工 程 学 的 方 式 开 发 软 件。 之 后 , 国 际 标 准 化 组 织
36、(ISO) 给 出 了 如 下 正 式 定 义 ISO10 , 页 331 : 软 件 工 程 是 . . 科 . . . 学 . . 和 . . 工 . . . 程 . . 知 . . . . . 识、 方 . . . 法 . . 和 . . 经 . . 验 . . . 在 . . 软 . . 件 . . . 生 . . 命 . . 期 . . 中 . . . 的 . . 系 . . 统 . . 应 . . . 用 , 即 软 件 的 工 程 化。 它 创 造 和 使 用 有 效 方 法 以 支 持 低 成 本 和 短 周 期 的 高 质 量 软 件 开 发 和 维 护 Bj06 , 页 6
37、 , 以期有效应对普遍存在的软件危机现象 ( 如上节所述 ) 。 . . 定义 2.2 ( 软件工程) 软 件 工 程 ( SE ) 指 科 学 知 识 和 工 程 方 法 在 软 件 开 发、 维护和演化过程中的系统应用 , 即软件的工程化。 自 1968 年以来 , 很多学者从不同的角度深入研究了软件工程的本质属性和特征。 学界 先 驱 Barry Boehm 早 在 1976 年 就 将 软 件 工 程 定 义 为 相 关 科 学 知 识 在 计 算 机 程 序 和 相 关 文 档 构 造 过 程 中 的 实 践 应 用 Boe76 。 之 后 著 名 学 者 David Parnas
38、补 充 道 , 软 件 工 程 是 一 项 多 人 共 同 编 写 多 版 本 程 序 的 活 动。 这 就 进 一 步 肯 定 了 “ 团 队 ” 的 地 位。 继 而 学 者 Richard Fairley 肯 定 了 “ 管 理 ” 的 地 位 , 将 软 件 工 程 视 为 一 门 技 术 和 管 理 交 叉 学 科 , 以 “ 依 据 成 本 预 算及时开发和维护软件产品 ” 为目标 Fai85 , 页 2 。 在 1987 年 出 版 的 著 作 软 件 工 程 引 论 中 , 国 内 学 者 马 锦 林 对 软 件 工 程 作 了 系 统 的 总结。 他认为 , 软件工程有 “
39、: 三 : 多 ” 特征 : 多 学 科、 多 目 标 和 多 阶 段。 首先 , 软件工程交叉多个 学科 , 如管理学、 系统学、 数学和心理学等 ; 其次 , 软件项目 ( 无论大小 ) 通常都具有多个目标 , 覆 盖 功 能、 成 本 和 进 度 等 方 面 ; 最 后 , 软 件 过 程 一 般 分 阶 段 实 施 , 例 如 传 统 软 件 开 发 过 程 就 常 分 为 需 求 定 义、 设 计、 构 造 和 测 试 四 大 阶 段。 这 “ 三 多 ” 论 准 确 而 完 整 地 概 括 了 软 件 工 程 的 基 本 特 征。 中 国 计 算 机 科 学 和 软 件 研 究 先
40、 驱 唐 稚 松 院 士 (1925 2008) 更 是 从 哲 学 的 角 度 , 探 析 了 软 件 工 程 背 后 的 一 般 性 哲 学 原 理 和 方 法 , 包 括 : (1) . . 合 . . 久 . . . 必 . . . . . 分、 分 . . 久 . . 必 . . . 合 ; (2) . . 中 . . 庸 . . 之2.3. 软件工程概述 35 . . 道 ; (3) . . 动 . . 与 . . 静 ; (4) . . 理 . . 性 . . . 主 . . 义 . . 与 . . 实 . . 用 . . . 主 . . 义。 参阅唐院士的著作 时序逻辑程序设计
41、与软件工 程上册第一章。 . . Bernd Bruegge 的软件工程观 . 著 名 学 者 Bernd Bruegge 认 为 , 软 件 工 程 是 一 类 特 殊 的 实 践 , 具 有 如 下 四 大 特 征 BD00 , 页 5 : . . 无 . . 处 . . . 不 . . 在 . . 的 . . 建 . . 模 : 软 件 问 题 过 于 复 杂 , 解 决 策 略 就 是 抽 象 化。 建 模 的 本 质 就 是 抽 象 化 , 突 出 当 前 需 要 的 信 息 而 隐 藏 其 他 信 息。 绝 大 多 数 软 件 实 践 都 是 建 模 活 动或与之相关的活动。 .
42、. 本 . . 质 . . . 上 . . 是 . . 一 . . . . . 项 “ 问 . . . 题 . . 解 . . . . . 决 ” 活 . . . 动 : 开 发 软 件 旨 在 解 决 某 个 现 实 问 题。 待 解 问 题 既 复杂又易变。 对此 , 软件工程既要分解问题复杂度 , 又要敏捷响应问题变更。 . . 知 . . 识 . . . 获 . . 取 . . 和 . . 创 . . . 造 : 所 谓 软 件 开 发 , 首 先 需 要 获 取 关 于 待 解 问 题 的 知 识 , 然 后 将 之 转 化 为 新 产 品 , 从 而 创 造 出 新 知 识。 知
43、识 获 取 和 创 造 过 程 都 充 满 风 险 , 往 往 难以一步到位 , 故而软件开发通常采用迭代方式进行。 . . 理 . . 性 . . . 驱 . . 动 : 任 何 软 件 实 践 都 讲 究 “ 合 理 性 ” 。 “ 合 理 性 ” 的 典 型 影 响 因 素 有 : 技 术 成熟度、 项目成本和时间约束、 工程师及团队特征、 开发软硬件环境等。 2.3.3 核心问题 学 者 们 普 遍 认 为 , 软 件 工 程 的 核 心 问 题 是 : . . . 工 . . 程 . . 师 . . 如 . . 何 . . . 以 . . 快 . . . . . 速、 便 . . .
44、 宜 . . 和 . . 高 . . 质 . . 量 . . . 的 . . 方 . . 式 . . 开 . . 发 . . 出 . . . 正 . . 确 . . 的 . . 软 . . . . 件 ? 从 这 个 问 题 出 发 , 可 称 软 件 工 程 为 一 门 研 究 如 何 帮 助 工 程 师 快 速、 便 宜 而 高 质 量 地 开 发 出 正 确 软 件 产 品 的 学 问。 进 一 步 , 可 以 根 据 这 个 问 题 归 纳 出 软 件 工 程 的 五 个必要组成元素 , 如图 2.4 所示 : 图 2.4 软件工程的五大要素 . . . “ 工 . . 程 . . .
45、 师 ”: 软 件 实 践 始 终 都 必 须 由 工 程师来主导和参与。 . . . “ 正 . . . 确 ”: 一 直 以 来 , 软 件 实 践 的 主 旨 都 是让软件能正确地满足现实需要。 . . . “ 快 . . . 速 ”: 现 实 需 要 的 满 足 是 否 及 时 也 是软件实践所追求的目标之一。 . . . “ 便 . . . 宜 ”: 满 足 现 实 需 要 的 产 品 成 本 是 可承受的。 . . . “ 高 . . 质 . . . 量 ”: 用 户 不 会 喜 欢 低 质 量 软 件 , 且用户的质量需求一直呈上升趋势。 针 对 上 述 核 心 问 题 , 学
46、界 一 致 认 为 , 软 件 工 程 的 主 题 就 是 . . 围 . . 绕 . . 商 . . 品 . . . . . . 性、 与 . . 复 . . 杂 . . . 性 . . 同 . . . . . 行、 应 . . . 对 . . 频 . . 变 . . 性 vV00 , 页 7 ( 回 顾 软 件 的 三 本 性 , 这 里 仅 关 注 “ 软 件 开 发 ”, 但 并 未 否 定 软 件 维 护 和 演 化 的 意 义 或 地 位。 因 为 诸 多 维 护 和 演 化 知 识 和 方 法 都 源 自 软 件 开 发 领 域 , 是相同知识在不同子领域间的水平迁移。 36 第
47、 2 章 软件工程概论 页 13 24 ) 。 典 型 的 , 业 界 知 名 专 家 Tom Gilb 认 为 , 软 件 工 程 学 科 研 究、 教 育 和 实 践 所 一 致 追 求 的 是 : . . 软 . . 件 . . 工 . . 程 . . . 师 . . 基 . . 于 . . 既 . . 定 . . 资 . . . . . . 源、 在 . . 符 . . 合 . . . 既 . . 定 . . 约 . . 束 . . 的 . . . 前 . . 提 . . . . . . 下 , 创 . . 造 . . 出 . . 最 . . 高 . . . 价 . . . 值。 软
48、件 的 复 杂 性 和 频 变 性 是 影 响 开 发 成 本 和 时 长 的 主 要 因 素 , 而 其 商 品 性 则 会 影 响 软 件 开 发 过 程 中 的 技 术 和 非 技 术 决 策。 这 三 性 的 处 理 是 回 答 上 述 核 心 问 题 的 关 键 之 所 在 , 也 决 定 了 软 件 产 品及其开发项目的成败。 2.3.4 “ 魔鬼四角” 在 上 述 五 大 要 素 , 除 工 程 师 不 与 其 他 四 要 素 存 在 冲 突 之 外 , 其 余 四 者 彼 此 都 存 在 冲 突 或 制 约 关 系。 在 此 , 笔 者 将 这 四 者 归 纳 为 功 能 (F
49、unctionality) 、 质 量 (Quality) 、 成 本 (Cost) 和 时 间 (Time) 。 这 四 者 可 依 次 简 单 解 释 为 : . . 软 . . 件 . . 的 . . . 预 . . 期 . . 功 . . . . . . 能 ( 范 . . . . . 围 ) 和 . . 质 . . . . . . 量 , 以 . . 及 . . 开 . . . . . . 发 ( 维 . . 护 . . 和 . . 演 . . . . . 化 ) 所 . . . 需 . . 的 . . 成 . . 本 . . 和 . . 时 . . . . 间。 图 2.5 “ 魔鬼四角 ” 鉴于其间的制约关系 , 笔者称这四要