软 件 开 发 方 法 述 评 



          60 年 代 中 期 开 始 爆 发 了 众 所 周 知 的 软 件危 机。 为 了 克 

服 这 一 危 机, 在 1968、 1969 年 连 续 召 开 的 两 次 著 名 的NATO 会 议 上

 提 出 了 软 件 工 程 这 一 术 语, 并 在 以 后 不 断 发 展、 完 善。与 此 同 

 时, 软 件 研 究 人 员 也 在 不 断 探 索 新 的 软 件 开 发 方 法。 至 今 已

 形 成 八 类 软 件 开 发 方 法。 



一、Parnas 方 法 



              最 早 的 软 件 开 发 方 法 是 由 D.Parnas 在 1972 年 提 出 的 。 

			   由 于 当 时 软 件 在 可 维 护 性 和 可 靠 性 方 面 存 在 着 严 

	重 问 题 , 因 此 Parnas 提 出 的 方 法 是 针 对 这 两 个 问 题 的 。 首 先

	 , Parnas

     提 出 了 信 息 隐 蔽 原 则: 在 概 要 设 计 时 列 出 将 来 可 能 发 生 变

     化 的 因 素 , 并 在 模 块 划 分 时 将 这 些 因 素 放 到 个 别 模 块 的 内

     部 。 这 样 , 在 将 来 由 于 这 些 因 素 变 化 而 需 修 改 软 件 时 , 只

     需 修 改 这 些 个 别 的 模 块 , 其 它 模 块 不 受 影 响 。 信 息 隐 蔽 技

     术 不 仅 提 高 了 软 件 的 可 维 护 性 , 而 且 也 避 免 了 错 误 的 蔓 延

     , 改 善 了 软 件 的 可 靠 性 。 现 在 信 息 隐 蔽 原 则 已 成 为 软 件 工

     程 学 中 的 一 条 重 要 原 则 。 



                 Parnas 提 出 的 第 二 条 原 则 是 在 软 件 设 计 时 应 对 可 能 

	发生 的 种 种 意 外 故 障 采 取 措 施 。 软 件 是 很 脆 弱 的 , 很 可 能 因

     为 一 个 微 小 的 错 误 而 引 发 严 重 的 事 故 , 所 以 必 须 加 强 防 范

     。 如 在 分 配 使 用 设 备 前 , 应 该 取 设 备 状 态 字 , 检 查 设 备 是

     否 正 常 。 此 外 , 模 块 之 间 也 要 加 强 检 查 , 防 止 错 误 蔓 延 。



                 Parnas 对 软 件 开 发 提 出 了 深 刻 的 见 解 。 遗 憾 的 是 , 他

     没 有 给 出 明 确 的 工 作 流 程 。 所 以 这 一 方 法 不 能 独 立 使 用 ,

     只 能 作 为 其 它 方 法 的 补 充 。 



二 、 SASA方 法 



                 1978 年 , E.Yourdon 和 L.L.Constantine 提 出 了 结 构 化 方法 ,

	 即 SASD 方 法 , 也 可 称 为 面 向 功 能 的 软 件 开 发 方 法 或

     面 向 数 据 流 的 软 件 开 发 方 法 。 1979 年Tom DeMarco 对 此 方 法

     作 了 进 一 步 的 完 善 。 



                 Yourdon方 法 是 80 年 代 使 用 最 广 泛 的 软 件 开 发 方 法 。它 

		首 先 用 结 构 化 分 析(SA ) 对 软 件 进 行 需 求 分 析 , 然 后 用

     结 构 化 设 计( SD) 方 法 进 行 总 体 设 计 , 最 后 是 结 构 化 编

     程( SP) 。 这 一 方 法 不 仅 开 发 步 骤 明 确 , SA 、 SD 、 SP 相

     辅 相 成 , 一 气 呵 成 , 而 且 给 出 了 两 类 典 型 的 软 件 结 构( 变

     换 型 和 事 务 型 ) , 便 于 参 照 , 使 软 件 开 发 的 成 功 率 大 大 提

     高 , 从 而 深 受 软 件 开 发 人 员 的 青 睐 。 



