UML软件工程组织

组件对象模型--Web开发的软件工程方法
作者:夏 长 虹  尹 绯  陈 文 博  选自:www.t o n g j i.e d u .c n

组 件 对 象 模 型 及 其 重 用 范 畴

---- COM  组 件 是 遵 循COM 规 范 编 写、 以 Win32  动 态 链 接 库(D L L) 或 可 执 行 文 件(EXE) 形 式 发 布 的 可 执 行 二 进 制 代 码, 能 够 满 足 对 组 件 架 构 的 所 有 需 求。 遵 循COM 的 规 范 标 准, 组 件 与 应 用、 组 件 与 组 件 之 间 可 以 互 操 作, 极 其 方 便 地 建 立 可 伸 缩 的 应 用 系 统。COM 是 一 种 技 术 标 准, 其 商 业 品 牌 则 称 为ActiveX。

---- 近 几 年 来, 组 件 在 软 件 开 发 中 得 到 了 广 泛 的 应 用, 尤 其 是Windows DNA 将 组 件 应 用 于Internet, 进 行 各 种 事 务 处 理, 显 示 出 了 强 大 的 功 能。 从 组 件 机 制 和 接 口 标 准 方 面 探 讨 组 件 不 是 一 件 轻 松 的 事 情, 我 们 这 里 仅 从 工 程 应 用 的 范 畴 讨 论 组 件 的 开 发 与 使 用 问 题。 组 件 在 应 用 开 发 方 面 具 有 以 下 特 点:

---- 第 一, 组 件 是 与 开 发 工 具 语 言 无 关 的。 开 发 人 员 可 以 根 据 特 定 情 况 选 择 特 定 语 言 工 具 实 现 组 件 的 开 发。 对 于Internet 应 用 而 言, 完 成 事 务 逻 辑 处 理 计 算 任 务 的 组 件 以MS Visual Basic 进 行 开 发 是 首 选 方 案。 其 结 果 是 开 发 迅 速, 调 试 方 便, 编 译 之 后 的 组 件 以 二 进 制 的 形 式 发 布, 可 跨 W i n d o w s 平 台 使 用, 而 且 源 程 序 代 码 不 会 外 泄, 有 效 地 保 证 了 组 件 开 发 者 的 版 权。

---- 第 二, 通 过 接 口 有 效 保 证 了 组 件 的 复 用 性。 一 个 组 件 具 有 若 干 个 接 口, 每 个 接 口 代 表 组 件 的 某 个 属 性 或 方 法。 其 他 组 件 或 应 用 程 序 可 以 设 置 或 调 用 这 些 属 性 和 方 法 来 进 行 特 定 的 逻 辑 处 理。 组 件 和 应 用 程 序 的 连 接 是 通 过 其 接 口 实 现 的。 负 责 集 成 的 开 发 人 员 无 需 了 解 组 件 功 能 是 如 何 实 现 的, 只 需 简 单 地 创 建 组 件 对 象 并 与 其 接 口 建 立 连 接。 在 保 证 接 口 一 致 性 的 前 提 之 下, 可 以 调 换 组 件、 更 新 版 本, 也 可 以 把 组 件 安 插 在 不 同 的 应 用 系 统 中。

---- 第 三, 组 件 运 行 效 率 高、 便 于 使 用 和 管 理。 因 为 组 件 是 二 进 制 代 码, 运 行 效 率 比ASP 脚 本 高 很 多。 核 心 的 商 务 逻 辑 计 算 任 务 必 须 由 组 件 来 担 纲,ASP 脚 本 只 起 组 装 的 角 色。 而 且 组 件 在 网 络 上 的 位 置 可 被 透 明 分 配, 组 件 和 使 用 它 的 程 序 能 在 同 一 进 程 中、 不 同 进 程 中 或 不 同 机 器 上 运 行。 组 件 之 间 是 相 互 独 立 的,MTS 使 对 组 件 的 管 理 更 加 简 便。 组 件 对 象 通 过 一 个 内 部 引 用 计 数 器 来 管 理 它 自 己 的 生 存 期, 这 个 计 数 器 存 放 任 何 时 候 连 接 到 该 对 象 的 客 户 数。 当 引 用 计 数 变 为0 时, 对 象 可 以 把 自 己 从 内 存 中 释 放 掉。 这 使 程 序 员 不 必 考 虑 与 提 供 可 共 享 资 源 有 关 的 问 题。

