开放源代码软件Heatbeat 成熟度评估 - 开源中国社区- 软件镜像下载
开放源代码软件Heatbeat 成熟度评估 - 开源中国社区- 软件镜像下载
开放源代码软件Heatbeat 成熟度评估 - 开源中国社区- 软件镜像下载
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
开 放 源 代 码 软 件 Heatbeat 成 熟 度 评 估编 制 : 贾 训 凯 杨 勇时 间 :2010 年 11 月 15 日工 业 和 信 息 化 部 软 件 与 集 成 电 路 促 进 中 心
开 放 源 代 码 软 件 成 熟 度 评 估目 录目 录 ......................................................................................................................................................................... 1概 述 ......................................................................................................................................................................... 2开 源 软 件 成 熟 度 评 估 的 目 标 和 价 值 ..................................................................................................................... 2开 放 源 码 软 件 成 熟 度 评 估 目 标 ..................................................................................................................... 2开 源 软 件 成 熟 度 评 估 案 例 ..................................................................................................................................... 4Heartbeat 软 件 成 熟 度 评 估 报 告 ..................................................................................................................... 4Heartbeat 软 件 介 绍 ................................................................................................................................. 4Heartbeat 架 构 描 述 ................................................................................................................................. 5Heartbeat 软 件 代 码 质 量 评 测 报 告 ......................................................................................................... 9软 件 测 试 ............................................................................................................................................... 12Heartbeat 易 用 性 研 究 ........................................................................................................................... 12Heartbeat 可 用 性 性 研 究 ....................................................................................................................... 12社 区 及 项 目 组 织 ................................................................................................................................... 13License 问 题 .......................................................................................................................................... 13软 件 成 熟 度 评 估 ........................................................................................................................................... 13软 件 成 熟 度 属 性 定 义 与 量 化 ............................................................................................................... 13Heartbeat 软 件 成 熟 度 评 估 结 论 ........................................................................................................... 16总 结 ....................................................................................................................................................................... 17参 考 ....................................................................................................................................................................... 17附 录 ....................................................................................................................................................................... 17Heartbeat 软 件 代 码 质 量 评 测 报 告 :........................................................................................................... 17第 1 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估概 述21 世 纪 的 计 算 机 世 界 是 丰 富 多 彩 的 , 不 仅 计 算 机 硬 件 性 能 有 了 质 的 飞 跃 , 计 算 机 软 件在 功 能 性 、 复 杂 度 上 都 是 以 前 无 法 比 拟 的 。 尤 其 是 互 联 网 及 网 络 应 用 的 出 现 , 极 大 的 丰 富 了人 们 的 计 算 机 应 用 , 拓 展 了 应 用 的 领 域 , 将 应 用 水 平 提 高 到 一 个 崭 新 的 水 平 。 对 于 复 杂 应 用 ,如 何 来 保 障 应 用 软 件 的 质 量 , 如 何 评 估 那 些 纷 繁 复 杂 的 应 用 系 统 呢 。 人 们 进 行 了 多 方 面 的 探索 , 形 成 了 众 多 软 件 成 熟 度 评 价 模 型 。 中 国 也 为 此 颁 布 了 软 件 质 量 国 家 标 准GB-T8566--2001G, 从 而 指 导 软 件 开 发 者 和 使 用 者 正 确 的 评 价 一 个 软 件 的 质 量 及 其 应 用 的 成熟 度 。 那 么 , 对 于 开 源 世 界 , 我 们 如 何 看 待 , 又 如 何 正 确 评 价 一 个 软 件 的 成 熟 度 状 况 呢 。我 们 知 道 , 软 件 成 熟 度 评 估 的 最 终 目 标 是 帮 助 软 件 的 可 持 续 发 展 , 并 为 用 户 应 用 提 供 必要 的 技 术 参 考 。 开 放 源 代 码 软 件 成 熟 度 评 估 也 不 例 外 。 我 们 通 过 软 件 的 成 熟 度 评 估 , 形 成 全面 的 涉 及 技 术 、 应 用 、 法 律 等 层 面 的 评 价 报 告 , 帮 助 那 些 正 在 或 潜 在 的 开 源 软 件 使 用 者 准 确的 了 解 软 件 的 技 术 特 性 和 应 用 特 性 , 从 而 为 他 们 选 择 适 合 自 身 需 求 的 开 源 软 件 提 供 参 考 。 同时 报 告 中 涉 及 的 大 量 评 测 数 据 , 为 开 源 软 件 的 开 发 者 提 供 帮 助 , 促 进 他 们 有 效 的 改 善 软 件 在技 术 方 面 和 使 用 方 面 的 质 量 , 使 软 件 不 断 成 熟 和 可 持 续 的 发 展 。开 放 源 代 码 软 件 由 于 开 发 模 式 和 运 作 模 式 的 独 特 性 , 其 软 件 带 有 鲜 明 的 特 点 。 开 放 源 码软 件 成 熟 度 评 估 的 方 法 需 要 我 们 在 实 践 中 不 断 的 探 索 。 我 们 将 提 出 一 些 基 本 的 原 则 和 方 法 ,并 建 立 我 们 自 己 的 评 估 体 系 和 计 算 模 型 。开 源 软 件 成 熟 度 评 估 的 目 标 和 价 值开 放 源 码 软 件 成 熟 度 评 估 目 标 实 现 开 源 软 件 技 术 架 构 与 技 术 路 行 的 评 估 参 考 。开 放 源 代 码 软 件 与 传 统 非 开 放 源 码 软 件 的 重 要 不 同 点 在 于 其 技 术 方 案 和 源 代 码 的 开 放性 。 因 此 , 开 放 源 码 软 件 的 质 量 评 估 的 一 个 重 要 目 标 是 分 析 软 件 的 技 术 架 构 和 技 术 路 线 , 得出 软 件 在 架 构 的 合 理 性 、 技 术 路 线 的 可 行 性 、 技 术 的 先 进 性 等 方 面 的 评 估 看 法 , 使 得 评 估 能够 从 宏 观 上 , 从 技 术 上 对 软 件 的 成 熟 度 给 出 相 应 的 评 价 。 实 现 开 源 软 件 代 码 质 量 与 可 信 程 度 的 评 估 参 考开 放 源 码 软 件 对 于 评 估 人 来 说 最 大 的 好 处 是 , 可 以 直 接 阅 读 分 析 软 件 的 代 码 , 通 过 这 一最 直 接 的 方 式 , 我 们 可 以 得 出 准 确 的 、 公 正 的 判 定 。 因 此 , 提 供 对 代 码 质 量 和 代 码 可 信 度 的检 测 是 开 放 源 码 评 估 中 的 重 要 环 节 。 实 现 对 开 源 软 件 易 用 性 与 可 用 性 的 评 估 参 考软 件 易 用 性 和 可 用 性 的 评 估 是 任 何 软 件 成 熟 度 评 估 中 重 要 的 指 标 , 是 我 们 实 现 开 源 软 件第 2 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估成 熟 度 评 估 所 要 实 现 的 重 要 目 标 之 一 。 该 目 标 的 实 现 , 对 于 评 估 的 实 际 参 考 价 值 的 多 少 非 常重 要 , 是 用 户 及 其 系 统 集 成 商 重 点 关 注 的 内 容 。 实 现 开 源 软 件 应 用 成 熟 度 和 应 用 支 持 的 评 估 参 考软 件 应 用 的 成 熟 度 以 及 软 件 商 业 或 非 商 业 应 用 的 支 持 力 度 能 够 从 侧 面 反 映 软 件 的 发 展状 态 。 在 开 源 软 件 中 , 应 用 越 广 泛 , 社 区 支 持 或 商 业 支 持 越 好 的 软 件 能 够 吸 引 更 多 的 参 与 者 ,反 过 来 能 够 更 好 的 促 进 软 件 的 发 展 。 所 以 , 开 源 软 件 成 熟 度 评 估 所 要 达 到 的 一 个 重 要 目 标 是提 供 软 件 应 用 与 支 持 的 公 正 评 价 。 实 现 对 开 源 软 件 法 律 问 题 及 法 律 风 险 的 评 估由 于 开 放 源 代 码 软 件 可 能 采 用 多 种 版 权 协 议 , 某 些 软 件 有 可 能 或 有 潜 在 的 可 能 性 涉 及 其它 版 权 协 议 或 技 术 专 利 等 问 题 需 要 我 们 加 以 评 估 , 是 否 会 对 软 件 的 发 展 形 成 正 面 的 或 负 面 的影 响 。第 3 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估开 源 软 件 成 熟 度 评 估 案 例根 据 以 上 描 述 , 我 们 初 步 制 定 了 一 个 适 合 于 开 放 源 代 码 软 件 成 熟 度 评 估 的 评 价 体 系 和 实施 方 法 。 接 下 来 我 们 将 通 过 两 个 案 例 说 明 我 们 的 评 价 体 系 是 如 何 工 作 的 。 我 们 选 取 两 个 软 件进 行 评 估 , 分 别 是 OpenOffice 和 Heartbeat。 这 两 个 软 件 , 前 者 面 向 于 桌 面 应 用 , 提 供 完整 的 办 公 处 理 软 件 , 是 开 源 领 域 中 这 类 软 件 中 的 佼 佼 者 。 后 者 为 面 向 服 务 器 的 高 可 用 集 群 软件 , 在 服 务 器 领 域 和 商 业 环 境 中 有 广 泛 的 应 用 。 从 这 些 软 件 的 案 例 评 估 当 中 可 以 看 到 , 我 们的 评 估 体 系 会 对 不 同 类 别 的 软 件 做 针 对 性 判 别 , 从 而 得 出 基 于 该 类 软 件 的 可 比 较 的 评 估 结果 。技 术 架 构 分 析 和 代 码 评 测 是 开 源 软 件 成 熟 度 评 估 中 最 重 要 、 也 是 区 别 于 传 统 商 业 软 件 评估 最 有 特 色 的 部 分 。 我 们 将 做 重 点 说 明 。 其 中 , 代 码 评 测 的 结 果 我 们 在 附 录 中 做 完 整 的 发 布 。Heartbeat 软 件 成 熟 度 评 估 报 告Heartbeat 软 件 介 绍Heartbeat 是 Linux-HA 开 源 项 目 发 布 的 高 可 靠 应 用 环 境 集 群 服 务 的 核 心 软 件 。 从 1998年 创 建 以 来 到 现 在 , 历 经 1.0.x,1.2.x, 2.1.x 等 多 个 版 本 , 在 全 球 开 源 HA 领 域 具 有 举 足轻 重 的 知 名 度 , 应 用 日 益 广 泛 , 并 且 得 到 了 众 多 主 流 Linux 操 作 系 统 厂 商 的 支 持 。 在Linux-HA 中 heartbeat 负 责 节 点 健 康 信 息 检 测 、 可 靠 的 节 点 间 通 讯 和 集 群 管 理 等 工 作 。 它拥 有 一 个 高 度 可 定 制 的 软 件 体 系 结 构 , 安 全 的 通 讯 保 障 机 制 和 广 泛 的 跨 平 台 移 植 性 。早 期 ,heartbeat 主 要 被 设 计 用 来 配 置 双 机 热 备 功 能 的 系 统 软 件 。 系 统 由 两 台 服 务 器 构成 , 一 台 为 工 作 服 务 器 , 另 一 台 为 备 份 机 。 该 软 件 通 过 心 跳 检 测 协 议 在 两 台 服 务 器 间 通 讯 ,检 测 系 统 的 健 康 状 况 。 当 工 作 服 务 器 down 机 时 , 软 件 会 自 动 检 测 到 , 并 将 原 来 工 作 机 上 的相 关 服 务 转 移 到 备 份 机 上 , 从 而 对 外 达 到 服 务 不 间 断 的 能 力 。 随 着 高 可 用 系 统 技 术 的 不 断 发展 , 以 及 Linux 下 对 高 可 靠 应 用 机 器 软 件 的 需 求 , 软 件 创 始 人 Alan Robertson 联 合 一 些 其它 社 区 技 术 人 员 重 新 设 计 了 软 件 架 构 , 成 功 的 扩 展 了 原 有 软 件 的 功 能 和 结 构 , 使 它 能 够 不 断满 足 用 户 新 的 需 求 。 新 增 加 的 功 能 中 包 括 提 供 多 于 两 个 节 点 集 群 的 支 持 , 系 统 应 用 的 健 康 检测 , 网 络 连 接 的 健 康 检 测 ,STONITH 设 备 的 支 持 等 功 能 , 还 提 供 了 一 组 集 群 管 理 工 具 。可 以 说 ,Heartbeat 的 产 生 和 发 展 是 一 个 典 型 的 Open Source 软 件 的 案 例 。 该 软 件 所 应用 的 体 系 架 构 OCF(Open Cluster Framework) 就 是 开 源 社 区 合 作 的 结 晶 , 并 努 力 使 其 成 为一 个 非 排 他 的 国 际 标 准 。 在 开 发 当 中 更 体 现 了 开 放 源 代 码 软 件 发 展 的 特 点 , 开 发 者 分 布 在 美国 、 欧 洲 、 日 本 和 中 国 。 开 发 者 平 时 通 过 email、mail list、IRC 进 行 交 流 , 每 年 还 会 有 一些 定 期 或 不 定 期 的 会 议 讨 论 项 目 的 主 要 事 项 。 项 目 采 取 CVS 系 统 进 行 代 码 管 理 , 项 目 有 专 门的 CVS 管 理 者 , 代 码 开 发 经 过 几 次 代 码 规 范 行 动 , 程 序 质 量 较 好 , 并 有 较 好 的 代 码 注 释 。Heartbeat 项 目 有 一 个 完 善 的 服 务 网 站 , 用 户 和 第 三 方 开 发 者 几 乎 可 以 从 网 站 上 找 到 所 有 他们 需 要 的 信 息 , 包 括 下 载 该 软 件 。 软 件 的 信 息 能 够 即 时 更 新 , 使 用 帮 助 文 档 较 丰 富 , 更 新 比较 即 时 , 但 文 档 的 组 织 还 不 够 清 晰 。 对 于 第 三 方 开 发 者 或 希 望 加 入 该 社 区 的 开 发 者 ,maillist 是 他 们 最 好 的 工 具 , 该 项 目 中 mail list 的 活 跃 程 度 很 高 , 大 多 数 问 题 都 能 得 到 即 时第 4 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估有 效 的 解 答 。Mail list 按 照 使 用 者 和 开 发 者 进 行 了 简 单 分 类 。 近 年 来 , 该 项 目 得 到 了 越 来越 多 厂 商 的 重 视 和 支 持 , 尤 其 是 IBM 对 该 项 目 进 行 了 直 接 的 人 员 支 持 。 在 市 场 化 方 面 , 国 内外 已 有 的 多 个 HA 软 件 都 是 基 于 该 软 件 构 造 的 , 其 中 包 括 : RedHat Cluster, Redflag HA 系统 等 。 该 软 件 本 身 也 被 应 用 的 了 许 多 商 业 领 域 。 不 难 看 出 , 正 是 由 于 该 软 件 具 有 良 好 的 技 术架 构 设 计 和 应 用 前 景 , 才 不 断 推 动 社 区 和 厂 商 的 参 与 , 使 之 成 为 一 个 优 秀 的 开 放 源 代 码 软 件 。Heartbeat 架 构 描 述Heartbeat 软 件 的 架 构 设 计 基 本 遵 循 OCF(Open Cluster Framework) 的 技 术 规 范 , 着眼 于 将 软 件 发 展 成 为 一 个 开 放 的 集 群 体 系 , 软 件 按 照 OCF 规 范 的 要 求 定 义 了 一 系 列 集 群 技 术组 件 模 块 , 初 步 实 现 了 应 用 机 器 的 基 本 功 能 。 接 下 来 我 们 将 列 出 软 件 中 的 主 要 模 块 。图 Heartbeat 软 件 架 构 设 计 图第 5 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估Heartbeat 软 件 的 主 要 组 件 模 块 :heartbeat – 强 认 证 通 讯 模 块 。Heartbeat 能 够 相 对 可 靠 的 在 小 于 0.5 妙 时 间 内 检 测 到 任 何节 点 的 失 败 事 件 。 通 过 使 用 低 延 迟 补 丁 程 序 , 时 间 还 会 更 小 。Heartbeat 拥 有 一 层 API, 它们 提 供 诸 如 集 群 内 通 讯 、 发 送 和 接 受 数 据 给 集 群 节 点 、 配 置 查 询 、 状 态 查 询 等 服 务 。CRM - 集 群 资 源 管 理 器 - 集 群 资 源 管 理 器 是 (CRM)Linux-HA 的 大 脑 。 它 维 护 资 源 配 置 、 决定 什 么 资 源 应 该 在 哪 里 运 行 、 怎 样 从 当 前 状 态 迁 移 到 他 们 应 该 运 行 的 状 态 另 外 , 它 监 督 LRM来 完 成 所 有 的 事 情 。CRM 与 系 统 中 的 每 个 组 件 交 互 : 使 用 心 跳 来 通 信 它 从 CCM 接 收 成 员 关 系 更 新 它 从 LRM 接 收 或 向 LRM 发 送 通 告 消 息 。 它 告 诉 Stonith 守 护 程 序 什 么 时 候 复 位 和 给 谁 复 位 它 使 用 日 志 守 护 程 序 来 做 日 志实 际 上 ,PE、TE 和 CIB 能 被 看 作 是 CRM 的 组 件 。 PE - CRM 策 略 引 擎 - 策 略 引 擎 的 最 初 目 标 是 从 当 前 状 态 计 算 转 换 图 。 这 个 转 换 图 考 虑了 资 源 的 当 前 位 置 和 状 态 、 节 点 的 可 用 性 和 当 前 的 静 态 配 置 ( 也 称 为CurrentClusterState). TE - CRM 转 换 引 擎 - 转 换 引 擎 通 过 PE 来 有 效 的 生 成 转 换 图 – 它 计 算 集 群 下 一 阶 段 的状 态 , 列 出 集 群 应 该 采 取 的 动 作 , 并 通 过 向 远 端 节 点 的 LRM 发 送 执 行 指 令 从 而 启 动 或 停止 相 应 的 资 源 。 CIB – 集 群 信 息 库 。CIB 是 一 个 对 集 群 资 源 和 节 点 信 息 进 行 自 动 备 份 的 数 据 库 , 这 些 信息 将 供 CRM 模 块 使 用 。 这 些 信 息 包 括 诸 如 依 赖 性 关 系 的 静 态 数 据 , 更 多 的 是 有 关 资 源 在哪 里 运 行 和 他 们 的 实 时 状 态 的 动 态 信 息 。 所 有 CIB 中 的 信 息 都 以 XML 格 式 存 储 。 为 此 ,我 们 声 明 了 一 个 定 义 当 前 所 有 CIB 管 辖 的 信 息 的 DTD 文 件 。 许 多 CRM 的 特 性 可 以 通 过 阅读 该 DTD 文 件 来 了 解 。CCM - 维 护 集 群 成 员 的 一 致 性 – 提 供 集 群 成 员 连 通 的 信 息 一 致 性 服 务 。 它 保 障 了 一 个 统 一的 成 员 信 息 中 的 某 个 节 点 以 和 自 身 实 际 信 息 相 符 和 的 方 式 与 其 它 节 点 通 讯 。 该 模 块 实 现 了OCF 成 员 关 系 API 和 SAF AIS 成 员 关 系 API 两 种 接 口 方 式 。 通 常 计 算 集 群 的 成 员 关 系 只 需 小于 1 秒 的 时 间 。第 6 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估LRM - 本 地 资 源 管 理 器 - 本 地 资 源 管 理 器 基 本 上 是 一 个 资 源 代 理 抽 象 。 它 直 接 通 过 CRM 来启 动 、 停 止 和 监 管 资 源 。Stonith - 守 护 进 程 - 提 供 节 点 复 位 服 务logd - 非 阻 塞 的 日 志 记 录 守 护 进 程申 请 时 , 未 能 办 理 登 机 手 续 , 与 它 在 其 指 定 的 时 间 , 有 兴 趣 参 加 的 人 士 , 通 知 及 ( 据 推 测 )的 复 苏 而 采 取 的 行 动 。 这 个 守 护 进 程 是 一 个 简 单 , 因 为 我 们 可 以 使 , 所 以 它 可 以 成 为 最 可 靠的 组 件 在 系 统 中 。 很 多 linux 哈 系 统 组 件 配 合 到 它 , 但 并 不 普 遍 , 使 在 外 地 写 本 。 它 将 登 记制 度 看 门 狗 定 时 器 , 如 果 要 求 这 样 做 。apphbd - 应 用 级 看 门 狗 定 时 器 服 务 - 应 用 心 跳 守 护 进 程 是 一 个 为 个 别 HA-aware 应 用 提 供看 门 狗 定 时 器 设 施 的 一 般 服 务 。 当 应 用 在 它 们 规 定 的 时 间 登 记 失 败 , 将 通 知 相 关 组 件 , 也 许还 会 恢 复 刚 才 采 取 的 行 动 。 这 个 守 护 进 程 很 简 单 , 因 为 我 们 可 以 构 建 它 , 所 以 它 是 系 统 中 最可 靠 的 组 件 。 很 多 Linux-HA 系 统 组 件 跟 它 连 接 , 但 在 本 文 中 它 并 没 有 被 普 遍 使 用 。 如 果 申请 的 话 , 它 将 登 记 系 统 看 门 狗 定 时 器 。恢 复 管 理 器 - 应 用 恢 复 服 务 - 当 一 个 进 程 没 有 心 跳 或 异 常 退 出 时 , 将 由 apphbd 通 知 恢 复管 理 器 守 护 进 程 , 然 后 采 取 行 动 杀 死 并 重 启 应 用 。体 系 架 构Heartbeat 成 功 开 发 的 关 键 在 于 拥 有 一 个 坚 固 的 了 、 灵 活 的 、 可 靠 的 通 用 软 件 架 构 。 所 有 主要 模 块 都 建 立 在 这 个 架 构 之 上 。该 架 构 有 若 干 关 键 组 件 : 一 个 灵 活 的 通 用 插 件 机 制 。 非 阻 塞 的 IPC 层 避 免 使 用 线 程 技 术 使 用 Glib mainloop 作 为 统 一 的 事 件 调 度 ( 分 发 ) 和 事 件 处 理 方 法 。 节 点 间 的 高 度 一 致 性 和 集 成 性 。 PILS – 插 件 和 接 口 加 载 系 统PILS 作 为 一 个 通 用 插 件 加 载 系 统 , 在 Linux-HA 项 目 中 被 广 泛 使 用 。 它 给 软 件 带 来 巨 大的 灵 活 性 和 能 力 , 并 尽 可 能 简 化 核 心 系 统 的 大 小 。 它 改 善 了 那 些 使 用 插 件 机 制 的 子 系 统 的 结构 , 并 减 少 Linux-HA 在 宿 主 系 统 上 的 资 源 使 用 。第 7 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估插 件 机 制 一 般 不 提 供 给 非 核 心 组 件 使 用 。 当 前 使 用 插 件 机 制 的 领 域 有 : 通 讯 模 块 、 认 证模 块 、STONITH, 资 源 代 理 模 块 、 压 缩 模 块 和 apphbd 的 通 告 方 法 。IPC 库 , 所 有 进 程 间 通 讯 都 使 用 一 个 非 常 通 用 的 IPC 库 , 通 过 使 用 一 个 灵 活 的 排 队 策 略它 提 供 了 进 程 间 的 非 阻 塞 访 问 机 制 , 同 时 包 含 了 集 成 的 流 控 制 能 力 。 目 前 这 一 IPC API 使 用UNIX (Local) Domain sockets 技 术 实 现 。 它 还 包 含 了 在 进 程 间 认 证 和 授 权 的 方 法 , 该 方 法能 够 移 植 到 大 多 数 支 持 POSIX 标 准 的 系 统 上 。集 群 Plumbing 库 , 该 库 是 一 系 列 非 常 有 用 的 功 能 函 数 的 集 合 , 它 为 众 多 模 块 提 供 各 种 服 务 。其 中 主 要 包 括 : 压 缩 功 能 API 非 阻 塞 日 志 API 不 间 断 运 行 服 务 的 内 存 管 理 功 能 统 一 信 号 处 理 – 允 许 信 号 作 为 mainloop 事 件 工 作 。 Core dump 管 理 工 具 – 在 各 种 环 境 中 以 统 一 的 方 式 捕 获 core dump 信 息 子 进 程 管 理 – 一 个 进 程 的 非 正 常 中 断 将 导 致 模 块 发 起 一 个 可 定 制 的 death-of-child消 息 。 Realtime management – 设 置 或 取 消 进 程 的 高 优 先 权 。 64-bit HZ-granularity 时 间 操 作 (longclock_t) 出 于 安 全 目 的 的 用 户 ID 管 理 – 主 要 针 对 那 些 需 要 root 用 户 权 限 的 进 程 。 集 成 了 Mainloop 的 IPC, 文 件 描 述 符 , 信 号 等 事 件 处 理 。 这 意 味 着 所 有 这 些 不 同 的 事 件源 会 被 统 一 的 管 理 与 分 发 。 集 群 测 试 系 统集 群 测 试 系 统 (CTS) 是 heartbeat 开 发 中 低 错 误 率 的 主 要 保 障 。 简 单 说 CTS 在 一 个 集 群系 统 中 进 行 自 动 的 随 机 压 力 测 试 。 在 实 践 中 我 们 证 明 它 是 一 个 非 常 有 效 的 工 具 。 它 工 作 的 基本 策 略 是 : beat the software to death. 这 种 测 试 有 时 也 称 为 Bamm-Bamm 测 试 。 使 用 GlibLinux-HA 项 目 广 泛 的 使 用 了 Glib 库 第 二 版 , 特 别 是 mainloop 事 件 处 理 架 构 上 更 是 如 此 。而 对 mainloop 架 构 的 使 用 使 得 集 群 内 的 许 动 工 作 变 得 更 容 易 , 更 统 一 。 同 时 它 可 以 使 我 们避 免 使 用 线 程 机 制 所 带 来 的 移 植 性 和 调 试 上 的 困 难 。分 析 结 论本 软 件 虽 然 由 C 语 言 写 成 , 但 程 序 的 构 造 多 参 考 面 向 对 象 的 设 计 。 整 个 程 序 架 构 完 整 ,结 构 灵 活 , 可 移 植 性 较 强 。 软 件 的 设 计 者 不 仅 为 用 户 停 工 了 丰 富 的 功 能 , 而 且 在 各 个 层 面 都为 程 序 的 可 扩 展 性 和 部 署 的 灵 活 性 留 下 接 口 。 对 核 心 的 扩 成 可 以 使 用 插 件 机 制 ; 对 功 能 的 扩充 可 以 使 用 HBC 架 构 , 而 该 架 构 的 进 程 间 通 讯 基 于 网 络 协 议 , 从 而 可 以 方 便 的 将 部 署 从 进 程间 扩 展 为 节 点 间 。 在 软 件 的 应 用 层 面 上 , 用 户 可 以 通 过 加 入 自 定 义 系 统 脚 本 , 使 软 件 部 署 适应 各 种 部 署 环 境 和 应 用 策 略 。第 8 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估软 件 的 配 置 完 全 依 赖 于 修 改 配 置 文 件 , 没 有 配 置 工 具 。 软 件 的 设 计 中 可 能 由 于 历 史 的 原因 , 资 源 切 换 和 改 变 事 件 有 多 个 切 入 点 , 不 利 于 系 统 的 扩 展 和 灵 活 应 用 ( 即 一 个 单 一 的 事 件处 理 入 口 对 软 件 是 必 要 的 )。 系 统 的 设 计 中 , 在 从 Partition 故 障 中 回 复 的 动 作 设 计 的 不 够灵 活 , 过 于 简 单 , 也 没 有 为 扩 充 留 下 相 应 的 接 口 或 介 入 点 。Heartbeat 软 件 代 码 质 量 评 测 报 告评 测 工 具 介 绍源 代 码 质 量 管 理 工 具 , 可 集 成 各 种 源 代 码 静 态 分 析 工 具 , 支 持 c/c++,java,php,pthyon等 语 言 , 通 过 该 工 具 可 以 了 解 源 代 码 的 包 括 缺 陷 、 漏 洞 等 质 量 情 况 , 以 及 代 码 行 , 架 构 等 软件 度 量 信 息 , 帮 助 了 解 整 体 代 码 的 成 熟 度 。 主 要 特 点 为 代 码 覆 盖 : 通 过 单 元 测 试 , 将 会 显 示哪 行 代 码 被 选 中 ; 改 善 编 码 规 则 ; 搜 寻 编 码 规 则 : 按 照 名 字 , 插 件 , 激 活 级 别 和 类 别 进 行 查询 ; 项 目 搜 寻 : 按 照 项 目 的 名 字 进 行 查 询 ; 对 比 数 据 : 比 较 同 一 张 表 中 的 任 何 测 量 的 趋 势 ;软 件 缺 陷 检 测提 供 多 角 度 的 各 种 缺 陷 类 型 分 析 。 自 动 化 的 缺 陷 检 测 功 能 易 于 使 用 , 定 制 灵 活 , 具 有 图形 化 的 构 建 和 报 表 管 理 图 形 界 面 , 拥 有 先 进 的 消 息 过 虑 器 , 强 大 的 学 习 调 整 知 识 库 。Klocwork能 够 分 析 C/C++ 和 Java 代 码 , 生 成 代 码 问 题 报 告 。安 全 漏 洞 检 测软 件 安 全 性 时 软 件 质 量 中 一 个 重 要 的 、 并 越 来 越 收 到 重 视 的 方 面 。Klocwork 安 全 漏 洞分 析 基 于 其 先 进 的 软 件 缺 陷 分 析 能 力 , 分 离 出 单 独 的 安 全 漏 洞 和 违 反 推 荐 的 安 全 代 码 的 缺 陷程 序 。软 件 架 构 分 析通 过 架 构 分 析 能 够 使 设 计 人 员 及 开 发 人 员 重 新 认 识 他 们 对 该 软 件 的 架 构 理 解 , 并 结 合 代码 分 析 进 行 功 能 强 大 的 影 响 分 析 , 帮 助 开 发 人 员 找 出 软 件 的 架 构 可 能 会 对 高 质 量 代 码 的 开 发有 何 种 影 响 。软 件 度 量 分 析搜 集 统 计 软 件 的 代 码 信 息 , 比 如 , 文 件 数 , 代 码 行 数 , 代 码 复 杂 度 , 继 承 或 循 环 数 量 等 。帮 助 开 发 者 和 维 护 着 宏 观 上 掌 握 程 序 开 发 的 复 杂 度 , 便 于 有 针 对 性 的 进 行 代 码 管 理 。可 定 制 的 代 码 分 析许 多 组 织 有 自 己 独 特 的 编 码 标 准 、 安 全 策 略 和 质 量 目 标 。 可 利 用 klocwork 为 一 些 特 殊问 题 的 分 析 进 行 单 独 定 制 , 用 户 也 可 以 编 制 自 己 的 扩 展 检 查 器 来 完 成 特 定 任 务 。开 发 人 员 IDE 集 成klocwork 可 以 和 现 在 大 多 是 主 流 的 IDE 开 发 环 境 集 成 , 在 开 发 的 早 期 及 时 发 现 可 能 的 代 码漏 洞 从 而 有 效 降 低 开 发 成 本 。第 9 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估Project configuration details:Creation date: Oct 31, 2007Creation time: 1:55:39 PMSoftware Intelligence Engine version: 7.7.2.3Number of filter files used: 0Project name: heartbeatBuild name: build_1Total lines of code (Source LOC): 124,534Total lines of comments (in c/c++ files): 37,739Total number of files analyzed: 531Total number of defects: 1,887Total number of entities: 24,674Total number of relationships:Total number of functions / methods: 3,695Total number of classes / types: 1,520Error DistributionType # %Null pointer may be dereferenced 4 2.08Result of function that may return NULL 164 85.42will be dereferencedSuspicious dereference of pointer in 2 1.04function call before NULL checkMemory Leak - possible 2 1.04Pointer may be dereferenced after it was 2 1.04positively checked for NULLNull pointer may be passed to function 1 0.52that may dereference itNull pointer will be dereferenced 2 1.04Result of function that can return NULL 12 6.25may be dereferencedSuspicious dereference of pointer 2 1.04beforeNULL checkWarning Distribution第 11 页 共 25 页
Type # %Inconsistent Case Labels 1 0.52开 放 源 代 码 软 件 成 熟 度 评 估评 测 分 析通 过 对 heartbeat 模 块 的 分 析 , 我 们 得 出 评 测 结 论 。 代 码 的 整 体 风 格 统 一 , 格 式 工 整 ,总 体 质 量 较 好 。 程 序 结 构 复 杂 度 合 理 , 出 现 较 多 的 问 题 主 要 是 代 码 中 潜 在 的 对 NULL 对 象 的引 用 。 注 释 方 面 , 注 释 丰 富 , 每 个 程 序 文 件 有 基 本 说 明 , 某 些 重 要 的 代 码 有 详 细 解 释 , 给 社区 参 与 创 造 了 较 好 的 代 码 环 境 。软 件 测 试Heartbeat 项 目 没 有 专 门 的 Quality Assurance 组 织 , 但 项 目 中 有 几 位 成 员 主 要 负 责 软件 的 测 试 。 在 网 站 上 无 专 门 的 用 户 报 告 错 误 或 参 与 测 试 的 页 面 , 错 误 的 报 告 主 要 通 过 MailList 和 IRC 进 行 。 项 目 提 供 了 一 个 批 处 理 自 动 测 试 环 境 和 一 些 工 具 供 测 试 者 使 用 , 可 以 方便 的 对 软 件 的 主 要 模 块 进 行 自 动 仿 真 测 试 。 此 外 ,IBM 等 一 些 公 司 也 有 专 门 人 员 帮 助 测 试 和开 发 。Heartbeat 易 用 性 研 究Heartbeat 无 图 形 配 置 、 使 用 、 监 控 环 境 。 软 件 的 主 要 配 置 和 管 理 靠 修 改 配 置 文 件 进 行 ,不 过 , 软 件 提 供 了 一 些 功 能 丰 富 的 命 令 行 工 具 , 这 也 是 服 务 器 软 件 的 一 般 做 法 。 软 件 的 部 署和 配 置 非 常 灵 活 , 缺 点 是 缺 乏 好 的 监 控 工 具 。Heartbeat 可 用 性 性 研 究在 Linux-HA 中 heartbeat 负 责 节 点 健 康 信 息 检 测 、 可 靠 的 节 点 间 通 讯 和 集 群 管 理 等 工作 。 它 拥 有 一 个 高 度 可 定 制 的 软 件 体 系 结 构 , 安 全 的 通 讯 保 障 机 制 和 广 泛 的 跨 平 台 移 植 性 。首 先 , 通 过 上 面 对 heartbeat 架 构 设 计 的 介 绍 我 们 不 难 看 出 ,heartbeat 是 一 个 可 定 制 、可 扩 展 的 软 件 模 组 。 我 们 可 以 通 过 编 写 自 己 的 插 件 模 块 扩 展 诸 如 通 讯 、 认 证 等 功 能 。 由 于 插件 系 统 高 效 、 安 全 的 特 性 并 能 够 和 软 件 核 心 紧 密 的 集 成 , 所 以 可 以 有 效 支 持 一 些 核 心 应 用 的扩 展 。 同 时 对 于 核 心 外 围 应 用 的 扩 展 ,heartbeat 定 义 了 一 整 套 Client Application 应 用架 构 , 用 户 只 要 书 写 自 己 的 HBC(Heartbeat Client) 程 序 , 就 可 以 讲 用 户 定 制 的 新 功 能 集成 到 整 个 集 群 系 统 中 。Heartbeat 中 的 许 多 模 块 本 身 就 是 通 过 这 种 方 式 在 系 统 中 运 行 。 此 外 ,软 件 提 供 了 灵 活 的 脚 本 和 配 置 文 件 , 用 户 可 以 灵 活 的 配 置 系 统 , 或 将 自 己 的 脚 本 加 入 到 系 统运 行 中 去 。第 12 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估Heartbeat 提 供 了 一 些 认 证 机 制 , 例 如 :MD5,SHA 等 , 通 过 这 些 认 证 保 障 软 件 通 讯 的 可靠 性 和 节 点 身 份 的 真 实 性 。 当 然 ,Heartbeat 并 不 提 供 通 讯 数 据 的 高 强 度 加 密 , 这 一 功 能 它有 赖 于 系 统 的 其 它 网 络 安 全 加 密 模 块 来 完 成 。此 外 ,Heartbeat 具 有 良 好 的 跨 平 台 移 植 性 。 程 序 的 开 发 和 书 写 遵 守 Posix 标 准 等 国 际标 准 , 所 依 赖 的 第 三 方 库 , 如 glib、libnet, 也 都 有 较 好 的 平 台 可 移 植 性 。 所 以 ,heartbeat可 以 被 移 植 到 大 多 数 类 Unix 系 统 和 Mac 系 统 。 从 heartbeat 邮 件 列 表 的 统 计 中 可 以 看 出 ,当 前 稳 定 的 版 本 平 台 除 Linux 外 主 要 还 有 FreeBSD 和 Solaris。 另 外 ,windows 操 作 系 统 不在 该 软 件 的 支 持 范 围 内 。社 区 及 项 目 组 织Heartbeat 项 目 是 一 个 典 型 的 服 务 器 端 开 源 软 件 , 项 目 由 几 位 在 HA 应 用 集 群 领 域 活 跃的 软 件 作 者 主 持 , 项 目 借 助 网 络 , 如 Mail List,IRC, 论 坛 等 工 具 进 行 交 流 , 吸 引 大 量 参与 者 参 与 开 发 、 测 试 、 书 写 应 用 文 档 。 同 时 , 项 目 也 吸 引 了 一 些 公 司 的 支 持 与 参 与 。 该 项 目在 实 际 环 境 中 有 大 量 应 用 , 一 些 企 业 也 将 其 作 为 自 己 解 决 方 案 的 一 部 分 , 提 供 了 许 多 应 用 案例 , 取 得 大 量 反 馈 意 见 , 极 大 的 推 动 了 该 软 件 的 应 用 与 发 展 。License 问 题For libraries, which talk to the core modules via IPC or sockets or fork/exec, theyand the header files needed to interface to them should be LGPL.For plugins which are intended to be reusable, they should be licensed LGPL. Thisprobably includes most plugins.Core code which is not part of a public interface should be licensed GPL.软 件 成 熟 度 评 估软 件 成 熟 度 属 性 定 义 与 量 化ID Class Name Weight01 技 术 架 构 设 计 402 代 码 质 量 403 软 件 易 用 性 104 软 件 可 用 性 405 项 目 建 设 与 管 理 206 项 目 的 活 跃 程 度 407 项 目 测 试 情 况 2第 13 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估第 18 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估第 20 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估第 21 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估第 22 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估第 23 页 共 25 页
开 放 源 代 码 软 件 成 熟 度 评 估第 24 页 共 25 页