三 、 面 向 数 据 结 构 的 软 件 开 发 方 法 



          Jackson 方 法



        1975 年 , M.A.Jackson 提 出 了 一 类 至 今 仍 广 泛 使 用 的软 件 		

	 开 发 方 法 。 这 一 方 法 从 目 标 系 统 的 输 入 、 输 出 数 据 结

     构 入 手 , 导 出 程 序 框 架 结 构 , 再 补 充 其 它 细 节 , 就 可 得 到

     完 整 的 程 序 结 构 图 。 这 一 方 法 对 输 入 、 输 出 数 据 结 构 明 确

     的 中 小 型 系 统 特 别 有 效 , 如 商 业 应 用 中 的 文 件 表 格 处 理 。

     该 方 法 也 可 与 其 它 方 法 结 合 , 用 于 模 块 的 详 细 设 计 。 



     Jackson 方 法 有 时 也 称 为 面 向 数 据 结 构 的 软 件 设 计 方 法  。 



     Warnier 方 法



          1974 年 , J.D.Warnier 提 出 的 软 件 开 发 方 法 与 Jackson 方

     法 类 似 。 差 别 有 三 点: 一 是 它 们 使 用 的 图 形 工 具 不 同 , 分

     别 使 用 Warnier图 和 Jackson 图 ; 另 一 个 差 别 是 使 用 的 伪 码 不

     同 ; 最 主 要 的 差 别 是 在 构 造 程 序 框 架 时 , Warnier 方 法 仅 考

     虑 输 入 数 据 结 构 , 而 Jackson 方 法 不 仅 考 虑 输 入 数 据 结 构 ,

     而 且 还 考 虑 输 出 数 据 结 构 。 



四 、 问 题 分 析 法 



                 PAM 问 题 分 析 法 。 PAM(Problem Analysis Method) 是 80 年

     代 末 由 日 立 公 司 提 出 的 一 种 软 件 开 发 方 法 。 



           PAM方 法 希 望 能 兼 顾 Yourdon 方 法 、 Jackson 方 法 和 自 底

     向 上 的 软 件 开 发 方 法 的 优 点 , 而 避 免 它 们 的 缺 陷 。 它 的 基

     本 思 想 是: 考 虑 到 输 入 、 输 出 数 据 结 构 , 指 导 系 统 的 分 解

     , 在 系 统 分 析 指 导 下 逐 步 综 合 。 这 一 方 法 的 具 体 步 骤 是:

     从 输 入 、 输 出 数 据 结 构 导 出 基 本 处 理 框 ; 分 析 这 些 处 理 框

     之 间 的 先 后 关 系 ; 按 先 后 关 系 逐 步 综 合 处 理 框 , 直 到 画 出

     整 个 系 统 的 PAD 图 。 从 上 述 步 骤 中 可 以 看 出 , 这 一 方 法 本

     质 上 是 综 合 的 自 底 向 上 的 方 法 , 但 在 逐 步 综 合 之 前 已 进 行

     了 有 目 的 的 分 解 , 这 个 目 的 就 是 充 分 考 虑 系 统 的 输 入 、 输

     出 数 据 结 构 。 



            PAM 方 法 的 另 一 个 优 点 是 使 用 PAD 图 。 这 是 一 种 二 维

     树 形 结 构 图 , 是 到 目 前 为 止 最 好 的 详 细 设 计 表 示 方 法 之 一

     , 远 远 优 于 NS 图 和 PDL 语 言 。 



           这 一 方 法 在 日 本 较 为 流 行 , 软 件 开 发 的 成 功 率 也 很

     高 。 由 于 在 输 入 、 输 出 数 据 结 构 与 整 个 系 统 之 间 同 样 存 在

     着 鸿 沟 , 这 一 方 法 仍 只 适 用 于 中 小 型 问 题 。 