---- 对 于 使 用 组 件 的 集 成 开 发 者 而 言, 一 个 组 件 就 是 一 个 接 口 集, 只 有 通 过 接 口 才 能 与 组 件 进 行 通 信; 而 对 于 组 件 来 说, 接 口 是 包 含 一 个 函 数 指 针 数 组 的 内 存 结 构, 每 个 数 组 元 素 的 内 容 是 一 个 由 组 件 所 实 现 的 函 数 地 址。 在 一 个 应 用 程 序 中, 起 决 定 作 用 的 是 组 件 的 接 口 而 不 是 组 件 本 身。 只 要 组 件 的 接 口 保 持 不 变, 组 件 可 以 任 意 升 级 或 更 换, 而 应 用 程 序 不 必 做 任 何 修 改。 接 口 将 特 定 的 行 为 封 装 起 来, 一 方 面 使 客 户 可 以 用 同 样 的 方 式 处 理 不 同 组 件, 一 方 面 同 一 组 件 可 以 在 不 同 的 应 用 中 使 用。 这 些 特 点 决 定 了 组 件 必 然 有 很 好 的 重 用 性。 其 重 用 性 主 要 表 现 在 以 下 的 使 用 场 合:

---- COM 组 件 并 不 是 专 为 一 种Windows 平 台 而 设 计 的, 同 一COM 组 件 可 以 在Win95、Win98、Workstation 及NT 上 使 用。 组 件 既 可 以 被 嵌 入 动 态Web 页 面, 又 可 以 在LAN 或 桌 面 环 境 的VB 和 VC 等 应 用 中 使 用。

  • COM 组 件 之 间 是 彼 此 独 立 的。 当 应 用 需 求 发 生 变 更 时, 可 能 需 要 更 换 中 间 层 的 个 别COM 组 件, 但 这 并 不 会 影 响 其 他 组 件 的 继 续 使 用。

  • COM 组 件 具 有 若 干 对 外 接 口( 属 性 和 方 法), 相 当 于 芯 片 的" 管 脚 "。 根 据 不 同 的 应 用 需 求, 可 以 有 选 择 地 使 用 不 同 的 管 脚。 即 使 某 些 管 脚 被" 废 弃",COM 组 件 本 身 仍 然 可 继 续 使 用。

  • 同 一COM 组 件 可 以 在 不 同 的 应 用 环 境 中 重 复 使 用。COM 组 件 不 一 定 是 为 专 门 的 系 统 而 设 计, 可 以 有 较 宽 的 应 用 领 域, 不 会 因 为 某 一 系 统 的" 过 时" 而 被" 废 弃"。

----COM 组 件 及 其 较 高 的 可 重 用 性 为 我 们 展 示 了 一 种 崭 新 的 软 件 设 计 思 路, 以 组 件 对 象 为 中 心 的 设 计 方 法 把 硬 件 以 芯 片 为 中 心 的 工 艺 思 想 恰 如 其 分 地 融 合 于 软 件 的 面 向 对 象 的 分 析、 设 计 和 施 工 之 中, 使 面 向 对 象 的 概 念 和 方 法 从 工 具 语 言 的 层 次 一 下 子 跃 上 了 系 统 的 应 用 层, 也 为DNA 思 想 奠 定 了 现 实 基 础。

基 于 组 件 对 象 的 软 件 工 程 方 法

 

