📄 pl005.asp
字号:
当 机 、 应 用 程 式 出 现「无 法 恢 复 的 错 误」(常 玩 Windows 的 朋
友 对 这 样 的 字 眼 应 该 不 陌 生 ) 、 档 案 遭 到 破 坏 (某 知 名
文 书 处 理 程 式 即 发 生 过 此 事 ) 等 。 </P>
<P>·<B><FONT COLOR="#800000"> 延 迟 交 货 </FONT></B>: 最 有 名 的 例
子 当 推 Windows 95, 出 货 日 期 从 93 年 喊 到 95 年 ﹛ A但 这 绝 不
是 特 例 , 反 倒 是 一 个 普 遍 的 现 象 。 </P>
<P>·<B><FONT COLOR="#800000"> 无 法 符 合 客 户 的 需 求</FONT></B> :
其 结 果 可 能 是 客 户 降 低 要 求 , 或 者 开 发 者 再 投 入 大 量 人
力 修 改 程 式 。 </P>
<P>· <B><FONT COLOR="#800000">系 统 无 法 维 护</FONT></B> : 此 时 软
体 将 面 临 生 命 周 期 结 束 的 命 运 。 </P>
</UL>
<P>这 些 问 题 并 不 是 近 几 年 才 发 生 的 , 早 在 60 年 代 即 有 人
提 出「软 体 危 机」 的 概 念 , 并 逐 步 发 展 出「软 体 工 程」这 门
学 科 , 从 此 以 後 , 软 体 工 程 与 软 体 危 机 就 像 正 邪 两 派 一
直 缠 斗 至 今 , 软 体 工 程 的 方 法 越 来 越 好 , 但 软 体 的 需 求
却 也 越 来 越 复 杂 , 以 致 一 些 曾 经 是 不 错 的 软 体 工 程 方 法
论 日 渐 不 能 解 决 我 们 後 来 的 问 题 , 今 天 在 软 体 日 趋 难 缠
的 情 况 下 , 软 体 武 林 公 推 OO 出 来 应 战 , 虽 然 大 家 都 相 信
OO 是 对 抗 软 体 危 机 的 利 器 , 但 我 们 仍 想 先 回 顾 传 统 的 软
体 工 程 , 并 从 比 较 中 更 清 楚 地 看 到 OO 的 长 处 , 以 期 将 它
的 长 处 发 挥 到 极 至 。 </P>
<P>软 体 工 程 的 理 论 基 础 来 自 所 谓 的「软 体 生 命 周 期」, 有
经 验 的 人 一 定 知 道 软 体 的 发 展 不 只 是 程 式 的「撰 写」, 较
大 的 软 体 在 撰 写 程 式 以 前 应 该 先 行 「设 计」, 而 设 计 之 前
得 先 瞭 解 使 用 者 的 需 求 并 加 以「分 析」; 撰 写 完 各 单 元 程
式 时 应 自 我 测 试 , 然 後 才 进 入 系 统 的「整 合 测 试」, 整 合
测 试 完 毕 交 付 客 户 , 即 进 入 最 後 的「维 护」阶 段 ; 在 维 护
阶 段 若 有 新 的 需 求 , 又 會 回 到 最 初 的「分 析」阶 段 , 如 此
软 体 可 以 生 生 不 息 , 所 以 叫 做 软 体 的 生 命 周 期 。 </P>
<P>在 这 种 软 体 生 命 周 期 的 基 础 下 , 最 常 见 的 软 体 开 发 过
程 是 一 种 叫 做 : waterfall(瀑 布 ) 的 模 型 , 如 图 : </P>
</UL>
<CENTER><P><A HREF="pl05-5.gif">图 -5 瀑 布 模 型 的 软 体 开 发 过 程
</A></P></CENTER>
<UL>
<P>瀑 布 模 型 中 最 重 要 的 观 念 是 前 一 阶 段 工 作 (例 如「系 统
设 计」是「程 式 撰 写」的 前 一 阶 段 工 作 ) 必 须 先 完 成 才 能 够
进 行 下 一 阶 段 的 工 作 , 理 由 是 : 当 我 们 在 某 一 个 阶 段 才
发 现 前 一 个 阶 段 的 错 误 时 , 再 回 溯 到 前 一 个 阶 段 , 其 花
费 之 成 本 将 远 大 於 当 初 就 多 花 点 时 间 把 前 一 阶 段 做 好 的
成 本 , 而 当 我 们 回 溯 的 层 次 越 多 , 这 个 成 本 就 越 可 观 ,
所 以 在 这 种 模 型 之 下 特 别 重 视 两 件 事 情 : 系 统 分 析 後 的「客
户 需 求 确 认」, 及 每 一 个 阶 段 的「品 质 确 认」 , 它 们 犹 如 这
个 模 型 下 的 两 大 护 法 , 一 直 在 防 堵 回 溯 事 情 的 发 生 , 但
很 不 幸 的 , 真 实 世 界 还 是 不 断 地 冲 破 它 们 的 防 线 , 迫 使
我 们 不 得 不 向 前 回 溯 , 就 好 像 是 软 体 工 程 天 生 的 敌 人 。
</P>
</UL>
<H3><FONT COLOR="#000080">壹 号 敌 人 : 您 的 客 户 </FONT></H3>
<UL>
<P>当 您 把 软 体 交 付 给 客 户 时 , 客 户 说 :「这 东 西 不 是 我 要
的」, 这 可 惨 了 , 别 想 是 客 户 故 意 刁 难 你 , 也 许 是 你 们 当
初 没 把 规 格 谈 好 , 所 以 我 们 在 前 面 强 调 过「客 户 需 求 确 认」是
软 体 工 程 的 第 一 护 法 。 </P>
<P>为 了 在 软 体 交 付 的 阶 段 , 能 够 证 明 系 统 绝 对 符 合 当 初
客 户 所 要 求 的 , 最 常 见 的 作 法 是「白 纸 黑 字」, 也 就 是 将
系 统 分 析 的 结 果 撰 写 成 分 析 文 件 , 并 且 要 求 客 户 签 名 确
认 。 这 听 起 来 是 个 相 当 不 错 的 作 法 , 我 不 能 说 这 个 作 法
不 好 , 但 我 想 与 大 家 交 换 一 下 这 种 作 法 所 产 生 的 几 种 现
象 。 </P>
<P>曾 经 遇 到 过 一 位 客 户 , 案 子 是 他 负 责 的 , 但 是 快 退 休
的 他 不 想 负 责 任 , 生 怕 签 错 名 无 法 顺 利 退 休 , 当 我 们 完
成 分 析 工 作 要 求 客 户 确 认 时 , 他 将 我 们 臭 骂 一 顿 并 且 告
诉 我 们 :「你 们 把 东 西 作 出 来 , 我 看 了 如 果 是 我 们 要 的 东
西 , 就 验 收 , 如 果 不 是 , 就 请 你 们 回 去 修 改」, 这 简 直 就
违 反 了 软 体 工 程 的 基 本 原 则 。 </P>
<P>还 好 这 种 客 户 并 不 多 见 , 大 部 份 的 客 户 对 於 系 统 的 开
发 应 先 确 认 分 析 文 件 多 有 共 识 , 因 此 您 过 这 关 大 致 还 不
成 问 题 , 接 下 来 您 将 根 據 分 析 文 件 开 发 系 统 , 一 直 到 了
验 收 , 另 一 个 问 题 来 了 , 分 析 文 件 虽 然 是 白 纸 黑 字 , 但
它 转 化 成 程 式 之 後 , 仍 可 能 发 生 认 定 不 同 的 问 题 , 同 一
段 文 字 客 户 的 解 释 也 许 跟 您 的 解 释 不 一 样 , 那 以 谁 的 为
标 准 呢 ? 聪 明 的 客 户 通 常 會 在 合 约 中 加 上 一 条 条 文 , 大
意 是「若 双 方 认 定 不 同 时 , 以 客 户 之 认 定 为 标 准」, 你 还
是 没 辄 , 你 不 是 客 户 。 </P>
<P>虽 然 以 上 的 问 题 可 利 用「协 商」来 解 决 , 但 它 也 透 露 一
个 重 要 的 讯 息 : 即 使 在「客 户 需 求 确 认」这 一 护 法 的 把 关
下 , 仍 然 无 法 完 全 防 堵 客 户 对 於 程 式「修 改」的 要 求 。 就
某 个 角 度 来 说 , 客 户 的 要 求 并 非 完 全 没 有 道 理 , 很 少 有
分 析 文 件 能 够 充 分 表 达 程 式 的 运 作 (例 如 画 面 的 操 作 过
程 等 ) , 这 也 难 怪 會 发 生 认 定 上 的 问 题 。 </P>
<P>针 对 上 述 的 问 题 , 有 人 提 出 在 分 析 阶 段 就 让 客 户 看 到
软 体 雏 形 的 概 念 , 以 降 低 彼 此 对 分 析 文 件 认 定 上 的 差 异
, 这 的 确 是 一 个 相 当 不 错 的 主 意 , 但 不 可 否 认 的 , 这 样
做 将 會 提 高 开 发 的 Θ 本 。 为 了 降 低 成 本 , 额 外 开 发 软 体
雏 形 特 别 关 心 两 件 事 情 : </P>
<UL>
<P>· 这 些 雏 形 中 的 程 式 是 否 可 以 再 用 於 正 式 的 软 体 中 :
为 了 达 到 这 个 目 的 , 重 视 再 用 的 OO 可 以 说 是 唯 一 的 选 择
。 </P>
<P>· 到 底 多 快 可 以 完 成 雏 形 软 体 的 开 发 : 目 前 有 许 多 快
速 开 发 工 具 , 例 如 Visual Basic、 Power Builder、 SQL Windows 等 (抱
歉 , 产 品 太 多 无 法 一 一 列 举 ) 都 属 於 此 类 , 而 它 们 之 所
以 能 够 达 到 快 速 开 发 的 能 力 , 则 归 功 於 将 OO 的 概 念 充 分
地 运 用 在 开 发 环 境 中 。 </P>
</UL>
<P>其 实 以 上 两 点 强 调 的 分 别 是「再 用」及「快 速 开 发」, 许 多
产 品 都 强 调 它 们 兼 具 这 两 方 面 的 能 力 , 笔 者 倒 不 以 为 然
, 通 常 越 是 快 速 的 开 发 工 具 其 再 用 能 力 相 对 會 减 弱 , 而
再 用 能 力 越 强 者 往 往 必 须 先 熬 过 辛 苦 的 学 习 历 程 , 哪 还
算 是 快 速 开 发 工 具 。 不 过 笔 者 也 相 信 在 OO 技 术 日 趋 成 熟
之 下 , 开 发 工 具 能 够 兼 具 这 两 种 能 力 的 可 能 性 将 會 越 来
越 高 。 </P>
</UL>
<P><B><FONT COLOR="#000080"><FONT SIZE=+1>贰 号 敌 人 : 您 的 竞 争 对
手 </FONT></FONT></B></P>
<UL>
<P>在 壹 号 敌 人 中 , 我 们 所 谈 的 问 题 是 以 专 案 (project) 为
基 础 , 其 最 终 的 目 标 是 完 成 验 收 , 至 於 产 品 (product) 开
发 所 面 临 的 问 题 就 完 全 不 同 了 。 就 软 体 规 格 来 说 , 产 品
与 专 案 最 大 的 不 同 是 : 专 案 的 软 体 规 格 是 由 客 户 决 定 的
, 而 产 品 则 是 根 據 市 场 调 查 後 , 由 开 发 厂 商 自 己 制 订 出
来 的 , 因 此 相 对 於 专 案 来 说 , 产 品 的 开 发 过 程 应 该 不 至
於 发 生 回 溯 修 改 的 事 情 。 </P>
<P>但 其 实 也 不 然 , 除 非 您 的 产 品 是 市 场 上 唯 一 的 产 品 ,
否 则 您 的 竞 争 对 手 随 时 都 想 超 越 你 , 并 且 抢 先 规 画 一 些
您 的 产 品 还 没 有 的 功 能 , 如 果 您 不 能 即 时 赶 上 并 且 加 以
超 越 , 难 保 客 户 不 會 琵 琶 别 抱 。 为 了 赢 得 最 後 的 胜 利 ,
软 体 必 须 具 备 可 以 随 时 加 强 功 能 的 体 质 。 </P>
<P>如 果 说 当 初 产 品 是 以 结 构 化 程 式 所 开 发 出 来 的 , 那 麼
功 能 新 增 及 修 改 时 , 首 要 考 虑 的 问 题 是 各 模 组 之 间 的 关
连 性 , 这 往 往 不 是 修 改 几 个 副 程 式 就 可 以 了 事 的 , 最 糟
的 情 形 甚 至 會 牵 一 发 而 动 全 身 , 搞 到 最 後 变 成 必 须 从 最
初 的 分 析 阶 段 开 始 修 改 起 , 那 可 真 是 费 时 又 费 力 。 反 观
以 OOP 开 发 出 来 的 软 体 , 物 件 之 间 通 常 都 有 明 确 的 介 面 定
义 , 所 以 它 们 有 以 下 的 优 点 : </P>
<UL>
<P>· 如 果 说 物 件 内 部 的 功 能 必 须 修 改 , 而 介 面 不 变 , 则
只 要 将 欲 修 改 的 物 件 抽 换 掉 即 可 , 决 不 會 动 到 其 他 程 式
或 物 件 。 </P>
<P>· 如 果 说 某 些 物 件 功 能 不 足 , 必 须 再 加 强 , OOP 提 供 了
另 一 个 重 要 的 技 术 ─「继 承」(Inheritance) , 让 程 式 开 发 者
在 不 必 修 改 原 有 物 件 的 情 况 下 (因 为 那 可 能 影 响 到 其 他
程 式 或 物 件 ) , 改 造 出 另 一 个 符 合 新 功 能 的 物 件 。 </P>
</UL>
</UL>
<H3><B><FONT COLOR="#000080">参 号 敌 人 : 自 己 </FONT></B></H3>
<UL>
<P>在 瀑 布 模 型 中 , 除 了「客 户 需 求 确 认」之 外 , 另 一 个 重
要 的 护 法 是「品 质 保 证」, 其 目 的 在 确 保 每 一 个 阶 段 的 完
美 , 以 避 免 工 作 回 溯 , 在 作 法 上 通 常 找 一 些 有 经 验 的 人
员 针 对 分 析 、 设 计 文 件 进 行 复 审 的 工 作 , 这 个 作 法 相 当
不 错 , 的 确 有 助 於 提 早 在 分 析 、 设 计 阶 段 挑 出 错 误 , 但
话 说 回 来 谁 也 无 法「完 整 地」看 到 未 来 , 尤 其 是 全 新 的 案
子 , 又 有 谁 能 够 无 误 地 复 审 分 析 、 设 计 文 件 呢 ? </P>
<P><FONT COLOR="#008000">注 : 这 里 所 指 的 自 己 不 一 定 是 个 人 ,
如 果 软 体 是 由 一 组 人 员 共 同 开 发 的 , 自 己 指 的 是 开 发 软
体 的 相 关 人 员 。 </FONT></P>
<P>人 的 能 力 有 限 , 只 有 走 到 未 来 才 能 回 顾 过 去 的 对 错 ,
品 质 保 证 只 能 减 少 工 作 回 溯 的 情 形 , 却 不 能 保 证 工 作 不
會 回 溯 , 自 己 是 自 己 永 远 无 法 战 胜 的 敌 人 , 既 然 这 样 ,
何 不 把 软 体 装 备 成「具 有 延 展 性」的 架 构 呢 ? </P>
<P>在 贰 号 敌 人 中 , 我 们 提 到「继 承」的 技 术 , 其 目 的 可 以
让 程 式 设 计 师 轻 易 地 新 增 功 能 到 既 有 的 物 件 中 , 另 一 道
OO 的 技 术「动 态 系 结」(dynamic binding) 则 与 程 式 架 构 的 可 延
展 性 有 极 大 的 关 系 , 其 原 理 是 延 迟 到「执 行 时 间」才 将 物
件 连 结 起 来 , 这 使 得 我 们 在 程 式 开 发 阶 段 比 较 容 易 增 删
必 要 的 物 件 。 以 上 两 种 技 术 的 深 入 解 说 请 参 考 本 期 专 题
的「OOP 技 术 探 讨」 。 </P>
</UL>
<H2><A NAME="S4"></A><B><FONT COLOR="#0000FF">通 往 O O 之 路 </FONT></B></H2>
<UL>
<P>相 对 於 传 统 程 式 语 言 与 软 体 工 程 , OO 的 优 点 可 以 归 纳
成 两 点 :「再 用」 及「容 忍 变 更」, 我 们 可 以 把 它 当 作 通 往
OO 的 两 大 目 标 , 其 中 再 用 是 比 较 容 易 达 到 的 目 标 , 成 功
与 否 决 定 於 手 边 是 否 有 足 够 的 软 体 IC, 所 以 平 常 应 该 从
两 方 面 来 著 手 : </P>
<UL>
<P>· 随 时 注 意 市 场 上 出 现 了 哪 些 软 体 IC, 因 为 它 们 将 来
都 可 能 变 成 自 己 软 体 的 一 部 份 。 </P>
<P>· 在 软 体 开 发 中 , 随 时 注 意 是 否 有 某 些 程 式 其 再 用 可
能 性 较 高 者 , 若 有 , 考 虑 将 它 们 制 作 成 软 体 IC。 </P>
</UL>
<P>至 於 容 忍 变 更 上 , 如 果 运 用 OOP 的「继 承」及「动 态 系 结」两
项 技 术 , 在 程 式 修 改 时 的 确 比 传 统 程 式 语 言 较 不 會 牵 动
太 多 程 式 单 位 , 但 这 并 不 表 示 OOP 是 应 付 软 体 变 更 的 万 灵
丹 , 软 体 是 否 容 易 变 更 仍 然 与 整 体 程 式 的 架 构 有 极 大 的
关 系 , 怎 样 运 用 OO 的 观 念 把 程 式 架 构 弄 得 更 好 , 必 须 经
过 较 长 的 学 习 过 程 , 而 在 这 之 前 , 您 必 须 先 学 會 将 物 件
封 装 、 继 承 、 及 动 态 系 结 三 大 技 术 充 分 发 挥 到 程 式 设 计
中 。 </P>
<P>听 起 来 想 完 成 OO 的 修 练 并 非 两 三 个 月 的 事 情 , 但 是 别
灰 心 , 先 把 第 一 站 设 定 在「软 体 IC 的 再 用」上 , 一 般 来 说
, 这 是 比 较 容 易 达 到 的 境 界 , 而 且 在 软 体 开 发 上 具 有 立
竿 见 影 之 效 。 </P>
<P>最 後 则 有 一 件 事 情 想 提 醒 读 者 : 目 前 有 些 OOP 为 了 与 前
一 代 语 言 相 容 , 并 不 禁 止 您 在 新 的 OOP 当 中 以 传 统 的 语 法
来 写 程 式 , 例 如 您 可 以 在 C++ 中 写 C 的 程 式 , 这 是 为 了 让
程 式 设 计 师 能 够 平 顺 地 将 技 术 移 转 到 OOP 的 缘 故 , 但 在 这
传 统 与 OO 混 杂 的 程 式 中 通 常 會 遗 传 著 传 统 程 式 的 缺 点 ,
初 期 撰 写 OO 程 式 这 种 现 象 是 难 免 的 , 但 仍 必 须 给 自 己 设
定 一 个 撰 写 完 全 OO 程 式 的 目 标 , 这 样 才 能 真 正 发 挥 OO 的
功 效 。 </P>
</UL>
<H1 ALIGN=CENTER>
<HR WIDTH="100%"></H1>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -