软 件 工 程 思 想 林 锐
序 软 件 工 程 思 想 讲 述 软 件 开 发 和 做 程 序 员 的 道 理, 视 野 独 特, 构 思 新 颖, 内 容 风 趣, 不 落 窠 臼, 令 人 耳 目 一 新 堪 称 难 得, 以 至 回 味 无 穷 作 者 从 事 了 八 年 的 软 件 开 发 工 作, 在 他 的 博 士 学 位 论 文 完 成 之 际 写 下 了 这 本 心 之 所 感 虽 然 它 探 讨 的 是 软 件 工 程 最 常 见 的 内 容, 但 他 将 亲 身 所 历 的 感 悟 写 成 活 泼 生 动 的 文 字, 将 软 件 工 程 的 很 多 原 则 和 方 法 融 于 笑 谈 之 中, 让 人 看 得 轻 松, 时 有 共 鸣 尽 管 很 薄, 然 其 内 涵 不 逊 于 厚 近 千 页 的 有 关 教 科 书 每 次 回 浙 大 我 都 要 和 林 锐 相 聚, 谈 学 术 论 社 会, 直 面 人 生, 位 卑 未 敢 忘 忧 国, 每 每 至 凌 晨 前 不 久 我 在 某 大 学 计 算 机 系 作 讲 座, 最 后 冒 昧 谈 了 几 句 题 外 话, 其 中 之 一 是 学 问 与 明 理 古 人 云 : 读 书 明 理, 意 即 读 书 要 明 白 做 人 的 道 理 我 以 为 其 中 的 重 要 内 涵, 是 要 有 积 极 的 人 生 观, 以 贡 献 社 会 为 己 任 这 也 是 我 们 的 共 识 林 锐 曾 立 誓 做 一 名 真 实 正 直 优 秀 的 科 技 人 员 他 在 自 己 困 难 的 时 候 依 然 资 助 数 名 贫 困 中 学 生 和 大 学 生 ; 常 常 躬 身 拾 捡 被 乱 扔 于 地 的 废 纸 塑 料 袋, 以 示 后 生 这 都 会 使 很 多 的 学 人 汗 颜 有 加 简 言 之, 林 锐 对 软 件 工 程 实 践 的 积 极 思 考 轻 快 而 不 失 深 邃 的 文 笔 及 其 言 行, 都 是 出 色 之 处 正 由 于 此, 而 不 仅 因 为 是 同 行, 我 才 不 惭 浅 陋, 接 受 他 的 要 求, 荣 幸 地 成 为 本 书 的 第 一 位 读 者, 并 在 本 来 应 是 名 人 大 家 留 文 的 地 方 谈 林 说 森 董 军, 2000 年 2 月 于 朝 夕 室
前 言 在 60 年 代 计 算 机 发 展 初 期, 程 序 设 计 是 少 数 聪 明 人 干 的 事 他 们 的 智 力 与 技 能 超 群, 编 写 的 程 序 既 能 控 制 弱 智 的 计 算 机, 又 能 让 别 人 看 不 懂 不 会 用 那 个 时 期 编 程 就 跟 捏 泥 巴 一 样 随 心 所 欲, 于 是 他 们 很 过 分 地 把 程 序 的 集 合 称 为 软 件, 以 便 自 己 开 心 或 伤 心 时 再 把 程 序 捏 个 面 目 全 非 人 们 就 在 这 种 美 滋 滋 的 感 觉 下 热 情 地 编 程, 结 果 产 生 了 一 堆 问 题 : 程 序 质 量 低 下, 错 误 频 出, 进 度 延 误, 费 用 剧 增 这 些 问 题 导 致 了 软 件 危 机 在 1968 年, 一 群 程 序 员 计 算 机 科 学 家 与 工 业 界 人 士 聚 集 一 起 共 商 对 策 通 过 借 鉴 传 统 工 业 的 成 功 做 法, 他 们 主 张 通 过 工 程 化 的 方 法 开 发 软 件 来 解 决 软 件 危 机, 并 冠 以 软 件 工 程 这 一 术 语 三 十 年 余 年 来, 尽 管 软 件 的 一 些 毛 病 如 人 类 的 感 冒 一 样 无 法 根 治, 但 软 件 的 发 展 速 度 超 过 了 任 何 传 统 工 业, 期 间 并 未 出 现 真 真 的 软 件 危 机 这 的 确 是 前 人 的 先 见 之 明 如 今 软 件 工 程 成 了 一 门 学 科 软 件 工 程 主 要 讲 述 软 件 开 发 的 道 理, 基 本 上 是 软 件 实 践 者 的 成 功 经 验 和 失 败 教 训 的 总 结 软 件 工 程 的 观 念 方 法 策 略 和 规 范 都 是 朴 实 无 华 的, 平 凡 之 人 皆 可 领 会, 关 键 在 于 运 用 我 们 不 可 以 把 软 件 工 程 方 法 看 成 是 诸 葛 亮 的 锦 囊 妙 计 在 出 了 问 题 后 才 打 开 看 看, 而 应 该 事 先 掌 握, 预 料 将 要 出 现 的 问 题, 控 制 每 个 实 践 环 节, 并 防 患 于 未 然 研 究 软 件 工 程 永 远 做 不 到 理 论 家 那 么 潇 洒 : 定 理 证 明 了, 就 完 事 我 在 读 大 学 的 十 年 里 有 八 年 从 事 软 件 开 发, 尽 管 编 写 了 几 十 万 行 C++/C 程 序, 也 经 历 了 若 干 次 小 不 点 儿 大 的 成 功 和 失 败, 可 老 感 觉 只 学 了 些 皮 毛, 心 里 慌 兮 兮 的 在 博 士 研 究 生 毕 业 前 的 半 年 里, 我 告 戒 自 己 不 应 该 再 稀 里 糊 涂 地 在 程 序 堆 里 滚 爬 下 去 了, 于 是 就 面 壁 反 省, 做 了 一 阵 子 木 讷 的 和 尚 在 打 坐 时, 每 有 心 得 体 会 便 记 录 下 来, 不 知 不 觉 凑 成 了 八 章 经, 我 就 给 此 经 书 起 名 为 软 件 工 程 思 想 经 典 的 软 件 工 程 书 籍 厚 得 象 砖 头, 或 让 人 望 而 却 步, 或 让 人 看 了 心 事 重 重 请 宽 恕 我 的 幼 稚, 我 试 图 用 三 个 问 题 : 是 什 么 为 什 么 怎 么 办, 来 解 释 软 件 工 程 的 道 理 所 以 本 书 薄 得 象 饺 子 皮 用 来 包 思 想 这 种 有 味 道 的 馅 本 书 的 八 章 经 分 别 为 : 第 一 章 软 件 工 程 基 本 观 念 ; 第 二 章 程 序 员 与 程 序 经 理 ; 第 三 章 项 目 计 划 与 质 量 管 理 ; 第 四 章 可 行 性 分 析 与 需 求 分 析 ; 第 五 章 系 统 设 计 ; 第 六 章 C++ 面 向 对 象 程 序 设 计 ; 第 七 章 测 试 与 改 错 ; 第 八 章 维 护 与 再 生 工 程 附 录 大 学 十 年 可 以 充 当 饭 后 的 水 果 我 偶 尔 也 担 心 此 书 写 得 太 肤 浅, 内 容 少 得 可 怜 就 象 一 只 鸡 在 水 里 扑 腾 了 几 下, 并 不 能 产 生 美 味 的 鸡 汤 但 是 如 果 您 化 了 几 分 钟 时 间 翻 阅 本 书 的 任 意 章 节, 您 马 上 就 愿 意 再 化 几 个 小 时 一 口 气 读 完 全 书, 并 且 乐 得 直 拍 桌 子 : 好! 很 好! 非 常 好! 您 可 以 把 这 本 科 技 书 当 小 说 看, 但 在 看 书 时 请 不 要 吃 东 西, 免 得 喷 了 别 人 或 者 呛 着 自 己 如 果 您 买 了 本 书 后 觉 得 不 值 得, 我 一 定 赔 偿 您 的 损 失
致 谢 本 书 并 不 属 于 我 博 士 学 位 论 文 的 研 究 范 畴, 但 却 是 我 读 博 士 学 位 三 年 来 写 的 最 有 意 思 的 作 品 首 先 要 感 谢 我 的 导 师, 浙 江 大 学 计 算 机 辅 助 设 计 与 图 形 学 (CAD&CG) 国 家 重 点 实 验 室 的 石 教 英 教 授 在 其 他 师 兄 弟 正 儿 八 经 地 攻 读 博 士 学 位 时, 我 不 务 正 业 地 开 了 一 家 软 件 公 司 当 我 摔 了 一 个 大 跟 头 灰 溜 溜 地 回 到 陌 生 的 实 验 室 时, 石 老 师 仍 然 热 情 地 帮 助 我 修 成 正 果 临 近 毕 业, 我 心 中 惭 愧, 三 年 来 我 从 来 都 没 给 石 老 师 干 过 活, 我 这 个 博 士 生 他 算 是 白 招 了 我 很 希 望 大 学 里 多 一 些 象 石 老 师 那 样 开 明 而 大 度 的 导 师 董 军 博 士 是 本 书 的 第 一 位 读 者 我 们 是 君 子 之 交 却 不 淡 如 水, 除 了 漆 夜 长 谈 科 技 艺 术 哲 学 外, 还 不 忘 吃 喝 玩 乐 享 受 生 活 他 在 品 阅 的 同 时 完 成 了 审 稿 工 作 彭 小 澎 好 学 上 进, 尽 管 她 执 教 的 是 艺 术 课 程, 却 很 想 再 学 点 自 然 科 学 她 常 听 我 聊 侃 软 件 工 程, 不 知 不 觉 成 了 本 书 的 第 二 位 读 者 她 看 书 时 只 会 哼 哈, 从 未 有 沉 思 状, 估 计 啥 也 没 看 懂 小 澎 是 个 天 真 未 泯 的 大 孩 子, 和 我 称 兄 道 弟, 给 我 带 来 了 很 多 快 乐 有 一 天 中 午, 我 们 把 浙 江 大 学 校 门 口 草 坪 上 的 垃 圾 捡 得 干 干 净 净, 俩 人 无 上 光 荣 我 希 望 小 澎 早 日 荣 升 讲 师, 再 恭 敬 地 叫 她 彭 老 师 北 京 因 特 国 风 网 络 软 件 公 司 的 周 鸿 一 是 个 真 正 的 软 件 高 手 他 在 我 开 发 软 件 产 品 失 败 时 给 予 了 最 多 的 帮 助, 并 指 正 我 在 软 件 设 计 中 存 在 的 根 深 蒂 固 的 方 法 错 误, 使 我 能 尽 早 地 逐 步 改 正 我 平 时 能 说 会 道, 但 在 他 面 前 我 哑 口 无 言 只 有 听 的 份, 因 为 他 的 才 华 已 全 方 位 地 超 过 了 我 我 真 希 望 多 结 识 象 他 这 样 的 朋 友 高 振 华 老 先 生 是 个 糊 涂 而 可 爱 的 民 营 企 业 家, 我 们 是 忘 年 交 我 把 他 干 的 糊 涂 事 ( 投 资 软 件 公 司 ) 写 进 书 里, 作 为 可 行 性 分 析 的 案 例 高 先 生 给 予 我 经 济 上 的 帮 助, 使 我 能 够 在 舒 适 的 环 境 中 开 展 最 后 一 年 博 士 学 位 论 文 工 作 尽 管 我 读 书 的 工 资 每 月 只 有 300 元, 但 日 子 过 得 象 神 仙 一 样 舒 服 浙 江 大 学 计 算 机 系 的 杨 孟 洲 周 昆 曾 震 宇 杨 建 白 云 金 锋 等 同 学 和 我 合 作 开 发 软 件, 给 了 我 很 多 技 术 上 的 帮 助 我 对 他 们 深 表 感 谢 特 别 感 谢 父 母 给 我 起 了 很 好 听 的 名 字 读 了 十 年 大 学, 现 在 我 差 不 多 名 副 其 实 了 林 锐,2000 年 2 月 于 浙 江 大 学 CAD&CG 国 家 重 点 实 验 室
目 录 第 一 章 软 件 工 程 基 本 观 念 1.1 软 件 工 程 的 目 标 与 常 用 模 型 1.2 软 件 开 发 的 基 本 策 略 1.2.1 复 用 1.2.2 分 而 治 之 1.2.3 优 化 折 衷 1.3 一 些 不 正 确 的 观 念 1.4 一 些 有 争 议 的 观 念 1.5 小 结 第 二 章 程 序 员 与 程 序 经 理 2.1 了 解 程 序 员 2.2 了 解 程 序 经 理 2.3 程 序 员 升 为 经 理 后 是 否 还 要 编 程 2.4 经 理 与 技 术 队 伍 的 建 设 2.5 向 错 误 与 失 败 学 习 2.6 提 高 综 合 素 责 2.7 小 结 第 三 章 项 目 计 划 与 质 量 管 理 3.1 项 目 计 划 3.1.1 知 己 知 彼 3.1.2 进 度 安 排 3.2 零 缺 陷 质 量 管 理 的 观 念 3.2.1 高 目 标 3.2.2 可 执 行 的 规 范 3.3 软 件 的 质 量 因 素 3.3.1 正 确 性 与 精 确 性 3.3.2 性 能 与 效 率 3.3.3 易 用 性 3.3.4 可 理 解 性 与 简 洁 性 3.3.5 可 复 用 性 与 可 扩 充 性 3.4 质 量 检 查 3.5 小 结 第 四 章 可 行 性 分 析 与 需 求 分 析 4.1 可 行 性 分 析 的 要 素 4.1.1 经 济 一 成 本 收 益 分 析 二 短 期 长 远 利 益 分 析 4.1.2 技 术
4.1.3 社 会 环 境 4.1.4 人 4.2 可 行 性 分 析 案 例 投 资 软 件 公 司 失 败 的 教 训 4.2.1 可 行 性 分 析 案 例 之 一 4.2.2 可 行 性 分 析 案 例 之 二 4.2.2 可 行 性 分 析 案 例 之 三 4.3 需 求 分 析 为 什 么 困 难 4.3.1 客 户 说 不 清 楚 需 求 4.3.2 需 求 自 身 经 常 变 动 4.3.3 分 析 人 员 或 客 户 理 解 有 误 4.4 如 何 进 行 需 求 分 析 4.4.1 应 该 了 解 什 么 4.4.2 通 过 什 么 方 式 去 了 解 4.5 小 结 第 五 章 系 统 设 计 5.1 体 系 结 构 设 计 5.1.1 层 次 结 构 一 上 下 级 关 系 的 层 次 结 构 二 顺 序 相 邻 关 系 的 层 次 结 构 三 其 它 的 层 次 结 构 5.1.2 Client/Server 结 构 5.2 模 块 设 计 5.2.1 信 息 隐 藏 5.2.2 内 聚 与 耦 合 5.2.3 封 闭 开 放 性 5.3 数 据 结 构 与 算 法 设 计 5.4 用 户 界 面 设 计 5.4.1 界 面 设 计 中 美 的 需 求 与 导 向 作 用 5.4.2 界 面 美 的 内 涵 一 界 面 的 合 适 性 二 界 面 的 风 格 三 界 面 的 广 义 美 5.5 系 统 设 计 示 例 支 持 协 同 工 作 的 交 互 式 三 维 图 形 软 件 开 发 系 统 5.6 小 结 5.5.1 设 计 背 景 5.5.2 通 用 交 互 式 三 维 图 形 软 件 开 发 工 具 Intra3D 2.0 5.5.2.1 主 要 模 块 和 功 能 5.5.2.2 用 户 界 面 设 计 5.5.3 支 持 协 同 工 作 的 网 络 通 讯 开 发 系 统 CNC 1.0 5.5.3.1 CNC 客 户 程 序 的 API 设 计 5.5.3.2 CNC Server 的 设 计 5.5.4 应 用 示 例
第 六 章 C++ 面 向 对 象 程 序 设 计 6.1 C++ 面 向 对 象 程 序 设 计 的 重 要 概 念 6.1.1 类 与 对 象 6.1.2 继 承 与 组 合 6.1.3 虚 函 数 与 多 态 6.2 良 好 的 编 程 风 格 6.3 小 结 6.2.1 命 名 约 定 6.2.2 使 用 断 言 6.2.3 new delete 与 指 针 6.2.4 使 用 const 6.2.5 其 它 建 议 第 七 章 测 试 与 改 错 7.1 对 测 试 的 理 解 7.1.1 测 试 的 目 的 7.1.2 测 试 的 心 理 要 求 7.1.3 测 试 的 真 理 7.1.4 测 试 与 质 量 的 关 系 7.2 测 试 人 员 的 选 择 7.2.1 Microsoft 公 司 的 经 验 教 训 7.2.2 测 试 人 员 的 分 工 7.3 测 试 的 主 要 内 容 与 常 用 方 法 7.4 改 错 7.5 小 结 7.3.1 正 确 性 与 精 确 性 测 试 7.3.2 容 错 性 测 试 7.3.3 性 能 与 效 率 测 试 7.3.4 易 用 性 测 试 7.3.5 文 档 测 试 第 八 章 维 护 与 再 生 工 程 8.1 软 件 维 护 的 常 识 8.2 维 护 的 代 价 及 其 主 要 因 素 8.3 再 生 工 程 8.3.1 重 构 8.4 小 结 8.3.2 逆 向 工 程 8.3.3 前 向 工 程 参 考 文 献 附 录 : 大 学 十 年 后 记
第 一 章 软 件 工 程 基 本 观 念 本 章 讲 述 软 件 工 程 的 基 本 观 念, 是 关 于 软 件 工 程 宏 观 上 的 探 讨 如 果 你 是 软 件 公 司 的 老 板, 用 不 着 在 第 一 线 工 作, 那 么 看 这 一 章 就 够 了 但 你 一 定 要 让 员 工 们 相 信 不 停 地 工 作 是 人 生 最 大 的 快 乐, 并 且 让 他 们 把 本 书 看 完 1.1 节 讲 述 软 件 工 程 的 目 标 和 常 用 的 软 件 工 程 模 型 1.2 节 讲 述 软 件 开 发 的 基 本 策 略 : 复 用 分 而 治 之 优 化 折 衷, 有 助 于 指 导 实 践 者 选 择 方 法 和 产 生 新 方 法 1.3 节 例 举 一 些 不 正 确 的 观 念, 取 材 于 早 期 软 件 人 员 比 较 幼 稚 的 想 法, 初 学 者 可 以 引 以 为 戒 1.4 节 探 讨 一 些 有 争 议 的 观 念 看 完 本 章, 要 树 立 这 样 的 信 念 : 软 件 开 发 过 程 中 的 坎 坎 坷 坷, 仿 佛 只 是 人 脸 的 凹 凸 不 平, 用 热 水 毛 巾 一 把 就 可 抹 平 让 我 们 高 举 程 序 主 义 软 件 工 程 思 想 的 伟 大 旗 帜, 紧 密 团 结 在 以 Microsoft 为 核 心 的 软 件 公 司 周 围, 沿 着 比 尔 盖 茨 的 生 财 之 道, 不 分 白 天 黑 夜 地 编 程, 把 建 设 有 中 国 特 色 的 软 件 产 业 的 伟 大 事 业 全 面 推 向 21 世 纪 1.1 软 件 工 程 的 目 标 与 常 用 模 型 软 件 工 程 的 目 标 是 提 高 软 件 的 质 量 与 生 产 率, 最 终 实 现 软 件 的 工 业 化 生 产 质 量 是 软 件 需 求 方 最 关 心 的 问 题, 用 户 即 使 不 图 物 美 价 廉, 也 要 求 个 货 真 价 实 生 产 率 是 软 件 供 应 方 最 关 心 的 问 题, 老 板 和 员 工 都 想 用 更 少 的 时 间 挣 更 多 的 钱 质 量 与 生 产 率 之 间 有 着 内 在 的 联 系, 高 生 产 率 必 须 以 质 量 合 格 为 前 提 如 果 质 量 不 合 格, 对 供 需 双 方 都 是 坏 事 情 从 短 期 效 益 看, 追 求 高 质 量 会 延 长 软 件 开 发 时 间 并 且 增 大 费 用, 似 乎 降 低 了 生 产 率 从 长 期 效 益 看, 高 质 量 将 保 证 软 件 开 发 的 全 过 程 更 加 规 范 流 畅, 大 大 降 低 了 软 件 的 维 护 代 价, 实 质 上 是 提 高 了 生 产 率, 同 时 可 获 得 很 好 的 信 誉 质 量 与 生 产 率 之 间 不 存 在 根 本 的 对 立, 好 的 软 件 工 程 方 法 可 以 同 时 提 高 质 量 与 生 产 率 软 件 供 需 双 方 的 代 表 能 在 餐 桌 上 谈 笑 风 生, 归 功 于 第 一 线 开 发 人 员 的 辛 勤 工 作 质 量 与 生 产 率 的 提 高 就 指 望 程 序 员 与 程 序 经 理 对 开 发 人 员 而 言, 如 果 非 得 在 质 量 与 生 产 率 之 间 分 个 主 次 不 可, 那 么 应 该 是 质 量 第 一, 生 产 率 第 二 这 是 因 为 :(1) 质 量 直 接 体 现 在 软 件 的 每 段 程 序 中, 高 质 量 自 然 是 开 发 人 员 的 技 术 追 求, 也 是 职 业 道 德 的 要 求 (2) 高 质 量 对 所 有 的 用 户 都 有 价 值, 而 高 生 产 率 只 对 开 发 方 有 意 义 (3) 如 果 一 开 始 就 追 求 高 生 产 率, 容 易 使 人 急 功 近 利, 留 下 隐 患 宁 可 进 度 慢 些, 也 要 保 证 每 个 环 节 的 质 量, 以 图 长 远 利 益 软 件 的 质 量 因 素 很 多, 如 正 确 性, 性 能 可 靠 性 容 错 性 易 用 性 灵 活 性 可 扩 充 性 可 理 解 性 可 维 护 性 等 等 有 些 因 素 相 互 重 叠, 有 些 则 相 抵 触, 真 要 提 高 质 量 可 不 容 易 啊! 软 件 工 程 的 主 要 环 节 有 : 人 员 管 理 项 目 管 理 可 行 性 与 需 求 分 析 系 统 设 计 程 序 设 计 测 试 维 护 等, 如 图 1.1 所 示 人 员 管 理 项 目 管 理 可 行 性 与 系 统 程 序 测 维 需 求 分 析 设 计 设 计 试 护
图 1.1 软 件 工 程 的 主 要 环 节 软 件 工 程 模 型 建 议 用 一 定 的 流 程 将 各 个 环 节 连 接 起 来, 并 可 用 规 范 的 方 式 操 作 全 过 程, 如 同 工 厂 的 生 产 线 常 见 的 软 件 工 程 模 型 有 : 线 性 模 型 ( 图 1.2), 渐 增 式 模 型 ( 图 1.3), 螺 旋 模 型, 快 速 原 型 模 型, 形 式 化 描 述 模 型 等 等 [Pressmam 1999, Sommerville 1992] 可 行 性 与 系 统 程 序 测 维 需 求 分 析 设 计 设 计 试 护 图 1.2 软 件 工 程 的 线 性 模 型 时 间 可 行 性 与 系 统 程 序 测 维 需 求 分 析 设 计 设 计 试 护 可 行 性 与 系 统 程 序 测 维 需 求 分 析 设 计 设 计 试 护 进 度 图 1.3 软 件 工 程 的 渐 增 式 模 型 最 早 出 现 的 软 件 工 程 模 型 是 线 性 模 型 ( 又 称 瀑 布 模 型 ) 线 性 模 型 太 理 想 化, 太 单 纯, 已 不 再 适 合 现 代 的 软 件 开 发 模 式, 几 乎 被 业 界 抛 弃 偶 而 被 人 提 起, 都 属 于 被 贬 对 象, 未 被 留 一 丝 惋 惜 但 我 们 应 该 认 识 到, 线 性 是 人 们 最 容 易 掌 握 并 能 熟 练 应 用 的 思 想 方 法 当 人 们 碰 到 一 个 复 杂 的 非 线 性 问 题 时, 总 是 千 方 百 计 地 将 其 分 解 或 转 化 为 一 系 列 简 单 的 线 性 问 题, 然 后 逐 个 解 决 一 个 软 件 系 统 的 整 体 可 能 是 复 杂 的, 而 单 个 子 程 序 总 是 简 单 的, 可 以 用 线 性 的 方 式 来 实 现, 否 则 干 活 就 太 累 了 线 性 是 一 种 简 洁, 简 洁 就 是 美 当 我 们 领 会 了 线 性 的 精 神, 就 不 要 再 呆 板 地 套 用 线 性 模 型 的 外 表, 而 应 该 用 活 它 例 如 渐 增 式 模 型 实 质 就 是 分 段 的 线 性 模 型, 如 图 1.3 所 示 螺 旋 模 型 则 是 接 连 的 弯 曲 了 的 线 性 模 型 在 其 它 模 型 中 都 能 够 找 到 线 性 模 型 的 影 子 套 用 固 定 的 模 型 不 是 程 序 员 的 聪 明 之 举 比 如 程 序 设 计 与 测 试 之 间 的 关 系, 习 惯 上 总 以 为 程 序 设 计 在 先, 测 试 在 后, 如 图 1.4(a) 所 示 而 对 于 一 些 复 杂 的 程 序, 将 测 试 分 为 同 步 测 试 与 总 测 试 更 有 效, 如 图 1.4(b) 所 示 程 序 设 计 程 序 设 计 测 试 总 测 试 同 步 测 试 (a) 图 1.4 (a) 程 序 设 计 在 先 测 试 在 后 (b) (b) 测 试 分 为 同 步 测 试 与 总 测 试 不 论 是 什 么 软 件 工 程 模 型, 总 是 少 不 了 图 1.1 中 的 各 个 环 节 本 书 擗 开 具 体 的 软 件 工 程
模 型, 顺 序 讲 述 人 员 管 理 项 目 管 理 可 行 性 与 需 求 分 析 系 统 设 计 程 序 设 计 测 试, 以 及 维 护 与 再 生 工 程 其 中 程 序 设 计 部 分 以 C++/C 语 言 为 例 1.2 软 件 开 发 的 基 本 策 略 人 们 都 有 自 己 的 世 界 观 和 方 法 论, 能 自 然 而 然 地 运 用 于 生 活 和 工 作 中 同 样, 程 序 员 脑 子 里 的 软 件 工 程 观 念 会 无 形 地 支 配 其 怎 么 去 做 事 情 软 件 工 程 三 十 年 的 发 展, 已 经 积 累 了 相 当 多 的 方 法, 但 这 些 方 法 不 是 严 密 的 理 论 实 践 人 员 不 应 该 教 条 地 套 用 方 法, 更 重 要 的 是 学 会 选 择 合 适 的 方 法 和 产 生 新 方 法 有 谋 略 才 会 有 好 的 战 术 几 千 年 前, 我 们 的 祖 先 就 在 打 闹 之 际 写 下 了 很 多 心 得 体 会, 被 现 代 人 很 好 地 运 用 于 工 业 和 商 业 本 节 讲 述 软 件 开 发 中 的 三 种 基 本 策 略 : 复 用 分 而 治 之 优 化 折 衷 1.2.1 复 用 复 用 就 是 指 利 用 现 成 的 东 西, 文 人 称 之 为 拿 来 主 义 被 复 用 的 对 象 可 以 是 有 形 的 物 体, 也 可 以 是 无 形 的 成 果 复 用 不 是 人 类 懒 惰 的 表 现 而 是 智 慧 的 表 现 因 为 人 类 总 是 在 继 承 了 前 人 的 成 果, 不 断 加 以 利 用 改 进 或 创 新 后 才 会 进 步 所 以 当 我 们 欢 度 国 庆 时, 要 搞 清 楚 祖 国 远 不 止 50 岁, 我 们 今 天 享 用 到 的 财 富 还 有 上 下 五 千 年 人 民 的 贡 献 进 步 只 是 应 该 的, 不 进 步 则 就 可 耻 了 复 用 的 内 涵 包 括 了 提 高 质 量 与 生 产 率 两 者 由 经 验 可 知, 在 一 个 新 系 统 中, 大 部 分 的 内 容 是 成 熟 的, 只 有 小 部 分 内 容 是 创 新 的 一 般 地 可 以 相 信 成 熟 的 东 西 总 是 比 较 可 靠 的 ( 即 具 有 高 质 量 ), 而 大 量 成 熟 的 工 作 可 以 通 过 复 用 来 快 速 实 现 ( 即 具 有 高 生 产 率 ) 勤 劳 并 且 聪 明 的 人 们 应 该 把 大 部 分 的 时 间 用 在 小 比 例 的 创 新 工 作 上, 而 把 小 部 分 的 时 间 用 在 大 比 例 的 成 熟 工 作 中, 这 样 才 能 把 工 作 做 得 又 快 又 好 把 复 用 的 思 想 用 于 软 件 开 发, 称 为 软 件 复 用 据 统 计, 世 上 已 有 1000 亿 多 行 程 序, 无 数 功 能 被 重 写 了 成 千 上 万 次, 真 是 浪 费 哪 面 向 对 象 (Object Oriented) 学 者 的 口 头 禅 就 是 请 不 要 再 发 明 相 同 的 车 轮 子 了 将 具 有 一 定 集 成 度 并 可 以 重 复 使 用 的 软 件 组 成 单 元 称 为 软 构 件 (Software Component) 软 件 复 用 可 以 表 述 为 : 构 造 新 的 软 件 系 统 可 以 不 必 每 次 从 零 做 起, 直 接 使 用 已 有 的 软 构 件, 即 可 组 装 ( 或 加 以 合 理 修 改 ) 成 新 的 系 统 复 用 方 法 合 理 化 并 简 化 了 软 件 开 发 过 程, 减 少 了 总 的 开 发 工 作 量 与 维 护 代 价, 既 降 低 了 软 件 的 成 本 又 提 高 了 生 产 率 另 一 方 面, 由 于 软 构 件 是 经 过 反 复 使 用 验 证 的, 自 身 具 有 较 高 的 质 量 因 此 由 软 构 件 组 成 的 新 系 统 也 具 有 较 高 的 质 量 利 用 软 构 件 生 产 应 用 软 件 的 过 程 如 图 1.5 所 示 软 件 复 用 不 仅 要 使 自 己 拿 来 方 便, 还 要 让 别 人 拿 去 方 便, 是 拿 来 拿 去 主 义 面 向 对 象 方 法,Microsoft 公 司 的 COM 规 范 [Rogerson 1999], 都 能 很 好 地 用 于 实 现 大 规 模 的 软 件 复 用 应 用 软 件 定 义 所 需 查 询 软 构 存 在 提 取 构 件 用 构 件 建 系 统 构 件 件 库 造 新 分 解 集 合 创 建 新 构 件 软 件 构 件 不 存 在 图 1.5 利 用 软 构 件 生 产 应 用 软 件 的 过 程
1.2.2 分 而 治 之 分 而 治 之 是 指 把 一 个 复 杂 的 问 题 分 解 成 若 干 个 简 单 的 问 题, 然 后 逐 个 解 决 这 种 朴 素 的 思 想 来 源 于 人 们 生 活 与 工 作 的 经 验, 完 全 适 合 于 技 术 领 域 软 件 人 员 在 执 行 分 而 治 之 的 时 候, 应 该 着 重 考 虑 : 复 杂 问 题 分 解 后, 每 个 问 题 能 否 用 程 序 实 现? 所 有 程 序 最 终 能 否 集 成 为 一 个 软 件 系 统 并 有 效 解 决 原 始 的 复 杂 问 题? 复 杂 问 题 解 决 原 始 问 题 软 件 系 统 分 解 子 问 题 1 程 序 1 集 成 子 问 题 2 程 序 2 子 问 题 n 程 序 n 图 1.6 软 件 领 域 的 分 而 治 之 策 略 图 1.6 表 示 了 软 件 领 域 的 分 而 治 之 策 略 诸 如 软 件 的 体 系 结 构 设 计 模 块 化 设 计 都 是 分 而 治 之 的 具 体 表 现 软 件 的 分 而 治 之 不 可 以 硬 分 硬 治 不 像 为 了 吃 一 个 西 瓜 或 是 一 只 鸡, 挥 刀 斩 成 n 块, 再 把 每 块 塞 进 嘴 里 粉 碎 搅 拌, 然 后 交 由 胃 肠 来 消 化 吸 收, 象 征 复 杂 问 题 的 西 瓜 或 是 鸡 也 就 此 消 失 了 1.2.3 优 化 折 衷 软 件 的 优 化 是 指 优 化 软 件 的 各 个 质 量 因 素, 如 提 高 运 行 速 度, 提 高 对 内 存 资 源 的 利 用 率, 使 用 户 界 面 更 加 友 好, 使 三 维 图 形 的 真 实 感 更 强 等 等 想 做 好 优 化 工 作, 首 先 要 让 开 发 人 员 都 有 正 确 的 认 识 : 优 化 工 作 不 是 可 有 可 无 的 事 情, 而 是 必 须 要 做 的 事 情 当 优 化 工 作 成 为 一 种 责 任 时, 程 序 员 才 会 不 断 改 进 软 件 中 的 算 法, 数 据 结 构 和 程 序 组 织, 从 而 提 高 软 件 质 量 著 名 的 3D 游 戏 软 件 Quake, 能 够 在 PC 机 上 实 时 地 绘 制 高 度 真 实 感 的 复 杂 场 景 Quake 的 开 发 者 能 把 很 多 成 熟 的 图 形 技 术 发 挥 到 极 致, 例 如 把 Bresenham 画 线 多 边 形 裁 剪 树 遍 历 等 算 法 的 速 度 提 高 近 一 个 数 量 级 我 第 一 次 看 到 Quake 时 不 仅 感 到 震 动, 而 且 深 受 打 击 这 个 PC 游 戏 软 件 的 技 术 水 平 已 经 远 胜 于 我 所 见 识 到 的 国 内 领 先 的 图 形 学 相 关 科 研 成 果 这 对 我 们 日 益 盛 行 的 点 到 完 止 的 研 发 工 作 真 是 莫 大 的 讽 刺 所 以 当 我 们 开 发 的 软 件 表 现 出 很 多 不 可 救 药 的 病 症 时, 不 要 怨 机 器 差 真 的 是 我 们 自 己 没 有 把 工 作 做 好, 写 不 好 字 却 嫌 笔 钝 就 假 设 我 们 经 过 思 想 教 育 后, 精 神 抖 擞, 随 时 准 备 为 优 化 工 作 干 上 六 天 七 夜 但 愿 意 做 并 不 意 味 着 就 能 把 事 情 做 好 优 化 工 作 的 复 杂 之 处 是 很 多 目 标 存 在 千 丝 万 缕 的 关 系, 可 谓 数 不 清 理 还 乱 当 不 能 够 使 所 有 的 目 标 都 得 到 优 化 时, 就 需 要 折 衷 策 略 软 件 中 的 折 衷 策 略 是 指 通 过 协 调 各 个 质 量 因 素, 实 现 整 体 质 量 的 最 优 就 象 党 支 部 副 书 记 扮 演 和 事 佬 的 角 色 : 为 了 使 整 个 组 织 具 有 最 好 的 战 斗 力, 我 们 要 重 用 几 个 人, 照 顾 一 些 人, 在 万 不 得 已 的 情 况 下 委 屈 一 批 人 软 件 折 衷 的 重 要 原 则 是 不 能 使 某 一 方 损 失 关 键 的 职 能, 更 不 可 以 象 舍 鱼 而 取 熊 掌 那 样 抛 弃 一 方 例 如 3D 动 画 软 件 的 瓶 颈 通 常 是 速 度, 但 如 果 为 了 提 高 速 度 而 在 程 序 中 取 消 光 照 明 计 算, 那 么 场 景 就 会 丧 失 真 实 感,3D 动 画 也 就 不 再 有 意 义 了 ( 如 果 人 类 全 是 色 盲, 计 算 机 图 形 学 将 变 得 异 常 简 单 ) 人 都 有 惰 性, 如 果 允 许 滥 用 折 衷 的 话, 那 么 一 当 碰 到 困 难, 人 们 就 会 用 拆 东 墙 补 西 墙 的
方 式 去 折 衷, 不 再 下 苦 功 去 做 有 意 义 的 优 化 所 以 我 们 有 必 要 为 折 衷 制 定 严 正 的 立 场 : 在 保 证 其 它 因 素 不 差 的 前 提 下, 使 某 些 因 素 变 得 更 好 下 面 让 我 们 用 优 化 折 衷 的 策 略 解 决 鱼 和 熊 掌 不 可 得 兼 的 难 题 问 题 提 出 : 假 设 鱼 每 千 克 10 元, 熊 掌 每 千 克 一 万 元 有 个 倔 脾 气 的 人 只 有 20 元 钱, 非 得 要 吃 上 一 公 斤 美 妙 的 熊 掌 烧 鱼, 怎 么 办? 解 决 方 案 : 化 9 元 9 角 9 分 钱 买 999 克 鱼 肉, 化 10 元 钱 买 1 克 熊 掌 肉, 可 做 一 道 熊 掌 戏 鱼 菜 剩 下 的 那 一 分 钱 还 可 建 立 奖 励 基 金 1.3 一 些 不 正 确 的 观 念 本 节 例 举 并 分 析 一 些 不 正 确 的 软 件 工 程 观 念, 可 帮 助 初 学 者 少 犯 相 似 的 错 误 观 念 之 一 : 我 们 拥 有 一 套 讲 述 如 何 开 发 软 件 的 书 籍, 书 中 充 满 了 标 准 与 示 例, 可 以 帮 助 我 们 解 决 软 件 开 发 中 遇 到 的 任 何 问 题 客 观 情 况 : 好 的 参 考 书 无 疑 能 指 导 我 们 的 工 作 充 分 利 用 书 籍 中 的 方 法 技 术 和 技 巧, 可 以 有 效 地 解 决 软 件 开 发 中 大 量 常 见 的 问 题 但 实 践 者 并 不 能 因 此 依 赖 于 书 籍, 这 是 因 为 :(1) 现 实 的 工 作 中, 由 于 条 件 千 差 万 别, 即 使 是 相 当 成 熟 的 软 件 工 程 规 范, 常 常 也 无 法 套 用 (2) 软 件 技 术 日 新 月 异, 没 有 哪 一 种 软 件 标 准 能 长 盛 不 衰 祖 传 秘 方 在 某 些 领 域 很 吃 香, 而 在 软 件 领 域 则 意 味 着 落 后 观 念 之 二 : 我 们 拥 有 最 好 的 开 发 工 具 最 好 的 计 算 机, 一 定 能 做 出 优 秀 的 软 件 客 观 情 况 : 良 好 的 开 发 环 境 只 是 产 出 成 果 的 必 要 条 件, 而 不 是 充 分 条 件 如 果 拥 有 好 环 境 的 是 一 群 庸 人, 难 保 他 们 不 干 出 南 辕 北 辙 的 事 情 观 念 之 三 : 如 果 我 们 落 后 于 计 划, 可 以 增 加 更 多 的 程 序 员 来 解 决 客 观 情 况 : 软 件 开 发 不 同 于 传 统 的 农 业 生 产, 人 多 不 见 得 力 量 大 如 果 给 落 后 于 计 划 的 项 目 增 添 新 手, 可 能 会 更 加 延 误 项 目 因 为 :(1) 新 手 会 产 生 很 多 新 的 错 误, 使 项 目 混 乱 (2) 老 手 向 新 手 解 释 工 作 以 及 交 流 思 想 都 要 花 费 时 间, 使 实 际 开 发 时 间 更 少 所 以 科 学 的 项 目 计 划 很 重 要, 不 在 乎 计 划 能 提 前 多 少, 重 在 恰 如 其 分 如 果 用 大 跃 进 的 方 式 奔 向 共 产 主 义, 只 会 产 生 倒 退 的 后 果 观 念 之 四 : 既 然 需 求 分 析 很 困 难, 不 管 三 七 二 十 一 先 把 软 件 做 了 再 说, 反 正 软 件 是 灵 活 的, 随 时 可 以 修 改 客 观 情 况 : 对 需 求 把 握 得 越 准 确, 软 件 的 修 修 补 补 就 越 少 有 些 需 求 在 一 开 始 时 很 难 确 定, 在 开 发 过 程 中 要 不 断 地 加 以 改 正 软 件 修 改 越 早 代 价 越 少, 修 改 越 晚 代 价 越 大, 就 跟 治 病 一 样 道 理 1.4 一 些 有 争 议 的 观 念 本 节 探 讨 一 些 有 争 议 的 观 念, 目 的 不 在 于 得 出 正 确 或 错 误 的 评 断, 而 在 于 争 议 会 激 发 更 多 理 性 的 思 考 争 议 之 一 : 如 果 软 件 运 行 较 慢, 是 换 一 台 更 快 的 计 算 机, 还 是 设 计 一 种 更 快 的 算 法?
作 者 观 点 : 如 果 开 发 软 件 的 目 的 是 为 了 学 习 或 是 研 究, 那 么 应 该 设 计 一 种 更 快 的 算 法 如 果 该 软 件 已 经 用 于 商 业, 则 需 谨 慎 考 虑 : 若 换 一 台 更 快 的 计 算 机 能 解 决 问 题, 则 是 最 快 的 解 决 方 案 改 进 算 法 虽 然 可 以 从 根 本 上 提 高 软 件 的 运 行 速 度, 但 可 能 引 入 错 误 以 及 延 误 进 程 技 术 狂 毫 无 疑 问 会 选 择 后 者, 因 为 他 们 觉 得 放 弃 任 何 可 以 优 化 的 机 会 就 等 于 犯 罪 类 似 的 争 议 还 有 : 是 买 现 成 的 程 序, 还 是 彻 底 自 己 开 发? 技 术 人 员 和 商 业 人 士 常 常 会 有 不 同 的 选 择 争 议 之 二 : 有 最 好 的 软 件 工 程 方 法, 最 好 的 编 程 语 言 吗? 作 者 观 点 : 在 软 件 领 域 永 远 没 有 最 好 的, 只 有 更 好 的 能 解 决 问 题 的 都 是 好 方 法 或 是 好 语 言 程 序 员 在 最 初 学 习 Basic Fortran Pascal C C++ 等 语 言 时 会 感 觉 一 个 比 一 个 好, 不 免 有 喜 新 厌 旧 之 举 而 如 今 的 Visual Basic Delphi Visual C++ Java 等 语 言 各 有 所 长, 真 的 难 分 优 劣 开 发 人 员 应 该 根 据 客 观 条 件, 选 择 自 己 熟 悉 的 方 法 和 语 言, 才 能 保 证 合 格 的 质 量 与 生 产 率 程 序 设 计 是 自 由 与 快 乐 的 事 情, 不 要 发 誓 忠 于 某 某 主 义 而 自 寻 烦 恼 争 议 之 三 : 编 程 时 是 否 应 该 多 使 用 技 巧? 作 者 观 点 : 就 软 件 开 发 而 言, 技 巧 的 优 点 在 于 能 另 辟 蹊 径 地 解 决 一 些 问 题, 缺 点 是 技 巧 并 不 为 人 熟 知 若 在 程 序 中 用 太 多 的 技 巧, 可 能 会 留 下 隐 患, 别 人 也 难 以 理 解 程 序 鉴 于 一 个 局 部 的 优 点 对 整 个 系 统 而 言 是 微 不 足 道 的, 而 一 个 错 误 则 可 能 是 致 命 的 作 者 建 议 用 自 然 的 方 式 编 程, 少 用 技 巧 狼 三 则 的 故 事 告 诉 我 们 失 败 的 技 巧 通 常 是 技 俩 当 我 们 在 编 程 时 无 法 判 断 是 用 了 技 巧 还 是 用 了 技 俩, 那 就 少 用 卖 油 翁 的 故 事 又 告 诉 我 们 熟 能 生 巧, 表 明 技 巧 是 自 然 而 然 产 生 的, 而 不 是 卖 弄 出 来 的 卖 油 翁 的 绝 技 是 可 到 中 央 电 视 台 表 演 的, 而 他 老 人 家 却 谦 虚 地 说 : 没 啥 没 啥, 用 熟 了 而 已 争 议 之 四 : 软 件 中 的 错 误 是 否 可 按 严 重 程 度 分 等 级? 作 者 观 点 : 在 定 量 分 析 时, 可 以 将 错 误 分 等 级, 以 便 于 管 理 微 软 的 一 些 开 发 小 组 将 错 误 分 成 四 个 等 级 [Cusumano 1996], 如 表 1.1 所 示 一 级 严 重 : 错 误 导 致 软 件 崩 溃 二 级 严 重 : 错 误 导 致 一 个 特 性 不 能 运 行 并 且 没 有 替 代 方 案 三 级 严 重 : 错 误 导 致 一 个 特 性 不 能 运 行 但 有 替 代 方 案 四 级 严 重 : 错 误 是 表 面 化 的 或 是 微 小 的 表 1.1 错 误 的 四 个 等 级 上 述 分 类 是 非 常 技 术 性 的, 并 不 是 普 适 的 假 设 某 个 财 务 软 件 有 两 个 错 误 : 错 误 A 使 该 软 件 死 掉, 错 误 B 导 致 工 资 计 算 错 误 按 表 1.1 分 类, 错 误 A 属 一 级 严 重, 错 误 B 属 二 级 严 重 但 事 实 上 B 要 比 A 严 重 工 资 算 多 了 或 者 算 少 了, 将 会 使 老 板 或 员 工 遭 受 经 济 损 失 而 错 误 A 只 使 操 作 员 感 到 厌 烦, 并 没 有 造 成 经 济 损 失 另 一 个 示 例 是 操 作 手 册 写 错, 按 表 1.1 分 类 则 属 四 级 严 重, 但 这 种 错 误 可 能 导 致 机 毁 人 亡 开 发 人 员 应 该 意 识 到 : 所 有 的 错 误 都 是 严 重 的, 不 存 在 微 不 足 道 的 错 误 这 样 才 能 少 犯 错 误
1.5 小 结 软 件 工 程 学 科 发 展 到 今 天, 已 经 有 了 很 多 方 法 和 规 范, 学 之 不 尽 本 章 只 在 宏 观 上 讨 论 了 软 件 工 程 的 一 些 思 想, 更 具 体 的 内 容 将 在 后 面 的 章 节 论 述 无 论 是 什 么 好 方 法, 贵 在 理 解 与 灵 活 运 用, 而 不 可 当 成 灵 丹 妙 药, 不 象 吃 了 脑 黄 金 或 脑 白 金, 就 能 使 一 亿 人 先 聪 明 起 来
第 二 章 程 序 员 与 程 序 经 理 工 作 在 第 一 线 的 软 件 开 发 人 员 是 程 序 员 和 程 序 经 理, 他 们 决 定 着 软 件 的 命 运 良 好 的 程 序 员 队 伍 和 出 色 的 管 理 是 软 件 项 目 成 功 的 必 要 条 件 管 理 不 是 管 制, 不 是 去 卡 住 人 家 的 脖 子, 因 为 程 序 员 不 是 一 群 野 鸭 子 管 理 的 目 的 是 让 大 家 一 起 把 工 作 做 好, 并 且 让 各 人 获 得 各 自 的 快 乐 和 满 足 当 一 个 组 织 被 出 色 地 领 导 时, 雇 员 甚 至 不 知 道 他 们 已 被 领 导 在 项 目 完 成 时, 他 们 会 自 豪 地 说 : 看 看 我 们 通 过 努 力 取 得 的 成 绩 吧 所 以 管 理 者 不 能 老 惦 记 着 自 己 是 一 个 官, 而 应 时 刻 意 识 到 自 己 是 责 任 的 主 要 承 担 者 我 们 经 常 会 听 到 有 经 理 头 衔 的 人 在 高 谈 阔 论 : 编 程 我 不 会, 做 个 项 目 还 不 easy? 派 个 人 去 搞 系 统 分 析, 回 头 再 叫 几 个 程 序 员 把 需 求 译 成 程 序, 不 就 OK 了 吗? 不 懂 英 语 的 人 准 以 为 easy 和 OK 是 贬 义 词 要 让 软 件 项 目 失 败 很 容 易, 只 要 符 合 下 列 条 件 之 一 即 可 : (1) 项 目 经 理 对 软 件 一 无 所 知 ; (2) 技 术 负 责 人 对 编 程 不 感 兴 趣 ; (3) 真 真 编 写 代 码 的 程 序 员 是 临 时 雇 用 的 如 果 上 述 三 个 条 件 同 时 具 备, 就 请 放 心 失 败 好 了 让 我 们 少 幻 想 自 己 是 比 尔 盖 茨, 先 当 好 程 序 员 和 程 序 经 理 再 说 2.1 了 解 程 序 员 早 期 的 程 序 员 干 活 能 从 软 件 直 通 硬 件, 个 个 生 猛 无 比 又 因 他 们 的 作 息 时 间 言 行 举 止 与 常 人 不 太 一 样, 久 而 久 之 就 给 人 们 留 下 了 神 秘 孤 僻 的 印 象 如 今 软 件 行 业 被 炒 得 热 火 朝 天, 有 能 耐 的 程 序 员 即 便 躲 在 大 山 岙 的 军 工 厂 里 也 能 被 挖 出 来 而 更 多 原 本 不 是 程 序 员 的 人 操 起 几 本 速 成 二 十 一 天 通 等 书 籍 也 加 入 了 这 个 行 业 现 在 国 内 号 称 有 上 百 万 程 序 员, 这 支 大 军 鱼 龙 混 杂, 已 搞 不 清 那 些 是 正 规 军, 那 些 是 民 兵 游 击 队 了 真 正 的 程 序 员 都 有 如 下 秉 性 : 一 诚 实 程 序 员 在 学 习 与 工 作 期 间 几 乎 天 天 与 机 器 打 交 道, 压 根 就 没 有 受 欺 骗 或 欺 骗 人 的 机 会 勤 奋 的 程 序 员 在 调 试 无 穷 多 的 程 序 Bug 时, 已 经 深 深 地 接 受 了 诚 实 的 教 育 不 诚 实 的 人, 他 肯 定 不 想 做 也 做 不 好 程 序 员 有 一 名 市 场 营 销 员 和 一 名 程 序 员 都 在 新 闻 发 布 会 上 发 言, 将 一 项 新 技 术 的 消 息 公 布 于 众 市 场 营 销 员 说 : 这 项 技 术 比 电 话 晶 体 管 和 原 子 弹 三 项 发 明 加 起 来 对 世 界 文 明 的 影 响 都 要 大 程 序 员 说 : 这 项 技 术 在 有 限 的 领 域 内, 在 有 限 的 程 度 上, 解 决 了 一 些 技 术 性 的 问 题 看 来 为 了 让 我 们 的 民 族 更 加 诚 实, 学 电 脑 真 的 要 从 娃 娃 抓 起 二 简 单 实 用 主 义 有 人 问 一 个 数 学 家, 一 个 物 理 学 家 和 一 名 程 序 员 : 一 个 盒 子 有 几 个 面? 数 学 家 回 答 说 : 有 六 个 面, 因 为 盒 子 是 长 方 体 物 理 学 家 回 答 说 : 有 12 个 面, 分 为 6 个 外 表 面 和 6 个 内 表 面 程 序 员 回 答 说 : 只 有 两 个 面, 里 面 放 电 路 板 和 硬 盘, 外 面 放 显 示 器 和 键 盘
目 前 即 使 最 先 进 的 计 算 机 也 不 具 备 智 能, 程 序 员 的 基 本 工 作 就 是 把 复 杂 的 问 题 转 化 为 计 算 机 能 处 理 的 简 单 的 程 序 如 果 一 个 问 题 复 杂 到 连 程 序 员 自 己 都 不 能 理 解, 他 就 无 法 编 出 程 序 让 更 笨 的 计 算 机 来 处 理 所 以 程 序 员 信 奉 简 单 实 用 主 义 也 有 不 少 做 计 算 机 学 问 的 人 颠 倒 行 事 本 来 几 句 话 几 行 程 序 就 能 说 明 白 的 事, 非 得 要 抬 高 到 理 论 创 新 的 程 度, 写 成 玄 乎 的 文 章 去 评 教 授 或 者 弄 个 博 士 学 位 所 幸 在 第 一 线 工 作 的 程 序 员 大 多 是 实 干 的 三 爱 憎 分 明 程 序 员 大 都 喜 欢 技 术 挑 战, 不 喜 欢 搞 测 试 与 维 护 高 水 平 的 程 序 员 喜 欢 与 高 水 平 的 程 序 员 一 起 工 作, 因 为 他 们 怕 与 臭 棋 佬 下 棋, 棋 越 下 越 臭 程 序 员 大 都 厌 恶 拉 帮 结 派 耍 政 治 手 腕 不 信, 数 一 数 你 认 识 的 程 序 员, 有 几 个 是 党 派 人 士? 四 工 作 单 调 但 不 乏 味 有 人 问 编 程 大 师 : 程 序 设 计 的 真 正 含 义 是 什 么? 大 师 回 答 说 : 饿 了 的 时 候 就 吃, 困 的 时 候 就 睡, 只 要 时 机 恰 当 就 进 行 程 序 设 计 其 实 程 序 员 的 生 活 和 工 作 已 融 为 一 体, 尽 管 单 调 却 不 乏 味, 还 能 独 享 孤 独 有 诗 为 证 : 我 编 程 三 日 两 耳 不 闻 人 声 只 有 硬 盘 在 歌 唱 结 论 : 优 秀 的 程 序 员 没 有 理 由 不 让 人 喜 欢, 他 们 远 比 怪 僻 来 得 可 爱 2.2 了 解 程 序 经 理 这 里 程 序 经 理 是 指 一 支 程 序 员 队 伍 的 领 导 者, 不 管 他 的 职 务 是 开 发 组 长, 项 目 经 理, 还 是 部 门 经 理 程 序 经 理 是 技 术 性 的 基 层 或 中 层 干 部, 是 软 件 企 业 得 以 发 展 的 生 力 军 程 序 经 理 的 选 拔 是 不 容 草 率 的 事 不 象 有 些 事 业 单 位, 只 要 政 治 口 号 喊 得 勤 快 能 左 右 逢 缘 不 犯 错 误 就 可 混 个 领 导 当 当 也 不 象 一 些 官 僚 机 构, 只 有 两 个 人 的 办 公 室 也 要 设 正 主 任 和 副 主 任 如 果 碰 巧 正 主 任 姓 傅, 副 主 任 姓 郑, 还 会 斗 个 没 完 没 了 在 一 个 管 理 混 乱 的 软 件 公 司 里, 如 果 某 个 程 序 员 能 大 喊 大 叫 并 且 干 劲 十 足, 那 他 就 能 成 为 一 名 程 序 经 理 微 软 公 司 在 选 择 经 理 人 员 时, 总 是 把 他 们 的 技 术 知 识 和 运 用 技 术 去 赚 钱 的 能 力 放 在 首 位 程 序 经 理 一 般 就 是 程 序 员 队 伍 中 最 聪 明 的 那 个 家 伙 比 尔 盖 茨 曾 这 样 描 述 聪 明 人 [Cusumano1996]: 聪 明 人 一 定 反 应 敏 捷, 善 于 接 受 新 事 物 他 能 迅 速 进 入 一 个 新 领 域, 给 你 一 个 头 头 是 道 的 解 释 他 提 出 的 问 题 往 往 一 针 见 血 击 中 要 害 他 能 及 时 掌 握 所 学 知 识, 并 且 博 闻 强 记, 他 能 把 本 来 认 为 互 不 相 干 的 领 域 联 系 在 一 起 使 问 题 得 到 解 决 他 富 有 创 新 精 神 与 合 作 精 神 好 的 程 序 经 理 应 该 具 备 以 下 几 个 条 件 : 一 技 术 水 平 是 程 序 员 队 伍 中 的 最 高 级 别 每 个 程 序 员 骨 子 里 头 都 有 一 股 傲 气, 如 果 你 不 能 技 压 群 雄, 他 们 就 不 会 听 你 指 挥 一 个 技 术 水 平 较 差 的 人 被 任 命 为 程 序 经 理 真 是 个 悲 剧, 就 象 一 个 略 有 权 势 的 太 监, 表 面 上 有 人 对 他 点 头 哈 腰, 背 后 却 被 人 鄙 视 二 能 做 最 多 且 最 难 的 工 作 程 序 经 理 编 程 要 快 且 好 别 人 要 干 一 天 的 活, 他 半 天 就 能 做 完, 这 样 才 会 有 精 力 去 搞 管 理 程 序 经 理 应 负 责 系 统 分 析 系 统 设 计 这 类 最 难 的 开 发 工 作, 并 指 导 不 同 水 平 的 程 序 员 把 各 自 的 工 作 做 好 如 果 人 手 不 够, 程 序 经 理 要 能 同 时 干 几 个 人 的 活
三 有 人 格 魅 力 软 件 开 发 是 智 力 创 作 过 程, 你 不 能 指 望 仅 通 过 执 行 规 章 制 度 来 产 生 好 的 作 品 很 多 软 件 公 司 的 程 序 经 理 都 不 是 管 理 专 业 出 身 的, 他 们 也 不 可 能 为 了 搞 好 管 理 而 成 天 玩 弄 心 机 技 术 出 色 的 程 序 经 理 一 般 少 有 心 术 不 正 的, 所 以 管 理 的 重 点 应 是 以 身 作 则 公 正 待 人 如 果 程 序 经 理 在 上 班 时 趴 在 桌 上 睡 觉, 其 他 程 序 员 也 会 这 样 干 如 果 程 序 经 理 发 现 有 两 个 程 序 员 趴 在 机 器 旁 睡 觉, 不 能 只 对 其 中 一 个 大 声 吼 叫 : 你 一 编 程 就 想 睡 觉, 看 看 人 家, 在 睡 觉 时 都 想 着 编 程 如 果 管 理 者 没 有 人 格 魅 力, 就 没 有 人 信 服 你, 团 队 就 不 会 有 凝 聚 力, 乌 合 之 众 不 可 能 开 发 出 优 秀 的 软 件 结 论 : 一 个 有 活 力 的 软 件 公 司 的 各 级 经 理 都 不 会 这 样 感 叹, 因 为 我 啥 也 不 会 干, 所 以 只 好 当 领 导 2.3 程 序 员 升 为 经 理 后 是 否 还 要 编 程 让 我 们 先 看 看 Microsoft 公 司 的 系 统 软 件 部 门 与 应 用 软 件 部 门 的 领 导 是 怎 样 看 待 这 个 问 题 的 [Cusumano1996] Windows NT 3.0 项 目 的 软 件 经 理 娄 帕 雷 罗 里 让 他 手 下 的 经 理 们 像 他 一 样 每 天 花 一 半 的 时 间 编 写 代 码 : 我 在 组 内 制 定 了 许 多 规 则, 其 中 最 重 要 的 一 条 是 每 个 人 都 得 编 程, 谁 也 别 想 坐 在 那 儿 发 号 施 令 我 发 现 管 理 者 很 容 易 失 去 目 标, 他 们 总 是 无 法 认 识 到 问 题 的 本 质 并 且 反 应 迟 缓 如 果 你 始 终 不 放 弃 编 写 代 码, 你 就 能 对 项 目 的 进 展 情 况 了 如 指 掌, 及 时 发 现 并 解 决 问 题 我 大 概 每 天 花 一 半 的 时 间 编 写 代 码 并 寻 找 项 目 的 缺 陷 作 为 应 用 软 件 领 域 的 经 理, 克 里 斯 彼 得 斯 也 持 同 样 的 看 法 在 他 任 Word 项 目 总 经 理 时 就 认 为 : 在 一 些 大 公 司 内 部, 各 部 门 经 理 把 具 体 操 作 的 层 次 向 下 移 你 一 旦 当 上 开 发 部 门 经 理, 很 快 就 会 以 自 己 身 居 高 位 日 理 万 机 为 由 放 弃 编 程 ; 同 样 地, 开 发 小 组 的 组 长 会 以 自 己 重 任 在 肩 而 不 愿 编 程 ; 至 于 程 序 员 也 会 觉 得 自 己 十 分 繁 忙 分 身 无 术 而 不 再 多 编 写 程 序 虽 然 我 是 270 名 员 工 的 领 导, 似 乎 不 再 需 要 做 什 么 具 体 的 工 作 了, 但 我 还 是 为 Word 新 版 本 编 写 了 一 个 特 性 程 序 员 升 为 经 理 后 一 定 要 编 程, 这 个 道 理 已 经 说 得 很 清 楚 了 最 怕 的 是 虚 心 接 受, 坚 决 不 做 ; 或 者 仅 是 做 个 样 子, 每 天 花 一 分 钟 时 间 编 程, 编 译 器 还 没 运 行 完 就 关 掉 了 2.4 经 理 与 技 术 队 伍 的 建 设 如 果 是 经 营 一 个 加 工 厂 或 一 个 饭 店, 经 理 们 可 以 不 必 懂 技 术 因 为 他 们 的 常 识, 以 及 通 过 耳 闻 目 睹 或 者 咨 询 都 能 解 决 实 践 中 的 问 题 在 软 件 领 域, 技 术 的 力 量 是 无 穷 的, 一 天 之 内 就 可 使 整 个 产 业 发 生 巨 变 也 许 你 在 商 业 上 很 精 明, 但 无 法 保 证 自 己 在 技 术 浪 潮 中 安 然 无 恙 软 件 公 司 的 各 级 经 理 最 好 既 精 通 技 术 又 懂 管 理 一 个 出 色 的 领 导, 加 上 一 支 技 术 过 硬 的 队 伍, 才 有 可 能 创 造 业 绩 不 能 光 指 望 请 来 孙 子 或 诸 葛 亮 当 教 练, 就 能 让 弱 不 禁 风 的 男 足 去 捧 世 界 杯 不 少 人 总 喜 欢 自 吹 中 国 人 很 聪 明, 最 适 合 搞 软 件 开 发 可 至 今 也 没 有 做 出 几 个 很 光 彩 的 软 件 来, 这 与 十 三 亿 人 口 不 呼 应 啊 新 中 国 历 来 喜 欢 与 可 怜 的 印 度 相 比 较 来 展 现 丰 富 多 彩 的 优 越 性, 可 是 软 件 产 业 没 法 与 人 家 比 工 作 在 第 一 线 的 程 序 员 与 程 序 经 理 应 该 意 识 到 : 好 兵 好 将 都 不 是 天 生 的, 是 后 天 练 出 来 的 ; 既
要 学 会 冷 静 地 分 析 问 题, 又 要 充 满 激 情 地 去 工 作 软 件 公 司 总 希 望 能 物 色 到 既 精 通 技 术 又 善 长 商 业 的 优 秀 人 才 做 经 理 但 已 经 出 名 了 的 优 秀 人 才 难 以 请 到, 也 难 以 留 住 所 以 把 公 司 中 的 普 通 员 工 培 养 成 为 优 秀 人 才 是 重 要 的 举 措 公 司 的 老 板 不 要 对 程 序 员 抱 有 偏 见, 以 为 他 们 只 配 与 机 器 打 交 道 一 个 高 水 平 的 程 序 员 既 然 能 学 好 数 字 逻 辑, 能 理 得 清 楚 软 件 中 很 多 象 嵌 套 这 类 鸡 生 蛋 并 且 蛋 又 生 了 鸡 的 错 综 复 杂 的 关 系, 从 理 论 上 讲 当 个 县 长 也 不 成 问 题 现 在 很 多 女 士 不 会 烧 菜, 却 能 把 菜 的 营 养 讲 得 头 头 是 道 虽 然 这 是 个 值 得 哀 叹 的 社 会 问 题, 但 我 们 应 该 有 信 心 期 待 : 如 果 她 们 非 得 天 天 烧 菜 不 可, 那 么 不 久 就 能 把 菜 烧 得 又 好 吃 又 有 营 养 许 多 程 序 员 不 懂 商 业, 不 是 智 力 上 的 原 因, 主 要 是 个 人 兴 趣 和 环 境 所 致 软 件 公 司 的 老 板 应 该 这 样 鼓 励 有 灵 气 的 员 工 : 你 能 把 技 术 做 得 那 么 棒, 还 怕 搞 不 好 管 理? 放 心 干 吧! 的 确, 很 多 技 术 人 员 是 在 工 作 中 领 悟 如 何 管 理 的, 他 们 经 过 挫 折 与 磨 练, 逐 渐 升 为 组 长 项 目 经 理, 乃 至 成 为 公 司 重 要 的 决 策 者 优 秀 的 程 序 员 喜 欢 与 优 秀 的 程 序 员 一 起 工 作, 这 是 一 种 理 想 的 愿 望 一 个 普 通 的 软 件 公 司 不 可 能 有 非 常 多 的 优 秀 程 序 员, 即 便 有, 他 们 也 不 可 能 天 天 聚 在 一 起 干 同 一 件 事 并 且 和 睦 得 无 法 形 容 中 国 自 封 建 社 会 起 就 有 喜 好 内 斗 的 风 俗 习 惯, 几 千 年 下 来 早 已 渗 透 到 社 会 各 个 角 落, 那 怕 黄 河 水 流 断 了, 估 计 这 民 风 也 会 延 袭 下 去 要 使 程 序 员 队 伍 稳 健, 必 须 有 合 理 的 等 级 制 度 来 维 护 等 级 制 度 并 不 限 制 自 由 和 民 主, 它 能 让 自 以 为 聪 明 绝 顶 谁 也 不 服 的 人 们 懂 得 如 何 合 作 与 奋 斗 就 象 有 了 一 架 梯 子, 每 个 人 才 有 机 会 爬 上 墙 头 摘 下 那 向 往 已 久 的 野 花 当 梯 子 散 成 一 堆 木 棍 时, 只 可 能 造 就 几 个 卖 炭 翁 下 面 我 们 尝 试 着 建 立 一 个 程 序 员 队 伍 的 等 级 制 度 把 技 术 水 平 分 为 四 级, 第 一 级 最 低, 第 四 级 最 高 第 一 级 技 术 水 平 的 程 序 员 主 要 考 核 编 程 基 本 功, 要 求 质 量 合 格 ( 他 们 主 要 来 自 刚 毕 业 的 大 学 生 ) 第 二 级 技 术 水 平 的 程 序 员 编 程 质 量 要 高, 做 过 几 个 软 件 项 目, 有 数 年 的 工 作 经 验, 并 能 指 导 新 手 的 工 作 第 三 级 技 术 水 平 的 程 序 员 主 要 考 核 系 统 分 析 与 系 统 设 计 的 能 力, 要 求 其 技 术 有 足 够 的 深 度 和 广 度 第 四 级 技 术 水 平 的 程 序 员 是 成 功 的 软 件 产 品 的 设 计 师, 他 不 仅 技 术 超 群, 并 且 能 使 技 术 转 化 为 有 价 值 的 商 品 把 管 理 ( 这 里 仅 指 软 件 业 务 的 管 理, 不 考 虑 行 政 事 务 ) 水 平 也 分 成 四 级 第 零 级 最 低, 第 三 级 最 高 第 零 级 管 理 水 平 的 人 没 有 管 理 职 务, 就 是 普 通 员 工 第 一 级 管 理 水 平 的 人 是 开 发 小 组 的 组 长, 可 带 领 几 名 程 序 员 工 作 第 二 级 管 理 水 平 的 人 是 项 目 经 理 第 三 级 管 理 水 平 的 人 决 定 某 些 产 品 是 否 要 开 发, 以 及 如 何 去 占 领 市 场 每 个 程 序 员 都 有 明 确 的 技 术 级 别 和 管 理 级 别 技 术 级 别 与 管 理 级 别 有 一 定 的 联 系 一 般 地, 第 一 级 技 术 水 平 的 人 只 能 做 普 通 员 工 ; 第 二 级 技 术 水 平 的 人 可 以 当 一 名 组 长 ; 第 三 级 技 术 水 平 的 人 可 以 当 一 名 项 目 经 理 ; 第 四 级 技 术 水 平 的 人 可 成 为 公 司 产 品 的 决 策 者 如 图 2.1 所 示 本 书 作 者 目 前 的 技 术 水 平 当 属 第 二 级, 管 理 水 平 符 合 组 长 的 要 求 作 者 在 读 中 学 和 大 学 时 就 曾 美 滋 滋 地 当 过 课 代 表, 也 就 是 组 长 级 别 技 术 级 别 管 理 级 别 四 级 决 策 者 三 级 项 目 经 理 二 级 开 发 组 长 一 级 普 通 员 工
图 2.1 技 术 级 别 与 管 理 级 别 2.5 向 错 误 与 失 败 学 习 不 管 是 生 活 或 工 作, 人 们 都 应 该 向 错 误 与 失 败 学 习, 目 的 是 让 我 们 在 短 暂 的 健 康 年 华 中 少 犯 错 误 少 失 败, 多 做 几 件 正 确 的 对 社 会 有 贡 献 的 事 导 致 软 件 项 目 失 败 的 因 素 很 多, 如 果 不 去 找 借 口 的 话, 就 会 发 现 错 误 的 根 源 在 自 己 身 上 : 知 识 贫 乏 才 能 低 下 经 验 不 足 骄 傲 自 负 我 们 必 须 正 视 自 身 的 不 足 与 缺 点, 才 会 学 到 经 验 教 训 可 人 们 常 有 太 多 的 虚 荣, 为 了 克 服 心 理 障 碍, 白 白 浪 费 了 很 多 本 该 用 于 创 造 的 精 力 假 设 犯 错 误 的 人 是 诚 实 的 并 且 是 勤 奋 的 他 愿 意 不 带 虚 荣 地 改 进 自 己 当 这 个 人 突 然 面 对 失 败 时, 可 能 觉 得 自 己 一 无 是 处, 也 许 会 不 知 所 措, 也 许 会 病 急 乱 投 医 程 序 员 都 有 一 种 共 同 的 体 会 : 在 调 试 程 序 时, 时 常 碰 到 只 有 十 几 行 的 程 序 竟 会 产 生 上 百 个 编 译 错 误 ; 最 后 发 现 这 么 多 的 错 误 其 实 是 由 某 一 行 程 序 错 误 引 发 的 当 我 们 在 工 作 中 碰 到 挫 折 时, 先 要 冷 静 地 分 析 问 题 ( 事 出 有 因 哪 ), 找 出 问 题 的 内 因 与 外 因 内 因 是 最 主 要 的, 应 该 予 以 最 先 解 决 前 几 年, 中 国 出 现 了 一 个 叫 法 轮 功 的 邪 教, 教 徒 达 数 百 万 之 多, 人 民 群 众 深 受 其 害 不 久 前, 全 国 的 主 要 媒 体 对 法 轮 功 进 行 连 续 数 月 的 声 讨 与 揭 露 目 睹 了 很 多 受 害 人 的 哭 诉 后, 相 信 人 们 能 够 明 白 法 轮 功 是 邪 恶 的 反 动 的 但 在 愤 怒 与 心 痛 之 余, 我 们 不 禁 要 反 思 : 为 什 么 那 么 多 人 轻 信 邪 教? 人 们 是 否 接 受 了 教 训? 在 电 视 上 看 到 很 多 人 的 确 作 了 深 刻 的 检 讨 : 我 真 是 后 悔 啊, 跟 错 了 李 洪 志 ( 法 轮 功 的 头 头 ) 这 个 坏 蛋, 我 对 不 起 社 会 以 后 我 一 定 要 听 党 组 织 的 话, 党 叫 我 干 什 么 我 就 干 什 么, 决 不 上 坏 人 的 当 我 觉 得 这 些 受 害 人 一 点 都 没 有 醒 悟 : 他 只 知 道 法 轮 功 是 个 邪 教, 并 不 知 道 自 己 为 什 么 信 了 邪 教 有 些 事 情 只 要 用 脑 袋 去 想 一 想 就 能 分 辨 是 非, 可 人 们 就 是 不 去 思 考, 却 渴 望 能 跟 对 福 星, 甘 愿 把 自 己 的 脑 袋 拴 在 别 人 的 裤 带 上 难 道 这 就 是 人 民 的 纯 朴 与 可 爱 吗? 回 顾 一 下 历 史, 在 文 革 时 期, 亿 万 人 民 跟 着 合 法 的 党 组 织 大 干 伤 天 害 理 的 事, 一 干 就 是 十 多 年 哪! 可 见 世 界 上 哪 个 人 哪 个 组 织 都 不 能 确 保 绝 对 的 英 明 所 以 说 迷 信 是 傻 子 碰 到 骗 子 的 结 果 傻 是 内 因, 被 骗 是 外 因 傻 子 碰 到 好 人 未 必 能 做 出 好 事, 傻 子 碰 到 另 一 个 骗 子 就 会 做 出 另 一 件 傻 事 为 了 不 让 自 己 傻, 善 良 的 人 们 应 该 用 脑 子 去 多 学 一 些 知 识, 努 力 让 自 己 来 把 握 命 运, 不 要 急 着 把 一 生 托 给 某 个 人 或 某 个 组 织 软 件 人 员 在 遭 受 项 目 失 败 并 开 始 反 省 时, 不 要 只 是 就 事 论 事 地 仅 把 眼 光 锁 在 特 定 的 项 目 上, 吃 一 堑 应 该 长 好 几 个 智 才 对 本 书 作 者 刚 刚 失 败 过, 乐 意 乘 热 讲 讲 感 受 我 在 读 本 科 和 硕 士 研 究 生 时, 一 直 信 奉 创 造 性 的 事 业 要 靠 激 情 来 推 动 我 把 这 个 口 号 贴 在 办 公 室 里, 并 扔 掉 物 理 学 专 业 天 天 编 程 在 读 硕 士 研 究 生 的 第 一 年, 我 卖 出 了 第 一 份 软 件 到 我 读 博 士 研 究 生 的 第 一 年, 我 心 想 事 成 地 获 得 了 全 国 大 学 生 电 脑 大 赛 软 件 展 示 第 一 名 那 时 候 我 自 以 为 翅 膀 已 经 硬 了, 再 回 顾 前 些 年 的 艰 苦, 不 禁 有 媳 妇 熬 成 婆 的 悲 壮 感 觉 于 是 我 在 杭 州 这 个 小 地 方 略 作 宣 传, 在 1997 年 10 月 份 开 了 一 家 软 件 公 司 我 开 始 把 振 兴 民 族 软 件 产 业 列 入 日 程, 并 且 提 前 担 忧 将 来 钱 挣 得 太 多 用 不 完 该 怎 么 办 半 年 之 后, 我 开 始 为 软 件 产 品 作 宣 传, 可 并 没 有 出 现 订 单 如 潮 接 应 不 暇 的 形 势 ( 事 实 上 压 根 就 没 有 反 应 ) 我 已 经 意 识 到 市 场 没 找 对, 但 仍 觉 得 软 件 中 的 技 术 很 有 价 值, 准 备 再 开 创 东 方 不 亮 西 方 亮 的 新 局 面 于 是 我 向 只 有 一 面 之 缘 尚 在 北 大 方 正 工 作 的 一 位 朋 友 求 助 他 是 真 真 的 软 件 高 手, 当 我 小 心 翼 翼 地 展 示 约 10 万 行 C++ 代 码 的 软 件 时, 他 竞 在 十 几
分 钟 内 就 指 出 多 处 重 大 的 设 计 错 误, 使 我 目 瞪 口 呆 地 意 识 到 整 个 软 件 系 统 的 价 值 为 零 那 种 心 痛 啊, 就 象 眼 睁 睁 看 着 孩 子 被 狼 吃 掉 一 样 1998 年 10 月, 这 位 朋 友 再 一 次 从 北 京 飞 到 杭 州, 三 下 五 除 二 替 我 把 只 活 了 一 年 的 公 司 给 关 闭 掉 他 放 心 不 下, 觉 得 我 恶 病 需 用 猛 药 补, 于 是 意 尤 未 尽 地 把 我 捉 到 北 大 方 正 插 在 他 管 辖 的 部 门, 让 我 学 习 怎 样 做 事 情 北 京 寒 冷 的 冬 天 可 以 营 造 一 种 凄 凉 的 气 氛, 冲 去 一 切 可 以 自 我 原 谅 的 借 口 我 并 不 是 太 爱 虚 荣 的 人, 知 道 这 次 失 败 是 我 的 毛 病 积 累 到 一 定 水 准 忍 不 住 喷 发 出 来 的 结 果 我 绝 不 能 以 年 纪 尚 轻 不 太 懂 市 场 与 管 理 为 理 由 轻 率 地 敷 衍 过 去 我 把 自 己 察 觉 到 的 数 十 个 毛 病 列 出 来, 日 后 一 个 一 个 克 服 掉 本 书 的 大 部 分 内 容 取 自 我 在 一 年 前 的 教 训 录 改 错 之 后, 现 在 我 不 仅 不 难 过 而 且 挺 快 乐 觉 得 第 一 次 失 败 很 浪 漫, 值 得 怀 念 刚 开 始 写 这 本 书 时, 我 那 位 北 京 的 朋 友 把 脚 伸 到 杭 州 来 散 步, 顺 手 又 给 了 我 几 帖 药, 可 以 用 到 我 毕 业 看 来 缺 点 是 改 不 完 的, 补 短 和 扬 长 要 一 起 来 2.6 提 高 综 合 素 责 前 面 给 软 件 开 发 人 员 加 了 过 多 的 赞 誉 一 个 技 术 出 色 的 程 序 员 可 以 自 豪, 但 不 可 以 目 空 一 切 上 天 不 可 能 赋 于 一 个 人 太 多 的 优 点, 以 致 于 他 没 有 表 示 谦 虚 的 余 地 我 们 在 求 学 时 可 能 太 功 利 太 挑 剔, 导 致 知 识 结 构 非 常 单 薄, 只 怕 到 了 晚 年 也 成 不 了 大 器 当 程 序 员 擅 长 技 术 时, 还 要 时 刻 留 意 弥 补 自 己 并 不 擅 长 的 非 技 术 才 能 扬 长 补 短 才 能 提 高 综 合 素 质 假 如 能 回 到 中 学 时 代, 我 希 望 能 把 文 科 学 好 那 时 侯 盛 传 学 好 数 理 化, 走 遍 天 下 都 不 怕 我 读 中 学 时 很 无 知, 鄙 视 一 切 文 科, 现 在 后 悔 莫 及 高 考 语 文 成 绩 54 分 ( 只 比 我 的 期 望 值 低 6 分 ) 写 作 文 的 最 高 目 标 就 是 不 逃 题, 考 试 前 我 总 是 反 复 祈 祷 : 我 没 干 过 坏 事, 保 佑 我 作 文 不 逃 题 吧! 上 大 学 的 第 一 天 我 竟 然 无 法 用 普 通 话 说 出 去 洗 澡 怎 么 走, 只 好 晃 动 澡 票 与 辅 导 员 打 哑 语 中 学 的 历 史 地 理 课 也 被 我 糟 踏 了, 考 试 时 只 会 填 写 任 课 老 师 某 年 某 月 某 日 在 我 家 乡 英 勇 就 义, 比 谁 的 成 绩 更 接 近 零 分 更 让 我 沮 丧 的 是, 这 些 行 径 都 不 是 我 发 明 的, 我 顶 多 是 个 跟 屁 虫 而 已, 一 点 回 忆 的 自 豪 感 都 没 有 扔 掉 文 科 只 学 理 科 并 不 等 同 于 放 下 包 袱, 轻 装 前 进, 倒 象 是 摘 掉 了 控 制 系 统 的 机 车, 开 不 了 多 远 就 翻 车 了 我 搞 了 八 年 的 软 件 开 发, 没 做 出 象 样 的 软 件 来 倒 是 有 同 行 意 外 发 现 我 的 文 笔 不 错, 是 当 作 家 的 料 我 发 现 自 己 在 不 该 开 花 的 地 方 结 了 一 颗 瘦 涩 的 果 子 曹 操 之 子 曹 彰 曾 建 议 : 大 丈 夫 当 学 卫 青 霍 去 病, 立 功 沙 漠, 长 驱 数 十 万 众, 纵 横 天 下, 何 能 为 博 士 耶? 要 后 悔 的 事 情 太 多 了, 只 能 现 在 做 得 勤 快 些 明 知 自 己 不 成 大 器, 但 愿 意 亡 羊 补 牢, 力 求 学 得 更 深 更 广 不 要 让 人 觉 得 程 序 员 只 管 钻 研 技 术, 可 以 不 懂 世 事 并 且 应 该 自 由 散 漫 程 序 员 不 该 因 为 幼 稚 而 显 得 单 纯, 应 该 是 成 熟 了 才 变 得 单 纯, 才 配 得 上 这 个 充 满 活 力 的 职 业 2.7 小 结 本 章 讲 述 做 好 程 序 员 和 程 序 经 理 的 一 些 道 理, 为 了 剥 去 阻 碍 我 们 进 步 的 那 些 虚 伪, 多 唠 叨 了 几 个 故 事 中 国 经 历 了 很 多 打 斗 整 人 的 革 命, 却 没 有 一 次 赶 上 工 业 革 命 在 如 今 计 算 机 横 行 的 形 势 下, 我 们 不 能 再 掉 队 了 90 年 代 初 期, 中 国 出 现 了 一 些 程 序 员 英 雄, 曾 让 我 们 激 动 过 崇 拜 过 但 这 些 孤 胆 英 雄 们 很 快 地 几 乎 全 消 亡 了, 他 们 只 留 下 故 事, 没 留 下 更 多 的 价 值 再
一 次 让 我 们 意 识 到 振 兴 民 族 软 件 产 业 不 能 依 靠 几 个 人 一 朝 一 夕 的 辉 煌 软 件 人 员 勤 奋 学 习 和 工 作, 不 该 只 图 将 来 能 做 成 几 件 事 情 的 快 意, 而 应 力 求 事 业 长 盛 不 衰, 才 能 推 动 整 个 民 族 软 件 产 业 持 久 稳 健 地 发 展
第 三 章 项 目 计 划 与 质 量 管 理 在 可 行 性 分 析 之 后, 项 目 计 划 与 质 量 管 理 将 贯 穿 需 求 分 析 系 统 设 计 程 序 设 计 测 试 维 护 等 软 件 工 程 环 节 项 目 计 划 是 要 提 供 一 份 合 理 的 进 程 表, 让 所 有 开 发 人 员 任 务 明 确 步 调 一 致, 最 终 共 同 准 时 地 完 成 项 目 项 目 计 划 是 要 付 诸 实 施 的, 不 象 用 嘴 巴 喊 政 治 口 号, 可 以 很 夸 张 软 件 的 项 目 计 划 重 在 准 确 而 非 快 速 提 高 质 量 是 软 件 工 程 的 主 要 目 标 但 由 于 软 件 开 发 是 一 种 智 力 创 作 活 动, 很 难 象 传 统 工 业 那 样 通 过 执 行 严 格 的 操 作 规 范 来 保 证 软 件 产 品 的 质 量 世 上 最 小 心 翼 翼 最 老 实 巴 脚 的 程 序 员 未 必 就 能 开 发 出 高 质 量 的 软 件 来 程 序 员 必 须 了 解 软 件 质 量 的 方 方 面 面 ( 称 为 质 量 因 素 ), 如 正 确 性 性 能 易 用 性 灵 活 性 可 复 用 性 可 理 解 性 等 等, 才 能 在 进 行 系 统 设 计 程 序 设 计 时 将 高 质 量 内 建 其 中 软 件 的 高 质 量 并 不 是 管 理 出 来 的, 实 质 上 是 设 计 出 来 的, 质 量 的 管 理 只 是 一 种 预 防 和 认 证 的 手 段 而 已 3.1 项 目 计 划 做 项 目 计 划, 如 同 给 一 个 待 出 生 的 婴 儿 写 传 记 那 样 困 难 如 果 允 许 项 目 结 束 后 再 写 计 划, 那 就 轻 松 多 了, 并 且 可 以 100% 地 准 确 历 史 教 训 让 我 们 明 白 一 个 道 理 : 如 果 一 万 年 以 后 才 会 有 一 条 阳 光 大 道 通 向 共 产 主 义, 那 么 现 在 就 不 要 忙 着 砸 锅 炼 钢 赶 英 超 美, 免 得 在 跑 步 奔 向 共 产 主 义 时 把 自 己 累 死 饿 死 在 做 软 件 的 项 目 计 划 时, 应 屏 弃 一 切 浮 夸 作 风 只 有 知 已 知 彼 才 能 做 出 合 理 的 项 目 计 划 这 里 知 彼 是 指 要 了 解 项 目 的 规 模 难 度 与 时 间 限 制 知 已 是 指 要 了 解 有 多 少 可 用 资 源, 如 可 调 用 的 程 序 员 有 几 个? 他 们 的 水 平 如 何? 软 硬 件 设 施 如 何? 3.1.1 知 己 知 彼 首 先 要 了 解 项 目 的 规 模 难 度 与 时 间 限 制, 才 可 以 确 定 应 该 投 入 多 少 人 力 物 力 去 做 这 个 项 目 在 可 行 性 分 析 阶 段 就 要 考 虑 这 个 问 题 但 不 幸 的 是, 人 们 在 陷 入 项 目 不 能 自 拨 之 前 总 难 以 准 确 地 估 计 项 目 的 规 模 与 难 度 这 里 经 验 起 到 了 最 重 要 的 作 用 项 目 的 时 间 限 制 有 两 类 第 一 类, 项 目 应 该 完 成 的 日 期 写 在 合 同 中, 如 果 延 期 了, 则 开 发 方 要 作 出 相 应 的 赔 偿 第 二 类 是 开 发 自 己 的 软 件 产 品, 虽 然 只 确 定 了 该 产 品 大 致 的 发 行 日 期 并 允 许 有 延 误, 但 如 果 拖 延 太 久 则 会 失 去 商 机 造 成 损 失 项 目 的 资 源 分 为 三 类 : 人 可 复 用 的 软 构 件 和 软 硬 件 环 境, 如 图 3.1 所 示 (1) 人 是 最 有 价 值 的 资 源 项 目 计 划 的 制 定 者 要 确 定 开 发 人 员 的 名 单, 要 根 据 他 们 的 专 长 进 行 分 工 (2) 可 复 用 的 软 构 件 是 次 有 价 值 的 资 源 1.2.1 节 论 述 了 复 用 软 构 件 可 提 高 软 件 的 质 量 与 生 产 率 软 构 件 并 非 一 定 要 用 自 己 的, 可 以 向 专 业 的 软 件 供 应 商 购 买 (3) 软 硬 件 环 境 虽 然 不 是 最 重 要 的 资 源, 却 是 必 需 的 资 源 原 则 上 软 硬 件 环 境 只 要 符 合 项 目 的 开 发 要 求 即 可 有 些 项 目 可 能 要 用 到 特 殊 的 设 备, 则 要 事 先 作 好 准 备, 以 免 用 时 找 不 到 而 担 搁 了 进 程 1. 人
2. 可 复 用 的 软 构 件 3. 软 硬 件 环 境 图 3.1 项 目 的 资 源 3.1.2 进 度 安 排 有 一 位 程 序 员 忙 着 编 写 程 序, 经 理 问 他 还 需 要 多 久 才 能 完 成 明 天 就 可 以 完 成 程 序 员 立 即 回 答 我 想 这 是 不 切 实 际 的, 实 话 实 说, 到 底 还 要 多 少 时 间? 经 理 说 我 还 想 加 进 一 些 新 的 功 能, 这 需 要 花 两 个 星 期 程 序 员 想 了 一 会 儿 说 即 使 这 样 也 期 望 过 高 了, 只 要 你 编 完 程 序 时 告 诉 我 一 声, 我 也 就 满 足 了 经 理 说 几 年 以 后, 经 理 要 退 休 了 在 他 去 退 休 午 餐 会 时, 发 现 那 位 程 序 员 正 趴 在 机 器 旁 睡 觉 : 可 怜 的 家 伙 整 个 晚 上 都 在 忙 于 编 写 那 个 程 序 [James 1999] 程 序 员 也 期 望 每 天 早 晨 能 在 7:00 准 时 起 床, 可 老 是 一 觉 醒 来 就 到 中 午 了 项 目 落 后 于 进 度 表 乃 是 家 常 便 饭, 不 必 大 惊 小 怪 以 下 一 些 事 件 经 常 会 导 致 项 目 被 延 误 : (1) 上 级 领 导 主 管 臆 断, 制 定 了 不 现 实 的 期 限 项 目 经 理 与 程 序 员 们 被 迫 按 照 不 合 理 的 进 度 表 开 展 工 作 (2) 客 户 的 需 求 发 生 了 变 化, 但 没 有 对 进 度 表 作 出 相 应 的 修 改 (3) 低 估 了 项 目 的 规 模 与 难 度, 导 致 投 入 的 人 力 和 物 力 不 足 (4) 并 未 预 见 到 存 在 难 以 克 服 的 技 术 障 碍 (5) 并 未 预 见 到 开 发 人 员 会 发 生 问 题, 如 生 病, 辞 职 等 等 (6) 开 发 人 员 之 间 不 能 很 好 的 交 流 协 作, 导 致 各 阶 段 任 务 难 以 如 期 完 成 所 以 写 进 程 表 不 能 象 小 学 生 写 决 心 书 那 样 充 满 幻 想 以 下 是 一 些 有 益 的 建 议 : (1) 制 定 进 度 表 的 人 最 好 就 是 项 目 负 责 人, 他 最 了 解 项 目 和 开 发 人 员 进 度 表 要 经 过 开 发 小 组 的 讨 论, 在 得 到 大 部 数 人 的 支 持 后 才 能 实 施 避 免 出 现 一 厢 情 愿 的 局 面 (2) 进 度 安 排 并 不 见 得 一 定 要 符 合 逻 辑 顺 序 应 尽 可 能 地 先 做 技 术 难 度 高 的 事, 后 做 难 度 低 的 事 也 就 是 辛 苦 在 前, 轻 松 在 后 小 时 候 我 对 一 位 老 先 生 吃 饭 很 感 兴 趣 : 他 总 是 先 把 一 大 盒 的 米 饭 吃 光 了, 然 后 再 幸 福 地 品 尝 一 小 盒 菜 父 母 告 诉 我 这 是 中 国 的 传 统 美 德, 叫 先 苦 后 甜 从 此 我 铭 记 在 心, 按 此 道 理 去 学 习 和 工 作 可 如 今 在 饭 店 里, 人 们 总 是 先 把 菜 吃 完 了, 最 后 才 吃 点 米 饭 天 哪, 生 活 真 是 太 复 杂 了, 我 究 竟 该 先 吃 饭 还 是 先 吃 菜? (3) 开 发 一 个 大 的 软 件 项 目, 应 该 将 进 度 表 分 为 若 干 个 里 程 碑 一 个 里 程 碑 之 内 的 多 个 任 务 可 以 同 步 进 行 程 序 员 极 容 易 沉 迷 于 技 术, 要 么 乐 不 思 蜀, 要 么 焦 头 烂 额 里 程 碑 就 象 心 灵 的 灯 塔, 使 忙 碌 的 人 群 不 混 乱, 不 迷 失 方 向 (4) 进 度 表 中 必 须 留 有 缓 冲 时 间, 并 将 缓 冲 时 间 用 到 不 确 定 的 事 情 上 因 为 人 们 对 即 将 要 做 的 事 情 知 之 甚 少, 所 以 要 留 一 些 时 间 以 防 不 测 Microsoft 公 司 的 一 些 开 发 小 组 甚 至 制 定 了 50% 缓 冲 规 则 [Cusumano 1996] 对 许 多 项 目 经 理 而 言, 容 忍 进 度 表 中 存 在 缓 冲 时 间, 不 啻 为 观 念 上 的 一 个 飞 跃 (5) 如 果 发 现 项 目 应 交 付 的 期 限 非 常 不 合 理, 就 要 跟 领 导 或 跟 客 户 据 理 力 争, 请 求 放 宽 期 限 调 整 进 度 当 客 户 的 需 求 发 生 变 化 时, 就 要 对 进 度 表 作 出 相 应 的 修 正 不 要 觉 得 修 改 进 度 表 很 困 难 很 麻 烦, 不 修 改 才 会 产 生 真 真 的 麻 烦 很 多 人 认 为 戒 烟 很 困 难, 但 马 克 吐 温 曾 说 : 戒 烟 很 容 易, 我 一 年 就 戒 几 十 次
3.2 零 缺 陷 质 量 管 理 的 观 念 零 缺 陷 质 量 管 理 的 观 念 来 源 于 一 些 国 际 上 著 名 的 硬 件 生 产 厂 商 尽 管 软 件 的 开 发 与 硬 件 生 产 有 极 大 的 差 别, 但 我 们 仍 可 以 从 零 缺 陷 质 量 管 理 中 得 到 启 迪 零 缺 陷 质 量 管 理 至 少 有 两 个 核 心 内 容 : 一 是 高 目 标, 二 是 可 执 行 的 规 范 3.2.1 高 目 标 人 在 做 一 件 事 情 时, 由 于 存 在 很 多 不 确 定 的 因 素, 一 般 不 可 能 100% 地 达 到 目 标 假 设 平 常 人 做 事 能 完 成 目 标 的 80% 如 果 某 个 人 的 目 标 是 100 分, 那 么 他 最 终 成 绩 可 达 80 分 如 果 某 个 人 的 目 标 只 是 60 分, 那 么 他 最 终 成 绩 只 有 48 分 我 们 在 考 场 上 身 经 百 战, 很 清 楚 那 些 只 想 混 及 格 的 学 生 通 常 都 不 会 及 格, 那 些 想 得 高 分 的 学 生 也 常 为 自 己 的 失 误 而 捶 胸 顿 足 做 一 个 项 目 通 常 需 要 多 个 人 的 协 作 假 设 项 目 的 总 质 量 ( 最 高 为 1) 是 十 个 开 发 人 员 的 工 作 质 量 之 积 如 果 每 个 人 的 质 量 目 标 是 0.95, 那 么 十 个 人 的 累 积 质 量 不 会 超 过 0.19 如 果 每 个 人 的 质 量 目 标 是 0.9 分, 那 么 十 个 人 的 累 积 质 量 不 会 超 过 0.03 只 有 每 个 人 都 做 到 1, 项 目 总 质 量 才 会 是 1 如 果 没 有 高 目 标, 人 的 堕 落 就 很 快 如 果 没 有 零 缺 陷 的 质 量 目 标, 也 许 缺 陷 就 会 成 堆 3.2.2 可 执 行 的 规 范 实 现 100 分 显 然 比 实 现 80 分 要 付 出 更 多 的 努 力 零 缺 陷 质 量 目 标 不 是 随 心 所 欲 提 出 来 的, 做 得 到 才 有 意 义 实 现 高 目 标 需 要 一 套 可 执 行 的 规 范 来 保 证 50 年 代 末, 全 国 掀 起 了 浮 夸 风 为 了 实 现 亩 产 数 万 斤 推 广 各 种 方 法, 害 得 全 国 闹 饥 荒 想 不 到 有 数 千 年 种 粮 经 验 的 几 亿 中 国 农 民 就 这 么 整 齐 地 栽 倒 了 好 规 范 必 须 是 本 企 业 有 能 力 执 行 的 一 个 普 通 企 业 照 搬 一 流 企 业 的 规 范 未 必 行 得 通 软 件 工 程 的 规 范 很 容 易 从 书 籍 中 找 到, 但 有 了 这 些 规 范 并 不 表 明 就 能 把 软 件 做 好 国 内 很 多 软 件 公 司 根 本 没 有 条 件 去 执 行 业 界 推 荐 的 软 件 工 程 规 范 社 会 主 义 初 级 阶 段 的 草 与 发 达 资 本 主 义 国 家 的 苗 的 确 有 不 同 的 培 育 方 式 软 件 是 如 此 的 灵 活, 如 果 没 有 规 范 来 制 约, 就 容 易 因 无 序 的 喜 好 而 导 致 混 沌 ; 但 规 范 如 果 太 严 密 了, 就 会 扼 杀 程 序 员 生 机 勃 勃 的 创 造 力 制 定 软 件 规 范 是 进 退 两 难 的 事 程 序 员 必 须 深 入 了 解 软 件 多 方 面 的 质 量 因 素, 把 那 些 能 提 高 软 件 质 量 因 素 的 各 种 规 范 植 入 脑 中, 才 能 在 各 个 实 践 环 节 自 然 而 然 地 把 高 质 量 设 计 到 软 件 中 3.3 软 件 的 质 量 因 素 运 行 正 确 的 程 序 就 是 高 质 量 的 程 序 吗? 不 贪 污 的 官 就 是 好 官 吗? 时 下 老 百 姓 对 一 些 腐 败 的 地 方 政 府 深 痛 恶 绝, 对 官 不 再 有 质 量 期 望 只 要 当 官 的 不 贪 污, 哪 怕 毫 无 政 绩, 也 算 是 好 官 也 有 一 些 精 明 的 老 百 姓 打 出 旗 号 : 宁 要 贪 污 犯, 不 要 大 笨 蛋 相 比 之 下, 程 序 员 是 够 幸 福 的 了 因 为 我 们 能 通 过 努 力, 由 自 己 来 把 握 软 件 的 命 运 那 么 就 不 要 轻 易 放 弃 提 高 软 件 质 量 的 权 利 了
运 行 正 确 的 程 序 不 见 得 就 是 高 质 量 的 程 序 这 个 程 序 也 许 运 行 速 度 很 低 并 且 浪 费 内 存 ; 也 许 代 码 写 得 一 塌 糊 涂, 除 了 开 发 者 本 人 谁 也 看 不 懂 也 不 会 使 用 正 确 性 只 是 反 映 软 件 质 量 的 一 个 因 素 而 已 软 件 的 质 量 因 素 很 多, 如 正 确 性 精 确 性 可 靠 性 容 错 性 性 能 效 率 易 用 性 可 理 解 性 简 洁 性 可 复 用 性 可 扩 充 性 兼 容 性 等 等 ( 还 可 以 列 出 十 几 个 ) 这 些 质 量 因 素 之 间 你 中 有 我, 我 中 有 他, 非 常 缠 绵 如 果 程 序 员 每 天 要 面 对 那 么 多 质 量 因 素 咬 文 嚼 字, 不 久 就 会 迂 腐 得 象 孔 乙 已, 并 且 有 找 不 到 女 朋 友 的 危 险 为 了 便 于 理 解, 可 以 参 照 武 侠 小 说 中 的 武 学 分 类, 将 质 量 因 素 粗 略 地 分 成 几 大 派 你 想 那 武 学 源 源 流 长, 相 互 渗 透, 谁 能 数 得 清 有 多 少 江 湖 派 别 但 想 在 道 上 混, 总 得 知 道 六 大 门 派 : 少 林 派 武 当 派 峨 嵋 派 华 山 派 昆 仑 派 和 崆 峒 派 软 件 质 量 因 素 的 分 类 如 图 3.2 所 示 其 中 正 确 性 与 精 确 性 排 在 首 位, 地 位 如 同 少 林 派 与 武 当 派 ; 而 性 能 与 效 率, 易 用 性, 可 理 解 性 与 简 洁 性 和 可 复 用 性 与 可 扩 充 性 亦 是 举 足 轻 重 的 质 量 因 素, 地 位 仿 佛 峨 嵋 派, 华 山 派, 昆 仑 派 和 崆 峒 派 其 它 的 质 量 因 素 总 可 以 在 图 3.2 中 找 到 合 适 的 亲 缘 关 系, 本 节 不 再 一 一 细 表 正 确 性 与 精 确 性 少 林 派 武 当 派 性 易 可 理 可 复 峨 华 昆 崆 能 用 解 性 用 性 嵋 山 仑 峒 与 性 与 简 与 派 派 派 派 效 洁 性 可 扩 率 充 性 图 3.2 软 件 质 量 因 素 分 类 和 武 学 分 类 3.3.1 正 确 性 与 精 确 性 正 确 性 与 精 确 性 之 所 以 排 在 质 量 因 素 的 第 一 位, 是 因 为 如 果 软 件 运 行 不 正 确 或 者 不 精 确, 就 会 给 用 户 造 成 不 便 甚 至 造 成 损 失 机 器 不 会 主 动 欺 骗 人, 软 件 运 行 不 正 确 或 者 不 精 确 一 般 都 是 人 造 成 的 即 使 一 个 软 件 能 100% 地 按 需 求 规 格 执 行, 但 是 如 果 需 求 分 析 错 了, 那 么 对 客 户 而 言 这 个 软 件 也 存 在 错 误 即 使 需 求 分 析 完 全 符 合 客 户 的 要 求, 但 是 如 果 软 件 没 有 100% 地 按 需 求 规 格 执 行, 那 么 这 个 软 件 也 存 在 错 误 开 发 一 个 大 的 软 件 项 目, 程 序 员 要 为 正 确 精 确 四 个 字 竭 尽 精 力 与 正 确 性 精 确 性 相 关 的 质 量 因 素 是 容 错 性 和 可 靠 性 容 错 性 首 先 承 认 软 件 系 统 存 在 不 正 确 与 不 精 确 的 因 素, 为 了 防 止 潜 在 的 不 正 确 与 不 精 确 因 素 引 发 灾 难, 系 统 为 此 设 计 了 安 全 措 施 在 一 些 高 风 险 的 软 件 系 统, 如 航 空 航 天 武 器 金 融 等 系 统 中, 容 错 性 设 计 非 常 重 要 可 靠 性 是 指 在 一 定 的 环 境 下, 在 给 定 的 时 间 内, 系 统 不 发 生 故 障 的 概 率 可 靠 性 本 来 是 硬 件 领 域 的 术 语 比 如 某 个 电 子 设 备, 一 开 始 工 作 很 正 常, 但 由 于 工 作 中 器 件 的 物 理 性 质 会 发 生 变 化 ( 如 发 热 ), 慢 慢 地 系 统 就 会 失 常 所 以 一 个 设 计 完 全 正 确 的 硬 件 系 统, 在 工 作 中 未 必 就 是 可 靠 的 软 件 在 运 行 时 不 会 发 生 物 理 性 质 的 变 化, 人 们 常 以 为 如 果 软 件 的 某 个 功 能 是 正 确 的, 那 么 它 一 辈 子 都 是 正 确 的 可 是 我 们 无 法 对 软 件 进 行 彻 底 地 测 试, 无 法 根 除 软 件 中 潜 在 的 错 误 平 时 软 件 运 行 得 好 好 的, 说 不 准 哪 一 天 就 不 正 常 了, 如 2000 年 问 题
因 此 把 可 靠 性 引 入 软 件 领 域 是 有 意 义 的 我 曾 买 了 一 本 关 于 软 件 可 靠 性 的 著 作, 此 书 充 满 了 数 学 公 式 我 发 现 以 我 目 前 的 学 历 实 在 难 以 看 懂 书 上 讲 了 些 什 么 请 宽 恕 我 的 愚 昧, 我 把 此 书 给 供 起 来, 没 敢 用 笔 画 一 处 记 号 3.3.2 性 能 与 效 率 用 户 都 希 望 软 件 的 运 行 速 度 高 些 ( 高 性 能 ), 并 且 占 用 资 源 少 些 ( 高 效 率 ) 旧 社 会 地 主 就 是 这 么 对 待 长 工 的 : 干 活 要 快 点, 吃 得 要 少 点 程 序 员 可 以 通 过 优 化 算 法 数 据 结 构 和 代 码 组 织 来 提 高 软 件 系 统 的 性 能 与 效 率 优 化 的 关 键 工 作 是 找 出 限 制 性 能 与 效 率 的 瓶 颈, 不 要 在 无 关 痛 痒 的 地 方 瞎 忙 乎 如 果 你 想 职 称 升 得 快, 光 靠 增 加 课 时 能 顶 屁 用 ; 你 就 该 一 年 写 它 几 十 篇 文 章, 争 取 破 格 升 教 授 3.3.3 易 用 性 易 用 性 是 指 用 户 感 觉 使 用 软 件 的 难 易 程 度 用 户 可 能 是 操 作 软 件 的 最 终 用 户, 也 可 能 是 那 些 要 使 用 源 代 码 的 程 序 员 现 代 人 的 生 活 节 奏 快, 干 啥 事 都 想 图 个 方 便 所 以 把 易 用 性 作 为 重 要 的 质 量 因 素 无 可 非 议 导 致 软 件 易 用 性 差 的 根 本 原 因 是 开 发 人 员 犯 了 错 位 的 毛 病 : 他 以 为 只 要 自 己 用 起 来 方 便, 用 户 也 一 定 会 满 意 俗 话 说 王 婆 卖 瓜, 自 卖 自 夸 当 程 序 员 向 用 户 展 示 软 件 时, 常 会 得 意 地 讲 : 这 个 软 件 非 常 好 用, 我 操 作 给 你 看, 是 很 好 用 吧! 软 件 的 易 用 性 要 让 用 户 来 评 价 当 用 户 真 的 感 到 软 件 很 好 用 时, 一 股 温 暖 的 感 觉 油 然 而 生, 于 是 就 用 友 好 来 评 价 易 用 性 3.3.4 可 理 解 性 与 简 洁 性 可 理 解 性 表 达 了 人 们 一 种 质 朴 的 愿 望 : 我 化 钱 买 了 它, 总 得 让 我 明 白 它 是 什 么 东 西 我 小 时 候 的 一 个 伙 伴 在 读 中 学 时, 就 因 无 法 理 解 电 荷 之 分 正 负, 觉 得 很 烦 恼, 便 早 早 地 缀 学 当 工 人 可 理 解 性 也 是 对 用 户 而 言 的 开 发 人 员 只 有 在 自 己 思 路 清 晰 时 才 可 能 写 出 让 别 人 能 理 解 的 程 序 编 程 时 还 要 注 意 不 可 滥 用 技 巧, 应 该 用 自 然 的 方 式 编 程 我 们 的 确 不 知 道 自 己 的 得 意 之 举 究 竟 是 锦 上 添 花, 还 是 画 蛇 添 足 就 象 蒸 出 一 笼 馒 头, 在 上 面 插 一 朵 鲜 花, 本 想 弄 点 诗 情 画 意, 却 让 人 误 以 为 那 是 一 堆 热 气 腾 腾 的 牛 粪 简 洁 是 一 种 美, 不 管 是 自 己 还 是 用 户 都 会 有 同 感 在 生 活 中, 与 简 洁 对 立 的 是 罗 里 罗 嗦 中 国 小 说 中 最 婆 婆 妈 妈 的 男 人 是 唐 僧 有 一 项 民 意 调 查 : 如 果 世 上 只 有 唐 僧 孙 悟 空 猪 八 戒 和 沙 僧 这 四 类 男 人, 你 要 嫁 给 哪 一 类? 请 列 出 优 先 级 调 查 结 果 表 明, 现 代 女 性 毫 不 例 外 地 把 唐 僧 摆 在 老 末 一 个 原 始 的 应 用 问 题 可 能 很 复 杂, 但 高 水 平 的 人 就 能 够 把 软 件 系 统 设 计 得 很 简 洁 如 果 软 件 系 统 臃 肿 不 堪, 它 迟 早 会 出 问 题 简 洁 是 人 们 对 工 作 精 益 求 精 的 结 果 废 话 大 师 有 句 名 言 : 如 果 我 令 你 过 于 轻 松 地 明 白 了, 那 你 一 定 是 误 解 了 我 说 的 话 我 最 近 有 一 种 奇 怪 的 体 会 : 如 果 把 学 术 文 章 写 得 很 简 洁, 让 人 很 容 易 理 解, 它 往 往 中 不 了 ; 只 有 加 上 一 些 玄 乎 的 东 西, 把 本 来 简 单 的 弄 成 复 杂 的, 才 会 增 加 投 稿 的 命 中 率 事 实 上, 我 可 以 在 5 分 钟 之 内 说 清 楚 三 年 来 读 博 所 做 的 工 作, 根 本 用 不 着 写 100 多 页 的 博 士 论 文 我 是 在 临 近 毕 业 时, 才 发 觉 自 己 完 全 不 适 合 读 博 士 学 位 将 来 工 作 后, 我 一 定 要 好 好 编 程, 重 新 做 人 3.3.5 可 复 用 性 与 可 扩 充 性 复 用 的 一 种 方 式 是 原 封 不 动 地 使 用 现 成 的 软 构 件, 另 一 种 方 式 是 对 现 成 的 软 构 件 进 行 必
要 的 扩 充 后 再 使 用 可 复 用 性 好 的 程 序 一 般 也 具 有 良 好 的 可 扩 充 性 本 书 第 六 章 将 论 述 如 何 设 计 可 复 用 可 扩 充 的 C++ 程 序 3.4 质 量 检 查 检 查 是 人 们 不 信 任 自 己 和 别 人 的 一 种 行 为 当 某 些 事 情 涉 及 到 利 益 分 配 时, 更 需 要 有 检 查 活 动 来 保 证 公 平 估 计 即 使 进 入 了 共 产 主 义 社 会, 也 少 不 了 检 查 质 量 检 查 并 不 是 要 等 到 项 目 结 束 时 才 执 行 唯 一 的 一 次, 应 该 在 每 个 实 践 环 节 都 要 执 行 对 应 于 进 度 表, 在 每 个 里 程 碑 到 达 时 执 行 质 量 检 查 比 较 合 理 质 量 检 查 的 内 容 有 二 : 一 是 作 出 评 审, 是 合 格 还 是 不 合 格? 能 打 多 少 分? 二 是 作 出 建 议, 对 质 量 为 什 么 好 为 什 么 差 进 行 分 析, 以 便 改 差 为 好 好 上 加 好 以 下 是 人 们 经 常 采 用 的 软 件 质 量 检 查 措 施 [Pressman 1999]: (1) 事 先 把 检 查 的 主 要 内 容 制 成 一 张 表, 使 检 查 活 动 集 中 在 主 要 问 题 上 (2) 只 评 审 工 作, 不 评 审 开 发 者 评 审 的 气 氛 应 该 是 融 洽 的 存 在 的 错 误 应 该 被 有 礼 貌 地 指 出 来, 任 何 人 的 意 见 都 不 应 被 阻 挠 或 小 看 (3) 建 立 一 个 议 事 日 程 并 遵 循 它 检 查 过 程 不 能 放 任 自 由, 必 须 排 照 既 定 的 方 向 和 日 程 进 行 (4) 不 要 化 太 多 的 时 间 争 论 和 辩 驳 (5) 说 清 楚 问 题 所 在, 但 不 要 企 图 当 场 解 决 所 有 问 题 (6) 对 检 查 人 员 进 行 适 当 的 培 训 做 好 检 查 工 作 并 不 是 件 容 易 的 事 自 古 以 来 上 有 政 策, 下 有 对 策 虚 假 的 质 量 检 查 还 不 如 不 检 查, 下 面 讲 两 个 故 事 作 为 解 释 故 事 一 不 久 前 我 回 到 西 北 那 所 读 了 六 年 多 的 大 学, 惊 奇 地 发 现 校 园 里 房 前 屋 后 长 满 了 待 收 割 的 小 麦! 这 所 大 学 是 从 事 电 子 科 技 的, 种 小 麦 干 啥 呀? 朱 总 理 曾 讲 过 : 目 前 国 家 粮 食 充 足, 再 来 三 年 自 然 灾 害 也 不 怕 现 在 国 泰 民 安, 似 乎 用 不 着 深 挖 洞, 广 积 粮 我 素 知 学 校 提 创 勤 俭 节 约 自 力 更 生, 但 与 其 种 小 麦 还 不 如 种 蔬 菜 呢 老 同 学 告 诉 我, 种 小 麦 是 为 了 应 付 211 工 程 ( 为 21 世 纪 选 拔 100 所 重 点 大 学 ) 的 检 查 团, 因 为 211 工 程 有 较 高 的 绿 化 指 标 偏 偏 检 查 赶 在 冬 天, 那 时 的 西 北 极 难 长 草 我 那 所 大 学 本 来 就 人 多 地 少, 地 上 一 长 草 马 上 就 会 被 谈 恋 爱 的 学 生 给 折 磨 死 一 到 冬 天, 整 个 校 园 就 光 秃 秃 一 片 用 小 麦 绿 化 校 园 可 谓 千 古 绝 笔, 检 查 团 的 那 些 权 贵 人 士 早 已 五 谷 不 分, 岂 知 所 见 的 草 坪 乃 是 麦 田 检 查 工 作 要 预 防 被 检 查 者 弄 虚 作 假 故 事 二 我 上 高 中 时, 班 里 举 行 一 次 入 团 评 审 侯 选 人 中 有 几 位 是 好 学 生, 有 几 位 是 坏 学 生 我 心 想 伸 张 正 义 的 机 会 到 了, 绝 不 能 让 坏 蛋 混 进 纯 洁 的 团 里 可 天 知 道 团 支 部 书 记 是 聪 明 绝 顶 还 是 蠢 笨 之 极 他 竟 说 : 班 里 还 有 一 些 同 学 没 有 入 团, 现 在 他 们 申 请 入 团, 有 不 同 意 的 请 举 手 我 们 都 不 知 道 该 怎 么 办 了 书 记 接 着 说 : 既 然 没 有 人 举 手 反 对, 就 表 示 全 部 同 意, 请 大 家 鼓 掌 欢 迎 这 次 入 团 评 审 不 到 一 分 钟 就 结 束 了, 从 此 后 我 再 也 没 想 过 争 取 入 党 检 查 工 作 要 有 科 学 的 评 审 方 式
3.5 小 结 不 知 为 什 么, 国 内 很 多 大 的 企 业 都 喊 着 要 进 世 界 500 强 如 果 真 的 实 现 了, 世 界 500 强 还 不 全 被 中 国 霸 占 了 软 件 的 项 目 计 划 和 质 量 管 理 都 不 是 用 来 喊 叫 的 口 号 做 项 目 计 划 时 切 忌 冒 进, 不 要 指 望 在 项 目 陷 入 困 境 后 靠 增 加 人 手 来 解 救 软 件 的 高 质 量 主 要 是 设 计 出 来 的, 不 是 管 出 来 的, 更 不 能 依 赖 质 量 检 查 为 此 程 序 员 要 充 分 了 解 软 件 的 质 量 因 素, 只 有 提 高 设 计 水 平, 才 能 开 发 出 高 质 量 的 软 件
第 四 章 可 行 性 分 析 与 需 求 分 析 可 行 性 分 析 是 要 决 定 做 还 是 不 做 需 求 分 析 是 要 决 定 做 什 么, 不 做 什 么 即 使 可 行 性 分 析 是 客 观 的 科 学 的, 但 决 策 仍 有 可 能 是 错 误 的 因 为 决 策 者 是 人, 人 会 冲 动, 有 赌 博 心 态 如 果 可 行 性 分 析 表 明 做 某 件 事 的 成 功 率 是 10%, 失 败 率 是 90%, 倘 若 该 事 情 的 意 义 非 常 大, 决 策 者 也 许 会 一 拍 脑 袋 : 豁 出 去, 干! 于 是 这 世 界 就 多 了 一 份 极 喜 与 极 悲 4.1 节 讲 述 可 行 性 分 析 的 四 大 要 素 : 经 济 技 术 社 会 环 境 和 人 目 前 国 内 很 多 软 件 公 司 做 系 统 集 成 项 目, 如 果 谈 谈 系 统 集 成 项 目 的 可 行 性 分 析 将 很 有 意 思 可 是 那 些 系 统 集 成 项 目 大 多 是 政 府 机 构 的, 由 于 软 件 行 业 尚 不 规 范 并 且 客 户 方 存 在 腐 败 现 象, 所 以 业 内 流 传 没 有 做 不 了 的 系 统 集 成 项 目 软 件 公 司 的 注 意 力 几 乎 全 集 中 在 如 何 拿 到 项 目 订 单 以 及 拿 到 订 单 后 如 何 蒙 混 过 关 上, 使 我 丧 失 了 卖 弄 可 行 性 分 析 的 机 会 既 然 不 能 正 面 指 点 一 个 人 如 何 做 好 事, 那 么 就 规 劝 他 不 要 做 坏 事 吧 4.2 节 讲 述 可 行 性 分 析 案 例 投 资 软 件 公 司 失 败 的 教 训 作 者 本 来 没 有 资 格 谈 论 投 资, 但 事 有 凑 巧 : 近 一 年 来 我 关 闭 了 一 个 亏 损 30 万 元 的 软 件 公 司 ( 我 自 己 的 ); 休 克 一 个 年 亏 损 200 万 元 的 软 件 公 司 ( 朋 友 的 ); 扼 杀 一 个 200 万 元 的 投 资 方 案 ( 陌 生 人 的 ); 踩 灭 一 个 处 于 萌 芽 状 态 的 100 万 元 的 投 资 设 想 ( 熟 人 的 ) 鉴 于 现 在 比 较 富 有 的 民 营 企 业 渴 望 投 资 软 件 行 业 的 越 来 越 多, 值 得 谈 谈 这 方 面 的 可 行 性 分 析 我 将 讲 述 亲 身 经 历 后 的 感 受, 提 一 些 建 议 不 论 是 为 客 户 做 软 件 项 目 还 是 为 自 己 做 软 件 产 品, 都 要 进 行 需 求 分 析 需 求 分 析 最 恼 人 之 处 是 难 以 在 项 目 刚 启 动 时 搞 清 楚 需 求, 如 果 在 项 目 做 了 一 大 半 时 需 求 发 生 了 变 化, 那 将 使 项 目 陷 入 困 境 4.3 节 解 释 需 求 分 析 为 什 么 困 难,4.4 节 讲 述 如 何 进 行 需 求 分 析 本 章 的 需 求 分 析 均 不 涉 及 编 程, 所 以 不 考 虑 结 构 化 面 向 对 象 等 分 析 方 法 4.1 可 行 性 分 析 的 要 素 做 可 行 性 分 析 不 能 以 偏 盖 全, 也 不 可 以 什 么 鸡 毛 蒜 皮 的 细 节 都 加 以 权 衡 可 行 性 分 析 必 须 为 决 策 提 供 有 价 值 的 证 据 联 想 集 团 领 导 人 柳 传 志 曾 说 : 没 钱 赚 的 事 我 们 不 干 ; 有 钱 赚 但 投 不 起 钱 的 事 不 干 ; 有 钱 赚 也 投 得 起 钱 但 没 有 可 靠 的 人 选, 这 样 的 事 也 不 干 柳 传 志 为 决 策 立 了 上 述 准 则, 同 时 也 为 可 以 行 性 分 析 指 明 了 重 点 一 般 地, 软 件 领 域 的 可 行 性 分 析 主 要 考 虑 四 个 要 素 : 经 济 技 术 社 会 环 境 和 人 本 节 只 是 泛 泛 地 解 释 这 四 个 要 素, 旨 在 建 立 全 局 分 析 的 观 念 4.2 节 将 结 合 案 例 围 绕 上 述 要 素 进 行 重 点 分 析 与 评 注 4.1.1 经 济 经 济 可 行 性 分 析 主 要 包 括 : 成 本 收 益 分 析 和 短 期 长 远 利 益 分 析 一 成 本 收 益 分 析 成 本 收 益 分 析 最 容 易 理 解, 如 果 成 本 高 于 收 益 则 表 明 亏 损 了, 如 果 成 本 大 大 高 于 收 益 那 就 亏 大 了 商 人 都 不 喜 欢 做 吃 亏 的 事 情 有 些 商 店 成 天 贴 着 最 后 一 天 跳 楼 大 拍 卖 的 标 语, 意 思 是 : 我 准 备 吃 大 亏 让 你 占 便 宜, 同 志, 你 快 上 钩 吧
如 果 是 为 客 户 做 软 件 项 目, 那 么 收 益 就 写 在 合 同 中 如 果 是 做 自 己 的 软 件 产 品, 那 么 收 益 就 是 销 售 额 人 们 在 预 估 产 品 销 售 额 时 常 常 过 分 乐 观 而 犯 下 大 错 那 些 对 你 的 产 品 说 恭 维 话 的 人 并 不 见 得 就 是 要 买 货 的 人, 俗 话 说 嫌 货 才 是 买 货 人 当 你 没 碰 到 一 个 挑 刺 的 人 而 感 觉 这 产 品 好 得 会 让 你 发 大 财 时, 就 要 做 好 会 破 产 的 心 理 准 备 如 果 做 的 是 小 本 生 意, 那 可 得 对 成 本 进 行 细 算 软 件 的 成 本 不 是 指 存 放 软 件 的 那 张 光 盘 的 成 本, 而 是 指 开 发 成 本 要 考 虑 的 成 本 有 : (1) 办 公 室 房 租 (2) 办 公 用 品, 如 桌 椅 书 柜 照 明 电 器 空 调 等 (3) 计 算 机 打 印 机 网 络 等 硬 件 设 备 (4) 电 话 传 真 等 通 讯 设 备 以 及 通 讯 费 用 (5) 资 料 费 (6) 办 公 消 耗, 如 水 电 费 打 印 复 印 费 等 (7) 软 件 开 发 人 员 与 行 政 人 员 的 工 资 (8) 购 买 系 统 软 件 的 费 用, 如 买 操 作 系 统 数 据 库 软 件 开 发 工 具 等 有 些 老 板 买 盗 版 的 系 统 软 件, 却 按 市 场 价 算 成 本, 可 从 美 国 佬 那 里 赚 一 笔 (9) 做 市 场 调 查 可 行 性 分 析 需 求 分 析 的 交 际 费 用 (10) 公 司 人 员 培 训 费 用 (11) 产 品 宣 传 费 用 如 果 用 Internet 作 宣 传, 则 要 考 虑 建 设 Web 站 点 的 费 用 (12) 如 果 客 户 是 政 府 部 门, 还 要 充 分 考 虑 用 于 吃 喝 玩 乐 行 贿 的 费 用 (13) 如 果 公 司 的 风 水 不 好, 会 有 很 多 莫 名 其 妙 的 管 理 费 每 戳 一 个 红 艳 艳 的 公 章 都 要 化 一 把 钞 票 二 短 期 长 远 利 益 分 析 人 们 喜 欢 吃 着 碗 里 的 看 着 锅 里 的, 还 想 着 别 人 家 里 的 短 期 利 益 和 长 远 利 益 兼 得 是 人 们 梦 寐 以 求 的 事 在 商 业 上, 这 等 好 事 可 不 会 轻 易 降 临 短 期 利 益 容 易 把 握, 风 险 较 低 国 内 软 件 公 司 经 常 出 现 一 窝 蜂 地 去 做 信 息 管 理 系 统 多 媒 体 光 盘 系 统 集 成 项 目 或 Internet 服 务 每 当 我 们 沉 迷 于 短 期 利 益 不 思 进 取 时, 应 该 好 好 回 忆 童 年 时 代 那 些 伟 大 的 抱 负, 给 自 己 一 些 激 励 长 远 利 益 难 以 把 握, 风 险 较 大 能 为 了 长 远 利 益 不 惜 短 期 亏 损 的 人, 要 么 是 雄 心 勃 勃 的 将 帅 之 才, 要 么 是 纸 上 谈 兵 眼 高 手 底 的 那 一 类 庸 人 国 内 目 前 有 不 少 Internet 企 业, 只 投 入 不 产 出 为 了 成 就 将 来 的 霸 业, 甘 愿 现 在 拼 财 力 比 耐 性 最 后 存 活 下 来 的 几 个 公 司 将 瓜 分 市 场 那 些 为 长 远 利 益 奋 斗 的 人 们, 你 们 可 得 把 长 征 的 路 途 走 完 啊, 千 万 别 让 事 业 中 途 夭 折 4.1.2 技 术 技 术 可 行 性 分 析 至 少 要 考 虑 以 下 几 方 面 因 素 : (1) 在 给 定 的 时 间 内 能 否 实 现 需 求 说 明 中 的 功 能 如 果 在 项 目 开 发 过 程 中 遇 到 难 以 克 服 的 技 术 问 题, 麻 烦 就 大 了 轻 则 拖 延 进 度, 重 则 断 送 项 目 (2) 软 件 的 质 量 如 何? 有 些 应 用 对 实 时 性 要 求 很 高, 如 果 软 件 运 行 慢 如 蜗 牛, 即 便 功 能 具 备 也 毫 无 实 用 价 值 有 些 高 风 险 的 应 用 对 软 件 的 正 确 性 与 精 确 性 要 求 极 高, 如 果 软 件 出 了 差 错 而 造 成 客 户 利 益 损 失, 那 么 软 件 开 发 方 可 要 赔 惨 了 (3) 软 件 的 生 产 率 如 何? 如 果 生 产 率 低 下, 能 赚 到 的 钱 就 少, 并 且 会 逐 渐 丧 失 竞 争 力 在 统 计 软 件 总 的 开 发 时 间 时, 不 能 漏 掉 用 于 维 护 的 时 间 软 件 维 护 是 非 常 拖 后 腿 的 事, 它 能 把
前 期 拿 到 的 利 润 慢 慢 地 消 耗 光 如 果 软 件 的 质 量 不 好, 将 会 导 致 维 护 的 代 价 很 高, 企 图 通 过 偷 工 减 料 而 提 高 生 产 率, 是 得 不 偿 失 的 事 技 术 可 行 性 分 析 可 以 简 单 地 表 述 为 : 做 得 了 吗? 做 得 好 吗? 做 得 快 吗? 4.1.3 社 会 环 境 社 会 环 境 的 可 行 性 至 少 包 括 两 种 因 素 : 市 场 与 政 策 市 场 又 分 为 未 成 熟 的 市 场 成 熟 的 市 场 和 将 要 消 亡 的 市 场 涉 足 未 成 熟 的 市 场 要 冒 很 大 的 风 险, 要 尽 可 能 准 确 地 估 计 潜 在 的 市 场 有 多 大? 自 己 能 占 多 少 份 额? 多 长 时 间 能 实 现? 挤 进 成 熟 的 市 场, 虽 然 风 险 不 高, 但 油 水 也 不 多 如 果 供 大 于 求, 即 软 件 开 发 公 司 多, 项 目 少, 那 么 在 竞 标 时 可 能 会 出 现 恶 性 杀 价 的 情 形 国 内 第 一 批 卖 计 算 机 的 做 系 统 集 成 的 公 司 发 了 财, 别 人 眼 红 了 也 挤 进 来, 这 个 行 业 的 平 均 利 润 也 就 下 降 了 将 要 消 亡 的 市 场 就 别 进 去 了 尽 管 很 多 程 序 员 怀 念 DOS 时 代 编 程 的 那 种 淋 漓 尽 致, 可 现 在 没 人 要 DOS 应 用 软 件 了 学 校 教 学 尚 可 用 用 DOS 软 件, 商 业 软 件 公 司 则 不 可 再 去 开 发 DOS 软 件 政 策 对 软 件 公 司 的 生 存 与 发 展 影 响 非 常 大 整 个 90 年 代, 中 国 电 信 的 收 费 相 当 高, 仅 此 一 招 就 把 国 内 互 联 网 企 业 打 得 奄 奄 一 息 某 些 软 件 行 业 的 利 润 很 高, 但 可 能 存 在 地 方 保 护 政 策, 使 竞 争 不 公 平 政 策 不 当 将 阻 碍 软 件 公 司 的 健 康 发 展, 可 最 怕 的 还 是 政 府 干 预 企 业 的 正 当 行 为 例 如 : 现 在 家 电 行 业 竞 争 非 常 激 烈, 其 中 有 一 个 著 名 企 业 的 总 裁 十 分 了 得, 把 对 手 打 得 节 节 败 退 于 是 中 央 领 导 人 就 来 视 察 该 企 业 并 作 讲 话 : 你 们 的 业 绩 辉 煌, 得 到 了 中 央 的 高 度 重 视, 但 我 们 是 社 会 主 义 国 家, 不 是 资 本 主 义 国 家, 你 们 总 得 给 兄 弟 企 业 的 同 志 们 留 口 饭 吃 吧! 有 一 次 我 拜 访 了 北 京 大 学 一 位 研 究 经 济 学 的 朋 友 这 个 年 青 人, 还 是 个 党 员, 竞 然 这 么 说 : 我 最 近 在 研 究 国 内 明 星 企 业 的 兴 衰 问 题, 我 发 现 了 一 个 规 律, 明 星 企 业 一 旦 被 政 府 领 导 人 视 察 过, 它 就 忘 了 自 己 是 谁, 就 会 做 些 走 向 死 亡 的 蠢 事 我 实 在 不 明 白 企 业 中 为 什 么 还 要 有 书 记 职 位 我 以 为 书 记 乃 是 天 下 第 一 号 可 笑 的 官 衔, 书 记 本 是 秘 书 (secretary) 的 同 义 词, 是 个 可 有 可 无 的 行 政 人 员 的 称 呼, 在 中 国 竟 然 成 了 最 大 的 官 衔 每 次 看 到 新 闻 联 播 把 国 家 主 席 错 叫 成 总 书 记 我 都 十 分 气 愤 : 因 为 总 书 记 的 称 喟 只 对 几 千 万 的 党 员 适 用, 国 家 的 新 闻 机 构 难 道 不 面 向 十 多 亿 普 通 老 百 姓? 如 果 我 将 来 的 工 作 单 位 还 靠 书 记 来 管 事, 我 每 天 准 忙 着 生 气, 那 里 还 有 精 力 去 编 程 4.1.4 人 有 句 名 言 : 人 分 四 类 人 物, 人 才, 人 手, 人 渣 如 果 一 个 软 件 公 司 里 上 述 四 类 人 齐 全 了, 那 么 最 好 的 分 工 是 让 人 物 当 领 导, 人 才 做 第 一 线 的 开 发 人 员, 人 手 做 行 政 人 员, 人 渣 负 责 行 贿 这 里 只 谈 公 司 的 领 导 与 开 发 人 员 行 还 是 不 行 人 物 毕 竟 是 少 数, 人 才 可 是 济 济 的 举 重 若 轻 的 那 类 人 才 可 以 做 领 导, 举 轻 若 重 的 那 类 人 才 适 合 做 软 件 开 发 人 员 假 如 一 群 持 有 学 士 硕 士 和 博 士 文 凭 的 毕 业 生 到 软 件 公 司 应 聘, 该 如 何 录 用 呢? 我 的 建 议 如 下 : 先 选 择 本 科 毕 业 生, 因 为 他 们 正 当 青 春 干 劲 十 足 不 摆 架 子 不 耻 下 问 要 求 不 高 奉 献 甚 多 其 次 选 择 硕 士 毕 业 生, 如 果 该 生 没 象 范 进 中 举 时 那 么 老, 并 且 在 读 硕 士 时 没 有 天 天 去 造 文 章 而 丢 弃 了 编 程 工 作, 那 么 让 有 经 验 的 学 士 程 序 员 带 他 们 煅 练 几 个 月 就 可 以 用 了 如 果 学 士 硕 士 被 其 它 公 司 取 光 了, 那 只 好 捡 几 个 博 士 充 数 博 士 到 了 软 件 公 司 有 什 么
用 呢? 我 想 不 出 有 什 么 用, 只 知 道 他 们 挺 值 得 可 怜 的 : 从 硕 士 读 到 博 士 出 头, 这 六 七 年 时 间, 真 本 事 没 学 多 少, 倒 学 会 眼 高 手 低 甚 至 弄 虚 作 假 ; 毕 业 时 蓦 然 回 首, 发 觉 青 春 已 被 虚 度, 心 灵 已 呈 老 态, 唯 有 长 叹 短 嘘, 强 把 自 负 作 自 信 我 也 将 博 士 毕 业, 就 要 论 为 三 手 贷 贱 卖 了 真 羡 慕 那 些 比 我 年 轻 的 学 士 硕 士 们, 他 们 可 以 远 走 高 飞, 唉! 4.2 可 行 性 分 析 案 例 投 资 软 件 公 司 失 败 的 教 训 谈 到 软 件 产 业, 不 能 不 提 及 比 尔 盖 茨 与 Microsoft 公 司 因 为 比 尔 盖 茨 创 建 了 Microsoft 公 司 并 成 为 世 界 首 富 的 事 实, 使 得 无 数 从 事 软 件 工 作 的 人 们 心 存 同 样 的 梦 想 有 太 多 人 急 着 想 做 中 国 的 比 尔 盖 茨 有 个 年 青 人 发 明 了 一 种 汉 字 输 入 法, 便 在 媒 体 上 放 言 欲 覆 盖 比 尔 盖 茨 中 央 电 视 台 特 冲 动 地 把 一 个 上 了 年 纪 的 院 士 请 来, 让 他 谈 谈 自 己 与 比 尔 盖 茨 的 比 较, 害 得 这 位 院 士 一 个 劲 地 辨 解 自 己 不 是 中 国 的 比 尔 盖 茨 近 几 年 来, 一 批 Internet 英 雄 企 业 如 Yahoo Netscape 兴 起 尤 如 打 破 了 秦 始 皇 一 统 的 天 下, 重 返 春 秋 战 国 时 代 让 软 件 人 员 走 出 了 Microsoft 的 阴 影, 看 到 了 阳 光 灿 烂 的 软 件 世 界 于 是 各 色 各 样 小 不 点 儿 的 软 件 公 司 在 国 内 遍 地 开 花 打 破 水 缸 的 小 孩 子 很 多, 但 并 不 见 得 就 会 有 司 马 光 的 业 绩 由 于 经 济 技 术 社 会 环 境 人 的 因 素 存 在 差 异, 有 些 事 情 美 国 人 能 做 成, 我 们 模 仿 着 做 未 必 就 能 做 得 成 功 虽 然 星 星 之 火 可 以 燎 原, 但 我 们 的 国 力 薄 弱, 实 在 容 不 得 把 有 限 的 火 种 扔 到 不 毛 之 地 所 以 要 进 行 可 行 性 分 析, 如 果 不 可 行, 就 不 要 急 着 去 做 本 节 三 个 案 例 是 作 者 亲 身 经 历 的, 我 力 求 讲 清 楚 错 在 哪 里, 并 总 结 经 验 教 训 希 望 读 者 看 后 能 提 高 警 惕, 免 犯 相 同 的 错 误 4.2.1 可 行 性 分 析 案 例 之 一 这 个 案 例 讲 述 我 从 开 公 司 到 关 闭 公 司 的 一 些 经 历 和 感 受 我 从 本 科 三 年 级 开 始 编 写 图 形 程 序, 一 见 钟 情 后 便 如 痴 如 醉, 不 管 一 切 地 抛 弃 了 本 科 与 硕 士 的 微 电 子 专 业 1997 年 春 季, 我 到 了 向 往 已 久 的 浙 江 大 学 CAD&CG 国 家 重 点 实 验 室 读 博 士 学 位 我 幸 福 地 幻 想 着 大 干 一 番 自 己 喜 爱 的 专 业 开 学 的 第 一 天, 我 兴 冲 冲 地 奔 向 实 验 室 进 门 不 到 5 分 钟, 就 因 不 懂 规 矩 被 看 门 的 年 青 女 子 训 了 几 次 为 了 不 再 冒 犯 规 矩, 我 就 老 老 实 实 地 抓 起 一 份 计 算 机 报 纸 并 且 站 着 阅 读 突 然 一 个 气 得 脸 色 铁 青 的 男 人 ( 机 房 管 理 员 之 一 ) 对 我 断 喝 : 你 在 干 什 么! 你 怎 么 可 以 不 经 允 许 就 翻 看 别 人 的 报 纸! 我 就 象 一 个 情 窦 初 开 的 少 年 飘 飘 然 地 去 拥 抱 梦 中 情 人, 不 料 迎 来 两 个 耳 光, 此 下 场 比 猫 和 老 鼠 中 的 猫 还 惨 不 出 几 日, 我 就 发 现 实 验 室 里 人 们 大 多 轻 言 寡 语 小 心 翼 翼 井 水 不 犯 河 水 初 到 此 实 验 室 的 北 方 同 学 极 为 迷 惑 地 问 我 : 你 们 浙 江 人 是 不 是 都 这 个 德 性? 我 看 你 不 太 象 嘛 如 果 不 允 许 一 个 男 人 在 工 作 时 仰 天 大 笑, 这 样 的 地 方 不 去 也 罢 我 颇 费 周 折 地 考 入 CAD&CG 实 验 室, 却 尚 未 热 身 就 全 力 而 退, 决 心 自 立 门 户 ( 至 今 我 都 没 有 用 实 验 室 的 计 算 机 编 过 一 行 程 序 ) 那 时 我 穷 困 潦 倒, 只 有 一 床, 一 盆, 一 壶, 一 碗 我 那 些 穷 朋 友 们 象 挤 牙 膏 一 样 挤 一 些 钱 资 肋 我 我 买 了 一 台 计 算 机, 就 在 宿 舍 里 开 发 软 件 1997 年 8 月, 我 去 北 京 参 加 首 届 中 国 大 学 生 电 脑 大 赛 软 件 展 示 路 费 也 是 借 的, 同 学 为 我 壮 胆 时 说 : 如 果 不 能 获 奖, 就 回 到 实 验 室 干 活 吧 我 说 一 定 会 拿 第 一 名, 这 是 必 须 实 现 的 近 期 目 标 于 是 我 拿 了 第 一 名, 号 称 大 学 生 软 件 明 星 回 到 浙 大 后 没 啥 反 应, 我 就 向 杭 州 的 几 个 报 社 发 一 份 简 讯 不 久 有 一 个 记 者 来 采 访 我, 谈 了 一 天, 我 发 现 记 者 还 是 不 太 明 白, 干 脆 自 己 写 新 闻 报 道, 并 且 含 蓄 地 做 了 一 个 广 告 : 万 事 俱 备, 只 待 投 资 10 月 份 我 被 评 上 浙 江
省 青 年 英 才 ( 大 学 生 代 表 ), 又 获 得 中 国 大 学 生 跨 世 纪 发 展 基 金 特 等 奖 我 到 东 软 集 团 ( 沈 阳 ) 参 加 民 族 软 件 产 业 青 年 论 坛, 大 不 咧 咧 地 作 了 一 次 演 讲 由 于 我 能 说 会 道, 频 频 上 电 视, 引 来 近 10 个 投 资 者 我 选 择 了 一 位 年 龄 比 我 大 一 倍 非 常 精 明 的 商 人 作 合 伙 人, 成 立 了 杭 州 临 境 软 件 开 发 有 限 公 司 彼 时, 我 可 谓 光 芒 四 射, 卓 而 不 群, 名 片 上 印 着 以 振 兴 民 族 软 件 产 业 为 已 任, 做 真 实 正 直 优 秀 的 科 技 人 员 浙 江 大 学 想 开 除 我, 被 我 晓 之 以 理 动 之 以 情 安 抚 住 我 当 时 想 开 发 一 套 名 为 Soft3D 的 图 形 系 统, 此 系 统 下 至 开 发 工 具, 上 至 应 用 软 件, 无 所 不 包 公 司 名 字 起 为 临 境 有 两 个 含 义 : 一 是 表 示 身 临 其 境, 这 是 我 对 图 形 技 术 的 追 求 ; 二 是 表 示 快 到 了 与 SGI 公 司 称 兄 道 弟 的 境 界, 这 是 我 对 事 业 的 追 求 我 从 实 验 室 挖 来 一 位 聪 明 绝 顶 的 师 弟 做 技 术 伙 伴 ( 他 的 头 明 显 比 我 的 大, 估 计 其 脑 容 量 至 少 是 我 1.5 倍 ) 我 曾 经 以 师 兄 的 身 份 为 他 洗 过 一 双 袜 子, 他 因 此 觉 得 我 是 个 好 人 我 俩 一 拍 即 合, 常 常 为 Soft3D 的 设 计 方 案 自 我 倾 倒 一 想 到 Microsoft 公 司 的 二 维 Windows 系 统 即 将 被 Soft3D 打 击 得 狼 狈 不 堪 时, 我 们 就 乐 不 可 支, 冲 劲 十 足 到 了 1998 年 7 月 份, 我 们 做 了 一 套 既 不 是 科 研 又 不 全 象 商 品 的 软 件, 我 宣 传 了 几 个 月 都 没 有 人 要 1998 年 10 月 份, 我 用 光 了 30 万 元 资 金, 只 好 关 闭 公 司 不 久 我 被 一 位 朋 友 捉 到 北 大 方 正 去 劳 改, 两 个 月 后 我 才 心 服 口 服 地 承 认 自 己 失 败 了 在 失 败 一 周 年 来 临 之 际, 我 客 观 地 从 可 行 性 分 析 角 度 说 明 了 我 和 投 资 方 所 犯 的 错 误, 写 此 文 以 祭 我 那 幼 年 夭 折 的 软 件 公 司 一 我 的 主 要 错 误 (1) 年 青 气 盛, 在 不 具 备 条 件 的 情 况 下, 想 一 下 子 做 成 石 破 天 惊 的 事 我 的 设 计 方 案 技 术 难 度 很 大 ( 有 一 些 是 热 门 的 研 究 课 题 ), 只 有 30 万 元 资 金 的 小 公 司 根 本 没 有 财 力 与 技 术 力 量 去 做 这 种 事 分 析 经 济 与 技 术 可 行 性, 即 可 否 定 我 的 设 计 方 案 (2) 我 以 技 术 为 中 心 而 没 有 以 市 场 为 中 心 去 做 产 品, 以 为 自 己 喜 欢 的 软 件 别 人 也 一 定 喜 欢 我 涉 足 的 是 在 国 内 尚 不 成 候 的 市 场, 我 无 法 估 计 这 市 场 有 多 大, 人 们 到 底 要 什 么 伙 伴 们 跟 着 我 瞎 忙 乎 一 整 年, 结 果 做 出 一 个 洋 洋 洒 洒 没 人 要 的 软 件 分 析 市 场 可 行 性 也 可 否 定 我 的 设 计 方 案 (3) 我 做 到 了 真 实 正 直, 但 并 没 有 达 到 优 秀 的 程 度 我 曾 得 到 很 多 炫 目 的 荣 誉, 但 学 生 时 代 的 荣 誉 只 是 一 种 鼓 励, 并 不 是 对 我 才 能 和 事 业 的 确 认 正 因 为 我 不 够 优 秀, 学 识 浅 薄, 加 上 没 有 更 高 水 平 的 人 指 点 我, 才 会 把 事 情 搞 砸 了 二 投 资 方 的 错 误 (1) 投 资 方 是 个 精 明 的 商 人, 他 把 我 的 设 计 方 案 交 给 美 国 的 一 个 软 件 公 司 分 析, 结 论 是 否 定 的 但 他 觉 得 我 这 个 人 很 有 利 用 价 值, 希 望 可 以 做 成 功 其 它 事 情, 即 使 Soft3D 软 件 做 不 成 功, 只 要 挣 到 钱 就 行 这 种 赌 博 心 态 使 得 正 确 的 可 行 性 分 析 变 得 毫 无 价 值 (2) 由 于 我 不 懂 商 业, 又 象 所 有 单 纯 的 学 生 那 样 容 易 相 信 别 人 他 让 我 写 下 了 不 公 正 的 合 同, 我 竟 然 向 他 借 钱 买 下 本 来 就 属 于 我 的 30% 技 术 股 份 他 名 为 投 资 方, 实 质 上 双 方 各 出 了 一 半 的 资 金 ( 他 出 51%, 我 出 49%) 他 在 明 知 Soft3D 软 件 不 能 成 功 的 情 况 下, 却 为 了 占 我 的 便 宜 而 丧 失 了 应 有 的 精 明, 最 终 导 致 双 方 都 损 失 关 闭 公 司 时, 他 搬 走 了 所 有 的 固 定 财 产 我 明 明 投 入 了 技 术, 又 亏 了 15 万 元, 却 一 无 所 得 几 个 月 后 当 我 意 识 到 不 公 平 而 找 他 协 商 时, 他 说 : 只 能 怨 你 自 己 愚 蠢, 读 到 博 士, 连 张 合 同 都 看 不 懂 我 觉 得 自 己 在 此 事 上 虽 愚 但 不 蠢, 诚 实 正 直 的 品 质 加 上 不 懈 的 努 力 会 让 我 变 得 有 智 慧 自 己 的 奋 斗 没 什 么 可 以 后 悔 的, 学 到 的 远 比 失 去 的 多, 下 一 次 会 做 得 更 好 4.2.2 可 行 性 分 析 案 例 之 二
1999 年 3 月, 一 位 与 我 同 年 同 月 同 日 同 时 辰 出 生 的 朋 友 请 我 帮 忙, 对 一 份 长 达 8 页 的 投 资 方 案 : 万 向 为 什 么 不 投 资 互 联? ( 以 下 简 称 引 资 方 案 ) 进 行 可 行 性 分 析 中 国 供 应 商 信 息 网 引 资 方 案 万 向 集 团 是 浙 江 省 民 营 企 业 的 老 大, 有 的 是 钱, 找 它 投 资 真 的 是 找 对 了 我 当 时 忙 着 对 自 己 进 行 查 漏 补 缺, 正 在 复 习 本 科 的 计 算 机 基 础 课 程 不 耐 烦 地 看 完 那 份 引 资 方 案, 觉 得 比 我 去 年 写 的 Soft3D 设 计 方 案 荒 唐 十 倍 以 上, 于 是 毫 不 迟 疑 地 否 决 朋 友 问 : 为 什 么? 我 答 曰 : 因 为 内 行 的 人 都 会 否 决 朋 友 嘲 笑 : 这 是 废 话, 如 果 投 资 者 都 是 内 行 的 话, 就 不 用 请 人 分 析 了 你 要 写 出 让 农 民 企 业 家 看 得 懂 的 可 行 性 分 析 报 告, 才 叫 有 水 平 我 说 : 好, 好, 就 看 在 同 年 同 月 同 日 同 时 辰 的 份 上, 帮 你 一 把 于 是 我 就 为 拥 有 几 十 亿 资 产 的 一 群 农 民 伯 伯 写 了 一 份 6 页 纸 的 可 行 性 分 析 报 告 此 引 资 方 案 是 个 很 典 型 的 不 可 行 方 案, 我 将 摘 录 一 部 分 内 容 作 为 案 例 进 行 分 析 我 不 认 识 写 引 资 方 案 的 人, 虽 然 批 评 很 多, 但 是 我 对 他 ( 她 ) 本 人 毫 无 恶 意 由 于 我 的 可 行 性 分 析 报 告 是 写 给 不 具 备 计 算 机 基 础 知 识 的 人 看 的, 文 中 采 用 较 为 形 象 的 日 常 事 例 来 比 喻 解 释 信 息 产 业 的 一 些 现 象 这 些 比 喻 在 一 定 程 度 上 是 合 理 的, 但 可 能 是 不 严 谨 的 该 引 资 方 案 有 四 段 主 要 内 容, 每 段 的 主 题 思 想 简 述 如 下 第 一 段, 介 绍 了 Internet 企 业 的 红 火, 得 出 一 些 结 论, 这 是 建 议 投 资 互 联 网 的 关 键 论 据 之 一 主 要 文 字 如 下 : 国 际 互 联 网 英 雄 企 业 雅 虎 (Yahoo) 网 景 (Netscape) 这 些 互 联 网 企 业 有 一 个 特 点, 就 是 赢 利 都 还 不 多 甚 至 微 利 运 转 它 们 的 年 收 入 尚 以 万 来 计 算, 而 股 市 却 达 到 几 十 亿 乃 至 百 亿 几 乎 所 有 互 联 网 企 业 只 要 一 上 市, 它 的 股 价 就 可 以 青 云 直 上, 无 人 能 用 任 何 股 市 定 理 来 推 算 它 们 将 涨 到 什 么 程 度 第 二 段, 概 括 了 在 国 内 投 资 Internet 企 业 的 几 大 好 处, 这 是 建 议 万 向 集 团 投 资 Internet 企 业 的 关 键 论 据 主 要 文 字 如 下 : 借 互 联 网 这 个 金 蛋 与 广 大 投 资 者 的 看 好, 股 票 必 能 大 幅 上 升 借 美 国 网 股 的 升 幅 样 板, 广 大 中 国 股 民 可 能 在 短 期 内 即 可 推 动 股 票 实 现 翻 番 相 信 不 久 的 将 来, 互 联 网 企 业 的 黄 金 赢 利 期 即 可 到 来 事 实 上, 由 于 进 入 互 联 网 经 营 网 站 的 直 接 成 本 很 低, 目 前 国 内 的 绝 大 部 分 网 站 皆 为 小 打 小 闹, 几 乎 没 有 几 个 网 站 有 雄 厚 的 资 金 注 入 建 设 通 过 建 设 一 个 大 网 站 所 带 来 的 全 国 乃 至 全 世 界 的 广 告 影 响 是 无 可 估 量 的 很 容 易 造 势, 效 果 远 远 优 于 同 等 金 额 的 电 视 报 纸 广 告 第 三 段, 该 方 案 的 作 者 说 自 己 已 经 建 立 了 一 个 公 司, 经 营 一 个 叫 中 国 供 应 商 信 息 网 的 站 点 目 前 他 有 一 些 构 思, 希 望 万 向 集 团 投 资 200 万 元 / 年, 按 他 的 方 案, 可 以 很 快 使 万 向 集 团 股 票 狂 升, 机 会 千 载 难 逢 主 要 文 字 如 下 : 我 们 经 营 的 网 站 有 2 年 多 历 史 了 年 经 营 成 本 9 万 元, 我 只 找 了 一 个 助 手 全 年 收 入 近 10 万 元, 虽 说 不 亏, 但 我 无 法 满 足 现 状 希 望 吸 取 资 金 200 万 预 计 年 收 入 1200 万 至 2000 万 增 加 网 站 每 日 求 购 信 息 的 整 编 工 作, 做 到 任 何 其 它 一 个 网 站 有 的 我 们 都 有 增 加 中 国 及 世 界 经 济 新 闻 版 块, 由 每 周 更 新 到 每 日 更 新 建 立 网 上 信 用 卡 收 帐 系 统, 一 旦 需 要, 可 立 即 投 入 使 用 第 四 段, 他 说 自 己 是 萧 山 人, 万 向 集 团 也 源 于 萧 山
一 对 引 资 方 案 第 一 段 的 分 析 与 评 论 Internet 英 雄 企 业 是 典 型 的 知 识 经 济 产 物 雅 虎 网 景 公 司 的 营 业 利 润 与 其 股 市 相 比 是 极 微 的 从 外 表 上 看 : 一 个 固 定 资 产 可 以 被 忽 略 的, 几 乎 没 有 营 业 利 润 的 Internet 企 业, 可 以 有 极 高 的 股 市 价 值, 并 且 市 值 不 停 上 涨 为 什 么 能 够 这 样? 这 是 有 极 苛 刻 的 前 提 条 件 的 但 是 引 资 方 案 一 开 始 就 立 论 : 几 乎 所 有 互 联 网 企 业 只 要 一 上 市, 它 的 股 价 就 可 以 青 云 直 上, 无 人 能 用 任 何 股 市 定 理 来 推 算 它 们 将 涨 到 什 么 程 度 这 显 然 是 胡 吹, 我 认 为 即 使 外 行 也 不 会 相 信 尽 管 我 也 不 够 资 历 去 评 论 雅 虎 网 景 公 司, 但 愿 意 尽 力 不 离 谱 地 通 俗 地 解 释 雅 虎 网 景 现 象 让 我 们 把 Internet 想 象 成 无 边 无 际 的 网, 把 每 个 网 的 交 织 点 叫 做 网 站, 在 每 个 网 站 中 至 少 可 以 放 一 台 计 算 机 Internet 的 基 本 功 能 是 让 网 上 的 所 有 计 算 机 能 够 相 互 通 讯 由 于 现 在 的 一 台 计 算 机 能 做 十 年 前 不 敢 想 的 事, 真 的 无 法 估 量 上 亿 台 计 算 机 相 联 的 Internet 有 多 么 强 大 的 本 领 Internet 极 其 相 关 产 业 成 了 美 国 的 支 柱 产 业 为 了 在 一 台 计 算 机 上 可 以 看 到 其 它 计 算 机 的 信 息, 必 须 安 装 一 种 叫 浏 览 器 的 软 件 浏 览 器 的 重 要 性 如 同 发 动 机 对 于 车 辆 一 个 美 国 年 轻 人 最 先 发 明 了 浏 览 器 同 时, 计 算 机 工 业 界 的 一 位 伟 大 人 物,SGI 公 司 ( 世 界 最 大 计 算 机 公 司 之 一 ) 的 创 始 人 远 见 卓 识, 投 资 数 千 万 美 元 开 发 这 种 刚 诞 生 的 浏 览 器 他 们 成 立 了 网 景 公 司, 一 位 是 站 在 前 面 的 年 轻 英 雄, 一 位 是 站 在 后 面 的 老 英 雄 网 景 公 司 刚 上 市 的 时 候, 浏 览 器 还 没 有 销 售 ( 更 谈 不 上 利 润 ), 但 是 浏 览 器 实 在 太 有 价 值 了 ( 能 让 微 软 公 司 都 害 怕 被 击 跨 ), 所 以 网 景 公 司 上 市 第 一 天 就 升 值 十 几 亿 美 元 而 网 景 公 司 销 售 产 品 得 到 的 利 润 只 是 用 来 运 转 公 司 的, 远 比 不 上 其 该 有 的 价 值 ( 股 市 价 值 ) 可 并 不 是 随 便 一 个 Internet 企 业 都 象 网 景 公 司 那 么 辉 煌 举 杭 州 西 湖 的 例 子 吧 西 湖 的 一 些 景 点 收 门 票, 卖 纪 念 品, 一 年 不 多 的 经 营 收 入, 只 够 用 来 打 扫 卫 生 修 修 补 补 种 树 植 草 但 西 湖 有 白 居 易 苏 东 坡 巨 大 的 贡 献, 千 年 累 积 的 人 文 历 史 地 理 价 值 何 止 千 百 亿 假 设 杭 州 西 湖 上 市, 起 价 1 亿 元 人 民 币, 真 不 知 道 有 多 少 人 来 争 抢, 股 值 当 然 会 狂 升 千 百 倍 而 我 家 乡 的 一 个 鱼 塘 也 叫 西 湖, 主 人 从 来 不 幻 想 他 的 西 湖 值 多 少 个 亿, 但 他 知 道 卖 不 出 鱼 就 会 贫 穷, 一 天 不 争 几 元 钱 就 会 挨 饿 接 下 去 说 雅 虎 公 司 吧 由 于 有 了 浏 览 器, 用 Internet 交 流 信 息 就 十 分 方 便, 推 进 了 Internet 的 发 展 还 有 另 一 个 问 题, 用 户 在 用 互 联 网 之 前, 总 得 先 知 道 要 找 的 信 息 在 什 么 地 方 ( 打 电 话 也 要 先 知 道 对 方 的 号 码 ), 不 可 能 对 上 亿 台 计 算 机 挨 个 浏 览 吧 这 时 就 需 要 一 种 叫 做 搜 索 引 擎 的 软 件 系 统, 它 专 门 用 于 存 放 与 检 索 互 联 网 信 息 假 如 一 个 用 户 想 查 找 一 种 叫 万 向 节 的 汽 车 零 件, 只 需 要 输 入 万 向 节 三 个 字, 搜 索 引 擎 就 会 在 很 快 查 找 出 全 球 有 关 万 向 节 的 网 站 地 址 搜 索 引 擎 的 重 要 性, 就 象 一 个 封 建 皇 朝 的 藏 宝 图 与 挖 掘 机 美 国 的 几 个 年 轻 人 ( 头 头 是 个 华 裔 ) 发 明 了 搜 索 引 擎, 他 们 成 立 了 雅 虎 公 司, 该 公 司 得 到 日 本 软 件 巨 头 SoftBank 公 司 的 投 资 也 是 由 于 雅 虎 公 司 的 搜 索 引 擎 实 在 太 有 价 值 了, 所 以 股 值 很 快 达 到 其 投 资 的 百 倍 现 在 去 做 搜 索 引 擎 想 发 大 财 已 经 太 晚 了 人 家 都 用 导 弹 打 飞 机 了, 我 们 还 做 梦 用 弓 箭 射 飞 机 雅 虎 网 景 现 象 小 结 : 只 有 在 具 备 极 大 的 市 场 需 求 极 优 秀 的 知 识 产 品 业 界 杰 出 人 物 的 条 件 下, 才 可 能 使 一 个 公 司 的 股 值 远 远 高 于 其 原 始 投 资 + 经 营 利 润 如 果 去 投 资 一 个 没 有 价 值 不 产 生 利 润 的 公 司, 那 只 会 拖 跨 投 资 方, 这 是 投 资 常 识 二 对 引 资 方 案 第 二 段 的 分 析 与 评 论 (1) 借 互 联 网 这 个 金 蛋 与 广 大 投 资 者 的 看 好, 股 票 必 能 大 幅 上 升 借 美 国 网 股 的 升 幅 样 板, 广 大 中 国 股 民 可 能 在 短 期 内 即 可 推 动 股 票 实 现 翻 番 评 论 : 用 童 话 故 事 皇 帝 的 新 装 来 比 喻 很 恰 当 : 他 是 那 个 裁 缝, 投 资 方 是 那 个 笨 蛋 皇 帝, 股 民 就 相 当 于 傻 乎 乎 的 臣 民 如 果 有 那 么 容 易 的 事 情, 身 为 经 济 学 家 的 总 理 早 就 做 了,
中 国 的 信 息 产 业 也 不 会 太 落 后 (2) 相 信 不 久 的 将 来, 互 联 网 企 业 的 黄 金 赢 利 期 即 可 到 来 事 实 上, 由 于 进 入 互 联 网 经 营 网 站 的 直 接 成 本 很 低, 目 前 国 内 的 绝 大 部 分 网 站 皆 为 小 打 小 闹, 几 乎 没 有 几 个 网 站 有 雄 厚 的 资 金 注 入 建 设 评 论 : 他 说 进 入 互 联 网 经 营 网 站 的 直 接 成 本 很 低, 那 简 直 是 黑 白 颠 倒, 哪 有 成 本 低 才 小 打 小 闹 的! 表 明 他 对 中 国 ISP(Internet 服 务 供 应 商 ) 发 展 史 全 无 知 在 整 个 90 年 代, 有 成 百 上 千 的 ISP 死 掉, 主 要 原 因 是 经 营 成 本 ( 付 给 电 信 局 的 钱 ) 太 高 而 用 户 太 少 为 什 么 还 有 一 些 ISP 在 小 打 小 闹? 那 是 因 为 该 死 掉 的 全 死 啦, 剩 一 口 气 的 与 刚 出 生 的 正 在 一 块 儿 垂 死 挣 扎 现 在 还 能 在 互 联 网 上 指 手 划 脚 的 都 是 与 中 国 电 信 部 门 有 密 切 关 系 的 ISP 为 什 么 几 乎 没 有 几 个 网 站 有 雄 厚 的 资 金 注 入 建 设? 因 为 怕 啦 请 看 看 近 几 年 的 中 国 计 算 机 报 计 算 机 世 界, 中 国 ISP 发 展 史 简 直 就 是 软 件 业 界 勇 士 与 中 国 电 信 抗 争 的 血 泪 史 国 内 最 了 不 起 的 ISP 是 北 京 赢 海 威 时 空, 在 中 国 教 育 科 研 网 建 立 之 前, 它 就 建 立 了 中 国 人 自 己 的 小 型 Internet, 连 读 者 也 报 道 过 那 些 感 人 事 迹 投 资 超 过 千 万 ( 投 资 方 是 银 行 ) 但 由 于 亏 损 太 大, 在 1998 年, 赢 海 威 时 空 总 裁 张 树 新 女 士, 一 位 富 有 才 华 的 ISP 创 业 者, 被 董 事 会 强 行 解 职, 原 有 创 业 者 跟 着 全 被 辞 退 此 事 震 动 软 件 业 界 还 有 谁 的 钱 比 银 行 多? 有 谁 比 中 国 电 信 更 能 控 制 互 联 网? (3) 通 过 建 设 一 个 大 网 站 所 带 来 的 全 国 乃 至 全 世 界 的 广 告 影 响 是 无 可 估 量 的 很 容 易 造 势, 效 果 远 远 优 于 同 等 金 额 的 电 视 报 纸 广 告 评 论 : 这 是 梦 话 有 一 篇 评 论 说 中 国 老 百 姓 通 过 Internet 获 取 信 息 所 付 出 的 代 价 是 美 国 人 的 1000 倍 以 上 看 一 个 简 单 的 算 术 就 能 明 白 : 中 国 老 百 姓 的 工 资 不 及 美 国 人 的 十 分 之 一, 中 国 网 站 的 有 用 信 息 远 不 及 美 国 的 十 分 之 一, 中 国 Internet 传 输 速 率 不 及 美 国 的 十 分 之 一, 电 话 费 用 又 比 美 国 的 高 仅 此 几 项 乘 积, 代 价 已 是 美 国 人 的 1000 倍 以 上 这 个 数 字 说 明, 很 多 事 情 在 美 国 能 成 功, 在 中 国 就 难 以 成 功 在 Internet 这 个 问 题 上, 存 在 1000 倍 的 难 度, 足 以 扼 杀 普 通 公 司 我 和 同 事 都 是 软 件 专 业 的 博 士 生,Internet 对 我 们 而 言 就 象 眼 睛 与 耳 朵 一 样 重 要 可 是 连 我 们 也 没 有 条 件 使 用 Internet, 成 了 专 业 的 瞎 子 与 聋 子, 普 通 老 百 姓 更 不 用 说 了 如 果 没 有 群 众 用 户,ISP 广 告 给 谁 看? 过 不 了 一 年,ISP 就 得 饿 死, 怎 么 去 产 生 全 球 影 响? 怎 么 去 迎 接 不 久 将 来 的 滚 滚 财 源? 三 对 引 资 方 案 第 三 段 的 分 析 与 评 论 (1) 我 们 经 营 的 网 站 有 2 年 多 历 史 了 年 经 营 成 本 9 万 元, 我 只 找 了 一 个 助 手 全 年 收 入 近 10 万 元, 虽 说 不 亏, 但 我 无 法 满 足 现 状 希 望 吸 取 资 金 200 万 预 计 年 收 入 1200 万 至 2000 万 评 论 : 可 以 看 出, 他 的 经 营 能 力 为 10 万 / 年, 是 个 单 干 户 怎 么 能 一 下 子 就 可 以 经 营 年 投 资 200 万, 并 且 预 计 年 收 入 达 千 万 的 企 业? 刚 学 会 走 路, 就 夸 口 能 跑 得 跟 子 弹 一 样 快, 神 仙? (2) 增 加 网 站 每 日 求 购 信 息 的 整 编 工 作, 做 到 任 何 其 它 一 个 网 站 有 的 我 们 都 有 评 论 : 这 句 话 雅 虎 公 司 都 不 敢 夸 口 (3) 增 加 中 国 及 世 界 经 济 新 闻 版 块, 由 每 周 更 新 到 每 日 更 新 评 论 : 他 能 做 到 的, 中 央 电 视 台 新 华 社 的 网 站 应 该 早 做 到 了 (4) 建 立 网 上 信 用 卡 收 帐 系 统, 一 旦 需 要, 可 立 即 投 入 使 用 评 论 : 这 种 事 情, 必 须 是 公 安 部 门 税 务 部 门 银 行 系 统 集 成 商 等 一 起 商 量 好 了 后 才 可 以 做 的
四 对 引 资 方 案 第 四 段 的 分 析 与 评 论 他 说 自 己 是 萧 山 人, 万 向 集 团 也 源 于 萧 山, 因 此 他 首 先 选 择 万 向 集 团 评 论 : 他 建 议 万 向 集 团 投 资 互 联 网, 可 不 是 为 了 万 向 集 团, 也 不 是 为 了 萧 山 的 老 百 姓, 这 一 点 连 我 们 做 学 生 的 都 明 白 商 业 投 资 不 应 该 带 有 太 多 的 感 情 色 彩, 即 便 是 万 向 集 团 的 人 提 出 的 方 案, 如 果 不 可 行, 也 要 否 决 根 据 以 上 的 分 析, 我 全 盘 否 定 了 该 投 资 方 案, 并 建 议 万 向 集 团 不 要 投 资 ISP 可 惜 当 初 没 人 否 定 我 开 公 司 时 的 方 案 4.2.2 可 行 性 分 析 案 例 之 三 看 了 第 一 个 案 例, 你 可 能 会 惋 惜 看 了 第 二 个 案 例, 你 可 能 觉 得 好 笑 如 果 看 了 第 三 个 案 例, 你 肯 定 会 生 气 1999 年 1 月, 有 一 个 民 营 企 业 家 G 先 生 向 我 请 教 一 个 问 题 : 我 给 一 个 年 轻 人 投 资 了 100 万 元, 建 立 一 家 从 事 环 保 信 息 应 用 开 发 的 软 件 公 司 他 曾 许 诺 一 年 内 创 利 润 上 千 万 元, 可 是 才 过 去 5 个 月, 他 就 把 100 万 元 用 完 了, 什 么 也 没 挣 到 我 实 在 不 明 白 是 怎 么 回 事, 请 你 帮 我 分 析 分 析 这 位 G 先 生 年 龄 有 我 的 2.5 倍, 曾 在 西 北 当 过 几 十 年 的 技 术 兵, 性 格 豪 爽 他 投 资 的 那 个 年 轻 人 叫 Y( 以 下 称 Y 经 理 ), 自 称 有 英 国 的 管 理 学 文 凭, 能 对 公 司 的 市 场 技 术 管 理 一 把 抓 G 先 生 喜 欢 说 钱 我 没 问 题, 于 是 想 也 不 想 就 投 了 100 万 元, 并 且 给 Y 经 理 40% 的 股 份 G 先 生 请 Y 经 理 到 家 里 坐 谈 我 那 时 突 然 狡 猾 起 来, 自 称 是 G 先 生 的 远 房 亲 戚, 在 浙 大 读 半 导 体 物 理, 特 羡 慕 那 些 做 软 件 的 同 龄 人, 渴 望 听 听 Y 经 理 的 高 见 Y 经 理 果 然 信 口 开 河, 滔 滔 不 绝, 连 绵 不 断, 如 黄 河 泛 滥, 一 发 而 不 可 收 拾 我 激 动 地 想 去 参 观 他 的 公 司 和 产 品, 并 表 示 要 抛 弃 物 理 专 业, 立 马 转 向 软 件 专 业 Y 经 理 得 意 而 笑 : 对 于 IT 行 业 你 就 不 懂 了, 我 们 经 营 的 是 一 种 理 念 而 不 是 产 品, 这 是 国 外 最 先 进 的 思 想 你 可 以 来 参 观 我 的 公 司, 但 你 看 不 到 具 体 的 东 西, 只 能 用 心 去 领 会 这 屁 话 比 曹 元 朗 ( 围 城 ) 的 诗 还 臭 我 搞 软 件 只 有 8 年 功 夫, 说 我 不 懂 IT 行 业 并 不 过 分 可 我 读 了 10 年 大 学 都 没 听 到 过 如 此 先 进 的 思 想 如 果 这 是 英 国 管 理 学 教 育 的 成 果, 我 认 为 自 己 已 经 发 现 了 这 个 曾 经 是 日 不 落 帝 国 的 衰 败 的 真 真 原 因, 有 必 要 找 英 国 首 相 切 磋 一 番 我 对 G 先 生 说 : Y 经 理 根 本 不 懂 技 术, 为 人 极 其 浮 夸 应 马 上 关 闭 公 司, 以 绝 后 患 那 100 万 元 你 也 亏 得 起, 就 买 个 教 训 吧 G 先 生 说 : 钱 我 没 问 题, 那 100 万 元 就 算 我 在 澳 门 赌 博 输 掉 了 1999 年 5 月,G 先 生 又 来 找 我 请 教 另 一 个 问 题 他 说 : 小 林 啊, 你 上 次 说 得 很 有 道 理, 我 接 受 了 教 训 我 说 : 那 是 好 事, 不 论 年 龄 大 小, 知 错 就 改 总 是 好 孩 子 嘛 他 叹 了 一 口 气 : 最 近 几 个 月,Y 经 理 又 花 了 我 100 万 元 我 当 时 差 点 给 噎 死, 气 凶 凶 地 训 G 先 生 : 我 早 跟 您 讲 过,Y 经 理 不 是 好 东 西, 叫 你 关 闭 公 司 你 不 听, 你 老 说 钱 没 问 题, 亏 你 200 万 元 活 该 老 先 生 象 犯 了 错 误 的 小 孩 子 : Y 经 理 每 一 次 向 我 要 钱 时, 都 拍 拍 胸 脯 保 证 下 个 月 就 有 利 润, 所 以 我 一 而 再 再 而 三 地 掏 钱 给 他, 希 望 能 救 活 软 件 公 司 现 在 该 怎 么 办? 一 个 有 20 名 职 员 的 软 件 公 司, 程 序 员 只 有 三 四 个, 连 十 羊 九 牧 都 不 如 200 万 元 的 财 务 报 表 中, 有 100 多 万 元 用 于 吃 喝 玩 乐 和 行 贿 这 种 公 司 完 全 无 药 可 救 台 湾 的 李 敖 曾 说 过 : 当 你 没 法 扶 一 个 人 上 马 时, 也 许 应 该 拉 他 下 马 从 5 月 份 到 8 月 份, 我 行 侠 仗 义, 替 G 先 生 清 理 软 件 公 司, 根 除 Y 经 理 这 些 败 类
可 是 难 哪, 因 为 G 先 生 投 资 的 公 司 根 本 不 把 G 先 生 放 在 眼 里, 又 岂 能 让 我 插 手 就 在 我 想 方 设 法 卡 住 Y 经 理 的 脖 子 时,Y 经 理 总 能 从 G 先 生 那 里 挖 出 钱 G 先 生 就 象 被 吸 血 鬼 附 身, 却 仍 存 幻 想 : 如 果 吸 血 鬼 能 治 好 我 的 病, 就 让 它 再 吸 些 血 吧 Y 经 理 又 和 一 个 来 自 深 圳 的 骗 子 H 想 了 注 意, 教 唆 G 先 生 再 投 资 100 万 元 新 建 一 个 指 纹 公 司, 说 利 润 将 比 环 保 信 息 的 应 用 开 发 更 加 可 观 ( 估 计 要 用 亿 来 度 量 ) 就 在 他 们 准 备 鉴 合 同 之 际, 我 偶 而 路 过, 发 现 异 常, 便 强 行 阻 止 G 先 生 是 个 好 人, 但 太 顽 固 好 几 次 我 气 极 想 撒 手 不 管, 但 又 不 忍 心 好 人 被 坏 人 欺 负 我 曾 请 求 G 先 生 : 我 求 您 别 再 说 钱 没 有 问 题, 您 的 私 人 财 产 会 被 人 骗 光 请 让 我 把 这 漏 洞 堵 住 吧, 好 让 我 安 心 地 回 学 校 做 完 博 士 学 位 论 文 到 8 月 份, 我 和 G 先 生 的 两 个 儿 子, 伙 同 黑 社 会 的 朋 友, 强 行 把 那 个 软 件 公 司 搬 回 G 先 生 的 工 厂 中, 辞 退 所 有 员 工 现 在 那 个 软 件 公 司 被 别 人 接 管, 仍 然 半 死 不 活, 好 在 每 月 亏 损 不 过 几 万 元,G 先 生 承 受 得 起, 我 就 不 再 去 碰 G 先 生 的 伤 疤 我 以 前 从 未 玩 过 与 人 勾 心 斗 角 的 游 戏, 此 三 个 月 的 经 历 让 我 疲 惫 不 堪 那 个 软 件 公 司 的 员 工 曾 透 露,Y 经 理 的 英 国 文 凭 大 约 是 在 上 海 或 杭 州 某 个 大 专 培 训 班 里 混 来 的, 围 城 中 的 方 鸿 渐 买 美 国 克 莱 顿 大 学 博 士 文 凭 尚 知 羞 耻, 而 Y 经 理 却 趾 高 气 扬 害 得 我 平 白 无 故 为 英 国 教 育 界 担 心, 回 想 起 英 国 鬼 子 曾 打 劫 过 中 国, 倍 感 耻 辱 G 先 生 是 正 人 君 子, 不 防 小 人, 实 在 不 是 现 代 的 商 人 我 和 他 成 了 忘 年 交 G 先 生 第 一 次 见 到 我 时 问 我 工 资 几 何, 我 答 曰 : 300 元, 够 买 几 本 书 G 先 生 甚 为 着 急 : 这 样 的 条 件 怎 么 能 生 活? 你 就 搬 到 我 家 来 住 吧, 我 家 条 件 好, 你 可 以 安 心 地 学 习, 将 来 可 为 国 家 多 作 贡 献 后 来 他 几 次 相 邀, 我 就 看 在 国 家 的 份 上 住 入 他 家 自 从 读 中 学 以 来, 我 第 一 次 享 受 食 来 张 嘴, 不 用 洗 衣 的 奢 侈 唯 一 的 麻 烦 是 我 得 向 很 多 朋 友 解 释 : 我 不 是 被 别 人 养 起 来 了, 是 为 了 国 家 的 利 益, 不 得 已 才 这 么 做 的 G 先 生 是 男 的 不 是 女 的, 并 且 没 有 待 出 嫁 的 女 儿 4.3 需 求 分 析 为 什 么 困 难 有 几 种 原 因 使 需 求 分 析 变 得 困 难 :(1) 客 户 说 不 清 楚 需 求 ;(2) 需 求 自 身 经 常 变 动 ;(3) 分 析 人 员 或 客 户 理 解 有 误 4.3.1 客 户 说 不 清 楚 需 求 有 些 客 户 对 需 求 只 有 朦 胧 的 感 觉, 当 然 说 不 清 楚 具 体 的 需 求 例 如 全 国 各 地 的 很 多 政 府 机 构 在 搞 网 络 建 设, 这 些 单 位 的 领 导 和 办 公 人 员 大 多 不 清 楚 计 算 机 网 络 有 什 么 用, 反 而 要 软 件 系 统 分 析 人 员 替 他 们 设 想 需 求 这 类 工 程 的 需 求 是 如 此 的 主 观, 以 致 产 生 很 多 贪 污 腐 败 现 象 有 些 客 户 心 里 非 常 清 楚 想 要 什 么, 但 却 说 不 明 白 读 者 可 能 很 不 以 为 然 就 举 日 常 生 活 的 事 例 吧, 比 如 说 买 鞋 子 我 们 非 常 了 解 自 已 的 脚, 但 没 法 说 清 楚 脚 的 大 小 和 形 状 只 能 拿 鞋 子 去 试, 试 穿 时 感 觉 到 舒 服 才 会 买 鞋 ( 居 然 也 有 神 通 广 大 的 售 货 员, 看 一 眼 客 户 的 手, 就 知 道 应 该 穿 什 么 样 的 鞋 ) 如 果 客 户 本 身 就 懂 软 件 开 发, 能 把 需 求 说 得 清 清 楚 楚, 这 样 的 需 求 分 析 将 会 非 常 轻 松 愉 快 如 果 客 户 全 不 懂 软 件, 但 信 任 软 件 开 发 方, 这 事 也 好 办 分 析 人 员 可 以 引 导 客 户, 先 阐 述 常 规 的 需 求, 再 由 客 户 否 定 不 需 要 的, 最 终 确 定 客 户 真 正 的 需 求 最 怕 的 就 是 不 懂 装 懂 或 者 半 懂 充 内 行 的 客 户, 他 们 会 提 出 不 切 实 际 的 需 求 如 果 这 些 客 户 甚 至 觉 得 自 己 是 上 帝 的 爸 爸, 那 么 沟 通 和 协 商 都 会 很 困 难
4.3.2 需 求 自 身 经 常 变 动 唐 僧 曾 说 : 妖 要 是 有 了 仁 慈 之 心, 就 不 再 是 妖, 是 人 妖 ( 大 话 西 游 之 大 圣 娶 亲 ) 连 妖 都 会 变 心, 别 说 人 了 所 以 喜 新 厌 旧 乃 人 之 常 情, 世 界 也 因 此 变 得 多 姿 多 彩 软 件 的 需 求 会 变 化 吗? 答 : 据 历 史 记 载, 没 有 一 个 软 件 的 需 求 改 动 少 于 三 次 唯 一 只 改 动 需 求 两 次 的 客 户 是 个 死 人 这 个 可 怜 的 家 伙 还 是 在 运 送 第 三 次 需 求 的 路 上 被 车 子 撞 死 的 [Cline 1995] 让 我 们 先 接 受 需 求 会 变 动 这 个 事 实 吧, 免 得 在 需 求 变 动 时 惊 慌 失 措 明 白 需 求 会 变 动 这 个 道 理 后, 在 进 行 需 求 分 析 时 就 要 留 点 神 : (1) 尽 可 能 地 分 析 清 楚 哪 些 是 稳 定 的 需 求, 哪 些 是 易 变 的 需 求 以 便 在 进 行 系 统 设 计 时, 将 软 件 的 核 心 建 筑 在 稳 定 的 需 求 上, 否 则 将 会 吃 尽 苦 头 (2) 在 合 同 中 一 定 要 说 清 楚 做 什 么 和 不 做 什 么 如 果 合 同 含 含 糊 糊, 日 后 扯 皮 的 事 情 就 多 要 防 止 象 韩 复 渠 那 样, 在 别 人 请 他 喝 酒 吃 饭 时 他 什 么 都 点 头 ( 人 家 就 更 加 献 殷 勤 ), 吃 完 了 他 就 宣 布 刚 才 答 应 的 事 都 不 算 数, 便 扬 长 而 去 4.3.3 分 析 人 员 或 客 户 理 解 有 误 有 个 外 星 人 间 谍 潜 伏 到 地 球 刺 探 情 报, 它 给 上 司 写 了 一 份 报 告 : 主 宰 地 球 的 是 车 它 们 喝 汽 油, 靠 四 个 轮 子 滚 动 前 进 嗓 门 极 大, 在 夜 里 双 眼 能 射 出 强 光 有 趣 的 是, 车 里 住 着 一 种 叫 作 人 的 寄 生 虫, 这 些 寄 生 虫 完 全 控 制 了 车 软 件 系 统 分 析 人 员 不 可 能 都 是 全 才 客 户 表 达 的 需 求, 不 同 的 分 析 人 员 可 能 有 不 同 的 理 解 如 果 分 析 人 员 理 解 错 了, 可 能 会 导 致 开 发 人 员 白 干 活, 吃 力 不 讨 好 我 读 中 学 时 候 最 怕 写 作 文 逃 题, 如 果 逃 题 了, 不 管 作 文 写 得 多 长, 总 是 零 分 所 以 分 析 人 员 写 好 需 求 说 明 书 后, 要 请 客 户 方 的 各 个 代 表 验 证 如 果 问 题 很 复 杂, 双 方 都 不 太 明 白, 就 有 必 要 请 开 发 人 员 快 速 构 造 软 件 的 原 型, 双 方 再 次 论 证 需 求 说 明 书 是 否 正 确 由 于 客 户 大 多 不 懂 软 件, 他 们 可 能 觉 得 软 件 是 万 能 的, 会 提 出 一 些 无 法 实 现 的 需 求 有 时 客 户 还 会 把 软 件 系 统 分 析 人 员 的 建 议 或 答 复 给 想 歪 了 有 一 个 软 件 人 员 滔 滔 不 绝 地 向 客 户 讲 解 在 信 息 高 速 公 路 上 做 广 告 的 种 种 好 处, 客 户 听 得 津 津 有 味 最 后, 心 动 的 客 户 对 软 件 人 员 说 : 好 得 很, 就 让 我 们 马 上 行 动 起 来 吧 请 您 决 定 广 告 牌 的 尺 寸 和 放 在 哪 条 高 速 公 路 上, 我 立 即 派 人 去 做 为 什 么 软 件 系 统 分 析 员 的 工 资 要 比 普 通 程 序 员 高? 就 是 因 为 需 求 分 析 困 难 嘛 4.4 如 何 进 行 需 求 分 析 上 一 节 诉 说 了 需 求 分 析 的 困 难, 本 节 要 知 难 而 进 进 行 需 求 分 析 不 象 情 人 之 间 的 浪 漫 做 法 让 我 摸 摸 你 的 头 发, 感 觉 它 是 什 么 颜 色 我 们 要 围 绕 两 个 核 心 问 题 开 展 需 求 分 析 :(1) 应 该 了 解 什 么?(2) 通 过 什 么 方 式 去 了 解? 4.4.1 应 该 了 解 什 么 那 怕 是 天 下 最 无 能 的 市 长 或 书 记, 都 知 道 在 作 报 告 时 要 先 从 宏 观 上 讲 一 二 三 四 五, 再 从 细 节 上 讲 A B C D E 需 求 分 析 不 象 侦 探 推 理 那 样 从 蛛 丝 马 迹 着 手 应 该 先 了 解 宏 观 的 问 题, 再 了 解 细 节 的 问 题, 如 图 4.1 所 示 软 件 系 统 (S) 问 题 域 D 1 D 2 D 3 D n 对 应 于 软 件 子 系 统
问 题 域 D i 问 题 P 1 P 2 P 3 P m 对 应 于 子 系 统 的 软 构 件 行 为 ( 功 能 ) 问 题 Pj F 1 F 2 F 3 F k 对 应 于 软 构 件 的 接 口 图 4.1 进 行 需 求 分 析 时 要 了 解 的 内 容 一 个 软 件 系 统 ( 记 为 S) 的 涉 及 面 可 能 很 广, 可 以 按 不 同 的 问 题 域 ( 记 为 D) 分 类, 每 个 问 题 域 对 应 于 一 个 软 件 子 系 统 S = { D 1,D 2,D 3, D n } 问 题 域 D i 由 若 干 个 问 题 ( 记 为 P) 组 成, 每 个 问 题 对 应 于 子 系 统 中 的 一 个 软 构 件 D i = { P 1,P 2,P 3, P m } 问 题 P j 有 若 干 个 行 为 ( 或 功 能, 记 为 F), 每 个 行 为 对 应 于 软 构 件 中 的 接 口 P j = { F 1,F 2,F 3, F k } 按 图 4.1 结 构 写 成 的 需 求 说 明 书, 对 于 那 些 只 想 了 解 宏 观 需 求 的 领 导, 和 需 要 了 解 细 节 的 技 术 员 都 合 适 在 写 需 求 说 明 书 时 还 应 该 注 意 两 个 问 题 : (1) 最 好 为 每 个 需 求 注 释 为 什 么, 这 样 可 让 程 序 员 了 解 需 求 的 本 质, 以 便 选 用 最 合 适 的 技 术 来 实 现 此 需 求 (2) 需 求 说 明 不 可 有 二 义 性, 更 不 能 前 后 相 矛 盾 如 果 有 二 义 性 或 前 后 相 矛 盾, 则 要 重 新 分 析 此 需 求 4.4.2 通 过 什 么 方 式 去 了 解 了 解 需 求 的 方 式 有 好 几 种 : (1) 直 接 与 客 户 交 谈 如 果 分 析 人 员 生 有 足 球 评 论 员 的 那 张 大 嘴, 就 非 常 容 易 侃 出 需 求 (2) 有 些 需 求 客 户 讲 不 清 楚, 分 析 人 员 又 猜 不 透, 这 时 就 要 请 教 行 家 有 些 高 手 真 的 很 厉 害, 你 还 没 有 开 始 问, 他 就 能 讲 出 前 因 后 果 让 你 感 到 听 君 一 席 言, 胜 读 十 年 书 (3) 有 很 多 需 求 可 能 客 户 与 分 析 人 员 想 都 没 有 想 过, 或 者 想 得 太 幼 稚 要 经 常 分 析 优 秀 的 和 蹩 脚 的 同 类 软 件, 看 到 了 优 点 就 尽 量 吸 取, 看 到 了 缺 点 就 引 以 为 戒 前 人 既 然 付 了 学 费, 后 人 就 不 要 拒 绝 坐 享 其 成 4.5 小 结 为 了 阐 述 可 行 性 分 析 的 四 个 要 素 : 经 济 技 术 社 会 环 境 和 人, 本 章 讲 了 几 个 令 人 垂 头 丧 气 的 案 例 如 果 您 学 会 了 客 观 科 学 的 可 行 性 分 析, 在 作 决 策 时 就 要 果 断, 要 学 习 热 恋 中 的 这 个 年 青 人 倒 底 行 还 是 不 行? 行 就 结 婚, 不 行 就 离 婚 本 章 并 没 有 鼓 吹 需 求 分 析 的 难 度, 不 是 在 吓 唬 人 如 果 需 求 分 析 搞 错 了, 麻 烦 大 哩 几 十 年 前, 我 们 最 最 伟 大 的 领 袖 毛 主 席 说 了 一 声 人 多 力 量 大, 导 致 现 在 中 国 人 口 蹦 到 13
亿 他 老 人 家 辉 煌 地 走 了, 后 人 却 付 出 了 沉 重 的 代 价 所 以 我 们 要 认 真 地 做 好 可 行 性 分 析 和 需 求 分 析
第 五 章 系 统 设 计 系 统 设 计 是 把 需 求 转 化 为 软 件 系 统 的 最 重 要 的 环 节 系 统 设 计 的 优 劣 在 根 本 上 决 定 了 软 件 系 统 的 质 量 就 象 一 切 帝 国 主 义 都 是 纸 老 虎 那 样 可 以 断 定 差 的 系 统 设 计 必 定 产 生 差 的 软 件 系 统 所 以 我 们 要 努 力 保 证 系 统 设 计 根 正 苗 红, 把 一 切 左 倾 右 倾 的 设 计 思 潮 消 灭 在 萌 芽 状 态 Windows NT 的 一 位 系 统 设 计 师 拥 有 8 辆 法 拉 利 跑 车, 让 Microsoft 公 司 的 一 些 程 序 员 十 分 眼 红 但 你 只 能 羡 慕 而 不 能 愤 恨, 因 为 并 不 是 每 个 程 序 员 都 有 本 事 成 为 复 杂 软 件 系 统 的 设 计 师 系 统 设 计 要 比 纯 粹 的 编 程 困 难 得 多 即 便 你 清 楚 客 户 的 需 求, 却 未 必 知 道 应 该 设 计 什 么 样 的 软 件 系 统 既 能 挣 最 多 的 钱 又 能 让 客 户 满 意 天 下 西 湖 三 十 六, 最 美 是 杭 州, 千 年 前 苏 东 坡 大 学 士 对 西 湖 精 采 绝 伦 的 系 统 设 计, 使 杭 州 荣 升 为 天 堂, 让 后 人 只 剩 下 赞 叹 和 破 坏 的 份 了 本 章 讲 述 系 统 设 计 的 四 方 面 内 容 : 体 系 结 构 设 计 模 块 设 计 数 据 结 构 与 算 法 设 计 用 户 界 面 设 计 如 果 将 软 件 系 统 比 喻 为 人 体, 那 么 : (1) 体 系 结 构 就 如 同 人 的 骨 架 如 果 某 个 家 伙 的 骨 架 是 猴 子, 那 么 无 论 怎 样 喂 养 和 美 容, 这 家 伙 始 终 都 是 猴 子, 不 会 成 为 人 (2) 模 块 就 如 同 人 的 器 官, 具 有 特 定 的 功 能 人 体 中 最 出 色 的 模 块 设 计 之 一 是 手, 手 只 有 几 种 动 作, 却 能 做 无 限 多 的 事 情 人 体 中 最 糟 糕 的 模 块 设 计 之 一 是 嘴 巴, 嘴 巴 将 最 有 价 值 但 毫 无 相 干 的 几 种 功 能 如 吃 饭 说 话 亲 吻 混 为 一 体, 使 之 无 法 并 行 处 理, 真 乃 人 类 之 不 幸 (3) 数 据 结 构 与 算 法 就 如 同 人 的 血 脉 和 神 经, 它 让 器 官 具 有 生 命 并 能 发 挥 功 能 数 据 结 构 与 算 法 分 布 在 体 系 结 构 和 模 块 中, 它 将 协 调 系 统 的 各 个 功 能 人 的 耳 朵 和 嘴 巴 虽 然 是 相 对 独 立 的 器 官, 但 如 果 耳 朵 失 聪 了, 嘴 巴 就 只 能 发 出 啊 呜 的 声 音, 等 于 丧 失 了 说 话 的 功 能 ( 所 以 聋 子 天 生 就 是 哑 巴 ), 可 人 们 却 又 能 用 手 势 代 替 说 话 人 体 的 数 据 结 构 与 算 法 设 计 真 是 十 分 神 奇 并 且 十 分 可 笑 (4) 用 户 界 面 就 如 同 人 的 外 表, 最 容 易 让 人 一 见 钟 情 或 一 见 恶 心 象 人 类 追 求 心 灵 美 和 外 表 美 那 样, 软 件 系 统 也 追 求 ( 内 在 的 ) 功 能 强 大 和 ( 外 表 的 ) 界 面 友 好 但 随 着 生 活 节 奏 的 加 快, 人 们 已 少 有 兴 趣 去 品 味 深 藏 不 露 的 内 在 美 如 果 把 Unix 系 统 比 作 是 健 壮 的 汉 子 和 妇 人, 那 么 Windows 系 统 就 象 妩 媚 的 小 白 脸 和 狐 狸 精 想 不 到 Windows 系 统 竟 然 能 兴 风 作 浪, 占 去 大 半 市 场 有 鉴 于 此, 我 们 应 该 鼓 励 女 士 多 买 化 妆 品 ( 男 士 付 钱 ) 以 获 得 更 好 的 界 面 在 进 行 系 统 设 计 时, 我 们 要 深 情 地 关 注 软 件 的 质 量 因 素, 如 正 确 性 与 精 确 性 性 能 与 效 率 易 用 性 可 理 解 性 与 简 法 性 可 复 用 性 与 可 扩 充 性 等 等 即 使 把 系 统 设 计 做 好 了, 也 并 不 意 味 着 就 能 产 生 好 的 软 件 系 统 在 程 序 设 计 测 试 维 护 等 环 节 还 要 做 大 量 的 工 作, 无 论 哪 个 环 节 出 了 差 错, 都 会 把 好 事 搞 砸 了 据 说 上 帝 把 所 有 的 女 士 都 设 计 成 天 使, 可 是 天 使 们 在 下 凡 时 有 些 双 脚 先 着 地, 有 些 脸 先 着 地 上 帝 的 这 一 疏 忽 让 很 多 女 孩 伤 透 了 心 我 们 在 开 发 软 件 时, 一 定 要 吸 取 这 个 教 训 5.1 体 系 结 构 设 计 杨 叔 子 院 子 曾 这 样 指 点 其 弟 子 : 文 学 中 有 科 学, 音 乐 中 有 数 学, 漫 画 中 有 现 代 数 学 的 拓 扑 学 漫 画 家 可 以 几 笔 就 把 一 个 人 画 出 来, 不 管 怎 么 美 化 或 丑 化, 就 是 活 像 为 什 么? 因 为 那 几 笔 不 是 别 的, 而 是 拓 扑 学 中 的 特 征 不 变 量, 这 是 事 物 最 本 质 的 东 西
体 系 结 构 是 软 件 系 统 中 最 本 质 的 东 西 : (1) 体 系 结 构 是 对 复 杂 事 物 的 一 种 抽 象 良 好 的 体 系 结 构 是 普 遍 适 用 的, 它 可 以 高 效 地 处 理 多 种 多 样 的 个 体 需 求 一 提 起 房 子, 我 们 的 脑 中 马 上 就 会 出 现 房 子 的 印 象 ( 而 不 是 地 洞 的 印 象 ) 房 子 是 人 们 对 住 宿 或 办 公 环 境 的 一 种 抽 象 不 论 是 办 公 楼 还 是 民 房, 同 一 类 建 筑 物 ( 甚 至 不 同 类 的 建 筑 物 ) 之 间 都 具 有 非 常 相 似 的 体 系 结 构 和 构 造 方 式 如 果 13 亿 中 国 人 民 每 个 人 都 要 用 特 别 的 方 式 构 造 奇 异 的 房 子, 那 么 960 万 平 方 公 里 的 土 地 将 会 变 得 千 疮 百 孔, 终 日 不 得 安 宁 (2) 体 系 结 构 在 一 定 的 时 间 内 保 持 稳 定 只 有 在 稳 定 的 环 境 下, 人 们 才 能 干 点 事 情, 社 会 才 能 发 展 科 学 告 诉 我 们, 宇 宙 间 万 物 无 时 无 刻 不 在 运 动 飞 行 由 于 我 们 的 生 活 环 境 在 地 球 上 保 持 相 对 稳 定, 以 致 于 我 们 可 以 无 忧 无 虑 地 吃 饭 和 睡 觉, 压 根 就 意 识 不 到 自 己 是 活 生 生 的 导 弹 软 件 开 发 最 怕 的 就 是 需 求 变 化, 但 需 求 会 发 生 变 化 是 个 无 法 逃 避 的 现 实 人 们 希 望 在 需 求 发 生 变 化 时, 最 好 只 对 软 件 做 些 皮 皮 毛 毛 的 修 改, 可 千 万 别 改 动 软 件 的 体 系 结 构 就 如 人 们 对 住 宿 的 需 求 也 会 变 动, 你 可 以 经 常 改 变 房 间 的 装 璜 和 摆 设, 但 不 会 在 每 次 变 动 时 都 要 去 折 墙 拆 柱 挖 地 基 如 果 当 需 求 发 生 变 化 时, 程 序 员 不 得 不 去 修 改 软 件 的 体 系 结 构, 那 么 这 个 软 件 的 系 统 设 计 是 失 败 的 良 好 的 体 系 结 构 意 味 着 普 适 高 效 和 稳 定 本 节 将 论 述 两 种 非 常 通 用 的 软 件 体 系 结 构 : 层 次 结 构 和 客 户 机 / 服 务 器 (Client/Server) 结 构 5.1.1 层 次 结 构 层 次 结 构 表 达 了 这 么 一 种 常 识 : 有 些 事 情 比 较 复 杂, 我 们 没 法 一 口 气 干 完, 就 把 事 情 分 为 好 几 层, 一 层 一 层 地 去 做 高 层 的 工 作 总 是 建 立 在 低 层 的 工 作 之 上 层 次 关 系 主 要 有 两 种 : 上 下 级 关 系 和 顺 序 相 邻 关 系 一 上 下 级 关 系 的 层 次 结 构 我 们 从 小 学 一 直 读 到 博 士 研 究 生 毕 业, 要 读 20 多 年, 可 以 分 为 五 个 层 次 而 范 进 的 知 识 结 构 只 有 两 层 : 私 塾 和 秀 才, 但 读 了 五 十 多 年, 如 图 5.1 所 示 一 般 地 处 于 较 高 层 次 的 学 生 应 该 懂 得 所 有 低 层 次 的 知 识, 而 处 于 低 层 次 学 生 无 法 懂 得 所 有 高 层 次 的 知 识 图 5.1 的 层 次 结 构 存 在 上 下 级 关 系, 如 同 在 军 队 中, 上 级 可 以 命 令 下 级, 而 下 级 不 能 命 令 上 级 如 果 把 图 5.1 的 层 次 结 构 当 成 是 一 个 软 件 系 统 的 结 构, 那 么 上 层 子 系 统 可 以 使 用 下 层 子 系 统 的 功 能, 而 下 层 子 系 统 不 能 够 使 用 上 层 子 系 统 的 功 能 二 顺 序 相 邻 关 系 的 层 次 结 构 顺 序 相 邻 关 系 的 层 次 结 构 表 明 通 讯 只 能 在 相 邻 两 层 之 间 发 生, 信 息 只 能 被 一 层 一 层 地 顺 序 传 递 这 种 层 次 结 构 的 经 典 之 作 是 计 算 机 网 络 的 OSI 参 考 模 型, 如 图 5.2 所 示 为 了 减 少 设 计 的 复 杂 性, 大 多 数 网 络 都 按 层 (Layer) 或 级 (Level) 的 方 式 组 织 每 一 层 的 目 的 都 是 向 它 的 上 一 层 提 供 一 定 的 服 务, 而 把 如 何 实 现 这 一 服 务 的 细 节 对 上 一 层 加 以 屏 蔽 一 台 机 器 上 的 第 n 层 与 另 一 台 机 器 上 的 第 n 层 进 行 对 话 通 话 的 规 则 就 是 第 n 层 的 协 议 数 据 不 是 从 一 台 机 器 的 第 n 层 直 接 传 送 到 另 一 台 机 器 的 第 n 层 发 送 方 把 数 据 和 控 制 信 息 逐 层 向 下 传 递 最 低 层 是 物 理 介 质, 它 进 行 实 际 的 通 讯 接 收 方 则 将 数 据 和 控 制 信 息 逐 层 向 上 传 递 每 一 对 相 邻 层 之 间 都 有 接 口 接 口 定 义 了 下 层 提 供 的 原 语 操 作 和 服 务 当 网 络 设 计 者 在 决 定 一 个 网 络 应 包 含 多 少 层, 每 一 层 应 当 做 什 么 的 时 候, 其 中 很 重 要 的 工 作 是 在 相 邻 层 之 间 定 义 清 晰 的 接 口 接 口 可 以 使 得 同 一 层 能 轻 易 地 用 某 一 种 实 现 (Implementation) 来 替 换 另 一 种 完 全 不 同 的 实 现 ( 如 用 卫 星 信 道 来 代 替 所 有 的 电 话 线 ), 只 要 新 的 实 现 能 向 上 层 提 供 同 一 组 服 务 就 可 以 了 [Tanenbaum 1998]
博 士 (3-4 年 ) 硕 士 (2-3 年 ) 本 科 (4 年 ) 中 学 (6 年 ) 考 上 举 人 时 已 五 十 多 岁 了 复 习 报 考 举 人 用 了 几 十 年 秀 才 私 塾 举 人 图 5.1(a) 从 小 学 读 到 博 士 存 在 的 五 个 学 习 阶 段 图 5.1(b) 范 进 的 知 识 结 构 应 用 层 应 用 层 表 示 层 表 示 层 会 话 层 会 话 层 主 机 传 输 层 传 输 层 主 机 A B 网 络 层 网 络 层 数 据 链 路 层 数 据 链 路 层 物 理 层 物 理 层 图 5.2 计 算 机 网 络 的 OSI 参 考 模 型 三 其 它 的 层 次 结 构 目 前 在 大 型 商 业 应 用 软 件 系 统 中 还 流 行 一 种 包 含 中 间 件 (Middleware) 的 层 次 结 构, 如 图 5.3 所 示 [Jacobson 1997] 中 间 件 支 持 与 平 台 无 关 的 分 布 式 计 算, 可 以 用 DCOM 和 CORBA 对 象 来 实 现 Application Systems Business-specific Components Middleware System Software 图 5.3 包 含 中 间 件 的 层 次 结 构 5.1.2 客 户 机 / 服 务 器 结 构
让 我 们 先 回 顾 一 下 早 期 的 电 话 系 统 贝 尔 (Alexander Graham Bell) 于 1876 年 申 请 了 电 话 专 利 那 时 期 的 电 话 必 须 一 对 一 对 地 卖, 用 户 自 己 在 两 个 电 话 之 间 拉 一 根 线 如 果 一 个 电 话 用 户 想 和 其 它 几 个 电 话 用 户 通 话, 他 必 须 拉 n 根 单 独 的 线 到 每 个 人 的 房 子 里 于 是 在 很 短 的 时 间 内, 城 市 里 到 处 都 是 穿 过 房 屋 和 树 木 的 混 乱 的 电 话 线 很 明 显, 企 图 把 所 有 的 电 话 完 全 互 联 ( 如 图 5.4(a) 所 示 ) 是 行 不 通 的 贝 尔 电 话 公 司 在 1878 年 开 办 了 第 一 个 交 换 局 公 司 为 每 个 客 户 架 设 一 条 线 打 电 话 时, 客 户 摇 动 电 话 的 曲 柄 使 电 话 公 司 办 公 室 的 铃 响 起 来, 操 作 员 听 到 铃 声 以 后 根 据 要 求 将 呼 叫 方 和 被 呼 叫 方 用 跳 线 手 工 连 接 起 来 这 种 集 中 交 换 式 的 模 型 如 图 5.4(b) 所 示 很 快 地, 贝 尔 系 统 的 交 换 局 就 出 现 在 各 地 人 们 又 要 求 能 打 城 市 间 的 长 途 电 话, 就 出 现 了 二 级 交 换 局, 以 后 进 一 步 发 展 为 多 个 二 级 交 换 局 [Tanenbaum 1998] 交 换 局 5.4(a) 完 全 互 联 的 电 话 系 统 5.4(b) 集 中 交 换 式 的 电 话 系 统 如 果 将 图 5.4(b) 中 的 电 话 看 成 是 客 户 程 序, 将 中 心 的 交 换 局 看 成 是 服 务 程 序, 那 么 图 5.4(b) 就 是 典 型 的 客 户 机 / 服 务 器 结 构 注 意 这 里 客 户 机 和 服 务 器 都 是 指 软 件 而 不 是 指 硬 件 ( 一 台 计 算 机 可 以 放 多 个 客 户 机 和 服 务 器 软 件 ) 客 户 机 / 服 务 器 结 构 存 在 两 个 显 然 的 优 点 : (1) 以 集 中 的 方 式 高 效 率 地 管 理 通 讯 前 面 讲 电 话 系 统 的 故 事 就 是 要 说 明 这 一 点 (2) 可 以 共 享 资 源 比 如 在 信 息 管 理 系 统 中, 服 务 器 将 信 息 集 中 起 来, 任 何 客 户 机 都 可 以 通 过 访 问 服 务 器 而 获 得 所 需 的 信 息 客 户 机 和 服 务 器 之 间 的 通 讯 以 请 求 响 应 的 方 式 进 行 客 户 机 先 向 服 务 器 发 起 请 求 (Request), 服 务 器 再 响 应 (Response) 这 个 请 求, 如 图 5.5 所 示 请 求 客 户 机 服 务 器 响 应 图 5.5 Client 和 Server 之 间 的 通 讯 以 请 求 响 应 的 方 式 进 行 采 用 请 求 响 应 这 种 通 讯 方 式 的 基 本 动 机 是 为 了 解 决 聚 集 (Rendezvous) 问 题 为 了 理 解 这 一 个 问 题, 设 想 一 个 人 试 图 在 分 离 的 机 器 上 启 动 两 个 程 序 并 让 它 们 进 行 通 讯 还 需 记 住, 计 算 机 的 运 行 速 度 要 比 人 的 操 作 速 度 高 出 许 多 数 量 级 在 他 启 动 第 一 个 程 序 后, 该 程 序 开 始 执 行 并 向 对 等 程 序 发 送 消 息 在 几 个 微 秒 内, 它 便 发 现 对 等 程 序 还 不 存 在, 于 是 就 发 出 一 条 错 误 消 息, 然 后 退 出 此 后, 他 启 动 了 第 二 个 程 序 不 幸 的 是, 当 第 二 个 程 序 开 始 执 行 时, 它 也 找 不 到 第 一 个 程 序 ( 早 已 退 出 ) 即 使 这 两 个 程 序 连 续 地 重 新 试 着 通 讯, 但 由 于 它 们 的 执 行 速 度 那 么 高, 以 致 于 它 们 在 同 一 瞬 间 联 系 上 的 概 率 非 常 低 在 客 户 机 / 服 务 器 结 构 中, 服 务 器 在 启 动 后 必 须 ( 无 限 期 地 ) 等 待 客 户 机 的 请 求, 因 此 就 形 成 了 请 求
响 应 的 通 讯 方 式 在 Internet/Intranet 领 域, 目 前 浏 览 器 Web 服 务 器 数 据 库 服 务 器 结 构 是 一 种 非 常 流 行 的 客 户 机 / 服 务 器 结 构, 如 图 5.6 所 示 这 种 结 构 最 大 的 优 点 是 : 客 户 机 统 一 采 用 浏 览 器, 这 不 仅 让 用 户 使 用 方 便, 而 且 使 得 客 户 机 端 不 存 在 维 护 的 问 题 当 然, 软 件 开 发 布 和 维 护 的 工 作 不 是 自 动 消 失 了, 而 是 转 移 到 了 Web 服 务 器 端 在 Web 服 务 器 端, 程 序 员 要 用 脚 本 语 言 编 写 响 应 页 面 例 如 用 Microsoft 的 ASP 语 言 查 询 数 据 库 服 务 器, 将 结 果 保 存 在 Web 页 面 中, 再 由 浏 览 器 显 示 出 来 客 户 机 浏 览 器 HTTP 请 求 Web 服 务 器 ASP Engine 查 询 数 据 库 服 务 器 HTTP 响 应 图 5.6 浏 览 器 Web 服 务 器 数 据 库 服 务 器 结 构 5.2 模 块 设 计 在 设 计 好 软 件 的 体 系 结 构 后, 就 已 经 在 宏 观 上 明 确 了 各 个 模 块 应 具 有 什 么 功 能, 应 放 在 体 系 结 构 的 哪 个 位 置 我 们 习 惯 地 从 功 能 上 划 分 模 块, 保 持 功 能 独 立 是 模 块 化 设 计 的 基 本 原 则 因 为, 功 能 独 立 的 模 块 可 以 降 低 开 发 测 试 维 护 等 阶 段 的 代 价 但 是 功 能 独 立 并 不 意 味 着 模 块 之 间 保 持 绝 对 的 孤 立 一 个 系 统 要 完 成 某 项 任 务, 需 要 各 个 模 块 相 互 配 合 才 能 实 现, 此 时 模 块 之 间 就 要 进 行 信 息 交 流 比 如 手 和 脚 是 两 个 功 能 独 立 的 模 块 没 有 脚 时, 手 照 样 能 干 活 没 有 手 时, 脚 仍 可 以 走 路 但 如 果 希 望 跑 得 快, 那 么 迈 左 脚 时 一 定 要 伸 右 臂 甩 左 臂, 迈 右 脚 时 则 要 伸 左 臂 甩 右 臂 在 设 计 一 个 模 块 时 不 仅 要 考 虑 这 个 模 块 就 该 提 供 什 么 样 的 功 能, 还 要 考 虑 这 个 模 块 应 该 怎 样 与 其 它 模 块 交 流 信 息 本 节 将 论 述 评 价 模 块 设 计 优 劣 的 三 个 特 征 因 素 : 信 息 隐 藏 内 聚 与 耦 合 和 封 闭 开 放 性 5.2.1 信 息 隐 藏 在 一 节 不 和 谐 的 课 堂 里, 老 师 叹 气 道 : 要 是 坐 在 后 排 聊 天 的 同 学 能 象 中 间 打 牌 的 同 学 那 么 安 静, 就 不 会 影 响 到 前 排 睡 觉 的 同 学 这 个 故 事 告 诉 我 们, 如 果 不 想 让 坏 事 传 播 开 来, 就 应 该 把 坏 事 隐 藏 起 来, 家 丑 不 可 外 扬 就 是 这 个 道 理 为 了 尽 量 避 免 某 个 模 块 的 行 为 去 干 扰 同 一 系 统 中 的 其 它 模 块, 在 设 计 模 块 时 就 要 注 意 信 息 隐 藏 应 该 让 模 块 仅 仅 公 开 必 须 要 让 外 界 知 道 的 内 容, 而 隐 藏 其 它 一 切 内 容 模 块 的 信 息 隐 藏 可 以 通 过 接 口 设 计 来 实 现 一 个 模 块 仅 提 供 有 限 个 接 口 (Interface), 执 行 模 块 的 功 能 或 与 模 块 交 流 信 息 必 须 且 只 须 通 过 调 用 公 有 接 口 来 实 现 如 果 模 块 是 一 个 C++ 对 象, 那 么 该 模 块 的 公 有 接 口 就 对 应 于 对 象 的 公 有 函 数 如 果 模 块 是 一 个 COM 对 象, 那 么 该 模 块 的 公 有 接 口 就 是 COM 对 象 的 接 口 一 个 COM 对 象 可 以 有 多 个 接 口, 而 每 个 接 口 实 质 上 是 一 些 函 数 的 集 合 [Rogerson 1999] 美 国 也 许 是 世 界 上 丑 闻 最 多 的 国 家, 因 为 它 追 求 民 主, 不 懂 得 隐 藏 信 息 但 美 国 又 是 软 件 产 业 最 发 达 的 国 家, 模 块 化 设 计 的 方 法 都 是 美 国 人 倡 导 的, 他 们 应 该 很 懂 得 隐 藏 信
息 真 是 前 后 矛 盾, 这 些 美 国 佬! 5.2.2 内 聚 与 耦 合 内 聚 (Cohesion) 是 一 个 模 块 内 部 各 成 分 之 间 相 关 联 程 度 的 度 量 耦 合 (Coupling) 是 模 块 之 间 依 赖 程 度 的 度 量 内 聚 和 耦 合 是 密 切 相 关 的, 与 其 它 模 块 存 在 强 耦 合 的 模 块 通 常 意 味 着 弱 内 聚, 而 强 内 聚 的 模 块 通 常 意 味 着 与 其 它 模 块 之 间 存 在 弱 耦 合 模 块 设 计 追 求 强 内 聚, 弱 耦 合 一 内 聚 强 度 内 聚 按 强 度 从 低 到 高 有 以 下 几 种 类 型 : (1) 偶 然 内 聚 如 果 一 个 模 块 的 各 成 分 之 间 毫 无 关 系, 则 称 为 偶 然 内 聚 (2) 逻 辑 内 聚 几 个 逻 辑 上 相 关 的 功 能 被 放 在 同 一 模 块 中, 则 称 为 逻 辑 内 聚 如 一 个 模 块 读 取 各 种 不 同 类 型 外 设 的 输 入 尽 管 逻 辑 内 聚 比 偶 然 内 聚 合 理 一 些, 但 逻 辑 内 聚 的 模 块 各 成 分 在 功 能 上 并 无 关 系, 即 使 局 部 功 能 的 修 改 有 时 也 会 影 响 全 局, 因 此 这 类 模 块 的 修 改 也 比 较 困 难 (3) 时 间 内 聚 如 果 一 个 模 块 完 成 的 功 能 必 须 在 同 一 时 间 内 执 行 ( 如 系 统 初 始 化 ), 但 这 些 功 能 只 是 因 为 时 间 因 素 关 联 在 一 起, 则 称 为 时 间 内 聚 (4) 过 程 内 聚 如 果 一 个 模 块 内 部 的 处 理 成 分 是 相 关 的, 而 且 这 些 处 理 必 须 以 特 定 的 次 序 执 行, 则 称 为 过 程 内 聚 (5) 通 信 内 聚 如 果 一 个 模 块 的 所 有 成 分 都 操 作 同 一 数 据 集 或 生 成 同 一 数 据 集, 则 称 为 通 信 内 聚 (6) 顺 序 内 聚 如 果 一 个 模 块 的 各 个 成 分 和 同 一 个 功 能 密 切 相 关, 而 且 一 个 成 分 的 输 出 作 为 另 一 个 成 分 的 输 入, 则 称 为 顺 序 内 聚 (7) 功 能 内 聚 模 块 的 所 有 成 分 对 于 完 成 单 一 的 功 能 都 是 必 须 的, 则 称 为 功 能 内 聚 二 耦 合 强 度 耦 合 的 强 度 依 赖 于 以 下 几 个 因 素 :(1) 一 个 模 块 对 另 一 个 模 块 的 调 用 ;(2) 一 个 模 块 向 另 一 个 模 块 传 递 的 数 据 量 ;(3) 一 个 模 块 施 加 到 另 一 个 模 块 的 控 制 的 多 少 ;(4) 模 块 之 间 接 口 的 复 杂 程 度 耦 合 按 从 强 到 弱 的 顺 序 可 分 为 以 下 几 种 类 型 : (1) 内 容 耦 合 当 一 个 模 块 直 接 修 改 或 操 作 另 一 个 模 块 的 数 据, 或 者 直 接 转 入 另 一 个 模 块 时, 就 发 生 了 内 容 耦 合 此 时, 被 修 改 的 模 块 完 全 依 赖 于 修 改 它 的 模 块 (2) 公 共 耦 合 两 个 以 上 的 模 块 共 同 引 用 一 个 全 局 数 据 项 就 称 为 公 共 耦 合 (3) 控 制 耦 合 一 个 模 块 在 界 面 上 传 递 一 个 信 号 ( 如 开 关 值 标 志 量 等 ) 控 制 另 一 个 模 块, 接 收 信 号 的 模 块 的 动 作 根 据 信 号 值 进 行 调 整, 称 为 控 制 耦 合 (4) 标 记 耦 合 模 块 间 通 过 参 数 传 递 复 杂 的 内 部 数 据 结 构, 称 为 标 记 耦 合 此 数 据 结 构 的 变 化 将 使 相 关 的 模 块 发 生 变 化 (5) 数 据 耦 合 模 块 间 通 过 参 数 传 递 基 本 类 型 的 数 据, 称 为 数 据 耦 合 (6) 非 直 接 耦 合 模 块 间 没 有 信 息 传 递 时, 属 于 非 直 接 耦 合 如 果 模 块 间 必 须 存 在 耦 合, 就 尽 量 使 用 数 据 耦 合, 少 用 控 制 耦 合, 限 制 公 共 耦 合 的 范 围, 坚 决 避 免 使 用 内 容 耦 合 5.2.3 封 闭 开 放 性 如 果 一 个 模 块 可 以 作 为 一 个 独 立 体 被 其 它 程 序 引 用, 则 称 模 块 具 有 封 闭 性 如 果 一 个 模 块 可 以 被 扩 充, 则 称 模 块 具 有 开 放 性
从 字 面 上 看, 让 模 块 具 有 封 闭 开 放 性 是 矛 盾 的, 但 这 种 特 征 在 软 件 开 发 过 程 中 是 客 观 存 在 的 当 着 手 一 个 新 问 题 时, 我 们 很 难 一 次 性 解 决 问 题 应 该 先 纵 观 问 题 的 一 些 重 要 方 面, 同 时 作 好 以 后 补 充 的 准 备 因 此 让 模 块 存 在 开 放 性 并 不 是 坏 事 情 封 闭 性 也 是 需 要 的, 因 为 我 们 不 能 等 到 完 全 掌 握 解 决 问 题 的 信 息 后 再 把 程 序 做 成 别 人 能 用 的 模 块 模 块 的 封 闭 开 放 性 实 际 上 对 应 于 软 件 质 量 因 素 中 的 可 复 用 性 和 可 扩 充 性 采 用 面 向 过 程 的 方 法 进 行 程 序 设 计, 很 难 开 发 出 既 具 有 封 闭 性 又 具 有 开 放 性 的 模 块 采 用 面 向 对 象 设 计 方 法 可 以 较 好 地 解 决 这 个 问 题 5.3 数 据 结 构 与 算 法 设 计 学 会 设 计 数 据 结 构 与 算 法, 可 以 让 我 们 编 写 出 高 效 率 的 程 序 也 许 有 人 要 问, 在 计 算 机 速 度 日 新 月 异 的 今 天, 为 什 么 还 需 要 高 效 率 的 程 序? 因 为 我 们 的 雄 心 与 能 力 是 一 起 增 长 的, 技 术 进 步 最 快 也 快 不 过 人 们 欲 望 的 增 长 计 算 速 度 和 存 储 容 量 上 的 革 新 仅 仅 提 供 了 处 理 更 复 杂 问 题 的 有 效 工 具, 所 以 高 效 率 的 程 序 永 远 不 会 过 时 设 计 高 效 率 的 程 序 是 基 于 良 好 的 数 据 结 构 与 算 法, 而 不 是 基 于 编 程 小 技 巧 大 多 数 计 算 机 科 学 系 在 设 置 课 程 时, 都 重 视 学 习 基 本 的 软 件 工 程 原 理, 以 及 数 据 结 构 与 算 法 设 计 一 般 说 来, 数 据 结 构 与 算 法 就 是 一 类 数 据 的 表 示 及 其 相 关 的 操 作 ( 这 里 算 法 不 是 指 数 值 计 算 的 算 法 ) 从 数 据 表 示 的 观 点 来 看, 存 储 在 数 组 中 的 一 个 有 序 整 数 表 也 是 一 种 数 据 结 构 算 法 是 指 对 数 据 结 构 施 加 的 一 些 操 作, 例 如 对 一 个 线 性 表 进 行 检 索 插 入 删 除 等 操 作 一 个 算 法 如 果 能 在 所 要 求 的 资 源 限 制 (Resource Constraints) 范 围 内 将 问 题 解 决 好, 则 称 这 个 算 法 是 有 效 率 (Efficient) 的 例 如 一 个 资 源 限 制 可 能 是 用 于 存 储 数 据 的 内 存 有 限, 或 者 允 许 执 行 每 个 子 任 务 所 需 的 时 间 有 限 一 个 算 法 如 果 比 其 它 已 知 算 法 所 需 要 的 资 源 都 少, 这 个 算 法 也 被 称 为 是 有 效 率 的 算 法 的 代 价 (Cost) 是 指 消 耗 的 资 源 量 一 般 说 来, 代 价 是 由 一 个 关 键 资 源 例 如 时 间 或 空 间 来 评 估 的 毋 庸 置 疑, 人 们 编 写 程 序 是 为 了 解 决 问 题 只 有 通 过 预 先 分 析 问 题 来 确 定 必 须 达 到 的 性 能 目 标, 才 有 希 望 挑 选 出 正 确 的 数 据 结 构 有 相 当 多 的 程 序 员 忽 视 了 这 一 分 析 过 程, 而 直 接 选 用 某 一 个 他 们 习 惯 使 用 的, 但 是 与 问 题 不 相 称 的 数 据 结 构, 结 果 设 计 出 一 个 低 效 率 的 程 序 如 果 使 用 简 单 的 设 计 就 能 够 达 到 性 能 目 标 时, 选 用 复 杂 的 数 据 结 构 也 是 没 有 道 理 的 人 们 对 常 用 的 数 据 结 构 与 算 法 的 研 究 已 经 相 当 透 彻, 可 以 归 纳 出 一 些 设 计 原 则 : (1) 每 一 种 数 据 结 构 与 算 法 都 有 其 时 间 空 间 的 开 销 和 收 益 当 面 临 一 个 新 的 设 计 问 题 时, 设 计 者 要 彻 底 地 掌 握 怎 样 权 衡 时 空 开 销 和 算 法 有 效 性 的 方 法 这 就 需 要 懂 得 算 法 分 析 的 原 理, 而 且 还 需 要 了 解 所 使 用 的 物 理 介 质 的 特 性 ( 例 如, 数 据 存 储 在 磁 盘 上 与 存 储 在 内 存 中, 就 有 不 同 的 考 虑 ) (2) 与 开 销 和 收 益 有 关 的 是 时 间 空 间 的 权 衡 通 常 可 以 用 更 大 的 时 间 开 销 来 换 取 空 间 的 收 益, 反 之 亦 然 时 间 空 间 的 权 衡 普 遍 地 存 在 于 软 件 开 发 的 各 个 阶 段 中 (3) 程 序 员 应 该 充 分 地 了 解 一 些 常 用 的 数 据 结 构 与 算 法, 避 免 不 必 要 的 重 复 设 计 工 作 (4) 数 据 结 构 与 算 法 为 应 用 服 务 我 们 必 须 先 了 解 应 用 的 需 求, 再 寻 找 或 设 计 与 实 际 应 用 相 匹 配 的 数 据 结 构 [Shaffer 1998] 5.4 用 户 界 面 设 计
某 个 人 总 有 办 法 让 自 己 保 持 心 情 愉 快 信 心 十 足 有 一 天, 他 向 一 名 围 棋 九 段 和 一 名 乒 乓 球 世 界 冠 军 挑 战, 结 果 他 全 胜 了 因 为 他 跟 围 棋 九 段 打 乒 乓 球, 跟 乒 乓 球 冠 军 下 围 棋 用 户 界 面 的 编 程 技 术 是 人 们 熟 悉 得 不 得 了 的 事, 我 决 定 讲 一 讲 比 较 陌 生 的 用 户 界 面 设 计 美 学 有 位 爱 好 书 画 的 博 士 后 请 我 欣 赏 钢 琴 演 奏 会 我 从 头 到 尾 只 听 到 叮 叮 咚 咚 的 声 音, 实 在 享 受 不 到 高 雅, 就 请 这 位 朋 友 指 点 他 虽 然 也 不 懂 钢 琴, 却 从 欣 赏 书 法 的 角 度 设 法 解 释 如 何 欣 赏 音 乐 可 是 我 既 不 懂 书 法 也 不 懂 音 乐, 真 是 坐 立 不 安 美 似 乎 真 的 不 可 言 传 我 在 读 本 科 时, 特 别 喜 欢 编 写 用 户 界 面 程 序, 并 且 常 向 同 学 演 示 卖 弄 我 觉 得 还 不 过 瘾, 就 写 了 一 篇 用 户 界 面 设 计 美 学 的 短 文 [ 林 锐 1997] 凡 是 路 过 我 实 验 室 的 同 学 都 被 我 逮 住, 被 迫 听 完 我 得 意 之 极 的 朗 读, 茫 然 者 与 痛 苦 者 居 多 不 久 我 的 朗 读 便 所 向 披 糜, 闻 声 者 逃 之 夭 夭 现 在 我 又 把 那 篇 短 文 摘 录 至 此, 请 您 忍 着 点 吧 5.4.1 界 面 设 计 中 美 的 需 求 与 导 向 作 用 人 们 对 美 的 向 往 和 追 求 是 与 生 俱 有 的 显 然 没 有 人 愿 意 丑 化 自 己 的 程 序, 也 没 有 用 户 嗜 好 丑 陋 的 界 面 软 件 开 发 者 要 设 计 美, 用 户 要 享 受 美, 所 以 界 面 的 美 是 开 发 者 与 用 户 的 共 同 需 求 界 面 美 的 概 念 很 抽 象, 以 致 让 人 无 法 说 清 楚 什 么 是 界 面 的 美 但 它 同 时 又 很 现 实, 以 致 人 人 都 可 以 去 欣 赏 和 感 受 界 面 美, 并 且 挑 剔 美 中 之 不 足 美 学 不 是 一 种 量 化 的 学 问, 如 果 因 此 而 轻 视 美 学 指 导, 必 将 导 致 在 设 计 过 程 中 光 依 赖 程 序 员 个 人 的 经 验 与 感 觉 由 于 程 序 员 接 受 的 教 育 主 要 是 如 何 使 计 算 机 完 成 工 作, 而 不 是 人 如 何 工 作, 因 此 仅 靠 程 序 员 主 观 想 象 设 计 而 成 的 界 面 往 往 得 不 到 大 众 用 户 的 认 可 美 的 界 面 能 消 除 用 户 由 感 觉 引 起 的 乏 味 紧 张 和 疲 劳 ( 情 绪 低 落 ), 大 大 提 高 用 户 的 工 作 效 率, 从 而 进 一 步 为 发 挥 用 户 技 能 和 为 用 户 完 成 任 务 作 出 贡 献 从 人 机 界 面 发 展 历 史 与 趋 势 上 可 以 看 出 人 们 对 界 面 美 的 需 求, 以 及 美 在 界 面 设 计 中 的 导 向 作 用 界 面 设 计 已 经 经 历 了 两 个 界 限 分 明 的 时 代 第 一 代 是 以 文 本 为 基 础 的 简 单 交 互, 如 常 见 的 命 令 行, 字 符 菜 单 等 由 于 第 一 代 界 面 考 虑 人 的 因 素 太 少, 用 户 兴 趣 不 高 随 着 技 术 的 发 展, 出 现 了 第 二 代 直 接 操 纵 的 界 面 它 大 量 使 用 图 形 语 音 和 其 它 交 互 媒 介, 充 分 地 考 虑 了 人 对 美 的 需 求 直 接 操 纵 的 界 面 使 用 视 听 触 摸 等 技 术, 让 人 可 以 凭 借 生 活 常 识 经 历 和 推 理 来 操 纵 软 件, 愉 快 地 完 成 任 务 更 高 层 次 的 界 面 甚 至 模 拟 了 人 的 生 活 空 间, 例 如 虚 拟 现 实 环 境 界 面 的 美 充 分 体 现 了 人 机 交 互 作 用 中 人 的 特 性 与 意 图, 越 来 越 多 的 用 户 将 通 过 具 有 吸 引 力 而 令 人 愉 快 的 人 机 界 面 与 计 算 机 打 交 道 5.4.2 界 面 美 的 内 涵 本 节 从 合 适 性 风 格 和 广 义 美 三 个 方 面 论 述 界 面 美 的 内 涵 一 界 面 的 合 适 性 界 面 的 合 适 性 是 指 界 面 是 否 与 软 件 功 能 相 融 洽 如 果 界 面 不 适 合 于 软 件 的 功 能, 那 么 界 面 将 毫 无 用 处, 界 面 美 的 内 涵 就 无 从 谈 起 所 以 界 面 的 合 适 性 是 界 面 美 的 首 要 因 素, 它 提 醒 设 计 者 不 要 片 面 追 求 外 观 漂 亮 而 导 致 失 真 或 华 而 不 实 界 面 的 合 适 性 既 提 倡 外 美 内 秀, 又 强 调 恰 如 其 分 合 适 性 差 的 界 面 无 疑 会 混 淆 软 件 意 图, 致 使 用 户 产 生 误 解 即 使 它 不 损 害 软 件 功 能 与 性 能, 也 会 使 用 户 产 生 不 该 有 的 情 绪 波 动 例 如 一 些 软 件 开 发 者 喜 欢 为 其 作 品 加 一 段 动 画 演 示, 以 便 吸 引 更 多 用 户 的 关 注 这 本 是 无 可 非 议 的, 问 题 在 于 这 演 示 是 否 合 情 合 理 如 果 运 行 一
个 程 序, 它 首 先 表 演 一 套 复 杂 的 动 画, 在 后 台 演 奏 雄 壮 的 进 行 曲, 电 闪 雷 鸣 之 后 出 来 的 却 是 一 个 普 通 的 文 本 编 辑 器 整 个 过 程 让 用 户 置 身 于 云 里 雾 里, 而 结 果 却 让 用 户 感 到 惊 谔 而 不 是 惊 喜 合 适 性 差 的 界 面 只 会 给 软 件 带 来 厄 运 二 界 面 的 风 格 界 面 的 风 格 有 两 类, 一 是 一 致 性, 二 是 个 性 化 商 业 应 用 软 件 的 界 面 设 计 注 重 一 致 性 设 计 者 必 须 密 切 注 意 在 相 同 应 用 领 域 中 最 流 行 的 软 件 的 界 面, 必 须 尊 重 用 户 使 用 这 些 软 件 的 习 惯 例 如 商 业 软 件 习 惯 于 设 置 F1 键 为 帮 助 热 键, 如 果 某 个 设 计 者 别 出 心 裁 地 让 F1 键 成 为 程 序 终 止 的 热 键, 那 么 在 用 户 渴 望 得 到 帮 助 而 伸 手 击 F1 键 的 一 刹 那, 他 的 工 作 就 此 完 蛋 相 信 这 个 用 户 一 朝 被 蛇 咬, 十 年 怕 井 绳 目 前 流 行 的 软 件 开 发 工 具 如 Visual C++ Visual Basic Delphi C++ Builder Power Builder 等, 都 能 够 快 速 地 开 发 出 非 常 相 似 的 图 形 用 户 界 面 在 Internet/Intranet 领 域, 浏 览 器 几 乎 成 了 唯 一 的 客 户 机 程 序, 因 为 用 户 希 望 用 完 全 一 致 的 软 件 来 完 成 千 变 万 化 的 应 用 任 务 在 娱 乐 领 域 的 软 件 中, 有 个 性 化 的 界 面 自 然 比 泯 然 于 众 的 界 面 更 具 有 吸 引 力 一 般 说 来, 计 算 机 专 业 人 员 玩 过 的 软 件 不 计 其 数 界 面 看 多 了, 真 有 种 曾 经 沧 海 难 为 水 的 感 觉 不 过 当 我 看 到 一 个 叫 Sonique 的 放 音 乐 的 软 件 时, 不 禁 对 其 界 面 的 创 意 啧 啧 称 赞, 忍 不 住 象 贴 美 女 像 那 样 把 它 贴 到 书 中, 如 图 5.7 所 示 图 5.7 Sonique 软 件 的 几 种 界 面 人 们 经 常 搞 不 清 楚 什 么 情 况 下 应 该 追 求 一 致 性 或 个 性 化 在 大 白 天, 当 人 们 都 穿 戴 整 齐 时, 有 些 人 喜 欢 只 挂 几 片 遮 羞 布 而 当 大 家 都 赤 条 条 地 在 共 公 浴 室 洗 澡 时, 却 也 有 人 喜 欢 穿 着 衣 服 三 界 面 的 广 义 美 尽 管 界 面 的 美 并 没 有 增 加 软 件 的 功 能 与 性 能, 却 又 是 必 为 可 少 的 用 户 使 用 界 面 时, 除 了 直 接 的 感 官 美 感 外, 还 有 很 大 一 部 分 美 感 是 间 接 的, 它 们 存 在 于 人 们 的 使 用 体 验 中, 例 如 方 便, 实 用 等 与 图 形 用 户 界 面 相 比, 命 令 行 是 最 原 始 的 界 面, 它 难 记 又 难 看 但 对 于 熟 练
的 用 户 而 言, 他 们 乐 于 使 用 命 令 行 以 获 得 高 效 率 命 令 行 因 具 有 高 效 率 而 赢 得 了 专 业 人 士 的 喜 爱, 早 期 的 Unix 系 统 就 是 彻 头 彻 尾 的 命 令 系 统 可 以 说, 一 切 有 利 于 人 机 交 互 的 界 面 设 计 因 素 都 具 有 广 义 美 界 面 设 计 的 一 些 特 殊 考 虑 也 体 现 了 广 义 美, 如 设 法 使 残 障 人 也 可 以 使 用 软 件 IBM 公 司 在 1985 年 已 经 创 建 了 残 障 人 国 家 支 持 中 心 Apple 公 司 的 专 门 教 育 办 公 室 则 提 供 了 一 些 有 利 于 残 障 人 使 用 的 计 算 机 信 息 产 品 5.5 系 统 设 计 示 例 支 持 协 同 工 作 的 交 互 式 三 维 图 形 软 件 开 发 系 统 本 节 论 述 支 持 协 同 工 作 的 交 互 式 三 维 图 形 软 件 开 发 系 统 的 系 统 设 计, 作 为 本 章 的 示 例 ( 取 材 于 作 者 的 博 士 论 文 工 作 [ 林 锐 2000]) 5.5.1 设 计 背 景 图 形 标 准 在 图 形 领 域 有 着 重 要 的 地 位, 它 不 仅 加 速 了 3D 应 用 程 序 的 开 发, 而 且 使 3D 应 用 程 序 的 可 移 植 性 更 好 历 史 上 曾 出 现 的 图 形 标 准 ( 或 API) 有 Core GKS PHIGS PEX GL Dore RenderMan Hoops OpenGL 等 等 经 过 竞 争 与 淘 汰, 目 前 OpenGL 成 为 国 际 上 公 认 的 3D 图 形 工 业 标 准, 在 Unix 与 PC 平 台 得 到 广 泛 应 用 OpenGL 提 供 了 数 百 个 库 函 数, 可 以 方 便 地 绘 制 具 有 真 实 感 的 3D 图 形 但 是 在 开 发 交 互 式 的 3D 图 形 应 用 程 序 时, 图 形 的 绘 制 只 是 一 部 分 工 作, 更 多 的 工 作 集 中 在 场 景 数 据 结 构 图 形 对 象 三 维 交 互 和 图 形 用 户 界 面 的 设 计 上 由 于 OpenGL 与 窗 口 系 统 无 关, 不 提 供 任 何 交 互 手 段, 必 须 由 程 序 员 自 己 编 写 所 有 的 交 互 功 能 并 且 OpenGL 的 编 程 接 口 是 低 级 的 C 函 数, 不 提 供 可 复 用 的 对 象 库 或 者 应 用 程 序 框 架, 开 发 效 率 不 高 为 了 克 服 这 些 困 难, 人 们 往 往 在 图 形 标 准 之 上 再 建 立 更 高 级 的 开 发 工 具 (3D Toolkit 或 3D Engine) 基 于 OpenGL 的 著 名 的 开 发 工 具 有 Open Inventor IRIS Performer Optimeizer/Cosmo3D 以 及 GLUT 等 等 Open Inventor 被 誉 为 是 交 互 式 3D 开 发 工 具 的 事 实 标 准, 但 显 然 没 有 一 个 3D 开 发 工 具 能 满 足 所 有 的 应 用 需 求,3D 的 广 泛 应 用 需 要 更 多 的 开 发 工 具 支 持 随 着 计 算 机 图 形 技 术 与 网 络 技 术 的 迅 猛 发 展, 两 者 的 结 合 势 在 必 行 在 商 业 科 研 教 育 娱 乐 等 领 域, 用 于 分 布 式 虚 拟 环 境 (Distributed Virtual Environments, DVEs) 和 计 算 机 支 持 协 同 工 作 (Computer Supported Cooperative Work, CSCW) 的 图 形 系 统 已 成 为 研 究 与 应 用 的 热 点 著 名 的 DVEs 系 统 有 DIVE dvs MR Repo-3D 等 但 是 这 些 DVEs 系 统 缺 乏 3D 开 发 工 具 的 交 互 式 图 形 功 能 以 及 通 用 性, 而 通 用 的 3D 开 发 工 具 如 Open Inventor 则 又 不 支 持 分 布 式 计 算 和 协 同 工 作 由 于 在 窗 口 系 统 图 形 支 撑 库 编 程 语 言 等 方 面 存 在 差 异, 上 述 DVEs 系 统 和 3D 开 发 工 具 难 以 方 便 地 结 合 使 用 我 们 多 方 面 分 析 了 3D 需 求 及 软 硬 件 条 件, 研 制 完 成 运 行 于 PC 平 台, 支 持 协 同 工 作 的 交 互 式 三 维 图 形 软 件 开 发 系 统, 如 图 5.8 所 示 其 中 : (1)Intra3D 2.0 是 基 于 OpenGL 的 通 用 交 互 式 三 维 图 形 软 件 开 发 工 具, 可 用 于 快 速 开 发 Window 9x/NT 下 的 交 互 式 三 维 图 形 应 用 软 件 (2)CNC 1.0 是 支 持 协 同 工 作 的 网 络 通 讯 开 发 系 统 (Cooperative Network Communicator), 其 核 心 是 支 持 发 布 订 阅 模 式 与 组 播 模 式 的 服 务 器 与 API 结 合 Intra3D 2.0 和 CNC 1.0, 可 以 快 速 开 发 支 持 协 同 工 作 的 交 互 式 三 维 图 形 应 用 软 件 通 用 交 互 式 三 维 图 形 软 件 开 发 工 具 Intra3D 2.0 支 持 协 同 工 作 的 网 络 通 讯 开 发 系 统 CNC 1.0
图 5.8 支 持 协 同 工 作 的 交 互 式 三 维 图 形 软 件 开 发 系 统 5.5.2 通 用 交 互 式 三 维 图 形 软 件 开 发 工 具 Intra3D 2.0 Intra3D 2.0 的 核 心 是 集 成 了 场 景 数 据 结 构 图 形 对 象 三 维 交 互 算 法 和 图 形 用 户 界 面 的 C++ 类 库 与 COM(Component Object Model) 对 象 库, 支 持 Visual C++ Visual Basic Delphi 等 语 言 的 应 用 编 程 Intra3D 的 核 心 库 分 四 层 创 建 : (1) 第 一 层 为 基 础 对 象 与 函 数 (Basic Objects and Functions); (2) 第 二 层 为 图 形 对 象 (Graphical Objects); (3) 第 三 层 为 场 景 图 与 节 点 (Scene Graph and Nodes); (4) 第 四 层 为 绘 制 与 交 互 (Rendering and Interaction) 体 系 结 构 如 图 5.9 所 示, 其 中 高 层 构 件 可 以 引 用 低 层 构 件, 但 低 层 构 件 不 能 引 用 高 层 构 件 Intra3D C++ 类 库 4 绘 制 与 交 互 层 3 场 景 的 图 与 节 点 层 2 图 形 对 象 层 1 基 础 对 象 与 函 数 层 Intra3D COM 库 Window 9x/NT + OpenGL + Visual C++ 图 5.9 Intra3D 2.0 的 体 系 结 构 Intra3D 2.0 是 免 费 软 件, 有 配 套 书 籍 交 互 式 三 维 图 形 技 术 与 程 序 设 计 标 准 版 软 件 约 25 兆, 核 心 库 7 万 多 行 C++ 代 码 全 部 公 开, 用 户 可 以 方 便 地 修 改 内 核 以 适 应 不 同 的 需 求 5.5.2.1 主 要 模 块 和 功 能 一 基 础 对 象 与 函 数 层 (1) 定 义 了 用 于 对 象 引 用 计 数 的 内 存 管 理 基 类 ; (2) 矢 量 矩 阵 与 四 元 组 运 算, 鼠 标 跟 踪 球 算 法 ; (3) 点 阵 字 体 与 三 维 矢 量 字 体 输 出, 常 用 于 数 据 可 视 化 图 形 的 数 据 标 注 ; (4) 图 像 输 入 输 出 以 及 纹 理 映 射, 支 持 BMP GIF JPEG SGI TGA 等 图 像 格 式 ; (5) 常 用 几 何 图 元 的 绘 制, 如 锥 柱 球 环 等, 并 支 持 Swept 形 体, 螺 旋 体 的 绘 制 ; (6) 提 供 450 余 种 材 质, 在 第 四 层 中 可 以 交 互 式 编 辑 这 些 材 质 二 图 形 对 象 层 图 形 对 象 能 将 数 据 转 化 为 几 何 模 型 并 可 以 绘 制 出 来 Intra3D 2.0 版 提 供 了 三 类 图 形 对 象 : (1) 常 用 几 何 对 象, 如 长 方 体 锥 体 圆 柱 体 球 体 圆 环 体 Swept 形 体 等 ; (2) 多 边 形 模 型 对 象, 可 用 于 绘 制 Autodesk 公 司.3ds 模 型 和 Wavefront 公 司 的.obj 模 型 ; (3) 商 业 统 计 图 形 对 象, 如 柱 形 图 带 状 图 条 形 图 折 线 图 面 积 图 饼 图 塔 形 图 曲 线 图 曲 面 图 进 程 图 股 票 图 等
图 形 对 象 的 开 发 与 应 用 问 题 密 切 相 关, 用 户 可 以 使 用 继 承 方 法 扩 充 新 的 图 形 对 象, 而 不 会 影 响 到 其 它 三 层 的 构 件 三 场 景 图 与 节 点 场 景 图 (Scene Graph) 是 有 向 无 环 图,Scene Graph 的 主 要 节 点 有 :(1)SceneNode 是 所 有 节 点 的 基 类 在 SceneNode 中 定 义 了 局 部 坐 标 系 以 及 相 应 的 图 形 变 换, 这 样 便 于 第 四 层 以 同 样 的 操 作 方 式 实 现 三 维 交 互 (2) 相 机 节 点 (CameraNode) 支 持 平 行 投 影 与 透 视 投 影, 支 持 多 个 相 机 切 换 (3) 光 源 节 点 有 三 种 : 平 行 光 源 节 点 (DirLightNode) 点 光 源 节 点 (PointLightNode) 和 锥 光 源 节 点 (SpotLightNode) (4) 形 体 节 点 (ShapeNode) 用 于 引 用 图 形 对 象, 有 关 图 形 对 象 的 三 维 交 互 均 由 ShapeNode 处 理 四 绘 制 与 交 互 层 Intra3D 的 交 互 分 两 类 : 一 类 是 对 形 体 光 源 和 相 机 的 直 接 操 作, 另 一 类 是 真 实 感 属 性 的 编 辑 Intra3D 的 场 景 视 图 构 件 (SceneView) 封 装 了 交 互 式 绘 制 的 所 有 细 节, 如 消 息 处 理 场 景 节 点 的 遍 历 绘 制 多 重 采 样 消 锯 齿 鼠 标 交 互 等 为 了 便 于 编 辑 真 实 感 属 性,Intra3D 定 制 了 一 些 常 用 对 话 : 矢 量 字 体 对 话 (FontDialog) 颜 色 对 话 (ColorDialog) 材 质 库 对 话 ( MaterialLibDialog ) 材 质 对 话 (MaterialDialog ) 与 光 源 对 话 (DirLightDialog, PointLightDialog, SpotLightDialog) 5.5.2.2 用 户 界 面 设 计 Intra3D 的 场 景 视 图 构 件 SceneView 用 于 快 速 创 建 交 互 式 3D 应 用 程 序 的 主 界 面 SceneView 支 持 selecting scaling rotating translating creating deleting 等 三 十 余 种 操 作, 并 提 供 工 具 条 方 便 于 交 互, 如 图 5.10 所 示 为 了 编 辑 真 实 感 属 性, 常 需 在 对 话 框 中 绘 制 3D 图 形 Microsoft 的 窗 口 系 统 不 提 供 3D 的 对 话 窗 口 使 用 Intra3D 的 Window3D 构 件 可 在 对 话 框 中 创 建 多 个 3D 视 图, 图 5.11 的 材 质 对 话 和 图 5.12 的 材 质 库 对 话 都 使 用 了 Window3D 构 件 颜 色 编 辑 是 3D 图 形 程 序 中 最 常 用 的 交 互, 材 质 与 光 源 的 编 辑 实 际 上 是 通 过 改 变 颜 色 分 量 来 实 现 的 需 要 进 行 颜 色 编 辑 的 交 互 均 涉 及 HSV 与 RGB 模 式 的 颜 色 转 换 Intra3D 的 绘 制 与 交 互 层 实 现 了 这 些 计 算, 并 且 提 供 彩 色 的 滑 动 条 用 于 鼠 标 交 互 图 5.13 图 5.14 分 别 为 点 光 源 对 话 和 颜 色 对 话 图 5.10 用 于 直 接 操 作 的 三 维 交 互 工 具 条 图 5.11 材 质 对 话 图 5.12 材 质 库 对 话
图 5.13 点 光 源 对 话 图 5.14 颜 色 对 话 5.5.3 支 持 协 同 工 作 的 网 络 通 讯 开 发 系 统 CNC 1.0 最 简 单 的 协 同 工 作 模 式 是 让 两 个 客 户 机 直 接 通 讯, 可 以 用 Socket 编 程 实 现 假 设 有 n 个 客 户 机 参 加 协 同 工 作, 每 个 客 户 机 将 与 所 有 其 它 的 客 户 机 通 讯 那 么 总 共 存 在 n(n-1)/2 个 Socket 直 接 通 讯, 并 且 每 个 客 户 机 的 变 动 将 导 致 其 它 客 户 机 的 修 改 这 种 Socket 直 接 通 讯 使 得 协 同 工 作 的 管 理 和 客 户 机 的 程 序 设 计 变 得 非 常 困 难 CNC 系 统 提 供 了 支 持 发 布 订 阅 (Publish-Subscribe) 与 组 播 (Multicast) 模 式 的 服 务 器 与 API, 可 以 高 效 地 管 理 多 个 组 群 的 协 同 工 作, 并 使 得 客 户 机 的 程 序 设 计 十 分 简 单 CNC 1.0 的 系 统 结 构 如 图 5.15 所 示 CNC 服 务 器 将 客 户 机 分 组 管 理 在 发 布 订 阅 模 式 中, 将 产 生 数 据 的 进 程 称 为 生 产 者 (Producer), 将 接 受 数 据 的 进 程 称 为 消 费 者 (Consumer) 生 产 者 可 以 向 服 务 器 发 布 数 据, 服 务 器 保 存 这 些 数 据 消 费 者 可 以 向 服 务 器 订 阅 数 据 每 个 客 户 机 可 能 是 很 多 数 据 的 生 产 者 或 消 费 者 同 一 时 刻,CNC 系 统 允 许 有 任 意 多 个 生 产 者 和 消 费 者 存 在 CNC 的 发 布 订 阅 功 能 是 用 TCP 协 议 实 现 的 在 组 播 模 式 中, 服 务 器 动 态 地 分 配 每 个 组 的 组 播 地 址 客 户 机 可 以 向 服 务 器 申 请 加 入 任 意 组, 允 许 向 任 意 组 播 放 消 息, 服 务 器 不 保 存 这 些 组 播 消 息 CNC 的 组 播 功 能 是 用 UDP 协 议 实 现 的 CNC API CNC 服 务 器 基 于 TCP 协 议 的 发 布 订 阅 模 式 基 于 UDP 协 议 的 组 播 模 式 CNC 客 户 机 图 5.15 CNC 1.0 的 系 统 结 构 5.5.3.1 CNC 客 户 机 的 API 设 计 类 CNCClient 客 户 机 用 来 实 现 发 布 订 阅 和 组 播 功 能, 主 要 接 口 ( 公 有 函 数 )
如 下 : class CNCClient { public: BOOL Connect( ); // 连 接 服 务 器 BOOL Disconnect(); // 与 服 务 器 断 开 连 接 BOOL PublishData( ); // 向 服 务 器 发 布 数 据 BOOL QueryData( ); // 向 服 务 器 查 询 数 据 BOOL SubscribeData( ); // 向 服 务 器 订 阅 数 据 GROUPIP QueryGroupIP( ); // 向 服 务 器 查 询 组 播 地 址 DWORD MulticastMessage( ); // 发 送 组 播 消 息 virtual void MessageResponse( );// 响 应 组 播 消 息 }; 一 客 户 程 序 的 发 布 协 议 客 户 机 向 服 务 器 发 布 的 每 个 数 据 报 均 含 有 数 据 类 型 工 作 组 名 称 数 据 名 称 生 命 期 和 数 据 长 度 的 信 息 报 文 格 式 如 图 5.16 所 示, 数 据 结 构 见 DataPublish : struct DataPublish { BYTE idatatype; // 2 个 字 节 数 据 类 型, 宏 定 义 为 DATA_PUBLISH char strgroupname[16]; // 16 个 字 节 的 工 作 组 名 字 char strdataname[16]; // 16 个 字 节 的 数 据 名 字 DWORD dwlifetime; // 4 个 字 节 的 数 据 生 命 期, 以 秒 为 单 位 DWORD dwlength; // 4 个 字 节 的 数 据 内 容 的 长 度 char *pchcontent; // 数 据 内 容 }; 2 字 节 16 字 节 16 字 节 4 字 节 4 字 节 data type group name data name life time length content 图 5.16 用 于 发 布 的 报 文 格 式 二 客 户 程 序 的 订 阅 协 议 客 户 机 向 服 务 器 订 阅 数 据 分 两 步 实 现 : (1) 先 调 用 函 数 QueryData 向 服 务 器 发 送 一 个 DataQuery 格 式 的 报 文, 用 于 查 询 要 订 阅 的 数 据 是 否 存 在 struct DataQuery { BYTE idatatype; // 2 个 字 节 数 据 类 型, 宏 定 义 为 DATA_QUERY char strgroupname[16]; // 16 个 字 节 的 工 作 组 名 字 char strdataname[16]; // 16 个 字 节 的 数 据 名 字 }; (2) 服 务 器 接 收 到 查 询 时, 按 照 DataQuery 结 构 中 的 strgroupname 和 strdataname 进 行 搜 索 如 果 该 数 据 不 存 在,Server 向 Client 发 送 一 个 FALSE 标 志 如 果 该 数 据 存 在, 服 务
器 先 向 客 户 机 发 送 一 个 TRUE 标 志, 之 后 立 即 再 向 客 户 机 发 送 该 数 据 (DataPublish 格 式 ) 如 果 客 户 机 得 到 TRUE 标 志 的 查 询 结 果, 就 调 用 函 数 SubscribeData 来 接 收 服 务 器 发 送 过 来 的 数 据 三 客 户 程 序 的 组 播 协 议 客 户 机 先 调 用 函 数 QueryGroupIP 向 服 务 器 发 送 一 个 GroupAddress 格 式 的 报 文, 用 于 查 询 组 播 地 址 服 务 器 返 回 相 应 的 十 进 制 点 分 式 的 IP 地 址 struct GroupAddress { BYTE idatatype; // 2 个 字 节 数 据 类 型, 宏 定 义 为 GROUP_ADDRESS char strgroupname[16]; // 16 个 字 节 的 工 作 组 名 字 }; 客 户 机 调 用 函 数 MulticastMessage 向 指 定 的 组 ( 根 据 组 播 地 址 ) 播 放 消 息 组 播 的 数 据 报 结 构 DataMulticast 定 义 如 下 : struct DataMulticast { DWORD dwcontenttype; // 组 播 的 数 据 报 类 型, 由 用 户 定 义 char *pchcontent; // 组 播 的 数 据 报 内 容, 由 用 户 定 义 }; 如 果 客 户 机 接 收 到 组 播 的 消 息, 将 自 动 调 用 函 数 MessageResponse 来 响 应 该 消 息 MessageResponse 是 虚 函 数, 它 将 根 据 dwcontenttype 信 息 决 定 如 何 处 理 到 来 的 组 播 消 息, 具 体 功 能 由 用 户 定 义 5.5.3.2 CNC 服 务 器 的 设 计 一 数 据 结 构 CNC 服 务 器 的 数 据 结 构 主 要 由 三 部 分 组 成 : (1) 一 张 用 于 管 理 组 播 地 址 的 链 表 组 播 地 址 由 服 务 器 动 态 生 成, 客 户 机 可 以 向 服 务 器 查 询 任 意 组 的 组 播 地 址 (2) 一 张 用 于 管 理 线 程 指 针 的 链 表 服 务 器 采 用 多 线 程 并 发 处 理 技 术, 使 客 户 机 获 得 最 快 的 响 应 (3) 每 个 组 都 有 一 张 用 于 管 理 发 布 订 阅 的 数 据 的 Hash 表 由 于 同 一 时 刻, 系 统 可 能 存 在 多 个 生 产 者 与 消 费 者, 数 据 的 存 入 取 出 速 度 成 为 服 务 器 性 能 的 重 要 指 标 Hash 表 可 以 提 供 比 链 表 更 快 的 数 据 检 索 速 度 Hash 表 中 的 数 据 项 结 构 见 DataElement : struct DataElement { char strgroupname[16]; // 工 作 组 的 名 称 char strdataname[16]; // 数 据 的 名 称 BYTE istoragetype; // 存 储 类 型 : STORAGE_FILE 或 STORAGE_MEMORY ColeDateTime TimeToDie; // 作 废 时 刻 BOOL block; // 锁 定 标 志 : TRUE 或 FALSE DWORD dwlength; // 数 据 的 长 度 char *pchcontent; // 数 据 内 容 };
存 储 类 型 (istoragetype) 的 用 途 : 把 数 据 全 部 保 存 在 内 存 中 将 非 常 消 耗 服 务 器 的 内 存 资 源, 在 很 多 情 况 下 是 没 有 必 要 的 为 了 提 高 内 存 的 使 用 效 率, 服 务 器 仅 把 生 命 期 较 短 或 者 长 度 较 短 的 数 据 保 存 在 内 存 中 ( 即 为 STORAGE_MEMORY 类 型 ), 而 把 生 命 期 较 长 或 者 长 度 较 长 的 数 据 保 存 在 文 件 中 ( 即 为 STORAGE_FILE 类 型 ) 作 废 时 刻 (TimeToDie) 的 用 途 : 客 户 机 发 布 的 数 据 均 指 定 了 生 命 期, 服 务 器 在 接 收 到 数 据 时 即 可 计 算 出 作 废 时 刻 服 务 器 将 定 期 扫 描 Hash 表, 若 发 现 有 数 据 超 出 作 废 时 刻 ( 并 且 没 有 被 锁 定 ), 即 可 删 除 此 数 据 锁 定 标 志 (block) 的 用 途 : 很 多 客 户 机 可 能 同 时 订 阅 某 个 数 据, 而 该 数 据 可 能 已 超 出 作 废 时 刻 即 将 被 删 除 为 避 免 冲 突, 规 定 只 要 有 客 户 机 订 阅 数 据, 就 用 ilock 标 志 来 锁 定 此 数 据, 直 到 订 阅 完 成 后 才 消 除 锁 定 二 多 线 程 并 发 技 术 服 务 器 有 一 个 主 线 程 和 多 个 子 线 程 主 线 程 负 责 客 户 机 的 入 连 接 请 求, 然 后 创 建 一 个 子 线 程 来 处 理 这 个 TCP 连 接 每 个 子 线 程 按 照 CNC API 的 协 议 与 客 户 机 通 讯 由 于 有 多 个 子 线 程 共 享 服 务 器 中 的 数 据, 多 线 程 对 共 享 资 源 的 同 步 访 问 成 为 实 现 的 难 点 CNC 主 要 采 用 了 关 键 区 互 斥 对 象 等 同 步 手 段 解 决 这 个 问 题 三 Winsock 的 使 用 CNC 1.0 运 行 于 Windows 9x/NT 系 统 下, 底 层 的 网 络 通 讯 程 序 用 Winsock 编 写 Winsock 有 两 种 工 作 方 式 : 阻 塞 方 式 和 非 阻 塞 方 式 阻 塞 方 式 的 优 点 是 编 程 简 单, 可 靠 性 好 缺 点 是 容 易 使 应 用 程 序 阻 塞 住, 不 能 处 理 其 它 事 务 非 阻 塞 方 式 是 利 用 Windows 消 息 机 制 实 现 的 优 点 是 在 数 据 到 来 的 时 候, 系 统 向 应 用 程 序 窗 口 发 送 消 息, 使 得 应 用 程 序 不 必 总 在 等 待 数 据, 提 高 了 工 作 效 率 缺 点 是 在 发 送 和 接 收 数 据 时, 应 用 程 序 并 不 将 事 情 做 完 ( 不 阻 塞 ), 以 至 于 应 用 程 序 要 维 护 复 杂 的 状 态 机 鉴 于 阻 塞 方 式 和 非 阻 塞 方 式 各 有 优 缺 点,CNC 服 务 器 采 用 了 混 合 方 式 主 线 程 采 用 非 阻 塞 的 消 息 驱 动 方 式, 可 以 快 速 响 应 客 户 机 的 入 连 接 在 子 线 程 中, 仍 采 用 非 阻 塞 的 消 息 驱 动 方 式 接 受 客 户 机 的 请 求, 只 有 在 响 应 请 求 时, 采 用 阻 塞 的 方 式 一 次 性 地 完 成 数 据 的 发 送 或 接 收 5.5.4 应 用 示 例 图 5.17 图 5.18 是 参 加 协 同 工 作 的 两 个 客 户 程 序 示 例, 这 两 个 程 序 均 用 Intra3D 2.0 和 CNC 1.0 开 发 图 5.17 的 客 户 程 序 向 CNC 服 务 器 订 阅.3ds 和.obj 格 式 的 多 边 形 模 型 数 据 并 执 行 交 互 式 绘 制 图 5.18 的 客 户 程 序 向 CNC 服 务 器 订 阅 商 业 统 计 图 形 数 据 并 执 行 交 互 式 绘 制 另 有 一 个 客 户 机 ( 数 据 源 ) 向 CNC 服 务 器 发 布 各 种 数 据, 并 用 组 播 来 通 知 各 个 客 户 机 当 前 发 布 了 什 么 数 据 ( 短 消 息 ) Intra3D 2.0 和 CNC 1.0 目 前 已 经 可 以 实 用, 请 与 作 者 联 系, 免 费 索 取 软 件 5.6 小 结 让 我 们 用 著 名 3D 游 戏 软 件 Quake 的 设 计 师 Michael Abrash 的 话 总 结 本 章 : 所 有 真 正 杰 出 的 设 计 一 旦 被 设 计 好, 看 起 来 都 是 那 么 的 简 单 和 显 而 易 见 但 是 在 获 得 杰 出 设 计 的 过 程 中, 需 要 付 出 令 人 难 以 置 信 的 努 力 [Abrash 1998]
图 5.17 绘 制.3ds 和.obj 模 型 的 客 户 程 序 图 5.18 绘 制 商 业 统 计 图 形 的 客 户 程 序
第 六 章 C++ 面 向 对 象 程 序 设 计 六 年 前, 我 刚 热 恋 面 向 对 象 (Object-Oriented) 时, 一 口 气 记 住 了 近 十 个 定 义 六 年 后, 我 从 几 十 万 行 程 序 中 滚 爬 出 来 准 备 写 点 心 得 体 会 时, 却 无 法 解 释 什 么 是 面 向 对 象, 就 象 说 不 清 楚 什 么 是 数 学 那 样 软 件 工 程 中 的 时 髦 术 语 面 向 对 象 分 析 和 面 向 对 象 设 计, 通 常 是 针 对 需 求 分 析 和 系 统 设 计 环 节 的 面 向 对 象 有 几 大 学 派, 就 象 如 来 佛 上 帝 和 真 主 用 各 自 的 方 式 定 义 了 这 个 世 界, 并 留 下 一 堆 经 书 来 解 释 这 个 世 界 有 些 学 者 建 议 这 样 找 对 象 : 分 析 一 个 句 子 的 语 法, 找 出 名 词 和 动 词, 名 词 就 是 对 象, 动 词 则 是 对 象 的 方 法 ( 即 函 数 ) 当 年 国 民 党 的 文 人 为 了 对 抗 毛 泽 东 的 沁 园 春 雪, 特 意 请 清 朝 遗 老 们 写 了 一 些 对 仗 工 整 的 诗, 请 蒋 介 石 过 目 老 蒋 看 了 气 得 大 骂 : 娘 希 匹, 全 都 有 一 股 棺 材 里 腐 尸 的 气 味 我 看 了 几 千 页 的 软 件 工 程 资 料, 终 于 发 现 自 己 有 些 弱 智, 无 法 理 解 面 向 对 象 的 理 论, 同 时 醒 悟 到 编 程 是 硬 道 理 面 向 对 象 程 序 设 计 语 言 很 多, 如 Smalltalk Ada Eiffel Object Pascal Visual Basic C++ 等 等 C++ 语 言 最 讨 人 喜 欢, 因 为 它 兼 容 C 语 言, 并 且 具 备 C 语 言 的 性 能 近 几 年, 一 种 叫 Java 的 纯 面 向 对 象 语 言 红 极 一 时, 不 少 人 叫 喊 着 要 用 Java 革 C++ 的 命 我 认 为 Java 好 比 是 C++ 的 外 甥, 虽 然 不 是 直 接 遗 传 的, 但 也 几 分 象 样 外 甥 在 舅 舅 身 上 玩 耍 时 洒 了 一 泡 尿, 俩 人 不 该 为 此 而 争 吵 关 于 C++ 程 序 设 计 的 书 藉 非 常 多, 本 章 不 讲 C++ 的 语 法, 只 讲 一 些 小 小 的 编 程 道 理 如 果 我 能 早 几 年 明 白 这 些 小 道 理, 就 可 以 大 大 改 善 数 十 万 行 程 序 的 质 量 了 6.1 C++ 面 向 对 象 程 序 设 计 的 重 要 概 念 早 期 革 命 影 片 里 有 这 样 一 个 角 色, 他 说 : 我 是 党 代 表, 我 代 表 党, 我 就 是 党 后 来 他 给 同 志 们 带 来 了 灾 难 会 用 C++ 的 程 序 员 一 定 懂 得 面 向 对 象 程 序 设 计 吗? 不 会 用 C++ 的 程 序 员 一 定 不 懂 得 面 向 对 象 程 序 设 计 吗? 两 者 都 未 必 就 象 坏 蛋 入 党 后 未 必 能 成 为 好 人, 好 人 不 入 党 未 必 变 成 坏 蛋 那 样 我 不 怕 触 犯 众 怒 地 说 句 大 话 : C++ 没 有 高 手,C 语 言 才 有 高 手 在 用 C 和 C++ 编 程 8 年 之 后, 我 深 深 地 遗 憾 自 己 不 是 C 语 言 的 高 手, 更 遗 憾 没 有 人 点 拨 我 如 何 进 行 面 向 对 象 程 序 设 计 我 和 很 多 C++ 程 序 员 一 样, 在 享 用 到 C++ 语 法 的 好 处 时 便 以 为 自 己 已 经 明 白 了 面 向 对 象 程 序 设 计 就 象 挤 掉 牙 膏 卖 牙 膏 皮 那 样, 真 是 暴 殄 天 物 呀 人 们 不 懂 拼 音 也 会 讲 普 通 话, 如 果 懂 得 拼 音 则 会 把 普 通 话 讲 得 更 好 不 懂 面 向 对 象 程 序 设 计 也 可 以 用 C++ 编 程, 如 果 懂 得 面 向 对 象 程 序 设 计 则 会 把 C++ 程 序 编 得 更 好 本 节 讲 述 三 个 非 常 基 础 的 概 念 : 类 与 对 象 继 承 与 组 合 虚 函 数 与 多 态 理 解 这 些 概 念, 有 助 于 提 高 程 序 的 质 量, 特 别 是 提 高 可 复 用 性 与 可 扩 充 性 6.1.1 类 与 对 象 对 象 (Object) 是 类 (Class) 的 一 个 实 例 (Instance) 如 果 将 对 象 比 作 房 子, 那 么 类 就 是 房 子 的 设 计 图 纸 所 以 面 向 对 象 程 序 设 计 的 重 点 是 类 的 设 计, 而 不 是 对 象 的 设 计
类 可 以 将 数 据 和 函 数 封 装 在 一 起, 其 中 函 数 表 示 了 类 的 行 为 ( 或 称 服 务 ) 类 提 供 关 键 字 public protected 和 private 用 于 声 明 哪 些 数 据 和 函 数 是 公 有 的 受 保 护 的 或 者 是 私 有 的 这 样 可 以 达 到 信 息 隐 藏 的 目 的, 即 让 类 仅 仅 公 开 必 须 要 让 外 界 知 道 的 内 容, 而 隐 藏 其 它 一 切 内 容 ( 参 见 5.2.1 节 信 息 隐 藏 ) 我 们 不 可 以 滥 用 类 的 封 装 功 能, 不 要 把 它 当 成 火 锅, 什 么 东 西 都 往 里 扔 类 的 设 计 是 以 数 据 为 中 心, 还 是 以 行 为 为 中 心? 主 张 以 数 据 为 中 心 的 那 一 派 人 关 注 类 的 内 部 数 据 结 构, 他 们 习 惯 上 将 private 类 型 的 数 据 写 在 前 面, 而 将 public 类 型 的 函 数 写 在 后 面, 如 表 8.1(a) 所 示 主 张 以 行 为 为 中 心 的 那 一 派 人 关 注 类 应 该 提 供 什 么 样 的 服 务 和 接 口, 他 们 习 惯 上 将 public 类 型 的 函 数 写 在 前 面, 而 将 private 类 型 的 数 据 写 在 后 面, 如 表 8.1(b) 所 示 Class A { private: int i, j; float x, y; public: void Func1(void); void Func2(void); } 表 8.1(a) 以 数 据 为 中 心 的 书 写 风 格 class A { public: void Func1(void); void Func2(void); private: int i, j; float x, y; } 表 8.1(b) 以 行 为 为 中 心 的 书 写 风 格 很 多 C++ 教 课 书 主 张 在 设 计 类 时 以 数 据 为 中 心 我 坚 持 并 且 建 议 读 者 在 设 计 类 时 以 行 为 为 中 心, 即 首 先 考 虑 类 应 该 提 供 什 么 样 的 函 数 Microsoft 公 司 的 COM 规 范 的 核 心 是 接 口 设 计,COM 的 接 口 就 相 当 于 类 的 公 有 函 数 [Rogerson 1999] 在 程 序 设 计 方 面, 咱 们 不 要 怀 疑 Microsoft 公 司 的 风 格 设 计 孤 立 的 类 是 比 较 容 易 的, 难 的 是 正 确 设 计 基 类 及 其 派 生 类 因 为 有 些 程 序 员 搞 不 清 楚 继 承 (Inheritance) 组 合 (Composition) 多 态 ( Polymorphism) 这 些 概 念 6.1.2 继 承 与 组 合 如 果 A 是 基 类,B 是 A 的 派 生 类, 那 么 B 将 继 承 A 的 数 据 和 函 数 示 例 程 序 如 下 : class A { public: void Func1(void); void Func2(void); }; class B : public A { public: void Func3(void); void Func4(void);
}; // Example main() { } B b; b.func1(); b.func2(); b.func3(); b.func4(); // B 的 一 个 对 象 // B 从 A 继 承 了 函 数 Func1 // B 从 A 继 承 了 函 数 Func2 这 个 简 单 的 示 例 程 序 说 明 了 一 个 事 实 :C++ 的 继 承 特 性 可 以 提 高 程 序 的 可 复 用 性 正 因 为 继 承 太 有 用 太 容 易 用, 才 要 防 止 乱 用 继 承 我 们 要 给 继 承 立 一 些 使 用 规 则 : 一 如 果 类 A 和 类 B 毫 不 相 关, 不 可 以 为 了 使 B 的 功 能 更 多 些 而 让 B 继 承 A 的 功 能 不 要 觉 得 白 吃 白 不 吃, 让 一 个 好 端 端 的 健 壮 青 年 无 缘 无 故 地 吃 人 参 补 身 体 二 如 果 类 B 有 必 要 使 用 A 的 功 能, 则 要 分 两 种 情 况 考 虑 : (1) 若 在 逻 辑 上 B 是 A 的 一 种 (a kind of ), 则 允 许 B 继 承 A 的 功 能 如 男 人 (Man) 是 人 (Human) 的 一 种, 男 孩 (Boy) 是 男 人 的 一 种 那 么 类 Man 可 以 从 类 Human 派 生, 类 Boy 可 以 从 类 Man 派 生 示 例 程 序 如 下 : class Human { }; class Man : public Human { }; class Boy : public Man { }; (2) 若 在 逻 辑 上 A 是 B 的 一 部 分 (a part of), 则 不 允 许 B 继 承 A 的 功 能, 而 是 要 用 A 和 其 它 东 西 组 合 出 B 例 如 眼 (Eye) 鼻 (Nose) 口 (Mouth) 耳 (Ear) 是 头 (Head) 的 一 部 分, 所 以 类 Head 应 该 由 类 Eye Nose Mouth Ear 组 合 而 成, 不 是 派 生 而 成 示 例 程 序 如 下 : class Eye { public: void Look(void); }; class Nose
{ public: void Smell(void); }; class Mouth { public: void Eat(void); }; class Ear { public: void Listen(void); }; // 正 确 的 设 计, 冗 长 的 程 序 class Head { public: void Look(void) { m_eye.look(); } void Smell(void) { m_nose.smell(); } void Eat(void) { m_mouth.eat(); } void Listen(void) { m_ear.listen(); } private: }; Eye Nose Mouth Ear m_eye; m_nose; m_mouth; m_ear; 如 果 允 许 Head 从 Eye Nose Mouth Ear 派 生 而 成, 那 么 Head 将 自 动 具 有 Look Smell Eat Listen 这 些 功 能 : // 错 误 的 设 计 class Head : public Eye, public Nose, public Mouth, public Ear { }; 上 述 程 序 十 分 简 短 并 且 运 行 正 确, 但 是 这 种 设 计 却 是 错 误 的 很 多 程 序 员 经 不 起 继 承 的 诱 惑 而 犯 下 设 计 错 误 一 只 公 鸡 使 劲 地 追 打 一 只 刚 下 了 蛋 的 母 鸡, 你 知 道 为 什 么 吗? 因 为 母 鸡 下 了 鸭 蛋 本 书 3.3 节 讲 过 运 行 正 确 的 程 序 不 见 得 就 是 高 质 量 的 程 序, 此 处 就 是 一 个 例 证 6.1.3 虚 函 数 与 多 态 除 了 继 承 外,C++ 的 另 一 个 优 良 特 性 是 支 持 多 态, 即 允 许 将 派 生 类 的 对 象 当 作 基 类 的 对
象 使 用 如 果 A 是 基 类,B 和 C 是 A 的 派 生 类, 多 态 函 数 Test 的 参 数 是 A 的 指 针 那 么 Test 函 数 可 以 引 用 A B C 的 对 象 示 例 程 序 如 下 : class A { public: void Func1(void); }; void Test(A *a) { a->func1(); } class B : public A { }; class C : public A { }; // Example main() { A a; B b; C c; Test(&a); Test(&b); Test(&c); }; 以 上 程 序 看 不 出 多 态 有 什 么 价 值, 加 上 虚 函 数 和 抽 象 基 类 后, 多 态 的 威 力 就 显 示 出 来 了 C++ 用 关 键 字 virtual 来 声 明 一 个 函 数 为 虚 函 数, 派 生 类 的 虚 函 数 将 覆 盖 (override) 基 类 对 应 的 虚 函 数 的 功 能 示 例 程 序 如 下 : class A { public: virtual void Func1(void){ cout<< This is A::Func1 \n } }; void Test(A *a)
{ a->func1(); } class B : public A { public: virtual void Func1(void){ cout<< This is B::Func1 \n } }; class C : public A { public: virtual void Func1(void){ cout<< This is C::Func1 \n } }; // Example main() { A a; B b; C c; Test(&a); // 输 出 This is A::Func1 Test(&b); // 输 出 This is B::Func1 Test(&c); // 输 出 This is C::Func1 }; 如 果 基 类 A 定 义 如 下 : class A { public: virtual void Func1(void)=0; }; 那 么 函 数 Func1 叫 作 纯 虚 函 数, 含 有 纯 虚 函 数 的 类 叫 作 抽 象 基 类 抽 象 基 类 只 管 定 义 纯 虚 函 数 的 形 式, 具 体 的 功 能 由 派 生 类 实 现 结 合 抽 象 基 类 和 多 态 有 如 下 突 出 优 点 : (1) 应 用 程 序 不 必 为 每 一 个 派 生 类 编 写 功 能 调 用, 只 需 要 对 抽 象 基 类 进 行 处 理 即 可 这 一 招 叫 以 不 变 应 万 变, 可 以 大 大 提 高 程 序 的 可 复 用 性 ( 这 是 接 口 设 计 的 复 用, 而 不 是 代 码 实 现 的 复 用 ) (2) 派 生 类 的 功 能 可 以 被 基 类 指 针 引 用, 这 叫 向 后 兼 容, 可 以 提 高 程 序 的 可 扩 充 性 和 可 维 护 性 以 前 写 的 程 序 可 以 被 将 来 写 的 程 序 调 用 不 足 为 奇, 但 是 将 来 写 的 程 序 可 以 被 以 前 写 的 程 序 调 用 那 可 了 不 起 6.2 良 好 的 编 程 风 格
内 功 深 厚 的 武 林 高 手 出 招 往 往 平 淡 无 奇 同 理, 编 程 高 手 也 不 会 用 奇 门 怪 招 写 程 序 良 好 的 编 程 风 格 是 产 生 高 质 量 程 序 的 前 提 6.2.1 命 名 约 定 有 不 少 人 编 程 时 用 拼 音 给 函 数 或 变 量 命 名, 这 样 做 并 不 能 说 明 你 很 爱 国, 却 会 让 用 此 程 序 的 人 迷 糊 ( 很 多 南 方 人 不 懂 拼 音, 我 就 不 懂 ) 程 序 中 的 英 文 一 般 不 会 太 复 杂, 用 词 要 力 求 准 确 匈 牙 利 命 名 法 是 Microsoft 公 司 倡 导 的 [Maguire 1993], 虽 然 很 烦 琐, 但 用 习 惯 了 也 就 成 了 自 然 没 有 人 强 迫 你 采 用 何 种 命 名 法, 但 有 一 点 应 该 做 到 : 自 己 的 程 序 命 名 必 须 一 致 以 下 是 我 编 程 时 采 用 的 命 名 约 定 : (1) 宏 定 义 用 大 写 字 母 加 下 划 线 表 示, 如 MAX_LENGTH; (2) 函 数 用 大 写 字 母 开 头 的 单 词 组 合 而 成, 如 SetName, GetName ; (3) 指 针 变 量 加 前 缀 p, 如 *pnode ; (4)BOOL 变 量 加 前 缀 b, 如 bflag ; (5)int 变 量 加 前 缀 i, 如 iwidth ; (6)float 变 量 加 前 缀 f, 如 fwidth ; (7)double 变 量 加 前 缀 d, 如 dwidth ; (8) 字 符 串 变 量 加 前 缀 str, 如 strname ; (9) 枚 举 变 量 加 前 缀 e, 如 edrawmode ; (10) 类 的 成 员 变 量 加 前 缀 m_, 如 m_strname, m_iwidth ; 对 于 int, float, double 型 的 变 量, 如 果 变 量 名 的 含 义 十 分 明 显, 则 不 加 前 缀, 避 免 烦 琐 如 用 于 循 环 的 int 型 变 量 i,j,k ;float 型 的 三 维 坐 标 (x,y,z) 等 6.2.2 使 用 断 言 程 序 一 般 分 为 Debug 版 本 和 Release 版 本,Debug 版 本 用 于 内 部 调 试,Release 版 本 发 行 给 用 户 使 用 断 言 assert 是 仅 在 Debug 版 本 起 作 用 的 宏, 它 用 于 检 查 不 应 该 发 生 的 情 况 以 下 是 一 个 内 存 复 制 程 序, 在 运 行 过 程 中, 如 果 assert 的 参 数 为 假, 那 么 程 序 就 会 中 止 ( 一 般 地 还 会 出 现 提 示 对 话, 说 明 在 什 么 地 方 引 发 了 assert) // 复 制 不 重 叠 的 内 存 块 void memcpy(void *pvto, void *pvfrom, size_t size) { void *pbto = (byte *) pvto; void *pbfrom = (byte *) pvfrom; assert( pvto!= NULL && pvfrom!= NULL ); while(size - - > 0 ) *pbto + + = *pbfrom + + ; return (pvto); } assert 不 是 一 个 仓 促 拼 凑 起 来 的 宏, 为 了 不 在 程 序 的 Debug 版 本 和 Release 版 本 引 起 差 别,assert 不 应 该 产 生 任 何 副 作 用 所 以 assert 不 是 函 数, 而 是 宏 程 序 员 可 以 把 assert 看 成 一 个 在 任 何 系 统 状 态 下 都 可 以 安 全 使 用 的 无 害 测 试 手 段 很 少 有 比 跟 踪 到 程 序 的 断 言, 却 不 知 道 该 断 言 的 作 用 更 让 人 沮 丧 的 事 了 你 化 了 很 多 时
间, 不 是 为 了 排 除 错 误, 而 只 是 为 了 弄 清 楚 这 个 错 误 到 底 是 什 么 有 的 时 候, 程 序 员 偶 尔 还 会 设 计 出 有 错 误 的 断 言 所 以 如 果 搞 不 清 楚 断 言 检 查 的 是 什 么, 就 很 难 判 断 错 误 是 出 现 在 程 序 中, 还 是 出 现 在 断 言 中 幸 运 的 是 这 个 问 题 很 好 解 决, 只 要 加 上 清 晰 的 注 释 即 可 这 本 是 显 而 易 见 的 事 情, 可 是 很 少 有 程 序 员 这 样 做 这 好 比 一 个 人 在 森 林 里, 看 到 树 上 钉 着 一 块 危 险 的 大 牌 子 但 危 险 到 底 是 什 么? 树 要 倒? 有 废 井? 有 野 兽? 除 非 告 诉 人 们 危 险 是 什 么, 否 则 这 个 警 告 牌 难 以 起 到 积 极 有 效 的 作 用 难 以 理 解 的 断 言 常 常 被 程 序 员 忽 略, 甚 至 被 删 除 [Maguire 1993] 以 下 是 使 用 断 言 的 几 个 原 则 : (1) 使 用 断 言 捕 捉 不 应 该 发 生 的 非 法 情 况 不 要 混 淆 非 法 情 况 与 错 误 情 况 之 间 的 区 别, 后 者 是 必 然 存 在 的 并 且 是 一 定 要 作 出 处 理 的 (2) 使 用 断 言 对 函 数 的 参 数 进 行 确 认 (3) 在 编 写 函 数 时, 要 进 行 反 复 的 考 查, 并 且 自 问 : 我 打 算 做 哪 些 假 定? 一 旦 确 定 了 的 假 定, 就 要 使 用 断 言 对 假 定 进 行 检 查 (4) 一 般 教 科 书 都 鼓 励 程 序 员 们 进 行 防 错 性 的 程 序 设 计, 但 要 记 住 这 种 编 程 风 格 会 隐 瞒 错 误 当 进 行 防 错 性 编 程 时, 如 果 不 可 能 发 生 的 事 情 的 确 发 生 了, 则 要 使 用 断 言 进 行 报 警 6.2.3 new delete 与 指 针 在 C++ 中, 操 作 符 new 用 于 申 请 内 存, 操 作 符 delete 用 于 释 放 内 存 在 C 语 言 中, 函 数 malloc 用 于 申 请 内 存, 函 数 free 用 于 释 放 内 存 由 于 C++ 兼 容 C 语 言, 所 以 new delete malloc free 都 有 可 能 一 起 使 用 new 能 比 malloc 干 更 多 的 事, 它 可 以 申 请 对 象 的 内 存, 而 malloc 不 能 C++ 和 C 语 言 中 的 指 针 威 猛 无 比, 用 错 了 会 带 来 灾 难 对 于 一 个 指 针 p, 如 果 是 用 new 申 请 的 内 存, 则 必 须 用 delete 而 不 能 用 free 来 释 放 如 果 是 用 malloc 申 请 的 内 存, 则 必 须 用 free 而 不 能 用 delete 来 释 放 在 用 delete 或 用 free 释 放 p 所 指 的 内 存 后, 应 该 马 上 显 式 地 将 p 置 为 NULL, 以 防 下 次 使 用 p 时 发 生 错 误 示 例 程 序 如 下 : void Test(void) { float *p; p = new float[100]; if(p==null) return; // do something delete p; p=null; // 良 好 的 编 程 风 格 // 可 以 继 续 使 用 p p = new float[500]; if(p==null) return; // do something else delete p; p=null; } 我 们 还 要 预 防 野 指 针, 野 指 针 是 指 向 垃 圾 内 存 的 指 针, 主 要 成 因 有 两 种 :
(1) 指 针 没 有 初 始 化 (2) 指 针 指 向 已 经 释 放 的 内 存, 这 种 情 况 最 让 人 防 不 胜 防, 示 例 程 序 如 下 : class A { public: void Func(void){ } }; void Test(void) { A *p; { A a; p = &a; // 注 意 a 的 生 命 期 } p->func(); // p 是 野 指 针, 程 序 出 错 } 6.2.4 使 用 const 在 定 义 一 个 常 量 时,const 比 #define 更 加 灵 活 用 const 定 义 的 常 量 含 有 数 据 类 型, 该 常 量 可 以 参 与 逻 辑 运 算 例 如 : const int LENGTH = 100; // LENGTH 是 int 类 型 const float MAX=100; // MAX 是 float 类 型 #define LENGTH 100 // LENGTH 无 类 型 #define MAX 100 // MAX 无 类 型 除 了 能 定 义 常 量 外,const 还 有 两 个 保 护 功 能 : 一 强 制 保 护 函 数 的 参 数 值 不 发 生 变 化 以 下 程 序 中, 函 数 f 不 会 改 变 输 入 参 数 name 的 值, 但 是 函 数 g 和 h 都 有 可 能 改 变 name 的 值 void f(string s); // pass by value void g(string &s); // pass by referance void h(string *s);// pass by pointer main() { String name= Dog ; f(name); // name 的 值 不 会 改 变 g(name); // name 的 值 可 能 改 变 h(name); // name 的 值 可 能 改 变 } 对 于 一 个 函 数 而 言, 如 果 其 & 或 * 类 型 的 参 数 只 作 输 入 用, 不 作 输 出 用, 那 么 应 当 在 该 参 数 前 加 上 const, 以 确 保 函 数 的 代 码 不 会 改 变 该 参 数 的 值 ( 如 果 改 变 了 该 参 数 的 值, 编 译 器 会 出 现 错 误 警 告 ) 因 此 上 述 程 序 中 的 函 数 g 和 h 应 该 定 义 成 : void g(const String &s);
void h(const String *s); 二 强 制 保 护 类 的 成 员 函 数 不 改 变 任 何 数 据 成 员 的 值 以 下 程 序 中, 类 stack 的 成 员 函 数 Count 仅 用 于 计 数, 为 了 确 保 Count 不 改 变 类 中 的 任 何 数 据 成 员 的 值, 应 将 函 数 Count 定 义 成 const 类 型 class Stack { public: void push(int elem); void pop(void); int Count(void) const; // const 类 型 的 函 数 private: int num; int data[100]; }; int Stack::Count(void) const { ++ num; // 编 译 错 误,num 值 发 生 变 化 } pop(); return num; // 编 译 错 误,pop 将 改 变 成 员 变 量 的 值 6.2.5 其 它 建 议 (1) 不 要 编 写 一 条 过 分 复 杂 的 语 句, 紧 凑 的 C++/C 代 码 并 不 见 到 能 得 到 高 效 率 的 机 器 代 码, 却 会 降 低 程 序 的 可 理 解 性, 程 序 出 错 误 的 几 率 也 会 提 高 (2) 不 要 编 写 集 多 种 功 能 于 一 身 的 函 数, 在 函 数 的 返 回 值 中, 不 要 将 正 常 值 和 错 误 标 志 混 在 一 起 (3) 不 要 将 BOOL 值 TRUE 和 FALSE 对 应 于 1 和 0 进 行 编 程 大 多 数 编 程 语 言 将 FALSE 定 义 为 0, 任 何 非 0 值 都 是 TRUE Visual C++ 将 TRUE 定 义 为 1, 而 Visual Basic 则 将 TRUE 定 义 为 -1 示 例 程 序 如 下 : BOOL flag; if(flag) { // do something } // 正 确 的 用 法 if(flag==true) { // do something } // 危 险 的 用 法 if(flag==1) { // do something } // 危 险 的 用 法 if(!flag) { // do something } // 正 确 的 用 法 if(flag==false) { // do something } // 不 合 理 的 用 法 if(flag==0) { // do something } // 不 合 理 的 用 法 (4) 小 心 不 要 将 = = 写 成 =, 编 译 器 不 会 自 动 发 现 这 种 错 误 (5) 不 要 将 123 写 成 0123, 后 者 是 八 进 制 的 数 值 (6) 将 自 己 经 常 犯 的 编 程 错 误 记 录 下 来, 制 成 表 格 贴 在 计 算 机 旁 边
6.3 小 结 C++/C 程 序 设 计 如 同 少 林 寺 的 武 功 一 样 博 大 精 深, 我 练 了 8 年, 大 概 只 学 到 二 三 成 所 以 无 论 什 么 时 候, 都 不 要 觉 得 自 己 的 编 程 水 平 天 下 第 一, 看 到 别 人 好 的 技 术 和 风 格, 要 虚 心 学 习 本 章 的 内 容 少 得 可 怜, 就 象 口 渴 时 只 给 你 一 颗 杨 梅 吃, 你 一 定 不 过 瘾 我 借 花 献 佛, 推 荐 一 本 好 书 :Marshall P. Cline 著 的 C++ FAQs [Cline 1995] 你 看 了 后 一 定 会 赞 不 绝 口 会 编 写 C++/C 程 序, 不 要 因 此 得 意 洋 洋, 这 只 是 程 序 员 基 本 的 技 能 要 求 而 已 如 果 把 系 统 分 析 和 系 统 设 计 比 作 战 略 决 策, 那 么 编 程 充 其 量 只 是 战 术 如 果 指 挥 官 是 个 大 笨 蛋, 士 兵 再 勇 敢 也 会 吃 败 仗 所 以 我 们 程 序 员 不 要 只 把 眼 光 盯 在 程 序 上, 要 让 自 己 博 学 多 才 我 们 应 该 向 北 京 胡 同 里 的 小 孩 们 学 习, 他 们 小 小 年 纪 就 能 指 点 江 山, 评 论 世 界 大 事
第 七 章 测 试 与 改 错 编 程 大 师 说 : 任 何 一 个 程 序, 无 论 它 多 么 小, 总 存 在 着 错 误 初 学 者 不 相 信 大 师 的 话, 他 问 : 如 果 一 个 程 序 小 得 只 执 行 一 个 简 单 的 功 能, 那 会 怎 样? 这 样 的 一 个 程 序 没 有 意 义, 大 师 说, 但 如 果 这 样 的 程 序 存 在 的 话, 操 作 系 统 最 后 将 失 效, 产 生 一 个 错 误 但 初 学 者 不 满 足, 他 问 : 如 果 操 作 系 统 不 失 效, 那 么 会 怎 样? 没 有 不 失 效 的 操 作 系 统, 大 师 说, 但 如 果 这 样 的 操 作 系 统 存 在 的 话, 硬 件 最 后 将 失 效, 产 生 一 个 错 误 初 学 者 仍 不 满 足, 再 问 : 如 果 硬 件 不 失 效, 那 么 会 怎 样? 大 师 长 叹 一 声 道 : 没 有 不 失 效 的 硬 件 但 如 果 这 样 的 硬 件 存 在 的 话, 用 户 就 会 想 让 那 个 程 序 做 一 件 不 同 的 事, 这 件 事 也 是 一 个 错 误 没 有 错 误 的 程 序 世 间 难 求 [James 1999] 错 误 是 一 种 严 重 的 程 序 缺 陷 测 试 的 目 的 是 为 了 发 现 尽 可 能 多 的 缺 陷, 并 期 望 通 过 改 错 来 把 缺 陷 统 统 消 灭, 以 期 提 高 软 件 的 质 量 但 关 于 测 试 与 改 错 实 在 没 有 什 么 高 明 的 方 法 值 得 大 书 特 书, 也 不 能 表 现 出 程 序 员 的 聪 明 才 智 相 反 地, 它 们 带 来 了 更 多 的 牢 骚 与 痛 苦 因 此 在 教 学 和 开 发 实 践 中, 测 试 与 改 错 总 是 被 当 作 万 般 无 奈 的 工 作 踢 到 角 落 里 医 生 可 以 把 他 的 错 误 埋 葬 在 地 下 了 事, 但 程 序 员 不 能 我 们 必 须 要 学 会 测 试 与 改 错, 并 且 把 测 试 与 改 错 工 作 做 好 7.1 对 测 试 的 理 解 测 试 的 道 理 并 不 深 奥, 计 算 机 专 业 人 员 都 应 该 明 白 但 就 是 这 么 简 单 的 事, 计 算 机 专 业 的 博 士 们 也 未 必 都 已 经 理 解 有 一 天, 一 位 比 我 聪 明, 编 程 比 我 快, 学 习 能 力 比 我 强 的 计 算 机 专 业 博 士 生 恭 恭 敬 敬 地 请 我 坐 好, 并 且 史 无 前 例 地 削 了 苹 果 请 我 吃, 为 的 是 向 我 请 教 软 件 工 程 问 题 你 必 定 以 为 这 位 仁 兄 好 学 之 极 非 也, 我 和 他 同 事 三 年 来 从 未 探 讨 过 软 件 工 程 问 题 只 因 为 他 明 天 要 去 应 聘, 参 加 面 试, 生 怕 被 人 问 倒, 就 央 我 当 晚 为 他 恶 补 一 把 软 件 工 程 他 还 特 地 问 我 什 么 是 白 盒 测 试 和 黑 盒 测 试? 应 该 由 谁 来 执 行? ( 有 公 司 曾 经 这 样 面 试 应 聘 者 ) 当 我 解 释 完 测 试 的 道 理 时, 他 叹 了 一 口 气 说 : 这 些 玩 意 儿 我 读 大 学 十 年 来 都 没 搞 过, 怎 么 能 讲 得 出 道 理 来 唉, 就 去 碰 碰 运 气 吧 我 有 兔 死 狐 悲 的 感 觉 我 们 这 一 群 博 士 生 三 年 来 尽 干 些 自 欺 欺 人 的 事, 到 毕 业 时 学 问 既 不 深 也 不 博 个 个 意 志 消 沉, 老 气 横 秋 长 此 以 往, 总 有 一 天 招 聘 会 的 大 门 前 将 贴 出 标 语 博 士 与 狗 不 得 入 内 以 下 是 关 于 测 试 的 几 个 重 要 观 念 7.1.1 测 试 的 目 的 测 试 的 目 的 是 为 了 发 现 尽 可 能 多 的 缺 陷 这 里 缺 陷 是 一 种 泛 称, 它 可 以 指 功 能 的 错 误, 也 可 以 指 性 能 低 下, 易 用 性 差 等 等 测 试 总 是 先 假 设 程 序 中 存 在 缺 陷, 再 通 过 执 行 程 序 来 发 现 并 最 终 改 正 缺 陷 理 解 测 试 的 目 的 是 个
很 重 要 的 意 识 问 题 如 果 说 测 试 的 目 的 是 为 了 说 明 程 序 中 没 有 缺 陷, 那 么 测 试 人 员 就 会 向 这 个 目 标 靠 拢, 因 而 下 意 识 地 选 用 一 些 不 易 暴 露 错 误 的 测 试 示 例 这 样 的 测 试 是 虚 假 的 目 前 高 校 的 科 技 成 果 鉴 定 会 普 遍 存 在 类 似 的 虚 假 现 象 我 在 读 硕 士 时 就 亲 身 经 历 过 这 样 的 事 我 们 的 项 目 是 研 究 集 成 电 路 制 造 过 程 中 的 成 品 率 问 题 当 时 国 内 大 多 数 工 厂 的 集 成 电 路 成 品 率 只 有 百 分 之 几, 我 编 写 的 示 例 程 序 可 以 将 集 成 电 路 的 成 品 率 优 化 到 98% 示 例 效 果 是 如 此 的 好, 以 致 一 位 评 委 ( 某 厂 的 总 工 程 师 ) 不 无 讽 刺 地 说 : 采 用 你 们 的 成 果, 我 们 可 要 发 大 财 了 这 个 项 目 就 轻 易 地 通 过 了 鉴 定, 并 且 不 久 后 获 得 了 电 子 工 业 部 科 技 进 步 二 等 奖 这 就 象 在 考 试 时 通 过 作 弊 取 得 了 好 成 绩 而 被 表 扬 我 那 时 尚 且 纯 真, 羞 愧 之 余, 不 禁 对 高 校 科 研 成 果 的 水 平 和 真 实 性 大 失 所 望 ( 现 在 我 已 不 再 失 望, 因 为 很 少 抱 希 望 ) 一 个 成 功 的 测 试 示 例 在 于 发 现 了 至 今 尚 未 发 现 的 缺 陷 测 试 并 不 仅 是 个 技 术 问 题, 更 是 个 职 业 道 德 问 题 7.1.2 测 试 的 心 理 要 求 测 试 主 要 是 由 人 而 不 是 由 机 器 执 行, 这 就 不 免 与 心 理 因 素 相 关 为 了 测 试 的 真 实 性, 对 测 试 的 心 理 要 求 是 无 情 这 似 乎 太 残 酷 了 开 发 人 员 不 能 很 好 地 测 试 自 己 的 程 序 是 因 为 做 不 到 无 情 而 测 试 人 员 如 果 做 到 了 无 情 却 会 引 起 开 发 人 员 的 愤 怒, 遭 人 白 眼 尽 管 已 经 明 白 了 测 试 的 目 的 是 为 了 发 现 尽 可 能 多 的 缺 陷, 但 当 测 试 人 员 真 的 发 现 了 一 堆 缺 陷 时, 却 不 可 乐 颠 颠 地 跑 去 恭 喜 那 个 倒 霉 的 开 发 者, 否 则 会 打 架 的 7.1.3 测 试 的 真 理 测 试 只 能 证 明 缺 陷 存 在, 而 不 能 证 明 缺 陷 不 存 在 这 个 真 理 告 诉 我 们, 对 于 一 个 复 杂 的 系 统 而 言, 无 论 采 取 什 么 样 的 测 试 手 段 都 不 能 证 明 缺 陷 已 经 不 复 存 在 彻 底 地 测 试 只 是 一 种 理 想 在 实 践 中, 测 试 要 考 虑 时 间 费 用 等 限 制, 不 允 许 无 休 止 地 测 试 7.1.4 测 试 与 质 量 的 关 系 测 试 有 助 于 提 高 软 件 的 质 量, 但 是 提 高 软 件 的 质 量 不 能 依 赖 于 测 试 测 试 与 质 量 的 关 系 很 象 在 考 试 中 检 查 与 成 绩 的 关 系 学 习 好 的 学 生, 在 考 试 时 通 过 认 真 检 查 能 减 少 因 疏 忽 而 造 成 的 答 题 错 误, 从 而 提 高 了 考 试 成 绩 ( 取 得 他 本 来 就 该 得 的 好 成 绩 ) 而 学 习 差 的 学 生, 他 原 本 就 不 会 做 题 目, 无 论 检 查 多 么 细 心, 也 不 能 提 高 成 绩 所 以 说, 软 件 的 高 质 量 是 设 计 出 来 的, 而 不 是 靠 测 试 修 补 出 来 的 7.2 测 试 人 员 的 选 择 测 试 需 要 开 发 人 员 参 与 吗? 测 试 需 要 独 立 的 测 试 小 组 吗? 测 试 需 要 用 户 参 与 吗? 让 我 们 先 看 一 看 Microsoft 公 司 关 于 测 试 的 经 验 教 训, 再 回 答 上 述 问 题 7.2.1 Microsoft 公 司 的 经 验 教 训 在 80 年 代 初 期,Microsoft 公 司 的 许 多 软 件 产 品 出 现 了 Bug 比 如, 在 1981 年 与 IBM PC 机 一 起 推 出 的 BASIC 软 件, 用 户 在 用.1 ( 或 者 其 他 数 字 ) 除 以 10 时, 就 会 出 错 在
FORTRAN 软 件 中 也 存 在 破 坏 数 据 的 Bug 由 此 激 起 了 许 多 采 用 Microsoft 操 作 系 统 的 PC 厂 商 的 极 大 不 满, 而 且 很 多 个 人 用 户 也 纷 纷 投 诉 Microsoft 公 司 的 经 理 们 发 觉 很 有 必 要 引 进 更 好 的 内 部 测 试 与 质 量 控 制 方 法 但 是 遭 到 很 多 程 序 设 计 师 甚 至 一 些 高 级 经 理 的 坚 决 反 对, 他 们 固 执 地 认 为 在 高 校 学 生 秘 书 或 者 外 界 合 作 人 士 的 协 助 下, 开 发 人 员 可 以 自 己 测 试 产 品 在 1984 年 推 出 Mac 机 的 Multiplan( 电 子 表 格 软 件 ) 之 前,Microsoft 曾 特 地 请 Arthur Anderson 咨 询 公 司 进 行 测 试 但 是 外 界 公 司 一 般 没 有 能 力 执 行 全 面 的 软 件 测 试 结 果, 一 种 相 当 厉 害 的 破 环 数 据 的 Bug 迫 使 Microsoft 公 司 为 它 的 2 万 多 名 用 户 免 费 提 供 更 新 版 本, 代 价 是 每 个 版 本 10 美 元, 一 共 化 了 20 万 美 元, 可 谓 损 失 惨 重 痛 定 思 痛 后,Microsoft 公 司 的 经 理 们 得 出 一 个 结 论 : 如 果 再 不 成 立 独 立 的 测 试 部 门, 软 件 产 品 就 不 可 能 达 到 更 高 的 质 量 标 准 IBM 和 其 它 有 着 成 功 的 软 件 开 发 历 史 的 公 司 便 是 效 法 的 榜 样 但 Microsoft 公 司 并 不 照 搬 IBM 的 经 验, 而 是 有 选 择 地 采 用 了 一 些 看 起 来 比 较 先 进 的 方 法, 如 独 立 的 测 试 小 组, 自 动 测 试 以 及 为 关 键 性 的 构 件 进 行 代 码 复 查 等 Microsoft 公 司 的 一 位 开 发 部 门 主 管 戴 夫 穆 尔 回 忆 说 : 我 们 清 楚 不 能 再 让 开 发 部 门 自 己 测 试 了 我 们 需 要 有 一 个 单 独 的 小 组 来 设 计 测 试, 运 行 测 试, 并 把 测 试 信 息 反 馈 给 开 发 部 门 这 是 一 个 伟 大 的 转 折 点 但 是 有 了 独 立 的 测 试 小 组 后, 并 不 等 于 万 事 大 吉 了 自 从 Microsoft 公 司 在 1984 年 与 1986 年 之 间 扩 大 了 测 试 小 组 后, 开 发 人 员 开 始 变 懒 了 他 们 把 代 码 扔 在 一 边 等 着 测 试, 忘 了 唯 有 开 发 人 员 自 己 才 能 阻 止 错 误 的 发 生 防 患 于 未 来 此 时,Microsoft 公 司 历 史 上 第 二 次 大 灾 难 降 临 了 原 定 于 1986 年 7 月 发 行 的 Mac 机 的 Word 3.0, 千 呼 万 唤 方 于 1987 年 2 月 问 世 这 套 软 件 竟 然 有 700 多 处 错 误, 有 的 错 误 可 以 破 坏 数 据 甚 至 摧 毁 程 序 一 下 子 就 使 Microsoft 名 声 扫 地 公 司 不 得 不 为 用 户 免 费 提 供 升 级 版 本, 费 用 超 过 了 100 万 美 元 [Cusumano 1995] 7.2.2 测 试 人 员 的 分 工 从 Microsoft 公 司 的 教 训 中 可 知, 公 司 内 部 对 产 品 的 测 试 ( 称 为 α 测 试 ), 需 要 开 发 人 员 与 独 立 的 测 试 小 组 共 同 参 与 开 发 人 员 应 该 执 行 白 盒 测 试, 即 测 试 源 程 序 的 逻 辑 结 构 以 及 实 现 细 节 ( 白 盒 是 指 看 得 见 程 序 的 内 部 结 构 ) 而 独 立 测 试 小 组 应 该 执 行 黑 盒 测 试, 即 按 照 规 格 说 明 来 测 试 程 序 是 否 符 合 要 求 ( 黑 盒 是 指 看 不 见 程 序 的 内 部 结 构 ) 比 如 在 测 试 一 个 模 块 时, 白 盒 测 试 方 法 要 对 模 块 的 所 有 代 码 进 行 单 步 跟 踪 测 试 而 黑 盒 测 试 方 法 只 需 测 试 模 块 的 接 口 是 否 符 合 要 求, 它 关 心 程 序 的 外 部 表 现 而 不 是 内 部 的 实 现 细 节 小 型 的 软 件 公 司 可 能 没 有 条 件 设 立 独 立 的 测 试 小 组, 也 有 可 能 测 试 小 组 人 员 不 多 而 忙 不 过 来 这 时, 可 以 让 开 发 小 组 的 成 员 相 互 测 试 对 方 的 程 序 这 里 要 强 调 的 是,α 测 试 不 能 依 赖 于 开 发 人 员 或 者 测 试 小 组 中 的 任 意 一 方, 必 须 是 双 方 共 同 参 与 白 盒 测 试 必 须 由 开 发 者 自 己 执 行, 因 为 别 的 测 试 人 员 无 法 了 解 到 程 序 的 内 部 实 现 细 节 而 黑 盒 测 试 必 须 由 独 立 的 测 试 人 员 执 行, 因 为 开 发 者 难 以 做 到 客 观 公 正 开 发 者 在 测 试 自 己 的 程 序 时 存 在 一 些 弊 病 : (1) 开 发 者 对 自 己 的 程 序 印 象 深 刻, 并 总 以 为 是 正 确 的 ( 自 信 是 应 该 的 ) 倘 若 在 设 计 时 就 存 在 理 解 错 误, 或 因 不 良 的 编 程 习 惯 而 流 下 隐 患, 那 么 他 本 人 很 难 发 现 这 类 错 误 (2) 开 发 者 对 程 序 的 功 能 接 口 十 分 熟 悉, 他 自 己 几 乎 不 可 能 因 为 使 用 不 当 而 引 发 错 误, 这 与 大 众 用 户 的 情 况 不 太 相 似, 所 以 自 己 测 试 程 序 难 以 具 备 典 型 性 (3) 程 序 设 计 有 如 艺 术 设 计, 开 发 者 总 是 喜 欢 欣 赏 程 序 的 成 功 之 处, 而 不 愿 看 到 失 败 之 处 让 开 发 者 去 做 蓄 意 破 坏 的 测 试, 就 象 杀 自 己 的 孩 子 一 样 难 以 接 受 即 便 开 发 者 非 常 诚 实, 但 珍 爱 程 序 的 心 理 让 他 在 测 试 时 不 知 不 觉 地 带 入 了 虚 假 成 份 软 件 产 品 正 式 发 行 前, 在 公 司 外 部 邀 请 一 些 用 户 对 产 品 进 行 测 试, 称 为 β 测 试 β 测 试
的 涉 及 面 最 广, 最 能 反 映 用 户 的 真 实 愿 望, 但 花 费 的 时 间 最 长, 不 好 控 制 一 般 地, 软 件 公 司 与 β 测 试 人 员 之 间 有 一 种 互 利 的 协 议 即 β 测 试 人 员 无 偿 地 为 软 件 公 司 作 测 试, 定 期 递 交 测 试 报 告, 提 出 批 评 与 建 议 而 软 件 公 司 将 向 β 测 试 人 员 免 费 赠 送 或 者 以 很 大 的 优 惠 价 格 发 行 软 件 的 正 式 版 本 7.3 测 试 的 主 要 内 容 与 常 用 方 法 有 一 次 文 学 考 试, 问 高 尔 基 是 哪 国 人 一 考 生 乐 极 而 吟 : 尔 基 啊 尔 基, 你 若 不 姓 高, 我 怎 知 你 是 中 国 人 这 是 一 种 瞎 猜 法 如 果 这 种 方 法 用 于 软 件 测 试, 人 累 死 也 测 不 出 什 么 结 果 来 不 论 是 对 软 件 的 模 块 还 是 整 个 系 统, 总 有 共 同 的 内 容 要 测 试, 如 正 确 性 测 试, 容 错 性 测 试, 性 能 与 效 率 测 试, 易 用 性 测 试, 文 档 测 试 等 白 盒 测 试 是 指 开 发 人 员 从 程 序 内 部 对 上 述 内 容 进 行 测 试, 而 黑 盒 测 试 是 指 独 立 的 测 试 人 员 从 程 序 外 部 对 上 述 内 容 进 行 测 试 很 多 软 件 工 程 教 材 讲 述 了 各 种 各 样 的 测 试 方 法 并 例 举 了 不 少 示 例 [Pressman 1997] [Sommerville 1992] [ 杨 文 龙 1997] 本 节 简 明 地 讲 述 常 用 的 测 试 方 法 及 其 道 理 7.3.1 正 确 性 测 试 正 确 性 测 试 又 称 功 能 测 试, 它 检 查 软 件 的 功 能 是 否 符 合 规 格 说 明 由 于 正 确 性 是 软 件 最 重 要 的 质 量 因 素, 所 以 其 测 试 也 最 重 要 基 本 的 方 法 是 构 造 一 些 合 理 输 入, 检 查 是 否 得 到 期 望 的 输 出 这 是 一 种 枚 举 方 法 倘 若 枚 举 空 间 是 无 限 的, 那 可 惨 了, 还 不 如 回 家 种 土 豆 有 盼 头 测 试 人 员 一 定 要 设 法 减 少 枚 举 的 次 数, 否 则 没 好 日 子 过 关 键 在 于 寻 找 等 价 区 间, 因 为 在 等 价 区 间 中, 只 需 用 任 意 值 测 试 一 次 即 可 等 价 区 间 的 概 念 可 表 述 如 下 : 记 (A, B) 是 命 题 f(x) 的 一 个 等 价 区 间, 在 (A, B) 中 任 意 取 x1 进 行 测 试 如 果 f (x1) 错 误, 那 么 f (x) 在 整 个 (A, B) 区 间 都 将 出 错 如 果 f (x1) 正 确, 那 么 f (x) 在 整 个 (A, B) 区 间 都 将 正 确 上 述 测 试 方 法 称 为 等 价 测 试, 来 源 于 人 们 的 直 觉 与 经 验, 可 令 测 试 事 半 功 倍 还 有 一 种 有 效 的 测 试 方 法 是 边 界 值 测 试 即 采 用 定 义 域 或 者 等 价 区 间 的 边 界 值 进 行 测 试 因 为 程 序 员 容 易 疏 忽 边 界 情 况, 程 序 也 喜 欢 在 边 界 值 处 出 错 例 如 测 试 f ( x) = x 的 一 段 程 序 凭 直 觉 等 价 区 间 应 是 (0, 1) 和 (1, + ) 可 取 x=0.5 以 及 x=2.0 进 行 等 价 测 试 再 取 x=0 以 及 x=1 进 行 边 界 值 测 试 有 一 些 复 杂 的 程 序, 我 们 难 以 凭 直 觉 与 经 验 找 到 等 价 区 间 和 边 界 值, 这 时 枚 举 测 试 就 相 当 有 难 度 在 用 白 盒 测 试 方 式 进 行 正 确 性 测 试 时, 有 个 额 外 的 好 处 : 如 果 测 试 发 现 了 错 误, 测 试 者 ( 开 发 人 员 ) 马 上 就 能 修 改 错 误 越 早 改 正 错 误, 付 出 的 代 价 就 越 低 所 以 大 多 数 软 件 公 司 要 求 程 序 员 在 写 完 程 序 时, 马 上 执 行 基 于 单 步 跟 踪 的 白 盒 测 试 7.3.2 容 错 性 测 试 容 错 性 测 试 是 检 查 软 件 在 异 常 条 件 下 的 行 为 容 错 性 好 的 软 件 能 确 保 系 统 不 发 生 无 法 意 料 的 事 故
比 较 温 柔 的 容 错 性 测 试 通 常 构 造 一 些 不 合 理 的 输 入 来 引 诱 软 件 出 错, 例 如 : (1) 输 入 错 误 的 数 据 类 型, 如 猴 年 马 月 (2) 输 入 定 义 域 之 外 的 数 值, 上 海 人 常 说 的 十 三 点 也 算 一 种 粗 暴 一 些 的 容 错 性 测 试 俗 称 大 猩 猩 测 试, 除 了 不 能 拳 打 脚 踢 嘴 咬, 什 么 招 术 都 可 以 使 出 来 这 里 我 举 不 出 例 子, 因 为 我 没 有 对 程 序 粗 暴 过, 并 且 这 辈 子 也 不 打 算 学 会 粗 暴 7.3.3 性 能 与 效 率 测 试 性 能 与 效 率 测 试 主 要 是 测 试 软 件 的 运 行 速 度 和 对 资 源 的 利 用 率 有 时 人 们 关 心 测 试 的 绝 对 值, 如 数 据 送 输 速 率 是 每 秒 多 少 比 特 有 时 人 们 关 心 测 试 的 相 对 值, 如 某 个 软 件 比 另 一 个 软 件 快 多 少 倍 在 获 取 测 试 的 绝 对 值 时, 我 们 要 充 分 考 虑 并 记 录 运 行 环 境 对 测 试 的 影 响 例 如 计 算 机 主 频, 总 线 结 构 和 外 部 设 备 都 可 能 影 响 软 件 的 运 行 速 度 ; 若 与 多 个 计 算 机 共 享 资 源, 软 件 运 行 可 能 慢 得 像 蜗 牛 爬 行 在 获 取 测 试 的 相 对 值 时, 我 们 要 确 保 被 测 试 的 几 个 软 件 运 行 于 完 全 一 致 的 环 境 中 硬 件 环 境 的 一 致 性 比 较 容 易 做 到 ( 用 同 一 台 计 算 机 即 可 ) 但 软 件 环 境 的 因 素 较 多, 除 了 操 作 系 统, 程 序 设 计 语 言 和 编 译 系 统 对 软 件 的 性 能 也 会 产 生 较 大 的 影 响 如 果 是 比 较 几 个 算 法 的 性 能, 就 要 求 编 程 语 言 和 编 译 器 也 完 全 一 致 性 能 与 效 率 测 试 中 很 重 要 的 一 项 是 极 限 测 试, 因 为 很 多 软 件 系 统 会 在 极 限 测 试 中 崩 溃 例 如, 连 续 不 停 地 向 服 务 器 发 请 求, 测 试 服 务 器 是 否 会 陷 入 死 锁 状 态 不 能 自 拔 ; 给 程 序 输 入 特 别 大 的 数 据, 看 看 它 是 否 吃 得 消 7.3.4 易 用 性 测 试 易 用 性 测 试 没 有 一 个 量 化 的 指 标, 主 观 性 较 强 调 查 表 明, 当 用 户 不 理 解 软 件 中 的 某 个 特 性 时, 大 多 数 人 首 先 会 向 同 事 朋 友 请 教 要 是 再 不 起 作 用, 就 向 产 品 支 持 部 门 打 电 话 只 有 30% 的 用 户 会 查 阅 用 户 手 册 [Cusumano 1995] 一 般 认 为, 如 果 用 户 不 翻 阅 手 册 就 能 使 用 软 件, 那 么 表 明 这 个 软 件 具 有 较 好 的 易 用 性 7.3.5 文 档 测 试 文 档 测 试 主 要 检 查 文 档 的 正 确 性 完 备 性 和 可 理 解 性 好 多 人 甚 至 不 知 道 文 档 是 软 件 的 一 个 组 成 部 分 正 确 性 是 指 不 要 把 软 件 的 功 能 和 操 作 写 错, 也 不 允 许 文 档 内 容 前 后 矛 盾 完 备 性 是 指 文 档 不 可 以 虎 头 蛇 尾, 更 不 许 漏 掉 关 键 内 容 有 些 学 生 在 证 明 数 学 题 时, 喜 欢 用 显 然 两 字 蒙 混 过 关 文 档 中 很 多 内 容 对 开 发 者 可 能 是 显 然 的, 但 对 用 户 而 言 不 见 得 都 是 显 然 的 文 档 不 可 以 写 成 散 文 诗 歌 或 者 侦 探 言 情 小 说, 要 让 大 众 用 户 看 得 懂, 能 理 解 很 多 程 序 员 能 编 写 出 好 程 序, 却 写 不 出 清 晰 的 文 档 不 要 说 自 己 以 前 语 文 学 得 差, 现 在 已 没 救 了, 找 借 口 不 是 办 法 没 有 人 天 生 就 能 写 出 好 程 序, 都 是 练 出 来 的 同 理, 若 第 一 次 写 不 好 文 档, 就 多 写 几 次 文 档, 慢 慢 地 就 会 写 出 好 文 档 来 我 上 大 学 前 不 会 说 普 通 话, 不 会 写 作 文, 现 在 我 极 能 说 会 写, 当 个 秘 书 或 书 记 已 绰 绰 有 余 7.4 改 错 在 软 件 测 试 时 如 果 发 现 了 错 误, 必 须 请 程 序 员 改 错, 否 则 测 试 工 作 就 白 干 了
改 错 是 个 大 悲 大 喜 的 过 程, 一 天 之 内 可 以 让 人 在 悲 伤 的 低 谷 和 喜 悦 的 颠 峰 之 间 跌 荡 起 伏 如 果 改 过 上 万 个 程 序 错 误, 那 么 少 男 少 女 们 不 必 经 历 失 恋 的 挫 折 也 能 变 得 成 熟 起 来 我 从 大 三 开 始 真 正 接 受 改 错 的 磨 练, 已 记 不 清 楚 多 少 次 汗 流 浃 背 湿 透 板 凳 改 不 了 错 误 时, 恨 不 得 撞 墙 改 了 错 误 时, 比 女 孩 子 朝 我 笑 笑 还 开 心 在 做 本 科 毕 业 设 计 时, 一 天 夜 里, 一 哥 们 流 窜 到 我 的 实 验 室, 哈 不 拢 嘴 地 对 我 嚷 嚷 : 你 知 道 什 么 叫 茅 塞 顿 开 吗? 决 了 朋 友 我 象 白 痴 似 的 摇 摇 头 他 说 : 今 天 我 化 了 十 几 个 小 时 没 能 干 掉 一 个 错 误, 刚 才 我 去 了 厕 所 五 分 钟, 一 切 都 解 他 还 用 那 没 洗 过 的 手 拉 我, 一 定 要 请 我 吃 肉 夹 馍 那 得 意 劲 儿 仿 佛 同 时 谈 了 两 个 女 在 本 节, 我 要 替 程 序 员 们 总 结 关 于 改 错 的 几 点 思 想 方 法 : (1) 要 有 勇 气 东 北 有 个 林 场 工 人, 工 作 勤 奋, 一 人 能 干 几 个 人 的 活 前 三 十 年 是 伐 树 劳 模, 受 到 周 总 理 的 接 见 忽 有 一 天 醒 悟 过 来, 觉 得 自 己 太 对 不 起 森 林, 决 心 补 救 错 误 后 三 十 年 成 了 植 树 劳 模, 受 到 朱 总 理 的 接 见 此 大 勇 也 程 序 中 的 错 误 只 有 开 发 者 自 己 才 能 找 出 并 改 掉 如 果 因 畏 惧 而 拖 延, 会 让 你 终 日 心 情 不 定, 食 无 味, 睡 不 香 所 以 长 痛 不 如 短 痛, 要 集 中 精 力 对 付 错 误 (2) 不 可 蛮 干 都 说 急 中 生 智, 我 不 信 我 认 为 大 多 数 人 着 急 了 就 会 蛮 干, 早 把 智 丢 到 脑 后 不 仅 人 如 此, 动 物 也 如 此 我 们 经 常 看 到, 蜜 蜂 或 者 苍 蝇 想 从 玻 璃 窗 中 飞 出, 它 们 会 顶 着 玻 璃 折 腾 几 个 小 时, 却 不 晓 得 从 旁 边 轻 轻 松 松 地 飞 走 我 原 以 为 蜜 蜂 和 苍 蝇 长 得 太 小, 视 野 有 限, 以 致 看 不 见 近 在 咫 尺 的 逃 生 之 窗, 所 以 只 好 蛮 干 可 是 有 一 天 夜 里, 有 只 麻 雀 飞 进 我 的 房 间, 它 的 逃 生 方 式 竟 然 与 蜜 蜂 一 模 一 样 我 用 灯 光 照 着 那 扇 打 开 的 窗 户 为 其 引 路, 并 向 它 打 手 势, 对 它 说 话, 均 无 济 于 事 它 是 到 天 亮 后 才 飞 走 的, 这 一 宿 我 俩 都 没 息 好 (3) 找 出 错 误 的 根 源 有 人 问 阿 凡 提 : 我 肚 子 痛, 应 该 用 什 么 药? 阿 凡 提 说 : 应 该 用 眼 药 水, 因 为 你 眼 睛 不 好, 吃 了 脏 东 西 才 肚 子 痛 我 们 应 该 运 用 归 纳 推 理 等 方 法 尽 早 确 定 错 误 的 根 源 (4) 在 改 错 之 后 一 定 要 马 上 进 行 重 新 测 试, 以 免 引 入 新 的 错 误 有 人 在 马 路 上 捡 到 钱 包 后 得 意 忘 形, 不 料 自 己 却 被 汽 车 撞 倒 改 了 一 个 程 序 错 误 固 然 是 喜 事, 但 要 防 止 乐 极 生 悲 更 加 严 格 的 要 求 是 : 不 论 原 有 程 序 是 否 绝 对 正 确, 只 要 对 此 程 序 作 过 改 动 ( 哪 怕 是 微 不 足 道 的 ), 都 要 进 行 重 新 测 试 7.5 小 结 优 秀 的 程 序 员 敢 于 声 称 自 己 的 代 码 没 有 错 误, 这 种 自 信 让 人 羡 慕 不 已 一 个 错 误 自 身 也 许 很 微 小, 但 是 程 序 存 在 错 误 这 件 事 很 严 重 能 否 做 好 测 试 与 改 错 工 作, 思 想 认 识 和 办 事 态 度 是 最 关 键 的 程 序 员 应 该 把 测 试 当 成 份 内 之 事, 不 要 依 赖 于 外 界 的 黑 盒 测 试 黑 盒 测 试 就 象 通 过 提 问 题 来 判 断 一 个 人 是 否 是 个 疯 子, 但 无 法 知 道 他 为 什 么 成 了 疯 子 让 程 序 员 对 所 有 的 代 码 执 行 单 步 跟 踪 测 试 听 起 来 很 费 时 间, 但 习 惯 了 你 就 感 觉 不 到 有 什 么 不 方 便 单 步 跟 踪 测 试 将 使 你 以 后 的 日 子 更 轻 松 程 序 出 了 错 误 一 定 要 改 错, 但 是 编 写 优 质 无 错 的 程 序 才 是 根 本 的 解 决 之 道 在 此, 我 竭 力 建 议 大 家 阅 读 Steve Maguire 著 的 Writing Clean Code : Microsoft Techniques for Developing Bug-free C Programs ( 有 中 文 译 本,[Maguire 1993]) 我 深 受 此 书 的 教 诲, 获 益 非 浅
第 八 章 维 护 与 再 生 工 程 编 程 大 师 曾 说 : 哪 怕 程 序 只 有 三 行 长, 总 有 一 天 你 也 不 得 不 对 它 维 护 很 多 软 件 产 品 不 是 一 次 性 的 买 卖 比 如 在 电 信 金 融 等 领 域, 有 些 软 件 系 统 要 用 十 几 年, 对 软 件 进 行 维 护 是 必 不 可 少 的 8.1 节 将 介 绍 软 件 维 护 的 常 识, 对 维 护 活 动 进 行 分 类, 并 解 释 为 什 么 维 护 比 较 困 难 软 件 公 司 的 经 理 们 没 有 哪 一 个 喜 欢 被 维 护 的 费 用 吓 一 跳, 但 软 件 维 护 的 代 价 通 常 是 高 昂 的 7.2 节 将 说 明 影 响 维 护 代 价 的 一 些 主 要 技 术 因 素 与 非 技 术 因 素 如 果 希 望 提 高 已 有 软 件 的 质 量 并 且 提 高 商 业 竞 争 力, 却 又 无 法 靠 维 护 来 实 现, 只 好 对 已 有 软 件 进 行 全 部 或 者 部 分 的 改 造, 这 种 活 动 叫 再 生 工 程 (Reengineering) 7.3 节 将 解 释 什 么 是 再 生 工 程, 并 论 述 再 生 工 程 的 三 种 类 型 : 重 构 (Restructure) 逆 向 工 程 (Reverse Engineering) 和 前 向 工 程 (Forward Engineering) 8.1 软 件 维 护 的 常 识 对 软 件 而 言, 维 护 是 个 不 太 直 观 的 术 语, 因 为 软 件 产 品 在 重 复 使 用 时 不 会 被 磨 损, 并 不 需 要 进 行 像 对 车 辆 或 电 器 那 样 的 维 护 软 件 维 护 是 人 们 对 既 丰 富 多 彩 又 会 令 人 心 酸 的 活 动 的 统 称 其 中 丰 富 多 彩 的 活 动 是 指 那 些 反 映 客 观 世 界 变 化 能 使 软 件 系 统 更 加 完 善 的 修 改 和 扩 充 工 作 令 人 心 酸 的 活 动 是 指 那 些 永 无 修 止 并 且 改 了 旧 错 却 引 起 新 错 让 人 欲 哭 无 泪 的 工 作 一 些 学 者 将 软 件 维 护 划 分 为 主 要 的 三 类 : 纠 错 性 维 护 (Corrective maintenance) 适 应 性 维 护 (Adaptive maintenance) 和 完 善 性 维 护 (Perfective maintenance): (1) 纠 错 性 维 护 由 于 前 期 的 测 试 不 可 能 揭 露 软 件 系 统 中 所 有 替 在 的 错 误, 用 户 在 使 用 软 件 时 仍 将 会 遇 到 错 误, 诊 断 和 改 正 这 些 错 误 的 过 程 称 为 纠 错 性 维 护 (2) 适 应 性 维 护 由 于 新 的 硬 件 设 备 不 断 推 出, 操 作 系 统 和 编 译 系 统 也 不 断 地 升 级, 为 了 使 软 件 能 适 应 新 的 环 境 而 引 起 的 程 序 修 改 和 扩 充 活 动 称 为 适 应 性 维 护 (3) 完 善 性 维 护 在 软 件 的 正 常 使 用 过 程 中, 用 户 还 会 不 断 提 出 新 的 需 求 为 了 满 足 用 户 新 的 需 求 而 增 加 软 件 功 能 的 活 动 称 为 完 善 性 维 护 Lientz 和 Swanson 调 查 发 现 (1980 年 ), 完 善 性 维 护 约 占 65%, 适 应 性 维 护 约 占 18%, 纠 错 性 维 护 约 占 17%[Sommerville 1992] 上 述 调 查 已 是 20 年 前 的 事 了, 我 们 不 必 太 关 心 具 体 的 比 例, 心 里 有 数 即 可 以 下 一 些 因 素 将 导 致 维 护 工 作 变 得 困 难 : (1) 软 件 人 员 经 常 流 动, 当 需 要 对 某 些 程 序 进 行 维 护 时, 可 能 已 找 不 到 原 来 的 开 发 人 员 只 好 让 新 手 去 攻 读 那 些 程 序 (2) 人 们 一 般 难 以 读 懂 他 人 的 程 序 在 勉 强 接 受 这 类 任 务 时, 心 里 不 免 嘀 咕 : 我 又 不 是 他 肚 子 里 的 虫 子, 怎 么 知 道 他 如 何 编 程 (3) 当 没 有 文 档 或 者 文 档 很 差 时, 你 简 直 不 知 道 如 何 下 手 (4) 很 多 程 序 在 设 计 时 没 有 考 虑 到 将 来 要 改 动, 程 序 之 间 相 互 交 织, 触 一 而 牵 百 即 使 有 很 好 的 文 档, 你 也 不 敢 轻 举 妄 动, 否 则 你 有 可 能 陷 进 错 误 堆 里 (5) 如 果 软 件 发 行 了 多 个 版 本, 要 追 踪 软 件 的 演 化 非 常 困 难 (6) 维 护 将 会 产 生 不 良 的 副 作 用, 不 论 是 修 改 代 码 数 据 或 文 档, 都 有 可 能 产 生 新 的 错 误 (7) 维 护 工 作 毫 无 吸 引 力 高 水 平 的 程 序 员 自 然 不 愿 主 动 去 做, 而 公 司 也 舍 不 得 让 高 水 平 的 程 序 员 去 做 带 着 低 沉 情 绪 的 低 水 平 的 程 序 员 只 会 把 维 护 工 作 搞 得 一 塌 糊 涂
8.2 维 护 的 代 价 及 其 主 要 因 素 软 件 维 护 是 既 破 财 又 费 神 的 工 作 看 得 见 的 代 价 是 那 些 为 了 维 护 而 投 入 的 人 力 与 财 力 而 看 不 见 的 维 护 代 价 则 更 加 高 昂, 我 们 称 之 为 机 会 成 本, 即 为 了 得 到 某 种 东 西 所 必 须 放 弃 的 东 西 [Mankiw 1999] 把 很 多 程 序 员 和 其 它 资 源 用 于 维 护 工 作, 必 然 会 耽 误 新 产 品 的 开 发 甚 至 会 丧 失 机 遇, 这 种 代 价 是 无 法 估 量 的 影 响 维 护 代 价 的 非 技 术 因 素 主 要 有 : (1) 应 用 域 的 复 杂 性 如 果 应 用 域 问 题 已 被 很 好 地 理 解, 需 求 分 析 工 作 比 较 完 善, 那 么 维 护 代 价 就 较 低 反 之 维 护 代 价 就 较 高 (2) 开 发 人 员 的 稳 定 性 如 果 某 些 程 序 的 开 发 者 还 在, 让 他 们 对 自 己 的 程 序 进 行 维 护, 那 么 代 价 就 较 低 如 果 原 来 的 开 发 者 已 经 不 在, 只 好 让 新 手 来 维 护 陌 生 的 程 序, 那 么 代 价 就 较 高 (3) 软 件 的 生 命 期 越 是 早 期 的 程 序 越 难 维 护, 你 很 难 想 像 十 年 前 的 程 序 是 多 么 的 落 后 ( 设 计 思 想 与 开 发 工 具 都 落 后 ) 一 般 地, 软 件 的 生 命 期 越 长, 维 护 代 价 就 越 高 生 命 期 越 短, 维 护 代 价 就 越 低 (4) 商 业 操 作 模 式 变 化 对 软 件 的 影 响 比 如 财 务 软 件, 对 财 务 制 度 的 变 化 很 敏 感 财 务 制 度 一 变 动, 财 务 软 件 就 必 须 修 改 一 般 地, 商 业 操 作 模 式 变 化 越 频 繁, 相 应 软 件 的 维 护 代 价 就 越 高 影 响 维 护 代 价 的 技 术 因 素 主 要 有 : (1) 软 件 对 运 行 环 境 的 依 赖 性 由 于 硬 件 以 及 操 作 系 统 更 新 很 快, 使 得 对 运 行 环 境 依 赖 性 很 强 的 应 用 软 件 也 要 不 停 地 更 新, 维 护 代 价 就 高 (2) 编 程 语 言 虽 然 低 级 语 言 比 高 级 语 言 具 有 更 好 的 运 行 速 度, 但 是 低 级 语 言 比 高 级 语 言 难 以 理 解 用 高 级 语 言 编 写 的 程 序 比 用 低 级 语 言 编 写 的 程 序 的 维 护 代 价 要 低 得 多 ( 并 且 生 产 率 高 得 多 ) 一 般 地, 商 业 应 用 软 件 大 多 采 用 高 级 语 言 比 如, 开 发 一 套 Windows 环 境 下 的 信 息 管 理 系 统, 用 户 大 多 采 用 Visual Basic Delphi 或 Power Builder 来 编 程, 用 Visual C++ 的 就 少 些, 没 有 人 会 采 用 汇 编 语 言 (3) 编 程 风 格 良 好 的 编 程 风 格 意 味 着 良 好 的 可 理 解 性, 可 以 降 低 维 护 的 代 价 (4) 测 试 与 改 错 工 作 如 果 测 试 与 改 错 工 作 做 得 好, 后 期 的 维 护 代 价 就 能 降 低 反 之 维 护 代 价 就 升 高 (5) 文 档 的 质 量 清 晰 正 确 和 完 备 的 文 档 能 降 低 维 护 的 代 价 低 质 量 的 文 档 将 增 加 维 护 的 代 价 ( 错 误 百 出 的 文 档 还 不 如 没 有 文 档 ) 8.3 再 生 工 程 再 生 工 程 主 要 出 于 如 下 愿 望 :(1) 在 商 业 上 要 提 高 产 品 的 竞 争 力 ;(2) 在 技 术 上 要 提 高 产 品 的 质 量 但 这 种 愿 望 无 法 靠 软 件 的 维 护 来 实 现, 因 为 :(1) 软 件 的 可 维 护 性 可 能 极 差, 实 在 不 值 得 去 做 ;(2) 即 使 软 件 的 可 维 护 性 比 较 好, 但 也 只 是 治 表 不 治 本 再 生 工 程 干 脆 对 已 有 软 件 进 行 全 部 或 部 分 的 改 造, 赋 予 软 件 新 的 活 力 在 对 待 一 个 不 良 之 徒 时, 可 以 进 行 思 想 教 育 并 给 予 他 关 心 和 帮 助, 这 种 方 式 类 似 于 软 件 维 护 ; 也 可 以 把 他 关 进 监 狱, 送 去 劳 改, 这 种 方 式 相 当 于 软 件 的 再 生 工 程 ; 如 果 此 人 坏 透 顶 了, 就 毙 掉 算 了 再 生 工 程 与 维 护 的 共 同 之 处 是 没 有 抛 弃 原 有 的 软 件 如 果 把 维 护 比 作 修 修 补 补, 那 么 再 生 工 程 就 算 是 痛 改 前 非 再 生 工 程 并 不 见 得 一 定 比 维 护 的 代 价 要 高, 但 再 生 工 程 在 将 来 获 取 的 利 益 却 要 比 通 过 维 护 得 到 的 多 再 生 工 程 主 要 有 三 种 类 型 : 重 构 逆 向 工 程 和 前 向 工 程 8.3.1 重 构 重 构 一 般 是 指 通 过 修 改 代 码 或 数 据 以 使 软 件 符 合 新 的 要 求 重 构 通 常 并 不 推 翻 原 有 软 件 的 体 系 结 构, 主 要 是 改 造 一 些 模 块 和 数 据 结 构 重 构 的 一 些 好 处 如 下 : (1) 使 软 件 的 质 量 更 高, 或 使 软 件 顺 应 新 的 潮 流 ( 标 准 )
(2) 使 软 件 的 后 续 ( 升 级 ) 版 本 的 生 产 率 更 高 (3) 降 低 后 期 的 维 护 代 价 要 注 意 的 是, 在 代 码 重 构 和 数 据 重 构 之 后, 一 定 要 重 构 相 应 的 文 档 8.3.2 逆 向 工 程 逆 向 工 程 来 源 于 硬 件 世 界 硬 件 厂 商 总 想 弄 到 竞 争 对 手 产 品 的 设 计 和 制 造 奥 秘 但 是 又 得 不 到 现 成 的 档 案, 只 好 拆 卸 对 手 的 产 品 并 进 行 分 析, 企 图 从 中 获 取 有 价 值 的 东 西 我 的 很 多 同 学 从 事 集 成 电 路 设 计 工 作, 他 们 经 常 解 剖 国 外 的 集 成 电 路, 甚 至 不 作 分 析 就 原 封 不 动 地 复 制 该 电 路 的 版 图, 然 后 投 入 生 产, 并 美 其 名 曰 反 向 设 计 (Reverse Design) 软 件 的 逆 向 工 程 在 道 理 上 与 硬 件 的 相 似 但 在 很 多 时 候, 软 件 的 逆 向 工 程 并 不 是 针 对 竞 争 对 手 的, 而 是 针 对 自 己 公 司 多 年 前 的 产 品 期 望 从 老 产 品 中 提 取 系 统 设 计 需 求 说 明 等 有 价 值 的 信 息 8.3.3 前 向 工 程 前 向 工 程 也 称 预 防 性 维 护, 由 Miller 倡 导 他 把 这 个 术 语 解 释 成 为 了 明 天 的 需 要, 把 今 天 的 方 法 应 用 到 昨 天 的 系 统 上 [Pressman 1999] 乍 看 起 来, 主 动 去 改 造 一 个 目 前 运 行 得 正 常 的 软 件 系 统 简 直 就 是 惹 事 生 非 但 是 软 件 技 术 发 展 如 此 迅 速, 与 其 等 待 一 个 有 价 值 的 产 品 逐 渐 老 死, 还 不 如 主 动 去 更 新, 以 获 取 更 大 的 收 益 其 道 理 就 同 打 预 防 性 针 一 样 所 以, 预 防 性 维 护 是 吃 小 亏 占 大 便 宜 的 事 8.4 小 结 大 学 科 研 机 构 里 的 软 件 维 护 工 作 恐 怕 是 做 得 最 差 的 了 几 乎 每 一 批 新 的 研 究 生 都 会 把 毕 业 生 留 下 的 软 件 臭 骂 一 通, 然 后 全 部 推 到 重 做 到 他 毕 业 该 走 时, 就 轮 到 别 人 骂 他 的 工 作 了 如 此 轮 回, 最 终 没 有 什 么 成 果 留 下 如 果 希 望 软 件 系 统 能 活 下, 必 须 要 对 它 进 行 维 护 如 果 希 望 软 件 系 统 有 效 益, 则 必 须 设 法 降 低 维 护 的 代 价
参 考 文 献 [Abrash 1998] Michael Abrash, 图 形 程 序 开 发 人 员 指 南 ( 前 导 工 作 室 译 ), 机 械 工 业 出 版 社,1998 [Cline 1995] Marshall P. Cline, Greg A. Lomow, C++ FAQs, Addison-Wesley, 1995 [Comer 1996] Douglas E. Comer, David L. Stevens, Internetworking With TCP/IP, Vol III, Prentice-Hall,1996 [Cusumano 1995] Michael A. Cusumano, Richard W. Selby, 微 软 的 秘 密 ( 程 化 等 译 ), 北 京 大 学 出 版 社,1995 [Jacobson 1997] Ivar Jacobson, Martin Griss, Software Reuse, 世 界 图 书 出 版 公 司,1997 [James 1999] Geoffery James, 编 程 之 道 ( 郭 海 等 译 ), 清 华 大 学 出 版 社,1999 [Kruglinski 1999] David J. Kruglinski, Scot Wingo, Programming Visual C++, 北 京 希 望 电 子 出 版 社, 1999 [ 林 锐 1996] 林 锐, 蔡 文 立, 微 机 科 学 可 视 化 系 统 设 计, 西 安 电 子 科 技 大 学 出 版 社,1996 [ 林 锐 1997] 林 锐, 戴 玉 宏, 图 形 用 户 界 面 设 计 与 技 术, 西 安 电 子 科 技 大 学 出 版 社,1997 [ 林 锐 2000] 林 锐, 支 持 协 同 工 作 的 交 互 式 三 维 图 形 软 件 开 发 系 统 与 可 视 化 平 台, 浙 江 大 学 博 士 论 文,2000 [Maguire 1993] Steve Maguire, Writing Clean Code( 姜 静 波 等 译 ), 电 子 工 业 出 版 社,1993 [Mankiw 1999] N. Gregory Mankiw, 经 济 学 原 理 ( 梁 小 明 译 ), 北 京 大 学 出 版 社,1999 [Norman 1996] Ronald J. Norman, Object-Oriented Systems Analysis And Design, Prentice-Hall, 1996 [Pressman 1997] Roger S. Pressman, Software Engineering: A Practitioner s Approach ( Fourth Edition), McGraw-Hill, 1997 [Rogerson 1999] Dale Rogerson, COM 技 术 内 幕 ( 杨 秀 章 译 ), 清 华 大 学 出 版 社,1999 [Shaffer 1999] Clifford A. Shaffer, 数 据 结 构 与 算 法 分 析 ( 张 铭, 刘 晓 丹 译 ), 电 子 工 业 出 版 社,1999 [Sommerville 1992] Ian Sommerville, Software Engineering, Addison-Wesley, 1992 [Summit 1996] Steve Summit, C Programming FAQs, Addison-Wesley, 1996 [ 杨 文 龙 1997] 杨 文 龙, 姚 淑 珍, 吴 云, 软 件 工 程, 电 子 工 业 出 版 社,1997 [Shaw 1996] Mary Shaw, David Garlan, Software Architecture, Prentice-Hall, 1996 [Tanenbaum 1998] Andrew S. Tanenbaum, 计 算 机 网 络 ( 第 三 版, 熊 桂 喜 等 译 ), 清 华 大 学 出 版 社,1998
附 录 : 大 学 十 年 作 者 : 林 锐,1999 年 岁 末 写 此 文 使 我 很 为 难, 一 是 担 心 读 者 误 以 为 我 轻 浮 得 现 在 就 开 始 写 自 传, 二 是 担 心 朋 友 们 误 以 为 我 得 了 绝 症 而 早 早 留 下 遗 作 不 论 是 落 俗 套 还 是 不 落 俗 套 地 评 价, 我 在 大 学 十 年 里 都 是 出 类 拔 萃 的 好 学 生 并 且 一 直 以 来 我 对 朋 友 们 和 一 些 低 年 级 的 学 生 们 都 有 很 大 的 正 面 影 响 这 十 年 是 一 个 从 幼 稚 到 成 熟 的 过 程, 交 织 着 聪 明 与 蠢 笨 勤 奋 与 懒 散 狂 热 与 怯 懦 成 功 与 失 败 做 对 了 的 事 可 树 立 为 榜 样, 做 错 的 事 可 挂 作 为 警 钟 我 写 下 经 历 与 感 受, 期 望 以 此 引 导 和 勉 励 无 数 比 我 年 轻 的 学 生 们 我 资 历 尚 浅, 既 没 有 哲 学 家 的 深 遂, 也 没 有 诗 人 的 风 华, 不 足 以 堂 皇 地 育 人, 只 能 讲 一 些 故 事 以 表 心 愿 我 出 生 在 1973 年 的 春 节, 属 牛, 是 牛 头 父 母 为 我 起 了 很 好 听 的 名 字 叫 林 锐 这 一 切 暗 示 着 上 天 对 我 别 有 用 心, 将 降 大 任 于 我, 可 是 这 时 候 上 帝 去 了 一 趟 厕 所 天 堂 与 人 间 的 时 差 如 此 之 大, 就 在 上 帝 大 小 便 的 几 分 钟 内, 我 混 混 沌 沌 地 度 过 了 童 年 和 少 年, 天 才 因 此 成 为 凡 人 我 小 时 候 生 长 在 浙 江 黄 岩 的 偏 僻 山 区 父 母 都 是 中 学 教 师, 由 于 山 区 师 资 缺 乏, 父 母 经 常 要 从 一 个 山 头 调 到 另 一 个 山 头 教 学 我 换 读 过 的 小 学 的 数 目 比 我 的 年 龄 还 大, 没 有 伙 伴, 也 没 有 家 的 概 念 我 就 象 活 在 货 郎 担 里 的 小 鸡, 缩 成 一 团, 在 高 兴 或 恐 惧 时 至 多 啾 啾 地 叫 几 声 我 在 读 小 学 与 初 中 的 8 年 里, 既 不 聪 明 活 泼, 也 不 调 皮 捣 蛋, 确 切 地 说 象 块 木 头, 简 直 是 我 名 字 的 反 义 词 在 学 习 上 我 没 有 受 过 一 次 表 扬, 也 没 有 任 何 值 得 留 念 的 人 或 事 无 论 我 现 在 多 么 努 力 都 已 无 法 追 回 失 去 的 8 年 金 色 年 华, 好 心 痛! 我 草 草 地 并 且 稀 里 糊 涂 地 在 13 岁 时 从 初 中 毕 业, 无 处 可 去 这 下 我 发 慌 了, 开 始 渴 望 学 习 我 灰 溜 溜 地 离 开 山 区, 可 怜 巴 巴 地 到 一 个 比 较 好 的 乡 下 中 学 重 读 初 三 我 勤 快 得 早 晨 4:30 就 起 来 读 英 语, 脑 袋 似 乎 也 被 吓 开 窍 了, 数 理 化 学 得 很 好, 并 且 生 平 第 一 次 在 物 理 考 试 中 得 了 满 分 当 我 再 一 次 从 初 中 毕 业 时, 我 以 全 校 第 一 的 成 绩 考 入 了 黄 岩 中 学 读 高 中 黄 岩 中 学 分 农 村 班 与 城 市 班, 我 当 然 是 农 民 阶 级 阶 级 区 别 与 歧 视 对 我 是 相 当 有 促 进 作 用 的 我 连 任 了 几 年 的 卫 生 委 员, 星 期 六 和 星 期 天 同 学 们 习 惯 地 把 活 留 给 我, 我 这 小 官 当 得 有 滋 有 味 物 理 学 得 极 好, 有 一 种 直 觉 帮 我 快 速 准 确 地 解 题, 常 常 是 老 师 刚 把 题 目 写 完 我 就 报 出 答 案 来 上 物 理 课 时 我 没 法 讲 废 话, 因 为 我 一 开 口 就 是 标 准 答 案 可 惜 我 的 文 科 成 绩 极 差 那 时 期 盛 传 学 好 数 理 化, 走 遍 天 下 都 不 怕, 我 们 年 少 不 懂 事, 糟 踏 了 学 文 科 的 好 时 光 我 写 作 文 的 最 高 目 标 就 是 不 逃 题, 考 试 前 我 总 是 反 复 祈 祷 : 我 没 干 过 坏 事, 保 佑 我 作 文 不 逃 题 吧! 历 史 考 试 时 填 写 任 课 老 师
某 年 某 月 某 日 在 我 家 乡 英 勇 就 义, 比 谁 的 成 绩 更 接 近 零 分 更 让 我 沮 丧 的 是, 这 些 行 径 都 不 是 我 发 明 的, 我 顶 多 是 个 跟 屁 虫 而 已, 一 点 回 忆 时 的 自 豪 感 都 没 有 我 现 在 认 为 文 科 教 育 实 质 是 素 质 教 育, 如 果 素 质 不 高, 男 孩 再 聪 明 也 难 以 成 大 器, 当 然 也 难 以 吸 引 好 女 孩 高 考 时 我 语 文 得 了 54 分 ( 是 班 里 的 中 上 水 平 ), 总 分 只 比 重 点 线 高 十 几 分 我 不 敢 报 考 好 地 方, 只 好 选 择 内 地 选 来 选 去 只 觉 得 西 安 与 成 都 两 个 城 市 还 不 错, 我 拿 把 尺 子 在 地 图 上 一 量, 发 现 我 家 乡 离 西 安 的 直 线 距 离 较 短, 于 是 就 选 了 西 安 老 师 们 只 听 说 过 西 安 交 通 大 学 比 较 有 名 气, 但 谁 也 不 了 解 我 以 为 在 西 安 交 通 大 学 是 学 习 开 火 车 开 轮 船 的, 尽 管 我 也 很 渴 望 能 开 车 开 船, 但 考 虑 到 自 己 的 身 材 单 小, 就 忍 痛 割 爱 了 我 觉 得 西 安 电 子 科 技 大 学 的 名 字 很 好 听, 符 合 我 做 科 学 家 的 梦 想, 于 是 就 报 考 西 安 电 子 科 技 大 学 ( 以 下 简 称 西 电 ) 技 术 物 理 系 上 帝 精 神 拌 擞 地 从 厕 所 回 来, 发 现 我 已 经 上 大 学 也 许 他 原 先 是 把 我 安 排 在 清 华 或 者 北 大 的, 但 事 已 至 此, 干 脆 也 就 撒 手 不 管 了 他 这 一 偷 懒 反 而 是 好 事, 我 在 读 大 学 的 十 年 中 自 由 发 展, 成 了 卓 而 不 群 的 学 生 刚 进 西 电, 首 先 吸 引 我 的 是 麻 雀 和 馍 那 麻 雀 滚 圆 滚 圆 的, 简 直 是 会 飞 的 肉 弹 它 们 不 怕 人, 成 堆 聚 集 吵 闹, 常 让 我 误 以 为 是 没 有 教 养 的 一 群 鸡 那 馍 又 白 又 大, 既 不 放 盐 也 不 放 糖, 既 不 象 馒 头 也 不 象 包 子 馍 凉 了 后 贼 硬, 据 说 有 同 学 被 楼 上 扔 下 的 半 块 馍 砸 中 脑 袋, 当 场 长 出 一 个 肉 包 子 最 好 笑 的 是 人 们 把 馍 夹 肉 叫 成 肉 夹 馍, 那 东 西 实 在 好 吃 西 电 原 是 军 校, 作 风 严 谨, 校 园 并 不 华 丽, 生 活 有 些 单 调 尽 管 我 来 自 山 清 水 秀 的 地 方, 可 我 的 确 喜 欢 西 电 的 粗 犷 与 憨 厚 有 一 天 我 看 到 一 个 新 生 写 的 很 肉 麻 的 赞 美 西 电 的 大 字 报, 有 一 句 是 我 踏 上 了 东 去 的 列 车, 我 不 禁 笑 掉 牙 这 一 笑 意 味 着 大 个 子 欺 负 小 个 子 历 史 的 结 束, 小 个 子 欺 负 大 个 子 新 纪 元 的 开 始 上 大 学 的 第 一 个 学 期 刚 好 碰 上 美 国 打 伊 拉 克 ( 沙 漠 风 暴 行 动 ) 那 时 全 国 都 在 谈 电 子 战, 我 们 全 校 都 是 研 究 电 子 的, 而 且 以 军 事 应 用 为 主 在 那 种 气 氛 里, 同 学 们 都 有 很 强 的 使 命 感, 并 且 被 鼓 动 得 信 心 十 足 一 日, 系 主 任 视 察 早 读, 偏 偏 有 同 学 迟 到 系 主 任 喝 问 : 你 为 什 么 迟 到 了? 因 为 我 来 迟 了, 同 学 毫 不 含 糊 地 回 答, 昂 然 入 座 我 在 班 里 年 龄 最 小 个 子 也 小, 上 课 时 就 象 猩 猩 堆 里 的 猴 子 那 么 显 眼 由 于 我 们 是 物 理 系 学 生, 第 一 学 期 的 普 通 物 理 课 程 就 显 得 非 常 重 要 系 副 主 任 给 我 们 上 课, 他 长 得 象 叶 利 钦, 口 若 悬 河, 板 书 极 快 象 在 高 中 上 物 理 课 那 样, 我 常 在 叶 利 钦 刚 写 完 题 目 时 就 报 出 答 案 开 头 几 次, 叶 利 钦 满 脸 疑 狐 地 扫 视 我 们, 好 像 是 要 抓 住 拔 掉 他 自 行 车 气 门 芯 的 那 个 捣 蛋 鬼 后 来 他 在 第 一 排 发 现 了 我, 我 俩 乐 得 裂 了 嘴 课 间 候 息 时, 叶 利 钦 常 坐 在 我 旁 边, 乘 他 给 同 学 们 答 疑 时, 我 就 用
笔 拔 弄 他 硕 大 无 比 的 手 指, 在 他 指 甲 上 涂 点 什 么 在 第 一 学 年, 我 就 象 乱 草 丛 中 的 野 花 那 样 脱 颖 而 出, 倍 受 老 师 和 同 学 们 的 关 怀 就 在 我 光 荣 到 感 觉 屁 股 都 能 绽 放 光 彩 的 时 候, 发 现 了 令 我 胆 战 心 惊 的 学 习 缺 陷 不 会 做 实 验 一 进 实 验 室, 我 就 束 手 无 策, 浑 身 发 抖 我 相 信 大 一 的 学 生 都 有 虚 荣 心, 为 了 维 护 最 聪 明 这 个 荣 耀, 我 完 全 可 以 掩 盖 躲 避 甚 至 偷 偷 地 弥 补 实 验 能 力 的 不 足 我 做 了 一 件 了 不 起 的 事 : 为 了 对 抗 虚 荣 的 引 诱, 我 夸 张 其 辞 地 把 缺 陷 告 诉 每 一 个 我 认 识 的 人, 让 我 没 有 机 会 欺 骗 自 己 聪 明 的 人 并 不 见 得 都 有 智 慧, 他 可 能 缺 乏 真 实 这 种 品 质 虽 然 我 是 在 硕 士 毕 业 的 时 候 才 立 下 誓 言 做 真 实 正 直 优 秀 的 科 技 人 员, 但 我 在 18 岁 的 时 候 就 已 经 做 到 了 真 实, 我 必 定 一 生 保 持 第 一 年 暑 假 回 家, 得 到 一 个 惊 喜 : 家 里 竟 然 有 了 电 路 实 验 室! 因 为 我 常 在 信 中 鼓 吹 自 己 实 验 能 力 何 等 之 差, 长 此 以 往, 下 场 将 极 为 悲 惨 父 母 经 不 起 这 种 恐 吓, 教 英 语 的 父 亲 将 半 年 的 工 资 连 同 私 有 财 产 全 部 捐 出, 每 周 到 很 远 的 商 品 交 易 市 场 购 买 电 子 元 件 以 及 器 材, 在 家 里 建 立 了 实 验 室 父 亲 很 威 严, 我 从 小 就 怕 他, 但 那 个 暑 假 我 一 点 也 不 怕 他 我 们 一 起 做 实 验, 都 从 零 学 起, 话 不 投 机 就 用 电 烙 铁 交 流, 完 全 是 同 事 关 系 后 来, 我 的 兴 趣 转 向 了 计 算 机, 家 里 的 实 验 室 就 由 父 亲 独 掌, 继 续 发 扬 光 大 现 在 父 亲 修 理 电 器 的 水 平 在 家 乡 远 近 闻 名, 学 生 们 都 忘 了 他 是 英 语 教 师 母 亲 是 数 学 教 师, 年 轻 时 略 有 姿 色, 智 力 远 胜 父 亲 当 她 与 他 在 山 头 的 学 校 里 相 遇 时, 他 一 顿 热 情 洋 溢 的 饭 菜 就 把 她 缴 械 了 我 小 时 候 家 里 很 贫 穷, 家 就 象 一 条 飘 荡 的 小 船, 父 亲 划 桨, 母 亲 掌 舵 当 我 6 岁 上 学 时, 母 亲 就 说 : 儿 子 啊, 你 将 来 只 能 靠 笔 吃 饭 而 不 能 靠 锄 头 吃 饭 小 时 候, 母 亲 怕 我 变 狡 诈 而 不 允 许 我 学 下 棋 尽 管 我 在 大 学 里 已 经 相 当 出 色, 母 亲 来 信 总 不 忘 叮 嘱 德 智 体 全 面 发 展 她 常 用 独 特 的 方 式 检 查 我 : (1) 看 我 是 否 变 胖 如 果 我 胖 了, 表 明 我 懒 了 因 为 勤 奋 的 人 没 有 理 由 变 胖 (2) 看 我 说 话 是 否 还 快 如 果 我 说 话 慢 条 斯 理, 表 明 我 变 笨 了 因 为 脑 子 灵 活 的 人 没 有 理 由 说 话 不 快 我 读 博 士 研 究 生 时, 母 亲 的 眉 头 才 舒 开 她 经 常 在 师 生 中 发 表 自 由 言 论 : 儿 子 的 智 力 与 性 格 完 全 是 我 遗 传 的, 他 爸 毫 无 半 点 功 劳 第 三 学 期 的 主 要 课 程 是 电 路 分 析 电 路 题 目 常 常 很 滑 稽, 当 你 满 头 大 汗 地 解 完 方 程 时, 答 案 往 往 是 零 我 归 纳 了 不 少 公 式 用 于 简 化 计 算, 所 以 照 样 能 在 老 师 画 完 电 路 图 时 报 出 答 案 学 习 是 如 此 的 轻 松 以 致 于 我 有 太 多 的 课 余 时 间
在 课 余 我 常 做 两 件 有 意 思 的 事 : (1) 我 为 学 习 较 差 的 十 几 名 同 学 办 了 补 习 班, 给 他 们 讲 课, 改 作 业, 出 考 题 我 就 象 老 母 鸡 那 样 看 护 着 一 群 小 鸡, 使 班 长 学 习 委 员 等 班 干 部 形 同 虚 设 我 这 样 做 既 提 高 了 自 己 的 表 达 能 力, 又 帮 助 了 同 学 这 事 不 是 老 师 叫 我 干 的, 是 我 自 己 的 主 意 (2) 我 经 常 在 宿 舍 里 焊 接 电 子 线 路, 技 艺 渐 精 我 曾 花 了 两 天 时 间, 把 磁 带 盒 做 成 能 发 声 发 光 的 精 美 礼 物, 乐 颠 颠 地 送 给 一 个 女 孩 子 可 惜 不 久 后 我 迷 上 了 计 算 机, 从 此 再 也 没 亲 手 做 过 好 玩 的 东 西 上 大 学 以 前 我 根 本 没 见 过 计 算 机 在 第 四 学 期 时 我 遇 到 了 十 年 来 最 敬 爱 的 老 师 周 维 真, 从 而 对 编 程 产 生 了 强 烈 的 兴 趣 他 教 我 们 Fortran 语 言,Fortran 语 言 对 我 没 有 影 响, 影 响 我 的 是 周 老 师 高 尚 的 师 德 以 及 他 在 教 学 和 科 研 中 的 敬 业 精 神 我 从 他 那 里 学 到 的 是 怎 样 做 人, 怎 样 做 学 问 很 多 计 算 机 系 老 师 改 作 业 时 喜 欢 打 或 打 了 事 周 老 师 不 仅 把 作 业 里 的 错 误 都 找 出 来, 而 且 逐 一 评 注 好 在 哪 里 和 差 在 哪 里 为 了 不 让 周 老 师 过 于 劳 累, 全 系 同 学 有 一 个 约 定 : 上 课 时 不 准 吵 闹, 否 则 别 来 ; 作 业 必 须 清 楚, 否 则 别 交 ; 提 的 问 题 必 须 有 质 量, 否 则 闭 嘴 Fortran 语 言 期 末 考 试, 我 的 卷 面 成 绩 是 97 分, 有 个 女 同 学 考 了 99 分 我 当 时 官 为 课 代 表, 想 不 到 被 一 个 女 生 超 过, 甚 为 沮 丧 可 是 报 到 系 里 的 成 绩 单 上, 我 的 成 绩 是 99 分, 那 个 女 同 学 是 97 分 我 以 为 周 老 师 搞 错 了, 跑 去 问 他 周 老 师 笑 笑 说 : 你 平 时 的 学 习 表 现, 该 得 满 分 不 能 因 为 考 试 中 的 一 个 失 误 而 打 击 你 的 积 极 性, 所 以 给 你 加 2 分 作 为 鼓 励 而 她 一 上 机 就 束 手 无 策, 要 让 她 知 道 考 试 成 绩 高 并 不 表 示 已 经 学 好 了, 扣 她 2 分 以 示 警 告 你 本 来 就 是 第 一 名 这 时 又 跑 来 一 个 查 成 绩 的 同 学, 他 得 了 59 分, 哀 求 周 老 师 让 他 及 格 周 老 师 说 : 你 的 试 卷 我 看 了 好 几 遍, 的 的 确 确 是 59 分 而 你 平 时 的 学 习 表 现 也 不 会 超 过 59 分 这 一 分 不 能 加, 否 则 我 会 害 你 一 生 在 我 这 一 级 (90 级 ), 周 老 师 至 少 为 技 术 物 理 系 教 出 两 名 软 件 高 手 我 和 马 佩 军 我 和 马 佩 军 读 到 硕 士 时 已 在 软 件 方 面 雄 霸 西 电, 计 算 机 系 学 生 毫 无 翻 身 之 望 由 于 马 佩 军 不 好 名 利, 风 头 让 我 一 人 独 得 我 离 开 西 电 数 年 后, 余 威 尚 在 可 惜 我 和 周 老 师 相 处 不 到 一 年, 他 便 调 到 北 京 信 息 工 程 学 院 然 而 师 恩 的 厚 薄 不 在 于 时 间 长 短, 好 的 老 师 会 让 人 想 念 感 激 一 辈 子 在 上 大 学 的 前 三 个 学 期, 学 习 如 同 表 演, 有 趣 而 且 轻 松 自 从 第 四 学 期 学 习 了 计 算 机 课 程, 我 就 有 了 新 的 追 求, 我 多 么 渴 望 拥 有 一 台 计 算 机, 可 以 天 天 编 程 如 果 挨 一 个 巴 掌 能 换 取 一 分 钟 上 机 时 间 的 话, 我 愿 意 每 天 挨 1440 个 巴 掌 如 果 非 得 加 上 一 个 期 限 不 可, 我 希 望 是 一 万 年 我 本 科 的 专 业 是 半 导 体 物 理, 一 二 年 级 由 系 里 负 责 教 学, 三 四 年 级 由 微 电 子 所
负 责 教 学 在 第 四 学 期 末, 我 央 求 系 里 把 我 推 荐 到 微 电 子 所 参 加 科 研, 贾 新 章 教 授 收 留 了 我 我 踏 进 微 电 子 所 的 那 一 脚, 让 我 从 纯 粹 学 习 转 向 了 科 研, 从 高 分 低 能 转 向 了 低 分 高 能 我 终 于 有 了 一 台 286 电 脑, 那 个 暑 假 我 就 睡 在 实 验 室 里, 时 时 刻 刻 守 着 它, 深 夜 里 我 一 个 人 冲 着 它 发 笑, 一 会 儿 盖 上 布, 一 会 儿 掀 开 布, 一 会 儿 摸 摸 它 的 脸, 一 会 儿 理 理 它 的 辨 子 我 很 快 地 完 成 了 任 务 设 计 一 个 立 方 运 算 的 模 拟 电 路, 并 且 学 会 了 C 语 言 西 电 有 个 好 传 统, 每 年 冬 季 举 办 一 次 全 校 性 的 星 火 杯 学 生 科 技 作 品 竞 赛 每 届 都 有 六 七 百 件 作 品 展 示, 低 年 级 的 学 生 看 后 无 不 热 血 沸 腾, 跃 跃 欲 试 我 很 希 望 能 独 立 开 发 一 套 软 件, 参 加 本 届 星 火 杯 竞 赛 贾 新 章 老 师 是 研 究 集 成 电 路 可 靠 性 的, 见 我 如 此 热 切, 就 让 我 开 发 集 成 电 路 可 靠 性 分 析 软 件 我 开 始 一 边 研 究 数 值 算 法, 一 边 设 计 软 件 从 炎 热 的 8 月 份 到 发 冷 的 十 一 月, 几 乎 天 天 通 宵 编 程, 程 序 很 快 增 长 到 一 万 多 行 在 离 竞 赛 还 剩 一 个 月 左 右 的 时 候, 出 现 了 大 量 的 问 题 不 仅 程 序 老 是 出 错 误, 而 且 发 现 原 先 的 算 法 并 不 有 效 此 时 已 经 没 人 能 够 救 我 贾 老 师 不 会 编 程, 不 知 道 问 题 究 竟 出 在 程 序 上 还 是 出 在 算 法 上 ( 实 质 上 两 者 都 有 问 题 ) 而 那 些 懂 软 件 开 发 的 年 青 教 师, 实 在 看 不 明 白 我 的 上 万 行 程 序 是 如 何 组 织 的 他 们 只 能 悲 伤 地 看 着 我 挣 扎 由 于 我 经 常 逃 课, 好 学 生 变 成 了 坏 学 生 系 里 意 见 极 大, 贾 老 师 十 分 为 难 不 少 老 师 和 同 学 劝 我 赶 紧 改 邪 归 正, 放 弃 项 目, 不 值 得 因 小 失 大 当 时 我 有 个 无 法 动 摇 的 心 念 : 如 果 放 弃 一 次, 那 么 碰 到 下 一 个 挫 折 时 我 就 会 继 续 放 弃 ; 如 果 坚 持 而 成 功, 那 么 碰 到 下 一 个 挑 战 时 我 会 激 励 自 己 再 取 成 功 在 压 力 面 前, 我 依 然 坚 挺 每 当 略 有 进 展 时, 心 里 一 阵 狂 喜, 但 很 快 又 会 碰 到 新 的 困 难, 有 时 一 坐 就 是 20 个 小 时 每 天 在 喜 悦 的 颠 峰 与 苦 恼 的 深 渊 之 间 反 复 折 腾 在 竞 赛 前 二 天, 我 终 于 成 功 地 完 成 了 软 件 研 发, 结 果 获 得 软 件 与 论 文 两 个 二 等 奖 这 个 荣 誉 本 身 不 值 得 一 提, 并 且 我 付 出 很 重 的 代 价 对 物 理 专 业 失 去 兴 趣 而 彻 底 抛 弃 了 它 但 那 时 我 才 19 岁, 在 极 限 状 态 下, 我 磨 练 了 意 志, 使 我 日 后 充 满 激 情 在 本 科 四 年 级, 我 认 识 了 微 电 子 所 的 郝 跃 老 师 他 是 数 学 博 士, 是 微 电 子 所 最 有 才 华 最 潇 洒 最 有 领 导 风 范 的 青 年 学 者 我 常 去 向 他 请 教 数 学 问 题, 他 讲 得 意 气 风 发, 我 听 得 如 痴 如 醉 我 俩 一 个 月 的 交 流 量 很 多 硕 士 化 一 年 时 间 也 得 不 到 有 一 天, 郝 老 师 说 : 你 做 我 的 学 生 吧 我 就 毫 不 迟 疑 地 从 贾 老 师 门 下 跳 槽 到 郝 老 师 门 下 郝 老 师 后 来 是 我 的 硕 士 生 导 师, 他 高 兴 时 喜 欢 说 : 好, 很 好, 非 常 好! 我 看 着 他 升 教 授, 升 博 导, 升 副 校 长, 师 生 两 人 分 别 在 各 自 的 阶 层 中 名 声 显 赫 在 三 四 年 级, 我 的 专 业 课 程 没 有 一 门 及 格 过 但 由 于 微 电 子 所 的 老 师 们 已 经 认 可 了 我, 就 把 我 的 卷 面 成 绩 作 为 及 格 线, 我 对 同 学 们 的 帮 助 莫 大 于 此! 如 果 要 我 考 研 究 生, 我 绝 对 考 不 上 系 主 任 安 毓 英 觉 得 我 将 来 很 有 前 途, 于 是 不 顾 别 人 反 对,
一 锤 定 音 让 我 免 试 读 硕 士 研 究 生 读 硕 士 研 究 生 后, 我 的 科 研 条 件 相 当 好 导 师 十 分 开 明, 任 我 自 由 发 展 我 最 喜 欢 做 的 事 是 设 计 图 形 用 户 界 面 和 开 发 数 据 可 视 化 软 件 图 形 程 序 的 最 大 魅 力 是 即 便 它 毫 无 用 处, 你 也 可 以 自 我 欣 赏 总 有 人 担 心 花 很 多 精 力 物 力 让 界 面 那 么 漂 亮, 图 形 那 么 逼 真 是 否 值 得? 这 种 问 题 不 能 强 求 别 人 与 你 一 致 我 当 时 赞 美 女 孩 子 的 最 高 境 界 就 是 把 她 和 我 的 图 形 程 序 相 提 并 论 我 喜 欢 设 计 用 户 界 面 是 因 为 自 己 有 相 当 好 的 美 感 在 读 本 科 时 我 模 仿 过 六 七 个 流 行 软 件 的 界 面, 常 常 向 同 学 演 示 卖 弄 觉 得 还 不 过 瘾, 就 写 了 一 篇 名 为 用 户 界 面 设 计 美 学 的 短 文 凡 是 路 过 我 实 验 室 的 同 学 都 被 我 逮 住, 被 迫 听 完 我 得 意 之 极 的 朗 读, 茫 然 者 与 痛 苦 者 居 多 不 久 我 的 朗 读 便 所 向 披 糜, 闻 声 者 逃 之 夭 夭 我 的 研 究 工 作 基 本 上 以 集 成 电 路 的 数 值 计 算 为 主, 数 值 计 算 产 生 的 一 堆 堆 数 据 常 把 我 搞 得 晕 头 转 向 我 发 现 用 图 形 来 表 征 解 释 数 据 可 以 让 自 己 不 再 迷 糊 下 去, 那 感 觉 就 象 刚 睡 醒 时 冲 凉 水 一 样 我 硕 士 学 位 论 文 中 的 软 件 就 是 用 图 形 来 仿 真 集 成 电 路 生 产 过 程 中 缺 陷 对 成 品 率 的 影 响 我 并 不 是 在 看 了 学 术 论 文 后 才 开 始 研 究 可 视 化 技 术 的, 我 是 在 做 了 工 作 后 才 发 现 那 些 好 玩 的 技 术 叫 做 可 视 化 由 于 我 肚 子 里 头 的 确 有 货, 在 硕 士 一 年 级, 我 没 有 使 用 剪 刀 与 浆 糊 ( 这 是 很 多 人 写 书 的 法 宝 ), 只 化 了 三 个 月 时 间 就 写 完 第 一 本 著 作 微 机 科 学 可 视 化 系 统 设 计 我 在 读 硕 士 期 间 的 工 作 强 度 与 本 科 时 的 相 当, 但 工 作 方 式 有 很 大 不 同 我 有 了 明 确 的 目 标 :(1) 开 发 自 主 版 权 的 软 件 产 品 ;(2) 培 养 做 领 导 的 才 能 这 个 目 标 可 以 通 过 团 队 工 作, 参 加 全 国 性 大 学 生 科 技 竞 赛 而 实 现 我 在 西 电 成 立 了 可 视 创 意 软 件 小 组, 马 佩 军 戴 玉 宏 马 晓 宇 是 我 的 主 要 技 术 伙 伴, 帮 手 很 多 ( 有 几 个 漂 亮 的 女 生 负 责 宣 传 ) 办 公 室 里 贴 满 了 标 语, 如 创 造 性 的 事 业 要 靠 激 情 来 推 动, 生 于 忧 患, 死 于 安 乐, 让 春 天 消 失 还 有 大 幅 的 作 战 图, 倒 计 时 牌 每 个 伙 伴 写 了 一 张 军 令 状 放 在 机 器 上, 我 迄 今 还 记 录 着 那 些 纯 真 活 泼 充 满 激 情 的 文 字 那 是 多 么 艰 苦 而 幸 福 的 日 子, 夜 里 放 震 耳 欲 聋 的 音 乐 咬 尖 辣 椒 提 神, 有 伙 伴 累 得 蹲 在 厕 所 里 睡 着 了 在 1994 年 和 1995 年 的 冬 季, 我 们 的 软 件 作 品 分 别 获 中 国 大 学 生 应 用 科 技 发 明 大 奖 赛 二 等 奖 和 全 国 大 学 生 挑 战 杯 学 术 科 技 作 品 竞 赛 二 等 奖, 在 西 北 地 区, 我 们 是 老 大 我 成 了 西 电 学 生 的 榜 样, 仰 慕 我 的 学 生 有 一 大 批, 我 刚 到 浙 大 读 博 士 学 位 时, 收 到 一 个 西 电 计 算 机 系 学 生 的 信, 他 说 : 你 走 了, 我 呆 在 西 电 没 有 意 思, 我 准 备 考 浙 大 的 硕 士, 你 到 哪 里 我 就 跟 到 哪 里 在 硕 士 毕 业 前, 我 在 鉴 定 表 上 这 样 写 道 : 我 热 爱 科 技 事 业, 如 同 热 爱 生 命 一 样 近 5 年 的 科 研 工 作 带 给 我 最 充 实 的 生 活, 也 寄 托 着 我 美 好 的 向 往 可 我 同 时 也 感 到 了 痛 苦, 因 为 5 年 来 我 耳 闻 目 睹 科 研 中 太 多 的 弄 虚 作 假 我 发 誓 : 做 一 名 真 实 正 直 优 秀 的 科 技 人 员, 以 正 身 自 勉
我 在 西 电 度 过 了 幸 福 的 6 年 半, 最 让 我 牵 肠 挂 肚 的 是 吃 友 情 和 爱 情 当 我 第 一 次 吃 红 红 的 和 青 青 的 辣 椒 时, 感 动 得 满 脸 是 泪, 那 滋 味 让 我 觉 得 前 17 年 白 活 了 我 在 读 硕 士 时 已 经 能 自 力 更 生, 我 开 发 的 软 件 不 仅 竞 赛 获 奖 挣 了 名 气, 而 且 还 挣 了 钱 ( 卖 了 二 十 多 份 软 件, 平 均 每 份 挣 500 元 ) 写 书 得 稿 费 7000 元, 那 时 我 简 直 就 是 富 翁 这 些 钱 的 小 部 分 用 来 给 女 孩 子 买 礼 物, 大 部 分 用 于 和 与 哥 儿 们 吃 香 的 喝 辣 的 我 相 信 自 己 已 经 尝 遍 了 西 安 的 小 吃, 并 且 发 现 了 一 个 真 理 : 最 好 吃 的 东 西 都 在 地 摊 上, 最 香 的 东 西 一 定 是 辣 的, 最 辣 的 东 西 一 定 是 香 的 曾 经 沧 海 难 为 水, 我 在 浙 大 的 三 年 里 很 少 再 吃 辣 椒, 因 为 怕 它 玷 污 我 心 目 中 的 辣 椒 在 我 小 时 候, 我 爸 很 讨 厌 土 豆, 他 竟 然 因 此 不 让 我 吃 土 豆 我 哪 敢 跟 他 论 理, 于 是 忍 啊 忍, 一 直 忍 到 我 上 大 学 远 走 高 飞 如 果 说 辣 椒 是 我 新 交 的 女 朋 友, 那 么 土 豆 就 是 我 天 生 的 命 ( 迄 今 尚 未 发 现 能 让 我 不 要 命 的 食 物 ) 我 在 西 电 经 常 用 电 炉 ( 从 来 都 没 被 抓 住 过 ) 做 以 土 豆 为 核 心 的 菜, 天 长 日 久, 朋 友 们 干 脆 叫 我 土 豆 我 吃 饱 土 豆 和 辣 椒 后 不 免 深 思 而 感 叹, 人 要 是 认 认 真 真 地 吃, 真 的 花 不 了 多 少 钱, 那 些 贪 官 究 竟 是 怎 么 吃 掉 巨 款 的? 我 将 来 怎 么 吃 得 掉 自 己 挣 来 的 钱? 我 在 读 中 学 与 本 科 时, 满 头 白 发, 脑 袋 可 以 当 白 炽 灯 泡 用 当 我 硕 士 毕 业 再 照 镜 子 时, 吓 了 一 跳, 白 头 发 不 见 了! 我 不 知 道 究 竟 是 哪 种 食 物 起 的 作 用 ( 估 计 是 辣 椒 ) 那 些 早 生 白 发 的 小 伙 子 们, 你 们 就 到 西 安 上 学 吧 马 佩 军 是 我 最 早 的 朋 友 刚 入 学 时 我 们 同 住 一 个 宿 舍, 他 象 国 民 党 兵 盘 问 良 家 妇 女 那 样 上 下 打 量 我, 问 : 喜 欢 干 啥? 我 怯 生 生 地 回 答 : 打 乒 乓 球 他 再 问 : 什 么 风 格 我 答 : 快 球 他 突 然 象 阎 锡 山 那 样 怪 笑, 拍 拍 我 的 肩 膀 说, 好! 我 喜 欢, 以 后 你 就 是 我 的 朋 友 我 是 陕 西 人, 农 民, 会 开 拖 拉 机 和 卡 车 这 里 是 我 的 家, 以 后 你 有 啥 事, 就 对 我 吱 一 声 马 佩 军 和 我 打 乒 乓 球 时 口 中 念 念 有 词 : 哼! 你 对 我 狠, 我 对 你 更 狠 ; 你 对 我 好, 我 对 你 更 好 他 好 几 次 说 要 把 世 上 最 好 吃 的 板 栗 送 给 我 一 袋, 这 一 袋 板 栗 我 到 现 在 都 没 拿 到 马 佩 军 夜 里 极 能 侃, 吹 他 家 乡 的 人 跑 得 快, 常 把 野 兔 追 断 气 有 时 他 吹 得 太 离
谱, 常 令 我 们 6 人 群 起 而 攻 之 为 了 把 我 们 一 举 歼 灭, 他 白 天 到 图 书 馆 查 资 料, 夜 里 再 挑 起 事 端 双 方 就 象 印 度 与 巴 基 斯 坦, 常 干 两 个 秃 子 争 一 把 梳 子 的 事 马 佩 军 上 大 学 前 也 没 见 过 计 算 机, 但 他 对 计 算 机 技 术 有 极 强 的 领 悟 力 我 们 第 一 次 上 机 时, 他 把 我 拉 到 打 印 机 旁 边 说 : 帮 我 防 着 管 机 房 的, 我 要 修 理 这 台 打 印 机 还 没 等 我 反 应 过 来, 他 就 开 始 肢 解 打 印 机 我 无 比 深 刻 地 体 会 到 : 歹 徒 在 作 案 时 都 不 害 怕, 最 提 心 吊 胆 的 就 是 那 个 放 风 的 他 在 5 分 钟 内 修 好 了 打 印 机, 我 佩 服 得 五 体 投 地, 甘 愿 下 次 再 跟 他 干 坏 事 我 一 直 认 为 马 佩 军 是 西 电 编 程 第 一 高 手, 他 编 程 的 时 候 根 本 不 是 人, 是 指 针 之 所 以 我 的 名 气 大, 一 是 因 为 他 不 好 名 利, 二 是 我 把 他 的 程 序 写 上 了 我 的 名 字 ( 并 且 卖 了 不 少 钱 ) 马 佩 军 的 女 朋 友 是 我 介 绍 的, 我 一 眼 就 看 出 她 将 嫁 给 他 后 来 俩 人 果 真 结 婚 了, 只 是 他 嫁 给 了 她 硕 士 毕 业 后, 马 佩 军 留 在 西 电 读 博 前 年 我 再 见 到 他 时, 他 说 我 害 死 他 了, 快 乐 得 要 宰 了 我 我 喜 欢 陕 西 人 源 于 马 佩 军 宋 任 儒 是 我 们 的 班 长, 也 是 班 里 最 早 的 预 备 党 员, 满 口 仁 义 之 道, 比 唐 僧 还 让 人 受 不 了 在 二 年 级 时, 我 迷 上 一 个 比 我 大 一 岁 有 了 男 朋 友 的 女 同 学, 多 日 沮 丧 他 看 在 眼 里 痛 在 心 里, 跑 去 把 那 女 同 学 教 育 了 一 通 苏 联 解 体 的 时 候 他 十 分 沉 痛, 在 思 想 教 育 课 上, 他 向 我 们 作 了 深 刻 的 检 讨, 好 象 是 他 没 有 管 教 好 戈 尔 巴 乔 夫 那 小 子 最 后 他 为 我 们 点 燃 了 希 望 : 在 不 久 的 将 来, 苏 联 将 重 新 成 为 苏 联, 共 产 主 义 旗 帜 将 继 续 在 全 世 界 飘 扬 在 本 科 三 四 年 级, 他 对 跳 舞 十 分 入 迷, 连 上 厕 所 都 滑 翔 而 去 我 那 时 常 把 自 己 关 在 实 验 室 里 搞 科 研, 极 少 有 空 与 他 玩 乐, 等 到 本 科 毕 业 时, 猛 地 发 现 他 已 经 风 度 翩 翩 宋 任 儒 的 学 习 既 不 好 也 不 差, 我 们 从 来 没 有 合 作 研 究 过 什 么 我 喜 欢 他 是 因 为 他 很 有 情 趣, 不 落 俗 套 也 许, 我 俩 本 来 就 是 敢 爱 而 不 恨 的 同 一 类 人 本 科 毕 业 时, 他 分 到 威 海 工 作, 走 之 前 我 为 他 饯 行 可 在 硕 士 开 学 时, 我 的 房 门 被 人 一 脚 踢 开, 他 对 我 喊 了 一 声 林 子 啊, 我 又 回 来 了 我 就 象 祥 林 嫂 见 到 了 被 狼 叼 走 的 孩 子 宋 任 儒 读 硕 士 时 被 发 配 到 临 憧 771 所, 他 在 那 里 过 上 了 乐 不 思 蜀 的 日 子 有 一 天, 他 带 来 两 个 文 静 的 女 孩 子 ( 一 个 读 硕 士, 一 个 读 本 科 ) 来 串 门 就 在 我 洗 水 果 的 几 分 钟 里, 三 个 人 已 玩 得 乐 翻 了 天, 两 个 女 孩 满 屋 子 追 他, 一 会 儿 把 他 按 到 桌 子 上 打, 一 会 按 到 床 上 打 我 惊 诧 之 极 而 又 羡 慕 之 极, 恨 不 得 挨 打 的 人 是 我 想 不 到 上 学 竟 然 会 有 这 等 欢 乐, 看 来 我 读 硕 士 的 日 子 白 过 了 后 来, 那 个 大 一 点 的 女 孩 子 嫁 给 了 他 当 他 带 她 去 见 公 婆 时, 公 公 长 叹 一 声 : 把 儿 子 交 给 你, 我 就 放 心 了 而 婆 婆 已 乐 得 合 不 拢 嘴, 竟 然 无 法 叹 气
现 在, 宋 任 儒 已 从 复 旦 大 学 获 得 博 士 学 位, 比 我 更 早 地 成 家 立 业 他 和 她 既 是 夫 妻, 又 象 兄 妹, 还 象 伙 伴 他 叫 她 聪 聪, 她 叫 他 笨 笨 聪 聪 问 笨 笨 : 老 公 啊, 人 活 着 为 了 什 么? 笨 笨 答 : 就 是 让 咱 们 每 天 快 快 乐 乐 我 迄 今 亲 眼 看 到 的 幸 福 莫 过 于 此 我 在 大 二 时 曾 为 系 里 学 习 最 差 的 十 几 名 同 学 办 了 补 习 班, 谢 伟 在 这 个 补 习 班 里 名 列 倒 数 前 茅 在 他 睡 懒 觉 时, 我 象 催 命 鬼 那 样 喊 他 捅 他 他 无 比 吃 力 地 抬 起 沉 重 的 眼 皮, 就 象 软 弱 无 力 的 举 重 运 动 员, 还 没 有 挺 起 来 就 趴 下 了 他 开 始 呻 吟 : 这 一 次 就 饶 了 我 吧, 下 一 次 我 一 定 一 定 会 去 的, 求 你 了 我 不 肯 那 么 让 我 再 睡 5 分 钟, 他 不 死 心 我 仍 不 同 意 那 么 你 就 从 1 数 到 10, 要 慢 一 点, 他 讨 价 还 价 当 我 数 到 9 时, 他 就 接 着 数 9.1,9.2,9.3 一 开 始 他 觉 得 我 很 好 玩, 后 来 他 就 喜 欢 得 离 不 开 我 了 并 不 是 因 为 我 学 习 好, 而 是 那 时 侯 我 天 真 并 且 充 满 活 力 在 三 四 年 级 我 忙 于 科 研 时, 他 照 顾 我 的 生 活, 叫 我 少 爷, 既 做 管 家 又 做 兄 长 我 们 不 仅 共 用 饭 菜 票, 并 且 共 用 仅 有 的 一 个 碗, 总 是 他 买 饭 菜 和 洗 碗 我 们 那 一 级 的 学 生 大 多 崇 拜 巨 人 公 司 的 创 始 人 史 玉 柱, 我 问 谢 伟 : 我 是 不 是 和 史 玉 柱 一 样 能 吃 苦? 他 说 : 如 果 考 虑 年 龄 因 素, 你 已 经 比 他 更 能 吃 苦 你 将 来 一 定 能 做 大 事 业, 我 就 把 希 望 寄 托 于 你 了 在 我 们 都 还 不 成 熟 的 时 候, 我 成 了 他 心 中 的 灯 塔, 只 要 灯 不 灭, 希 望 就 在 现 在 他 为 了 娶 一 个 日 本 姑 娘, 披 荆 斩 棘 追 到 日 本, 有 了 新 的 希 望 二 十 几 年 来, 我 就 为 一 个 男 人 哭 过, 那 时 他 本 科 毕 业 我 读 硕 士 研 究 生 时, 由 于 受 我 的 影 响, 本 系 三 四 年 级 的 学 生 蜂 涌 至 微 电 子 所 参 加 科 研 夜 里 看 十 二 层 高 的 科 技 大 楼, 灯 火 通 明 热 闹 非 凡 的 那 一 层 就 是 微 电 子
所 那 时, 我 在 微 电 子 所 学 生 中 的 地 位 仿 佛 伊 拉 克 的 萨 达 姆, 手 下 兵 将 极 多 我 写 第 一 本 书 时, 有 几 个 人 老 向 我 伸 着 手 等 待 输 入 稿 子, 就 象 火 车 站 行 乞 的 人 那 样 阴 魂 不 散, 使 我 没 时 间 慢 腾 腾 地 打 草 稿 我 就 象 金 庸 写 小 说, 有 如 神 来 之 笔, 想 到 那 里 就 写 到 那 里, 写 了 一 段 他 们 马 上 输 入 一 段, 一 气 呵 成 那 本 科 技 书 写 得 很 滑 稽, 同 学 们 看 得 笑 出 眼 泪, 编 辑 看 了 拍 案 叫 绝, 只 改 了 几 个 字 就 出 版 了 那 时 侯 我 的 心 情 是 如 此 之 好, 为 一 男 同 学 乱 蓬 蓬 的 头 发 写 了 一 篇 散 文, 并 送 他 一 把 梳 子 又 把 一 女 同 学 的 实 验 报 告 写 成 评 书 我 的 文 笔 大 概 就 是 这 样 练 出 来 的 这 一 群 学 生 中, 戴 玉 宏 史 江 一 和 马 晓 华 是 我 最 好 的 伙 伴 ( 我 们 都 属 于 牛 ) 戴 玉 宏 其 貌 甚 帅, 眉 中 有 一 根 白 毛 闪 闪 发 光, 因 此 号 称 白 眉 鹰 王 白 眉 鹰 王 武 功 了 得, 是 我 软 件 产 品 的 核 心 开 发 人 员, 我 们 合 作 最 深 最 久 后 来 我 开 公 司, 他 就 从 广 州 辞 职 到 杭 州 为 我 助 威, 令 我 感 动 不 已, 可 见 读 大 学 时 期 我 们 有 多 铁! 戴 玉 宏 有 一 次 打 饱 嗝, 整 整 打 了 两 天 两 夜, 我 差 点 心 疼 死 我 尚 未 发 迹 之 日 曾 与 戴 玉 宏 在 校 园 里 卖 花, 无 人 问 津, 就 请 电 子 工 程 系 的 鲁 洁 救 助 鲁 洁 温 柔 貌 美, 她 一 言 一 笑 尤 如 春 风 吹 拂 苏 堤 的 杨 柳, 令 人 心 里 一 荡 再 荡 顷 刻 间 就 有 男 生 围 观, 有 人 看 花, 有 人 看 贵 妃, 鲁 洁 一 走, 我 和 戴 玉 宏 可 怜 得 就 象 两 根 蜡 烛 鲁 洁 读 大 学 时 调 皮 捣 蛋, 到 四 年 级 时 还 不 太 会 编 程 她 的 本 科 毕 业 设 计 是 仿 真 雷 达 跟 踪 飞 行 物, 程 序 基 本 上 全 是 我 编 写 的 我 已 记 不 起 用 了 什 么 公 式, 只 知 道 每 次 计 算 后 都 弹 出 一 个 对 话 框 报 告 长 官, 击 中 目 标 鲁 洁 毕 业 后 到 深 圳 的 一 家 软 件 公 司 工 作, 几 年 一 过, 她 成 了 行 家 再 与 她 交 谈 时, 我 只 有 听 的 份, 象 鸡 啄 米 一 样 点 头 史 江 一 和 马 晓 华 都 是 狭 西 人, 和 马 佩 军 一 样 厚 道 热 情 史 江 一 性 格 稳 重, 属 于 你 办 事 我 放 心 的 那 类 人 我 对 微 电 子 专 业 一 窍 不 通, 全 靠 他 帮 我 混 过 实 验 这 一 关 后 来 我 开 公 司 失 败, 陷 入 经 济 危 机, 就 把 希 望 工 程 的 一 个 小 孩 托 给 了 他 马 晓 华 是 我 最 不 放 心 的 人 他 常 常 为 别 人 做 事 情, 但 热 情 过 头 就 忘 了 自 己 的 事 情 有 几 个 不 道 德 的 学 生 就 利 用 他 的 这 个 缺 点, 经 常 使 唤 他, 并 且 借 他 的 钱 不 还 马 晓 华 喜 欢 为 那 些 人 卖 命 并 且 挨 训, 他 总 是 在 受 虐 待 够 了 的 时 候 再 跟 我 们 嘀 咕, 我 们 实 在 气 不 过, 只 好 对 着 他 的 屁 股 追 加 一 顿 拳 脚, 并 给 他 一 个 绰 号 受 虐 狂 但 愿 他 找 个 好 老 婆, 我 可 以 早 日 放 心 我 们 这 一 群 小 伙 子 同 时 喜 欢 上 一 个 女 孩 子, 她 叫 姜 姗, 是 她 班 里 的 四 大 美 人 之 一 我 们 不 仅 没 有 争 风 吃 醋, 而 且 心 甘 情 愿 地 让 她 坐 遍 每 个 人 的 脖 子 姜 姗 小 姐 5 岁 时 她 爸 姜 晓 鸿 成 了 我 的 同 事, 我 们 经 常 一 起 去 钓 鱼, 亲 得 象 一 家 人 姜 姗 喜 欢 大 喊 大 叫, 声 音 高 过 帕 瓦 罗 蒂, 我 们 教 唆 她 喊 她 爸 姜 球 球 我 常 带 姜 姗 到 小 炒 摊 去 吃 女 孩 子 不 敢 吃 的 东 西, 并 哄 她 : 世 上 最 好 吃 的 东 西 是 鸡 屁 股
她 无 师 自 通 地 加 上 一 句 : 世 上 最 好 听 的 屁 是 鸡 放 的 屁 我 常 想 着 将 来 生 个 儿 子 并 把 他 培 养 成 天 才, 但 如 果 能 有 姜 姗 这 样 的 女 儿, 不 要 儿 子 也 罢 在 本 科 三 年 级 我 第 一 次 参 加 星 火 杯 竞 赛 并 获 得 软 件 二 等 奖 后, 马 上 成 为 低 年 级 学 生 眼 中 的 明 星 我 义 务 当 上 了 一 年 级 学 生 的 上 机 辅 导 员 一 天 晚 上 我 巡 视 机 房, 一 女 生 请 求 帮 助 我 见 屏 幕 上 空 白 一 片, 根 本 没 有 一 行 程 序, 十 分 疑 惑 地 问 : 什 么 问 题? 没 有 问 题 她 把 书 往 我 手 上 一 塞 说 : 这 些 作 业 你 帮 我 做 然 后 就 自 个 子 跟 她 的 同 学 玩 乐, 把 我 撇 在 一 边, 似 乎 我 辛 辛 苦 苦 地 学 习 就 是 为 了 给 她 做 作 业 我 定 神 对 她 细 看, 发 觉 她 简 直 就 是 射 雕 英 雄 传 里 的 黄 蓉 再 世, 顿 时 心 就 突 突 突 直 跳 当 天 晚 上 我 没 睡 着, 接 下 几 天 的 课 不 知 所 云 在 选 修 课 操 作 系 统 考 试 时, 我 给 家 里 写 了 一 封 超 短 信 : 请 快 寄 钱 来, 我 谈 恋 爱 了 我 交 了 白 卷 直 奔 她 去 我 的 初 恋 只 有 两 个 月, 却 让 我 思 念 了 8 年 她 离 我 而 去 时 没 有 任 何 理 由, 而 我 却 失 魂 落 魄 在 我 本 科 毕 业 前 的 18 个 月 里, 白 天 我 狂 热 工 作 强 作 笑 容, 夜 深 人 静 时 心 痛 如 刀 割 而 无 法 抑 制 没 有 人 为 我 疗 伤, 我 是 硬 挺 过 去 的, 这 一 段 经 历 使 我 日 后 心 理 承 受 能 力 极 强 后 来 我 开 公 司 的 失 败 虽 然 对 信 心 有 所 打 击, 但 根 本 无 痛 可 言 我 们 分 手 后 并 未 成 为 陌 生 人, 就 象 两 只 刺 猬, 离 得 远 了 就 有 点 留 恋, 离 得 近 了, 就 刺 着 对 方 认 识 她 时 我 虽 然 已 略 显 才 气, 但 并 不 具 备 成 熟 男 人 的 魅 力, 很 多 事 情 我 并 不 知 道 怎 么 去 把 握 有 时 喜 欢 并 不 能 成 为 爱, 感 情 也 许 是 永 远 研 究 不 透 的 学 问 我 读 硕 士 研 究 生 时 有 了 一 群 生 机 勃 勃 的 朋 友, 感 情 的 伤 痛 被 淹 没 了 朋 友 堆 里 夹 着 一 位 女 生, 她 文 雅 而 富 有 气 质 平 日 里 无 拘 无 束, 大 伙 戏 称 她 是 我 的 秘 书 我 的 言 行 举 止 和 穿 着 都 经 过 她 的 调 教, 俩 人 出 双 入 对, 十 分 亲 近, 不 知 不 觉 有 了 感 情 别 人 已 经 把 我 们 当 成 恋 人, 我 和 她 牵 着 小 姜 姗 散 步 时, 简 直 就 象 天 堂 里 的 一 家 人 可 是 我 当 时 着 迷 于 事 业, 认 为 自 己 不 久 将 干 一 番 惊 天 动 地 的 事 鉴 于 史 玉 柱 在 创 业 时 就 离 过 婚, 所 以 我 认 为 感 情 是 事 业 的 累 赘, 两 者 不 可 得 兼 更 糟 糕 的 是, 我 和 第 一 个 朋 友 藕 断 丝 连, 偏 偏 她 俩 是 同 班 同 学 我 知 道 脚 踩 两 只 船 没 有 好 下 场, 可 我 的 的 确 确 同 时 喜 欢 着 两 个 人, 并 梦 想 她 俩 能 合 二 为 一 我 情 愿 被 人 指 责, 也 不 愿 掩 饰 真 实 的 感 觉 有 时 她 俩 一 同 走 过, 我 站 在 路 上 丢 了 魂 似 的 看 着 俩 人 的 背 影, 任 凭 看 热 闹 的 人 指 指 点 点
我 和 第 二 个 朋 友 已 经 有 了 很 深 的 感 情, 她 毕 业 后 我 曾 坐 火 车 千 里 送 鲜 花 给 她, 让 她 感 动 过 而 我 固 执 的 性 格 和 对 初 恋 的 思 念 终 于 让 她 心 碎 尽 管 我 们 已 经 几 年 没 见, 我 依 然 看 得 见 她 留 在 我 心 里 的 那 颗 眼 泪 我 在 西 电 六 年 半 的 学 习 和 生 活 也 许 是 一 生 中 最 珍 贵 的, 叫 我 怎 能 不 爱 西 电 两 年 前 我 回 西 电, 惊 奇 地 发 现 校 园 里 房 前 屋 后 长 满 了 待 收 割 的 小 麦! 这 所 大 学 是 从 事 电 子 科 技 的, 种 小 麦 干 啥 呀? 朱 总 理 曾 讲 过 : 目 前 国 家 粮 食 充 足, 再 来 三 年 自 然 灾 害 也 不 怕 现 在 国 泰 民 安, 似 乎 用 不 着 深 挖 洞, 广 积 粮 吧 我 素 知 西 电 提 倡 勤 俭 节 约 自 力 更 生, 但 与 其 种 小 麦 还 不 如 种 蔬 菜 呢 老 同 学 告 诉 我, 种 小 麦 是 为 了 应 付 211 工 程 ( 为 21 世 纪 选 拔 100 所 重 点 大 学 ) 的 检 查 团, 因 为 211 工 程 有 较 高 的 绿 化 指 标 偏 偏 检 查 赶 在 冬 天, 那 时 的 西 北 极 难 长 草 西 电 本 来 就 人 多 地 少, 地 上 一 长 草 马 上 就 会 被 谈 恋 爱 的 学 生 给 折 磨 死 一 到 冬 天, 整 个 校 园 就 光 秃 秃 一 片 用 小 麦 绿 化 校 园 可 谓 千 古 绝 笔, 检 查 团 的 那 些 权 贵 人 士 早 已 五 谷 不 分, 岂 知 所 见 的 草 坪 乃 是 麦 田 浙 江 大 学 依 山 而 傍 西 湖, 是 个 美 丽 而 高 贵 的 大 学 1997 年 春 天, 我 就 象 干 儿 子 那 样 挤 进 她 的 怀 抱, 并 期 望 得 到 关 爱 我 到 了 向 往 已 久 的 计 算 机 辅 助 设 计 与 图 形 学 (CAD&CG) 国 家 重 点 实 验 室 读 博 士 学 位 导 师 是 石 教 英 教 授, 石 老 师 虽 然 年 过 六 旬, 但 精 力 充 沛, 红 光 满 面, 施 拉 普 纳 不 及 他 半 分 精 神 我 幸 福 地 幻 想 着 大 干 一 番 自 己 喜 爱 的 专 业, 并 计 划 在 35 岁 左 右 成 为 实 验 室 主 任 开 学 的 第 一 天, 我 兴 冲 冲 地 奔 向 实 验 室 进 门 不 到 5 分 钟, 就 因 不 懂 规 矩 被 看 门 的 年 青 女 子 训 了 几 次 为 了 不 再 冒 犯 规 矩, 我 就 老 老 实 实 地 抓 起 一 份 计 算 机 报 纸 并 且 站 着 阅 读, 心 想 这 下 不 得 罪 谁 了 吧! 突 然 一 个 气 得 脸 色 铁 青 的 男 人 ( 机 房 管 理 员 之 一 ) 对 我 断 喝 : 你 在 干 什 么! 你 怎 么 可 以 不 经 允 许 就 翻 看 别 人 的 报 纸! 似 乎 我 是 他 一 生 中 见 到 的 最 无 耻 的 人 我 就 象 一 个 情 窦 初 开 的 少 年 飘 飘 然 地 去 拥 抱 梦 中 情 人, 不 料 迎 来 两 个 耳 光, 此 下 场 比 猫 和 老 鼠 中 的 猫 还 惨 如 果 这 两 个 年 轻 人 有 幸 看 到 我 这 篇 文 章, 应 该 好 好 悔 过 自 新, 她 与 他 的 工 作 态 度 打 击 过 数 十 个 学 生 的 积 极 性 我 本 是 因 为 向 往 CAD&CG 实 验 室 而 来 的, 得 到 的 却 是 极 坏 的 第 一 印 象 不 出 几 日, 我 就 发 现 实 验 室 里 人 们 大 多 轻 言 寡 语 小 心 翼 翼 井 水 不 犯 河 水 初 到 此 实 验 室 的 北 方 同 学 极 为 迷 惑 地 问 我 : 你 们 浙 江 人 是 不 是 都 这 个 德 性? 我 看 你 不 太 象 嘛 我 颇 费 周 折 地 考 入 CAD&CG 实 验 室, 却 尚 未 热 身 就 全 力 而 退, 决 心 自 立 门 户 至 今 我 都 没 有 用 实 验 室 的 计 算 机 编 过 一 行 程 序
刚 读 博 时 我 穷 困 潦 倒, 只 有 一 床, 一 盆, 一 壶, 一 碗 我 那 些 穷 朋 友 们 象 挤 牙 膏 一 样 挤 一 些 钱 资 肋 我 我 买 了 一 台 计 算 机, 在 宿 舍 里 开 发 软 件 产 品 可 视 化 软 件 开 发 工 具 VA4.0 1997 年 8 月, 我 去 北 京 参 加 首 届 中 国 大 学 生 电 脑 大 赛 软 件 展 示, 路 费 也 是 借 的 同 学 为 我 壮 胆 时 说 : 如 果 不 能 获 奖, 就 回 到 实 验 室 干 活 吧 我 说 一 定 会 拿 第 一 名, 不 然 去 干 啥 在 软 件 展 示 时, 我 们 发 现 很 多 好 的 作 品 是 国 家 的 科 研 项 目, 根 本 不 是 学 生 个 人 的 作 品, 违 背 了 竞 赛 的 宗 旨 如 果 允 许 这 样 做 的 话, 我 应 该 运 几 条 生 产 线 过 来 我 写 了 一 份 抗 议 书, 找 了 十 几 个 人 签 名 ( 很 多 人 感 恨 而 不 敢 签 ) 但 抗 议 能 顶 屁 用, 我 参 加 过 的 科 技 竞 赛 见 过 的 科 研 鉴 定 多 了, 哪 一 次 我 没 看 到 虚 假? 我 写 抗 议 书 是 因 为 眼 里 容 不 得 沙 子 如 果 我 的 专 业 是 政 治, 早 就 坐 牢 去 了 这 次 竞 赛 选 出 十 个 软 件 明 星, 只 有 我 的 软 件 和 清 华 大 学 博 士 生 的 项 目 值 得 一 看 他 的 项 目 水 平 很 高, 但 那 不 是 他 个 人 的 作 品 ( 评 委 甚 至 认 识 他 的 导 师, 知 道 项 目 的 来 龙 去 脉 ) 综 合 诸 多 因 素, 我 的 作 品 被 评 为 第 一, 他 的 项 目 被 评 为 第 二 组 委 会 来 拍 电 视, 可 是 找 不 到 浙 江 大 学 的 展 板 因 为 浙 江 大 学 没 有 任 何 准 备, 我 是 一 个 人 来 的, 我 的 作 品 夹 在 杭 电 的 作 品 之 中, 没 名 没 姓 我 只 好 从 塑 料 袋 上 剪 下 浙 江 大 学 四 个 字, 贴 在 展 板 上 撑 撑 门 面 自 新 中 国 成 立 以 来, 清 华 大 学 就 一 直 在 浙 江 大 学 头 上 作 威 作 福, 我 好 歹 也 争 了 一 口 气 可 是 颁 奖 时, 组 委 会 竟 按 地 方 顺 序 从 北 京 念 起, 我 沦 落 到 第 七, 差 点 咽 气 我 曾 在 上 海 的 一 辆 公 共 汽 车 上 与 一 位 北 京 来 的 旅 客 聊 天, 此 公 极 健 谈 似 乎 他 到 上 海 旅 游 的 目 的 就 是 为 了 发 掘 北 京 的 优 越 性 见 我 挂 着 浙 江 大 学 的 红 色 校 徽, 且 对 清 华 北 大 并 不 神 往, 不 禁 十 分 迷 惑, 就 问 : 浙 江 大 学 在 浦 东 还 是 浦 西? 我 要 去 看 看 北 京 已 经 是 极 度 优 越 了, 那 里 的 处 长 局 长 比 我 见 过 的 土 豆 还 多 就 请 不 要 把 什 么 鸡 毛 蒜 皮 的 好 东 西 都 拿 走, 给 我 们 留 点 希 望 吧 1997 年 11 月, 在 穷 得 快 挨 饿 的 时 候, 我 获 得 了 中 国 大 学 生 跨 世 纪 发 展 基 金 特 等 奖 ( 全 国 共 20 名, 奖 金 1 万 元 ), 到 人 民 大 会 堂 领 奖 给 我 们 出 钱 的 是 一 个 靠 资 本 运 作 发 财 的 集 团, 在 宴 会 前, 该 集 团 领 导 人 和 我 们 座 谈, 他 什 么 不 好 吹 偏 偏 吹 自 己 是 个 高 科 技 企 业 : 我 们 主 要 从 事 生 物 工 程, 几 年 前 就 掌 握 了 克 隆 技 术, 英 国 的 克 隆 羊 简 直 是 小 菜 一 碟 我 们 在 东 北 有 个 农 场, 新 品 种 的 小 麦 长 得 比 人 还 高, 麦 粒 跟 葡 萄 一 样 大, 你 们 不 久 都 会 喝 到 用 这 种 小 麦 酿 的 啤 酒 我 如 果 去 美 国 炒 个 总 统, 那 就 跟 玩 似 得 我 们 几 个 获 奖 的 博 士 生 吃 饱 喝 足 拿 了 钱 后, 关 起 门 来 把 那 个 老 板 臭 骂 一 通, 扬 长 而 归 别 以 为 给 钱 就 能 让 我 们 说 好 话! 刚 拿 了 跨 世 纪 发 展 基 金, 又 马 上 获 得 浙 江 省 青 少 年 英 才 奖, 浙 江 大 学
也 给 我 发 奖 学 金 比 起 那 些 一 个 月 只 有 300 元 工 资 的 博 士 生 们, 我 简 直 是 暴 富 还 了 朋 友 们 给 我 的 救 济 款 后, 仍 然 是 个 富 翁 我 老 是 觉 得 手 头 的 钱 是 抢 劫 来 的, 心 里 不 踏 实 于 是 找 浙 江 大 学 校 团 委 诉 苦, 请 校 团 委 把 我 的 不 义 之 财 捐 给 浙 大 的 贫 困 学 生 校 团 委 的 老 师 热 情 而 坦 诚, 说 愿 意 等 我 成 为 真 正 的 富 翁 时 再 接 受 捐 款, 现 在 不 能 让 我 杀 鸡 取 卵 但 为 了 能 让 我 表 达 心 意, 建 议 我 资 助 希 望 工 程 的 中 学 生, 让 我 选 了 5 个 初 一 的 学 生, 每 个 学 生 500 元 我 轻 浮 地 以 为 自 己 真 的 帮 助 了 5 个 中 学 生, 直 到 1998 年 暑 假 我 见 到 了 其 中 的 一 个 中 学 生, 才 发 现 自 己 做 的 好 事 只 不 过 杯 水 车 薪 而 已 我 是 到 了 自 己 贫 困 失 意 时 才 真 正 去 帮 助 那 些 孩 子 的 在 1997 年, 我 在 学 生 时 期 的 荣 誉 已 登 峰 造 极, 觉 得 自 己 的 翅 膀 已 经 硬 了, 不 想 再 混 下 去 我 总 以 为 自 己 是 第 二 个 史 玉 柱, 应 该 开 个 软 件 公 司 来 振 兴 民 族 软 件 产 业 我 曾 到 东 软 集 团 ( 沈 阳 ) 参 加 民 族 软 件 产 业 青 年 论 坛, 大 不 咧 咧 地 作 了 一 次 演 讲 ( 现 在 发 现 演 讲 的 内 容 没 有 一 项 是 可 以 操 作 的 ) 杭 州 有 一 个 记 者 来 采 访 我, 我 谈 了 一 天 的 理 想, 记 者 还 是 没 听 明 白, 干 脆 自 己 写 新 闻 报 道, 并 且 含 蓄 地 做 了 一 个 广 告 : 万 事 俱 备, 只 待 投 资 由 于 我 能 说 会 道, 频 频 上 电 视, 引 来 近 10 个 投 资 者 我 选 择 了 一 位 年 龄 比 我 大 一 倍 非 常 精 明 的 商 人 作 合 伙 人, 成 立 了 杭 州 临 境 软 件 开 发 有 限 公 司 彼 时, 我 可 谓 光 芒 四 射, 名 片 上 印 着 以 振 兴 民 族 软 件 产 业 为 已 任, 做 真 实 正 直 优 秀 的 科 技 人 员 浙 江 大 学 想 开 除 我, 被 我 晓 之 以 理 动 之 以 情 安 抚 住 我 当 时 想 开 发 一 套 名 为 Soft3D 的 图 形 系 统, 此 系 统 下 至 开 发 工 具, 上 至 应 用 软 件, 无 所 不 包 公 司 名 字 起 为 临 境 有 两 个 含 义 : 一 是 表 示 身 临 其 境, 这 是 我 对 图 形 技 术 的 追 求 ; 二 是 表 示 快 到 了 与 SGI 公 司 称 兄 道 弟 的 境 界, 这 是 我 对 事 业 的 追 求 临 境 这 个 名 字 我 在 读 本 科 时 就 已 经 想 好 了,1997 年 底 公 司 成 立 的 那 一 天, 我 有 一 种 媳 妇 熬 成 婆 的 悲 壮 感 觉 我 从 实 验 室 挖 来 一 位 聪 明 绝 顶 的 硕 士 生 做 技 术 伙 伴 他 叫 周 昆, 年 龄 很 小 (1978 年 出 生 ), 研 究 能 力 极 强 如 果 按 照 浙 江 大 学 计 算 机 系 博 士 生 毕 业 的 论 文 要 求, 他 入 学 读 硕 士 的 那 一 天 就 可 以 博 士 毕 业 周 昆 的 头 明 显 比 我 的 大, 估 计 其 脑 容 量 至 少 是 我 1.5 倍 我 曾 经 以 师 兄 的 身 份 为 他 洗 过 一 双 袜 子, 他 因 此 觉 得 我 是 个 好 人 我 俩 一 拍 即 合, 常 常 为 Soft3D 的 设 计 方 案 自 我 倾 倒 一 想 到 Microsoft 公 司 的 二 维 Windows 系 统 即 将 被 Soft3D 打 击 得 狼 狈 不 堪 时, 我 们 就 乐 不 可 支, 冲 劲 十 足 我 已 经 把 振 兴 民 族 软 件 产 业 列 入 日 程, 并 且 提 前 担 忧 将 来 钱 挣 得 太 多 用 不 完 该 怎 么 办 1998 年 5 月 份, 我 们 做 了 一 套 既 不 是 科 研 又 不 全 象 商 品 的 软 件 软 件 产 品 宣 传 了 几 个 月, 并 没 有 出 现 订 单 如 潮 接 应 不 暇 的 局 面 ( 事 实 上 压 根 就 没 有 反 应 ) 我 意 识 到 没 有 找 对 市 场, 但 仍 觉 得 产 品 中 的 一 些 技 术 很 有 价 值, 将 它 改 装 成 其 它 软 件 也 许 能 开 创 东 方 不 亮 西 方 亮 的 新 局 面 于 是 我 向 只 有 一 面 之 缘 尚 在 北 大 方 正 工 作 的 周 鸿 一 求 助 他 是 真 正 的 软 件 高 手, 当 我 小 心 翼 翼 地 展 示 约 10 万 行 C++ 代 码 的 软 件 时, 他 竟 在 十 几 分 钟 内 就 指 出 多 处 重 大 的 设 计 错 误, 使 我 目 瞪 口 呆 地 意 识 到 整 个 软 件 系 统 的 价 值 为 零 那 种 心 痛
啊, 就 象 眼 睁 睁 看 着 孩 子 被 狼 吃 掉 一 样 到 1998 年 10 月, 我 用 光 了 30 万 元 资 金 周 鸿 一 再 一 次 从 北 京 飞 到 杭 州, 三 下 五 除 二 替 我 把 只 活 了 一 年 的 公 司 给 关 闭 掉 他 放 心 不 下, 觉 得 我 恶 病 需 用 猛 药 补, 于 是 意 犹 未 尽 地 把 我 捉 到 北 大 方 正 插 在 他 管 辖 的 部 门, 让 我 学 习 怎 样 做 事 情 北 京 寒 冷 的 冬 天 可 以 营 造 一 种 凄 凉 的 气 氛, 冲 去 一 切 可 以 自 我 原 谅 的 借 口 我 并 不 是 太 爱 虚 荣 的 人, 知 道 这 次 失 败 是 我 的 毛 病 积 累 到 一 定 水 准 忍 不 住 喷 发 出 来 的 结 果 我 绝 不 能 以 年 纪 尚 轻 不 太 懂 市 场 与 管 理 为 理 由 轻 率 地 敷 衍 过 去 从 北 大 方 正 劳 改 了 两 个 月 回 来, 我 心 服 口 服 地 承 认 失 败 了 我 把 察 觉 到 的 数 十 个 毛 病 列 出 来, 日 后 一 个 一 个 克 服 掉 我 写 的 软 件 工 程 思 想 一 书, 大 部 分 内 容 取 自 我 开 公 司 失 败 的 教 训 录 我 现 在 能 客 观 地 从 可 行 性 分 析 角 度 说 明 我 和 投 资 方 所 犯 的 主 要 错 误, 以 祭 我 那 幼 年 夭 折 的 软 件 公 司 我 的 主 要 错 误 : (1) 年 青 气 盛, 在 不 具 备 条 件 的 情 况 下, 想 一 下 子 做 成 石 破 天 惊 的 事 我 的 设 计 方 案 技 术 难 度 很 大 ( 有 一 些 是 热 门 的 研 究 课 题 ), 只 有 30 万 元 资 金 的 小 公 司 根 本 没 有 财 力 与 技 术 力 量 去 做 这 种 事 分 析 经 济 与 技 术 可 行 性, 即 可 否 定 我 的 设 计 方 案 (2) 我 以 技 术 为 中 心 而 没 有 以 市 场 为 中 心 去 做 产 品, 以 为 自 己 喜 欢 的 软 件 别 人 也 一 定 喜 欢 我 涉 足 的 是 在 国 内 尚 不 成 气 候 的 市 场, 我 无 法 估 计 这 市 场 有 多 大, 人 们 到 底 要 什 么 伙 伴 们 跟 着 我 瞎 忙 乎 一 整 年, 结 果 做 出 一 个 洋 洋 洒 洒 没 人 要 的 软 件 分 析 市 场 可 行 性 也 可 以 否 定 我 的 设 计 方 案 (3) 我 做 到 了 真 实 正 直, 但 并 没 有 达 到 优 秀 的 程 度 我 曾 得 到 很 多 炫 目 的 荣 誉, 但 学 生 时 代 的 荣 誉 只 是 一 种 鼓 励, 并 不 是 对 我 才 能 和 事 业 的 确 认 正 因 为 我 不 够 优 秀, 学 识 浅 薄, 加 上 没 有 更 高 水 平 的 人 指 点 我, 才 会 把 事 情 搞 砸 了 投 资 方 的 主 要 错 误 : (1) 投 资 方 是 个 精 明 的 商 人, 他 把 我 的 设 计 方 案 交 给 美 国 的 一 个 软 件 公 司 分 析, 结 论 是 否 定 的 但 他 觉 得 我 这 个 人 很 有 利 用 价 值, 希 望 可 以 做 成 功 其 它 事 情, 即 使 Soft3D 软 件 做 不 成 功, 只 要 挣 到 钱 就 行 这 种 赌 博 心 态 使 得 正 确 的 可 行 性 分 析 变 得 毫 无 价 值 (2) 由 于 我 不 懂 商 业, 又 象 所 有 单 纯 的 学 生 那 样 容 易 相 信 别 人 他 让 我 写 下 了 不 公 正 的 合 同, 我 竟 然 向 他 借 钱 买 下 本 来 就 属 于 我 的 30% 技 术 股 份 他 名 为 投 资 方, 实 质 上 双 方 各 出 了 一 半 的 资 金 ( 他 出 51%, 我 出 49%) 他 在 明 知 Soft3D 软 件 不 能 成 功 的 情 况 下, 却 为 了 占 我 的 便 宜 而 丧 失 了 应 有 的 精 明, 最 终 导 致 双 方 都 损 失
关 闭 公 司 时, 他 搬 走 了 所 有 的 固 定 财 产 我 明 明 投 入 了 技 术, 又 亏 了 15 万 元, 却 一 无 所 得 几 个 月 后 当 我 意 识 到 不 公 平 而 找 他 协 商 时, 他 说 : 只 能 怨 你 自 己 愚 蠢, 读 到 博 士, 连 张 合 同 都 看 不 懂 我 觉 得 自 己 在 此 事 上 虽 愚 但 不 蠢, 真 实 正 直 的 品 质 加 上 不 懈 的 努 力 会 让 我 变 得 有 智 慧 自 己 的 奋 斗 没 什 么 可 以 后 悔 的, 学 到 的 远 比 失 去 的 多, 下 一 次 会 做 得 更 好 公 司 关 闭 后, 我 就 面 壁 反 省, 补 习 基 础, 准 备 为 几 年 之 后 东 山 再 起 养 精 蓄 锐 1999 年 1 月, 有 一 个 民 营 企 业 家 G 先 生 向 我 请 教 一 个 问 题 : 我 给 一 个 年 轻 人 投 资 了 100 万 元, 建 立 一 家 从 事 环 保 信 息 应 用 开 发 的 软 件 公 司 他 曾 许 诺 一 年 内 创 利 润 上 千 万 元, 可 是 才 过 去 5 个 月, 他 就 把 100 万 元 用 完 了, 什 么 也 没 挣 到 我 实 在 不 明 白 是 怎 么 回 事, 请 你 帮 我 分 析 分 析 这 位 G 先 生 年 龄 有 我 的 2.5 倍, 曾 在 西 北 当 过 几 十 年 的 技 术 兵, 性 格 豪 爽 他 投 资 的 那 个 年 轻 人 叫 Y( 以 下 称 Y 经 理 ), 自 称 有 英 国 的 管 理 学 文 凭, 能 对 公 司 的 市 场 技 术 管 理 一 把 抓 G 先 生 喜 欢 说 钱 我 没 问 题, 于 是 想 也 不 想 就 投 了 100 万 元, 并 且 给 Y 经 理 40% 的 股 份 G 先 生 请 Y 经 理 到 家 里 座 谈 我 那 时 突 然 狡 猾 起 来, 自 称 是 G 先 生 的 远 房 亲 戚, 在 浙 大 读 半 导 体 物 理, 特 羡 慕 那 些 做 软 件 的 同 龄 人, 渴 望 听 听 Y 经 理 的 高 见 Y 经 理 果 然 信 口 开 河, 滔 滔 不 绝, 连 绵 不 断, 如 黄 河 泛 滥, 一 发 而 不 可 收 拾 我 激 动 地 想 去 参 观 他 的 公 司 和 产 品, 并 表 示 要 抛 弃 物 理 专 业, 立 马 转 向 软 件 专 业 Y 经 理 得 意 而 笑 : 对 于 IT 行 业 你 就 不 懂 了, 我 们 经 营 的 是 一 种 理 念 而 不 是 产 品, 这 是 国 外 最 先 进 的 思 想 你 可 以 来 参 观 我 的 公 司, 但 你 看 不 到 具 体 的 东 西, 只 能 用 心 去 领 会 这 屁 话 比 曹 元 朗 的 诗 还 臭 ( 围 城 ) 我 搞 软 件 只 有 8 年 功 夫, 说 我 不 懂 IT 行 业 并 不 过 分 可 我 读 了 10 年 大 学 都 没 听 到 过 如 此 先 进 的 思 想 如 果 这 是 英 国 管 理 学 教 育 的 成 果, 我 认 为 自 己 已 经 发 现 了 这 个 曾 经 是 日 不 落 帝 国 的 衰 败 的 真 正 原 因, 有 必 要 找 英 国 首 相 切 磋 一 番 我 对 G 先 生 说 : Y 经 理 根 本 不 懂 技 术, 为 人 极 其 浮 夸 应 马 上 关 闭 公 司, 以 绝 后 患 那 100 万 元 你 也 亏 得 起, 就 买 个 教 训 吧 G 先 生 说 : 钱 我 没 问 题, 那 100 万 元 就 算 我 在 澳 门 赌 博 输 掉 了 1999 年 5 月,G 先 生 又 来 找 我 请 教 另 一 个 问 题 他 说 : 小 林 啊, 你 上 次 说 得 很 有 道 理, 我 接 受 了 教 训 我 说 : 那 是 好 事, 不 论 年 龄 大 小, 知 错 就 改 总 是 好 孩 子 嘛
他 叹 了 一 口 气 : 最 近 几 个 月,Y 经 理 又 花 了 我 100 万 元 我 当 时 差 点 给 噎 死, 气 凶 凶 地 训 G 先 生 : 我 早 跟 你 讲 过,Y 经 理 不 是 好 东 西, 叫 你 关 闭 公 司 你 不 听, 你 老 说 钱 没 问 题, 亏 你 200 万 元 活 该 老 先 生 象 犯 了 错 误 的 小 孩 子 : Y 经 理 每 一 次 向 我 要 钱 时, 都 拍 拍 胸 脯 保 证 下 个 月 就 有 利 润, 所 以 我 一 而 再 再 而 三 地 掏 钱 给 他, 希 望 能 救 活 软 件 公 司 现 在 该 怎 么 办? 一 个 有 20 名 职 员 的 软 件 公 司, 程 序 员 只 有 三 四 个, 连 十 羊 九 牧 都 不 如 200 万 元 的 财 务 报 表 中, 有 100 多 万 元 用 于 吃 喝 玩 乐 和 行 贿 这 种 公 司 完 全 无 药 可 救 台 湾 作 家 李 敖 曾 说 过 : 当 你 没 法 扶 一 个 人 上 马 时, 也 许 应 该 拉 他 下 马 从 5 月 份 到 8 月 份, 我 行 侠 仗 义, 替 G 先 生 清 理 软 件 公 司, 根 除 Y 经 理 这 些 败 类 可 是 难 哪, 因 为 G 先 生 投 资 的 公 司 根 本 不 把 G 先 生 放 在 眼 里, 又 岂 能 让 我 插 手 就 在 我 想 方 设 法 卡 住 Y 经 理 的 脖 子 时,Y 经 理 总 能 从 G 先 生 那 里 挖 出 钱 G 先 生 就 象 被 吸 血 鬼 附 身, 却 仍 存 幻 想 : 如 果 吸 血 鬼 能 治 好 我 的 病, 就 让 它 再 吸 些 血 吧 Y 经 理 又 和 一 个 来 自 深 圳 的 骗 子 H 想 了 注 意, 教 唆 G 先 生 再 投 资 100 万 元 新 建 一 个 指 纹 公 司, 说 利 润 将 比 开 发 环 保 信 息 的 应 用 开 发 更 加 可 观 ( 估 计 要 用 亿 来 度 量 ) 就 在 他 们 准 备 签 合 同 之 际, 我 偶 尔 路 过, 发 现 异 常, 便 强 行 阻 止 G 先 生 是 个 好 人, 但 太 顽 固 好 几 次 我 气 极 想 撒 手 不 管, 但 又 不 忍 心 好 人 被 坏 人 欺 负 我 曾 请 求 G 先 生 : 我 求 您 别 再 说 钱 没 有 问 题, 您 的 私 人 财 产 会 被 人 骗 光 请 让 我 把 这 漏 洞 堵 住 吧, 好 让 我 安 心 地 回 学 校 做 完 博 士 学 位 论 文 到 8 月 份, 我 和 G 先 生 的 两 个 儿 子, 伙 同 黑 社 会 的 朋 友, 强 行 把 那 个 软 件 公 司 搬 回 G 先 生 的 工 厂 中, 辞 退 所 有 员 工 现 在 那 个 软 件 公 司 被 别 人 接 管, 仍 然 半 死 不 活, 好 在 每 月 亏 损 不 过 几 万 元,G 先 生 承 受 得 起, 我 就 不 再 去 碰 G 先 生 的 伤 疤 我 以 前 从 未 玩 过 与 人 勾 心 斗 角 的 游 戏, 此 三 个 月 的 经 历 让 我 疲 惫 不 堪 那 个 软 件 公 司 的 员 工 曾 透 露,Y 经 理 的 英 国 文 凭 大 约 是 在 上 海 或 杭 州 某 个 大 专 培 训 班 里 混 来 的 方 鸿 渐 买 美 国 克 莱 顿 大 学 博 士 文 凭 尚 知 羞 耻 ( 围 城 ), 而 Y 经 理 却 趾 高 气 扬 害 得 我 平 白 无 故 为 英 国 教 育 界 担 心, 回 想 起 英 国 鬼 子 曾 打 劫 过 中 国, 倍 感 耻 辱 G 先 生 是 正 人 君 子, 不 防 小 人, 实 在 不 是 现 代 的 商 人 我 和 他 成 了 忘 年 交 G 先 生 第 一 次 见 到 我 时 问 我 工 资 几 何, 我 答 曰 : 300 元, 够 买 几 本 书 G 先 生 甚 为 着 急 : 这 样 的 条 件 怎 么 能 生 活? 你 就 搬 到 我 家 来 住 吧, 我 家 条 件 好, 你 可 以 安 心 地 学 习, 将 来 可 为 国 家 多 作 贡 献 后 来 他 几 次 相 邀, 我 就 看 在 国 家 的 份 上 住 入 他 家, 一 直 住 到 博 士 毕 业 自 从 读 中 学 以 来, 我 第 一 次 享 受 食 来 张 口, 不 用 洗 衣 服 的 奢 侈 唯 一 的 麻 烦 是 我 得 向 很 多 朋 友 解 释 : 我 不 是 被 别 人 养 起 来 了, 是 为 了 国 家 的 利 益, 不 得 已 才 这 么 做 的 G 先 生 是 男 的 不 是 女 的, 并 且 没 有 待 出 嫁 的 女 儿
我 在 读 博 士 学 位 的 三 年 里, 经 历 有 点 奇 特 我 遗 憾 的 是 真 才 实 学 没 有 长 进, 并 且 没 有 了 在 西 电 那 样 的 纯 真 友 情 和 缠 绵 爱 情 略 为 欣 慰 的 是 我 做 了 几 件 感 人 的 事 我 很 想 讲 一 讲 自 己 参 加 希 望 工 程 的 经 历 与 感 受 1998 年 暑 假, 浙 江 省 云 和 县 梅 源 中 学 的 老 师 们 带 希 望 班 几 名 优 秀 学 生 来 到 浙 江 大 学, 其 中 有 受 我 资 助 的 何 晓 丽 同 学 我 才 知 道 初 中 学 生 一 个 学 期 的 学 杂 费 就 要 600 元 何 晓 丽 哭 诉 下 学 期 不 能 再 上 学, 其 它 的 学 生 处 境 相 似 我 以 前 资 助 的 2000 元 是 5 个 人 3 年 平 均 分 派 的, 根 本 不 起 作 用 那 时 侯, 公 司 倒 闭 使 我 债 务 累 累, 并 且 自 信 心 遭 受 十 年 来 最 大 的 打 击 我 在 入 不 敷 出 心 事 重 重 的 情 况 下, 没 有 推 卸 义 务, 而 是 变 本 加 厉 的 去 尽 这 个 义 务 我 在 西 电 的 好 朋 友 史 江 一 替 我 接 管 了 一 个 中 学 生 有 一 个 小 姐 追 求 我, 我 乘 机 给 她 一 个 活 生 生 的 见 面 礼 1999 年 7 月 份, 我 把 工 资 卡 送 给 了 一 个 大 学 生, 自 己 成 了 无 产 阶 级 从 1997 年 11 月 起 到 我 博 士 毕 业 期 间, 我 直 接 或 间 接 地 为 7 个 贫 困 学 生 捐 助 了 约 1 万 元 我 有 了 几 点 感 受 : (1) 对 人 的 帮 助 莫 过 于 给 予 希 望 (2) 人 在 任 何 时 候 都 能 够 帮 助 比 自 己 更 困 难 的 人, 哪 怕 自 己 处 于 困 境 (3) 帮 助 是 要 负 责 任 的, 一 定 要 设 法 做 成 有 意 义 的 结 果 不 负 责 任 的 帮 助 就 是 施 舍 施 舍 缺 乏 诚 意, 不 配 称 为 帮 助 不 少 人 曾 对 我 说 : 你 是 做 大 事 的 人, 不 要 在 小 事 上 浪 费 精 力, 更 不 要 为 了 别 人 而 害 了 自 己 很 多 人 总 以 为 自 己 将 来 是 伟 大 人 物 而 不 愿 做 小 事, 从 而 到 死 也 没 做 成 什 么 有 价 值 的 事 也 有 很 多 人 希 望 自 己 成 功 后 再 去 帮 助 别 人, 无 论 他 最 终 成 功 还 是 失 败, 一 辈 子 也 没 有 帮 助 过 人 还 有 很 多 人 略 有 权 势 或 略 有 名 气 后, 便 觉 得 自 己 吃 喝 玩 乐 放 屁 上 厕 所 都 是 重 要 的 事, 在 他 们 最 能 够 帮 助 人 的 时 候 却 以 太 忙 没 空 为 理 由 不 去 做 好 事 我 也 在 忙 碌 在 奋 斗, 也 渴 望 成 为 伟 大 人 物, 但 我 希 望 让 有 意 义 的 小 事 充 实 一 生 我 还 要 讲 另 一 件 我 常 干 的 小 事 很 多 受 过 高 等 教 育 的 人 保 留 了 随 地 扔 垃 圾 的 风 俗 习 惯, 这 恶 习 就 象 脚 气 那 样 虽 然 不 致 人 于 死 地, 但 能 遗 臭 万 年 即 便 象 浙 江 大 学 这 等 典 雅 的 地 方, 你 都 经 常 可 以 看 见 草 坪 校 门 口 的 废 纸 果 皮 塑 料 袋, 垃 圾 就 如 同 天 使 脸 上 的 一 砣 狗 屎 那 样 鲜 艳, 人 们 竟 然 无 动 于 衷 我 记 不 请 自 己 多 少 次 当 众 当 道 捡 垃 圾, 可 是 几 年 来 我 都 没 有 在 大 学 里 发 现 第 二 个 做 这 种 事 的 人
我 很 想 对 所 有 的 教 授 博 士 硕 士 学 士 们 讲 句 话 : 救 人 并 不 只 是 医 生 干 的 事, 保 护 环 境 也 不 只 是 清 洁 工 干 的 事 只 要 你 多 花 几 秒 钟, 弯 几 次 腰, 就 能 让 环 境 更 加 清 洁, 让 心 灵 更 加 清 洁 我 们 不 必 个 个 道 貌 岸 然, 但 至 少 应 该 做 到 读 书 明 理 那 些 正 在 追 我 和 将 要 追 我 的 小 姐 们, 你 多 捡 一 次 垃 圾 就 多 一 份 希 望, 你 丢 一 次 垃 圾 就 不 再 有 希 望 我 这 样 喋 喋 不 休 地 讲 希 望 工 程 和 捡 垃 圾, 并 不 是 在 沽 名 钓 誉, 也 不 是 在 布 道, 只 是 希 望 我 这 些 金 玉 良 言 能 触 动 更 多 的 自 以 为 自 己 是 高 素 质 的 人 们 我 在 浙 大 有 一 个 值 得 怀 念 的 人, 她 是 管 宿 舍 楼 的 大 妈 在 1999 年 1 月 至 5 月, 我 在 博 士 生 宿 舍 静 心 修 炼 内 功, 大 妈 就 象 我 的 护 法 晚 上 九 点 钟 时, 她 就 会 烧 些 东 西 给 我 吃 我 和 大 妈 非 亲 非 故, 同 学 们 都 不 明 白 大 妈 为 什 么 待 我 好 我 想 那 是 因 为 我 没 把 自 己 当 成 博 士 来 看, 而 是 当 成 人 来 看 5 月 份 后, 我 看 在 国 家 的 份 上 搬 到 一 个 千 万 富 翁 家 里 去 住, 大 妈 也 调 到 熊 猫 馆 当 掌 门 人 我 一 般 隔 几 个 月 去 看 望 大 妈 一 次, 中 秋 节 我 就 和 她 在 一 起 朋 友 们 知 道 我 和 大 妈 有 这 层 关 系, 就 纷 纷 托 大 妈 物 色 女 朋 友 大 妈 果 然 称 职, 她 就 象 特 务 那 样 审 视 大 楼 里 的 女 生 可 大 妈 毕 竟 是 大 妈, 她 采 用 的 标 准 是 几 十 年 前 的 版 本, 无 法 与 现 今 的 兼 容 她 盯 住 了 不 该 盯 的, 却 漏 掉 了 不 该 漏 的, 至 今 都 未 推 销 成 功 一 个 这 件 事 让 我 又 明 白 了 一 个 软 件 工 程 道 理 : 光 有 完 善 的 数 据 库 还 不 够, 还 应 该 提 供 很 好 的 搜 索 引 擎 我 相 信 生 活 科 学 艺 术 中 的 很 多 道 理 是 相 通 的, 于 是 就 不 嫌 人 笑, 写 下 软 件 工 程 思 想 这 本 书, 并 写 下 了 十 年 来 的 故 事, 交 最 后 一 次 作 业 大 学 十 年 给 我 留 下 了 很 多 美 好 的 回 忆, 现 在 可 以 打 上 漂 亮 的 句 号 了 尽 管 我 即 将 告 别 大 学, 但 我 会 终 生 学 习 也 许 我 成 不 了 天 才, 但 还 有 机 会 成 为 天 才 的 爸 爸 我 想 大 声 呼 喊 出 那 种 可 以 用 双 手 把 握 未 来 的 自 豪 我 要 对 年 轻 的 朋 友 们 说 两 句 肺 腑 之 言 : 一 主 动 去 创 造 环 境, 否 则 你 无 法 设 计 人 生 二 生 活 和 工 作 要 充 满 激 情, 否 则 你 无 法 体 会 到 淋 漓 尽 致 的 欢 乐 与 痛 苦 如 果 我 碰 到 上 帝, 只 会 对 他 说 一 句 话 : 你 看 厕 所 去 吧