---- 与 传 统 的 软 件 开 发 不 同, 在 基 于 组 件 对 象 的 软 件 工 程 中 应 着 重 进 行 组 件 的 规 划、 设 计 与 开 发。 如 何 将 传 统 的 软 件 工 程 学 和 组 件 对 象 合 理 地 结 合 在 一 起, 至 今 还 处 在 发 展 和 完 善 阶 段, 达 成 共 识 仍 需 时 日。 一 般 而 言, 在 软 件 开 发 的 过 程 中, 首 先 应 逐 步 深 入 对 组 件 进 行 功 能 分 析、 规 划 和 对 外 接 口 的 设 计, 进 而 落 实 内 部 细 节 的 实 现, 最 终 完 成 组 件 的 部 署 与 管 理。 图1 显 示 了 进 行 基 于 组 件 对 象 的 软 件 工 程 开 发 过 程。

---- 按 常 规 的 软 件 工 程 方 法 进 行 系 统 需 求 分 析 后, 将 得 到 系 统 的 数 据 流 图DFD 和 系 统 结 构 图SC, 由 此 确 定 系 统 需 要 处 理 的 各 种 应 用 请 求。 此 时 可 以 初 步 确 定 所 需 的COM 组 件, 再 由 划 分 出 的 若 干 组 件 规 划 其 需 要 实 现 的 功 能。 组 件 的 规 划 是 否 合 理 对 于 基 于Web 的 软 件 工 程 至 关 重 要, 规 划 不 合 理 往 往 导 致 工 程 的 延 期 或 反 复。

---- 一 般 来 说,COM 组 件 的 规 划 应 遵 循 以 下 原 则:

  • 用 户 对 于 数 据 库 的 请 求 应 通 过COM 组 件 实 现。 将 访 问 权 限 授 予COM 组 件, 保 证 了 访 问 数 据 库 的 安 全 性; 把 对 每 个 用 户 的 连 接 变 成 和COM 组 件 的 连 接, 以 避 免 数 据 库 资 源 的 浪 费 和 崩 溃 的 危 险。

  • 组 件 粒 度 不 宜 过 大, 尽 量 让 每 一 个COM 组 件 实 现 某 一 个 或 一 类 相 似 的 应 用 请 求, 而 不 要 追 求 其 功 能 的 过 分 繁 多。 保 证 每 个 组 件 对 象 完 成 的 商 务 逻 辑 功 能 相 对 单 一, 有 助 于 发 挥 重 用 机 制 和 调 节DNA 的 适 应 性。

  • COM 组 件 与 用 户 的 接 口 应 尽 量 简 单、 友 好。

  • COM 组 件 如 果 是 可 视 的(ActiveX 控 件), 则 只 能 有 一 个 可 视 化 界 面。

---- 进 行 系 统 的 详 细 设 计 时, 需 进 行 数 据 库 设 计。 由 于 已 经 初 步 划 分 出 需 要 定 制 的COM 组 件, 此 时 可 以 根 据 库 表 结 构 进 一 步 确 定 组 件 的 对 外 接 口, 即 组 件 支 持 的 事 件、 方 法 和 属 性。 一 般 访 库 操 作 由 组 件 完 成, 所 以COM 组 件 应 能 识 别 不 同 的 访 库 命 令, 进 行 特 定 处 理, 并 将 处 理 结 果 作 为 对 外 接 口 返 回 给 用 户。 与 传 统 的 软 件 工 程 学 有 所 不 同, 基 于 组 件 对 象 的 应 用 系 统 是 由 组 件 实 现 特 定 应 用 处 理 和 商 务 逻 辑 计 算 任 务, 而 其 具 体 实 现 对 集 成 开 发 人 员 来 说 是 封 装 好 的, 他 们 不 必 耗 费 精 力 去 关 心 实 现 细 节, 只 需 规 定 应 用 系 统 与 组 件 的 接 口, 指 明 在 何 时、 何 处 调 用 哪 个 组 件 即 可。