五 、 面 向 对 象 的 软 件 开 发 方 法 



             面 向 对 象 技 术 是 软 件 技 术 的 一 次 革 命 , 在 软 件 开 发

     史 上 具 有 里 程 碑 的 意 义 。 



                 随 着 OOP( 面 向 对 象 编 程) 向 OOD( 面 向 对 象 设 计)

     和 OOA( 面 向 对 象 分 析) 的 发 展 , 最 终 形 成 面 向 对 象 的 软

     件 开 发 方 法OMT (Lbject Modelling Technique) 。 这 是 一 种 自 底 向

     上 和 自 顶 向 下 相 结 合 的 方 法 , 而 且 它 以 对 象 建 模 为 基 础 ,

     从 而 不 仅 考 虑 了 输 入 、 输 出 数 据 结 构 , 实 际 上 也 包 含 了 所

     有 对 象 的 数 据 结 构 。 所 以 OMT 彻 底 实 现 了PAM 没 有 完 全 实

     现 的 目 标 。 不 仅 如 此 , OO 技 术 在 需 求 分 析 、 可 维 护 性 和

     可 靠 性 这 三 个 软 件 开 发 的 关 键 环 节 和 质 量 指 标 上 有 了 实 质

	  性 的 突 破 , 彻 底 地 解 决 了 在 这 些 方 面 存 在 的 严 重 问 题 , 从

     而 宣 告 了 软 件 危 机 末 日 的 来 临 。 



          自 底 向 上 的 归 纳



             OMT的 第 一 步 是 从 问 题 的 陈 述 入 手 , 构 造 系 统 模 型

     。 从 真 实 系 统 导 出 类 的 体 系 , 即 对 象 模 型 包 括 类 的 属 性 ,

     与 子 类 、 父 类 的 继 承 关 系 , 以 及 类 之 间 的 关 联 。 类 是 具 有

     相 似 属 性 和 行 为 的 一 组 具 体 实 例( 客 观 对 象) 的 抽 象 , 父

     类 是 若 干 子 类 的 归 纳 。 因 此 这 是 一 种 自 底 向 上 的 归 纳 过 程

     。 在 自 底 向 上 的 归 纳 过 程 中 , 为 使 子 类 能 更 合 理 地 继 承 父

     类 的 属 性 和 行 为 , 可 能 需 要 自 顶 向 下 的 修 改 , 从 而 使 整 个

     类 体 系 更 加 合 理 。 由 于 这 种 类 体 系 的 构 造 是 从 具 体 到 抽 象

     , 再 从 抽 象 到 具 体 , 符 合 人 类 的 思 维 规 律 , 因 此 能 更 快 、

     更 方 便 地 完 成 任 务 。 这 与 自 顶 向 下 的 Yourdon 方 法 构 成 鲜 明

     的 对 照 。 在 Yourdon 方 法 中 构 造 系 统 模 型 是 最 困 难 的 一 步 ,

     因 为 自 顶 向 下 的" 顶" 是 一 个 空 中 楼 阁 , 缺 乏 坚 实 的 基 础

     , 而 且 功 能 分 解 有 相 当 大 的 任 意 性 , 因 此 需 要 开 发 人 员 有

     丰 富 的 软 件 开 发 经 验 。 而 在 O M T 中 这 一 工 作 可 由 一 般 开

     发 人 员 较 快 地 完 成 。 在 对 象 模 型 建 立 后 , 很 容 易 在 这 一 基

     础 上 再 导 出 动 态 模 型 和 功 能 模 型 。 这 三 个 模 型 一 起 构 成 要

     求 解 的 系 统 模 型 。 



          自 顶 向 下 的 分 解



            系 统 模 型 建 立 后 的 工 作 就 是 分 解 。 与 Yourdon 方 法 按

     功 能 分 解 不 同 , 在 OMT 中 通 常 按 服 务( Service) 来 分 解 。 服

     务 是 具 有 共 同 目 标 的 相 关 功 能 的 集 合 , 如 I/O 处 理 、 图 形

     处 理 等 。 这 一 步 的 分 解 通 常 很 明 确 , 而 这 些 子 系 统 的 进 一

     步 分 解 因 有 较 具 体 的 系 统 模 型 为 依 据 , 也 相 对 容 易 。 所 以

     OMT 也 具 有 自 顶 向 下 方 法 的 优 点 , 即 能 有 效 地 控 制 模 块 的

     复 杂 性 , 同 时 避 免 了 Yourdon 方 法 中 功 能 分 解 的 困 难 和 不 确

     定 性 。 



          OMT 的 基 础 是 对 象 模 型



                 每 个 对 象 类 由 数 据 结 构( 属 性) 和 操 作( 行 为) 组 成

     , 有 关 的 所 有 数 据 结 构( 包 括 输 入 、 输 出 数 据 结 构) 都 成

     了 软 件 开 发 的 依 据 。 因 此 Jackson 方 法 和 PAM 中 输 入 、 输 出

     数 据 结 构 与 整 个 系 统 之 间 的 鸿 沟 在 OMT 中 不 再 存 在 。 OMT

     不 仅 具 有 Jackson 方 法 和 PAM 的 优 点 , 而 且 可 以 应 用 于 大 型

     系 统 。 更 重 要 的 是 , 在 Jackson 方 法 和 PAM 方 法 中 , 当 它 们

     的 出 发 点 -- 输 入 、 输 出 数 据 结 构( 即 系 统 的 边 界) 发 生

     变 化 时 , 整 个 软 件 必 须 推 倒 重 来 。 但 在 OMT 中 系 统 边 界 的

     改 变 只 是 增 加 或 减 少 一 些 对 象 而 已 , 整 个 系 统 改 动 极 小 。



          需 求 分 析 彻 底



            需 求 分 析 不 彻 底 是 软 件 失 败 的 主 要 原 因 之 一 。 即 使

     在 目 前 , 这 一 危 险 依 然 存 在 。 传 统 的 软 件 开 发 方 法 不 允 许

     在 开 发 过 程 中 用 户 的 需 求 发 生 变 化 , 从 而 导 致 种 种 问 题 。

     正 是 由 于 这 一 原 因 , 人 们 提 出 了 原 型 化 方 法 , 推 出 探 索 原

     型 、 实 验 原 型 和 进 化 原 型 , 积 极 鼓 励 用 户 改 进 需 求 。 在 每

     次 改 进 需 求 后 又 形 成 新 的 进 化 原 型 供 用 户 试 用 , 直 到 用 户

     基 本 满 意 , 大 大 提 高 了 软 件 的 成 功 率 。 但 是 它 要 求 软 件 开

     发 人 员 能 迅 速 生 成 这 些 原 型 , 这 就 要 求 有 自 动 生 成 代 码 的

     工 具 的 支 持 。 



             OMT 彻 底 解 决 了 这 一 问 题 。 因 为 需 求 分 析 过 程 已 与

     系 统 模 型 的 形 成 过 程 一 致 , 开 发 人 员 与 用 户 的 讨 论 是 从 用

     户 熟 悉 的 具 体 实 例( 实 体) 开 始 的 。 开 发 人 员 必 须 搞 清 现

     实 系 统 才 能 导 出 系 统 模 型 , 这 就 使 用 户 与 开 发 人 员 之 间 有

     了 共 同 的 语 言 , 避 免 了 传 统 需 求 分 析 中 可 能 产 生 的 种 种 问

     题 。 



          可 维 护 性 大 大 改 善



            在 OMT 之 前 的 软 件 开 发 方 法 都 是 基 于 功 能 分 解 的 。

     尽 管 软 件 工 程 学 在 可 维 护 方 面 作 出 了 极 大 的 努 力 , 使 软 件

     的 可 维 护 性 有 较 大 的 改 进 。 但 从 本 质 上 讲 , 基 于 功 能 分 解

     的 软 件 是 不 易 维 护 的 。 因 为 功 能 一 旦 有 变 化 都 会 使 开 发 的

     软 件 系 统 产 生 较 大 的 变 化 , 甚 至 推 倒 重 来 。 更 严 重 的 是 ,

     在 这 种 软 件 系 统 中 , 修 改 是 困 难 的 。 由 于 种 种 原 因 , 即 使

     是 微 小 的 修 改 也 可 能 引 入 新 的 错 误 。 所 以 传 统 开 发 方 法 很

     可 能 会 引 起 软 件 成 本 增 长 失 控 、 软 件 质 量 得 不 到 保 证 等 一

     系 列 严 重 问 题 。 正 是 OMT 才 使 软 件 的 可 维 护 性 有 了 质 的 改

     善 。 



            OMT 的 基 础 是 目 标 系 统 的 对 象 模 型 , 而 不 是 功 能 的

     分 解 。 功 能 是 对 象 的 使 用 , 它 依 赖 于 应 用 的 细 节 , 并 在 开

     发 过 程 中 不 断 变 化 。 由 于 对 象 是 客 观 存 在 的 , 因 此 当 需 求

     变 化 时 对 象 的 性 质 要 比 对 象 的 使 用 更 为 稳 定 , 从 而 使 建 立

     在 对 象 结 构 上 的 软 件 系 统 也 更 为 稳 定 。 



             更 重 要 的 是 OMT 彻 底 解 决 了 软 件 的 可 维 护 性 。 在 OO

     语 言 中 , 子 类 不 仅 可 以 继 承 父 类 的 属 性 和 行 为 , 而 且 也 可

     以 重 载 父 类 的 某 个 行 为( 虚 函 数) 。 利 用 这 一 特 点 , 我 们

     可 以 方 便 地 进 行 功 能 修 改: 引 入 某 类 的 一 个 子 类 , 对 要 修

     改 的 一 些 行 为( 即 虚 函 数 或 虚 方 法) 进 行 重 载 , 也 就 是 对

     它 们 重 新 定 义 。 由 于 不 再 在 原 来 的 程 序 模 块 中 引 入 修 改 ,

     所 以 彻 底 解 决 了 软 件 的 可 修 改 性 , 从 而 也 彻 底 解 决 了 软 件

     的 可 维 护 性 。 OO 技 术 还 提 高 了 软 件 的 可 靠 性 和 健 壮 性 。



六 、 可 视 化 开 发 方 法 



            可 视 化 开 发 是 90 年 代 软 件 界 最 大 的 两 个 热 点 之 一 。

     随 着 图 形 用 户 界 面 的 兴 起 , 用 户 界 面 在 软 件 系 统 中 所 占 的

     比 例 也 越 来 越 大 , 有 的 甚 至 高 达 60 ~ 70 % 。 产 生 这 一 问 题

     的 原 因 是 图 形 界 面 元 素 的 生 成 很 不 方 便 。 为 此 Windows 提

     供 了 应 用 程 序 设 计 接 口 API(Application Programming Inter face) ,

     它 包 含 了 600 多 个 函 数 , 极 大 地 方 便 了 图 形 用 户 界 面 的 开

     发 。 但 是 在 这 批 函 数 中 , 大 量 的 函 数 参 数 和 使 用 数 量 更 多

     的 有 关 常 量 , 使 基 于Windows API 的 开 发 变 得 相 当 困 难 。 为

     此Borland C++ 推 出 了 Object Windows编 程 。 它 将 API 的 各 部 分

     用 对 象 类 进 行 封 装 , 提 供 了 大 量 预 定 义 的 类 , 并 为 这 些 定

     义 了 许 多 成 员 函 数 。 利 用 子 类 对 父 类 的 继 承 性 , 以 及 实 例

     对 类 的 函 数 的 引 用 , 应 用 程 序 的 开 发 可 以 省 却 大 量 类 的 定

     义 , 省 却 大 量 成 员 函 数 的 定 义 或 只 需 作 少 量 修 改 以 定 义 子

     类 。 Object Windows 还 提 供 了 许 多 标 准 的 缺 省 处 理 , 大 大 减

     少 了 应 用 程 序 开 发 的 工 作 量 。 但 要 掌 握 它 们 , 对 非 专 业 人

     员 来 说 仍 是 一 个 沉 重 的 负 担 。 为 此 人 们 利 用 Windows API

     或Borland C++的Object Windows 开 发 了 一 批 可 视 开 发 工 具 。 



          可 视 化 开 发 就 是 在 可 视 开 发 工 具 提 供 的 图 形 用 户 界

     面 上 , 通 过 操 作 界 面 元 素 , 诸 如 菜 单 、 按 钮 、 对 话 框 、 编

     辑 框 、 单 选 框 、 复 选 框 、 列 表 框 和 滚 动 条 等 , 由 可 视 开 发

     工 具 自 动 生 成 应 用 软 件 。 



            这 类 应 用 软 件 的 工 作 方 式 是 事 件 驱 动 。 对 每 一 事 件

     , 由 系 统 产 生 相 应 的 消 息 , 再 传 递 给 相 应 的 消 息 响 应 函 数

     。 这 些 消 息 响 应 函 数 是 由 可 视 开 发 工 具 在 生 成 软 件 时 自 动

     装 入 的 。 



            可 视 开 发 工 具 应 提 供 两 大 类 服 务 。 一 类 是 生 成 图 形

     用 户 界 面 及 相 关 的 消 息 响 应 函 数 。 通 常 的 方 法 是 先 生 成 基

     本 窗 口 , 并 在 它 的 外 面 以 图 标 形 式 列 出 所 有 其 它 的 界 面 元

     素 , 让 开 发 人 员 挑 选 后 放 入 窗 口 指 定 位 置 。 在 逐 一 安 排 界

     面 元 素 的 同 时 , 还 可 以 用 鼠 标 拖 动 , 以 使 窗 口 的 布 局 更 趋

     合 理 。 



            另 一 类 服 务 是 为 各 种 具 体 的 子 应 用 的 各 个 常 规 执 行

     步 骤 提 供 规 范 窗 口 , 它 包 括 对 话 框 、 菜 单 、 列 表 框 、 组 合

     框 、 按 钮 和 编 辑 框 等 , 以 供 用 户 挑 选 。 开 发 工 具 还 应 为 所

     有 的 选 择( 事 件) 提 供 消 息 响 应 函 数 。 



            由 于 要 生 成 与 各 种 应 用 相 关 的 消 息 响 应 函 数 , 因 此

     , 可 视 化 开 发 只 能 用 于 相 当 成 熟 的 应 用 领 域 , 如 目 前 流 行

     的 可 视 化 开 发 工 具 基 本 上 用 于 关 系 数 据 库 的 开 发 。 对 一 般

     的 应 用 , 目 前 的 可 视 化 开 发 工 具 只 能 提 供 用 户 界 面 的 可 视

     化 开 发 。 至 于 消 息 响 应 函 数( 或 称 脚 本) , 则 仍 需 用 通 常

     的 高 级 语 言(3GL) 编 写 。 只 有 在 数 据 库 领 域 才 提 供4GL ,

     使 消 息 响 应 函 数 的 开 发 大 大 简 化 。 



            从 原 理 上 讲 , 与 图 形 有 关 的 所 有 应 用 都 可 采 用 可 视

     化 开 发 方 式 , 如 活 塞 表 面 设 计 中 的 热 应 力 计 算 。 用 户 只 需

     在 界 面 上 用 鼠 标 修 改 活 塞 表 面 的 曲 线 , 应 用 软 件 就 自 动 进

     行 有 限 元 划 分 、 温 度 场 计 算 、 热 应 力 计 算 , 并 将 热 应 力 的

     等 值 曲 线 图 显 示 在 屏 幕 上 。 最 后 几 次 生 成 的 结 果 还 可 并 列

     显 示 在 各 窗 口 上 , 供 用 户 比 较 , 其 中 的 一 个 主 窗 口 还 可 让

     用 户 进 一 步 修 改 活 塞 表 面 曲 线 。 



     许 多 工 程 科 学 计 算 都 与 图 形 有 关 , 从 而 都 可 以 开 发

     相 应 的 可 视 化 计 算 的 应 用 软 件 。

       





返回主页