---- 组 件 的 接 口 在 整 个 应 用 系 统 中 起 决 定 性 作 用。 接 口 设 计 不 合 理, 不 仅 影 响 组 件 本 身 的 可 重 用 性, 并 且 将 影 响 整 个 应 用 系 统 的 升 级, 缩 短 系 统 的 生 命 周 期。 所 以 确 定 组 件 的 接 口 要 经 过 深 思 熟 虑, 使 它 能 支 持 各 种 不 同 的 应 用。

---- 接 口 应 具 有 较 高 的 通 用 性, 以 提 高 整 个 应 用 系 统 的 复 用 能 力, 同 时 还 要 兼 顾 简 单 和 实 用 性。 举 例 说, 如 果 我 们 需 要 定 制 一 个 组 件 访 问 特 定 的 数 据 库 并 将 结 果 返 回 给 用 户。 若 只 是 为 该 系 统 设 计, 可 以 将 库 名、 表 名、 访 库 语 句 全 部 封 装 在 组 件 内 部, 这 样 的 组 件 接 口 简 单, 但 重 用 性 很 小。 若 将 库 名、 表 名 等 作 为 组 件 的 接 口, 组 件 的 重 用 性 大 大 提 高 了, 但 接 口 复 杂 了, 不 利 于 组 件 的 拆 换。 建 议 的 做 法 是, 如 果 希 望 系 统 有 再 次 开 发 或 移 植 的 潜 力, 可 以 将 库 表 名 作 为 接 口, 访 库 语 句 应 封 装 在 组 件 内 部。 如 果 将 访 库 权 限 交 给 用 户, 既 不 利 于 数 据 库 的 安 全 性, 也 会 给 应 用 程 序 带 来 很 大 的 负 担。

----组 件 的 内 部 实 现 细 节 不 能 反 映 到 接 口 中, 接 口 同 内 部 实 现 细 节 的 隔 离 程 度 越 高, 组 件 或 应 用 发 生 变 化 对 接 口 的 影 响 就 越 小。 在 设 计 组 件 接 口 时, 还 要 尽 量 估 计 到 将 来 可 能 出 现 的 各 种 情 况, 力 争 设 计 出 具 有 高 复 用 性、 适 应 性 和 灵 活 性 的 接 口。

---- 完 成 系 统 的 详 细 设 计 之 后, 接 下 来 进 行 组 件 的 开 发 和 测 试。 组 件 不 依 赖 于 特 定 语 言, 开 发 者 可 根 据 实 际 需 要 选 择 使 用VB、VC 或 Java 作 为 开 发 工 具。COM 组 件 的 开 发 工 作 可 委 托 给 专 门 的 开 发 组。 组 件 的 接 口 一 旦 确 定, 组 件 的 开 发 和 应 用 系 统 实 现 的 其 他 工 作 可 由 各 个 专 门 小 组 同 时 进 行, 可 大 大 缩 短 开 发 时 间。

---- 在 最 后 实 现 阶 段, 把 经 过 测 试 的COM 组 件 集 成 到 动 态Web 的ASP 页 面 脚 本 中, 并 进 行 系 统 测 试。 在 集 成 过 程 中, 一 般 要 交 替 使 用Visual InterDev 和FrontPage 作 为 工 具。 具 体 实 施 步 骤 如 下:

  • 通 过Visual InterDev 建 立Web 站 点, 连 接 服 务 器 并 在Web 服 务 器 的 根 目 录 下 建 立 站 点 主 页。 于 是 在 服 务 器 上 同 时 建 立 了 一 个 指 向 新Web 目 录 的 与 站 点 同 名 的 新 虚 拟 根。InterDev 还 会 自 动 在 项 目 中 放 置 文 件Global.asa 和 文 件 夹Images, 前 者 负 责 存 储 整 个 应 用 程 序 中 用 到 的 全 局 设 置, 后 者 包 含 了Web 页 面 上 所 要 显 示 的 各 种 图 形。

  • 在FrontPage 中 规 划 和 编 辑 页 面。 可 以 设 计 页 面 的 背 景 色、 标 题 字 体, 快 速 建 立 超 链 接, 插 入 图 像, 插 入 系 统 的 或 定 制 的ActiveX 控 件 和Java 小 程 序 等。 当 插 入 一 个ActiveX 控 件 时, 利 用ActiveX Properties 设 置 控 件 的 有 关 属 性 值, 用Script Wizard 编 写ActiveX 控 件 之 间 进 行 交 互 操 作 的 脚 本。

  • 返 回Visual InterDev 中 编 写ASP 脚 本, 重 点 是 功 能 上 的 设 计。ActiveX DLL 承 载 着 商 务 逻 辑 计 算 的 重 任。 对 页 面 进 行 本 地 测 试, 在 浏 览 器 中 显 示 编 辑 好 的 动 态Web 页 面。 应 避 免 在FrontPage 中 的 工 作 区 编 辑 ASP 文 件。

  • 返 回FrontPage, 对 页 面 进 行 进 一 步 的 修 饰。 还 可 以 利 用PhotoShop 等 工 具 加 入 图 画、 动 画、 声 音 和 视 频 来 丰 富、 美 化 你 的 页 面。

  • 在FontPage Explorer 下 利 用 其 提 供 的Publish 功 能 将 其 导 入IIS 服 务 器, 从 而 使 客 户 用 前 端 的 浏 览 器 从 服 务 器 上 下 载 这 些 应 用 程 序。 具 体 过 程 如 图2 描 述。

---- 组 件ActiveX DLL 的 引 用 方 法 很 多。 既 可 以 在ASP 脚 本 中 直 接 引 用, 也 可 在 另 一 个ActiveX DLL 中 引 用, 还 可 通 过 编 写VBScript 及ASP 脚 本 将 若 干 个ActiveX DLL 连 接 起 来。

----至 此 基 本 上 完 成 了 应 用 系 统 的 设 计 与 实 现。 然 后, 还 必 须 对 此 应 用 系 统 进 行 反 复 测 试。 应 用 系 统 由 若 干 个 封 装 好 的 组 件 组 装 而 成, 只 需 着 重 测 试 组 件 与 应 用 系 统 的 接 口 是 否 将 它 们 良 好 地" 对 接" 在 一 起。 若 某 个 处 理 要 求 不 能 正 确 完 成, 只 需 修 改 实 现 该 功 能 的 组 件 即 可。 同 时 也 不 可 忽 视 的 是 系 统 的 安 全 性 和 健 壮 性。 可 能 出 现 多 个 用 户 同 时 访 问 同 一 主 页 的 情 况, 要 在 带 宽 一 定 的 条 件 下 尽 量 缩 短 页 面 下 载 的 时 间( 例 如 在 同 一 页 面 中 定 制 的ActiveX 控 制 不 宜 过 多), 并 避 免 造 成 服 务 器 因 网 络 拥 塞 而 产 生 崩 溃。 在 基 于 组 件 的 系 统 中, 我 们 利 用MTS 对 组 件 进 行 管 理, 实 现 对 组 件 的 多 线 程 支 持 并 按 权 限 等 级 把 组 件 划 分 给 具 有 相 应 权 限 的 使 用 人 员 组。

---- 总 的 来 说, 基 于 组 件 对 象 的 软 件 工 程 方 法 较 传 统 的 软 件 工 程 方 法 有 了 很 大 的 进 步。 利 用 这 种 开 发, 我 们 可 以 根 据 自 身 的 特 长 组 成 开 发 小 组, 并 行、 独 立 地 进 行 开 发, 可 成 倍 缩 短 开 发 时 间, 所 开 发 的 系 统 也 比 较 健 壮、 稳 定。

 

 

版权所有:UML软件工程组织