他山之石:软件质量鉴定问题的初步研究
本文 主要讨 论软件质量鉴定问题的有关内容 。 在一个包 含 有计算机 的系统工程 中, 软件质量鉴定工作是相当重要的 , 因为它影响 到系统可靠性等技术 指标的好坏。 所以 , 应高度重视并 认真研究 软件质量鉴定工作的方法等技术问题 。 软件是依赖于特定硬件条件下 的产品。 既然它是产品 , 也同硬 件设备一样具 有 质量问题 。 开展软件质量鉴定工作是确保整个系统性能的一个重要环节。 但软件质 量鉴定工作与硬件鉴定工作相比 , 有着许多不 同之处 , 其 技 术 难 度更大 , 更为复 杂。 本文结合所 内工 程特点 , 叙述并提 出了用于软件质量 鉴定工作 的初步方案。
一、 软件质量鉴定工作的特点
从软件开发过程来分析 , 最佳的质量鉴 定 ( 管理 ) 工作应贯穿 在 整 个 开发过程之 中 。 这 样 , 可 以早发现问题 , 早解决问题 , 所费时间及代 价均较小 。 许多软件的开发经 验 都已表明: 由于软件产品受到诸多因素的 影响 , 软件自身不可避免的都会存在或多或 少的错误 与缺陷 , 这也就形成了软件产品从 设计直至 运行阶段 , 都处于不断修改、 补充 和完善之 中的 特点。 这也就决 定了软件质量 鉴 定和质量 管理工作 必须 与软件开发工 作相 互 交叉 、 同步进行 。
软件质量鉴定工作 所涉及的不仅仅是一 个软件本身, 还应包括软件功能 及使用、 结 构设计、 流程设 计、 调 试手段、 调试 内容和 调 试 数据等 文字性资料 。 软件应 在经过充分 调 试的基 础 上最后完 成质量 鉴定工作。 在 软件整个开发过程中 , 调试阶段 是 非 常 重要 的 , 调试的 目的不是 为 了 证 明软件的正确 性 , 而是为 了有效地、 更多地发现错误 , 寻 找软件实际功能与设计要求之 间的差距 , 以 便完善、 修改软件。 但 目前实际情况不是这 样 , 任何一位软件设计者都是为 了证明 自己 产品 的正确 而 有选择性的开展调 试工作 , 这 是造成软件质量鉴定工 作复杂、 困难的主要 原因 。
二 、 软件质量鉴定工作的基础
下面从软件开发 的四个阶段 ( 功能设计、模块设计阶 段、 编 码 阶 段、 调试阶段)来说明质量鉴 定工作所需 要 的 技 术基础。
1 . 功能设计阶段
这个阶段主要任务是: 根据系统总体要求, 进行各部分软件的功能分配和规划, 确 定系统内部各软件的联接 关 系 和 系统的输 人、 输出要求。 这一阶 段 内应出的 文件有:
- 软件技术任务书;
- 系统内软 件联接关系图 ;
- 系统 输人、 输出与数据结 构要求说明书。
2 . 模块设 计阶段
模块设 计是指软件设计者根 据软件技术 任务书等文件 , 合理地组织、 安排各部分的 程序结构 , 所用资源 , 处理 优 先 顺 序等工 作 。 对于 涉及到几个部分或几个模块的信息 表示和 信息交换 问 题 , 是 研 究、 讨 论的重 点 。 这一 阶段需要完成的文件有:
- 程序模块功能说 明书;
- 程序模块 层次 和 信息处理 流程图;
- 有关 信息表示和 信息 交换的 约定。
3 . 编码设计阶段
在这 个阶 段中, 设 计人 员利 用某种计算 机语言具体地实现上两 个 阶 段 所设计的内 容。 在这个阶 段 中应具有如 下文 件:
- 程序模块 名、 变量名或文件名等一 览 表
- 程序存贮区、 数据存贮区 、 中间结果 缓存区等计算机内存分配 表
- 文件存贮结构和组织结构说明
- 程序清单 和必要的文字注释
4 . 程序调试阶段
在这个阶段 , 软件设 计人 员要 完成调试 模块和各部分程序 , 发现错误 , 修改完善三 项工作 。 目的是 有效地 、 更多地发现错误 。 这个阶段的技术文件有:
- 程序调试内 容 及 要 求说 明 书 ( 分机级 )
- 软件联试大纲 ( 分系统、 系统级 )
- 程序、 软件调试数据集,
- 程序、 软件调试 ( 联试 ) 结果报告
在实际工 程 中 , 以 上几个工 作阶段之间 不 可能有明确的时 间界限 , 往往会出现工作 交叉、 合并的 现 象。 但以上这 些文件是必需编制的。编制技术文件的 目的有四 个: 将已 确定 的方案用文字 固定下来 , 并遵守执行 , 帮助理解程序或软件的设计思路 , 特别在修 改、 扩充程序时 ; 做为技术资料归 档 , 以便 总结提高 ; 做为质量 鉴定工 作的依据。 但以 前设计人 员对这 个问题重 视不够 , 应该加以 克服。
以 上各个阶段的各个文件对于软件质量 鉴定工作是十分必要的 , 也 是 鉴 定 内容之 一 。 只有在认真阅读各个文件的基础 上 , 才 可能 拟定 出一个有效的 、 全 面的软件考核方 法 , 才可 能对软件性能做 出 较 为 客观的评 价。
三、 软件质量鉴定工作内容
在质量鉴定 中, 随着软件使用环境和处 理对 象的不 同 , 所选取的衡量质量性能项 目 的数量与内容也是不 相同的。 所内设计人 员 开发 的 软件一般属于工程应用类软件; 考虑 到 工程应 用的特点 , 可以选用 如下七项指标 来评价软件质量。
1 . 完整性
一个软件或程序的完整性是指在各种正 常 与异常的运行 ( 信息与设备 ) 条件下 , 软 件或 程序都能保证 各种功 能 正 确 无误 的执 行 , 或都能克服异常条件的影响 , 保证软件 ( 程序 ) 执行 的连续可靠。
实际上 , 一个软件或程序的完整性包括 了两个含义: 第一 , 在功能上 ( 按任务书要 求 ) 软件或程序是完整的 ; 第二 , 在各种条 件下 , 软件或程序的运行是可靠的。 所以 ,一个软件或程序的完整性应该是质量鉴定工 作的首 要内容。
2 . 精度
任何一个软件或程 序都是以某类或某种 信息 ( 数据 ) 为处理对 象, 那 么 这 些 信息 ( 数据 ) 取值的精确性 , 也就成为质量 鉴定 工作中的一项内容。 要求较高精度的 软件 , 往 往在程序运行时 间、 占用资源、 程序设计工 作量和 程序的 复杂性等 方 面 付 出一定的代 价。 所以 , 不 应盲目的追求高精度 , 应根据 工程的实际需要 来确定。 同时 , 精度指标从 另一个侧面反 映了软件或程序的可靠性问题 ( 信息 的可信度 ) 。
3 . 运行效率
一 个软件或程序的运行效率是由信息处 理的实时性 , 资源及设备的利 用 率 两 部分 组 合 而 成 的。 这 两者均以时 间值为衡量尺 度。 运行效率是软件质量鉴定 中应重点考核 的内容 。 一个软件或 程序的运行效率高低 , 直接反映了软件 ( 程序 ) 的总 体 设 计 水平 ( 如软件结构的组 织、 处理功能的安排 、 程 序优化、 人 员水 平和技巧 等 ) , 当然 , 运行 效率也 与硬软件开发 费用、 开发时间、 开发 难易程序等因素有关。 所以 , 不应对信息处 理实时性 和设备利用率提 出过高的要求 , 应 根据实际情况规定适当的指标。 这样 , 可 以 减少开发 费用和时 间 , 也为今后软件扩充留 有余量。 所内的大 部分工 程软件在信息处理 实时性方面要求较严 , 而对设备的利 用率问 题基本上不加考虑 。
4 . 使 用操作
软件或程序的使用操作问题也是软件质 量鉴定工作的内容之一。 软件使用操作主要 是衡量人 机关系 , 考核内容有: 人工操作是 否简洁方便 , 显示 内容是否清晰可辨 , 各种输人输出是否符合习惯和人 体 工 程 学的标 准 , 控制得序运行功能的强弱等。 软件使用 操作的难易程度会影响到软件的 应用效果和 寿 命 , 也是影响软件开发 成败的因素之一。 所以 , 为用户着想 , 设计出灵活简便的使用 操作方式 , 应 是软件开发中需认真执行的一 条设计原则 。
5 . 易读性
也称为可理解性。 这项指标是用来衡量 阅 读、 理解程 序的难易程度。 一个易阅读、 易理解的程 序 , 一定具有良好的、 简明的 程 序静态结 构和程序控制结构。 这样 , 在一些 必要的注释帮助下 , 其他人早可以很快的阅 读 、 理解程序的功能 、 基本 结 构 和 资源需 求 , 为程序修改和扩充提供了有用的信 J白 .。 当 然 , 一个易阅读的程 序不 一定是一 个高运 行效率的程序 , 两 者 存 在 着 一定的制约 关
系。 所以 , 在软件总体设计时 , 应 根 据软件 整体质量要求来确定软件运行效率和易阅读性的具体指标。
6. 可修改性
一 个软件或程 序的可修改性包含静态可 修改和动态可修改两个方面。 静 态修改 一般 完成的是运 算、 输人 输出等操作的修改 , 而 动态修改是指在程序运行 中是否可以完成对 程序 中的某些控制参数或某个控制结构的修 改。 一 个程序具有可修改性是指在修改这 个 程序的某个局 部时 , 不 会影响程序其它 部分 或程序整体的执行顺序、 资源要求及功能操 作的正确性 。 否则 , 在完成某一处理程序的 修改时 , 必须要 对程序的其他部分做适当调 整 , 这 样的程序其可修改性是较差的。 由于 软件在它的整个生命期内 , 修改工 作是不可 避免的。 所以 , 可修改性也是软件设 计和软 件质量 鉴定中应重视的问题。
7. 可扩充性
一 个软件或程序的可扩充性与可 修改性 是两个不同的概念 。 可 扩充性是指软件或程 序在扩充功能时 是否便利 , 在 程 序 控 制结构、资源、 运算能 力、 模块层次 和接 口 关系 中是否留有余量。 具有 良好扩充性的软件应 在扩充功能 时 , 对 已有的程 序不做或少 做改 动 ; 否则 , 可能为了扩充功能而不 得不 重新设计整个程序。 可扩充性和可修改性都是为 了改进和完善软件或程序功能而提出的内容 不相同 的两个指标。 特别在一个新工程中, 可借鉴的软件设 计经 验很少 , 需要通 过工程 实践来总结、 提高 , 那么 , 设计出一 个具 有 良好的扩充性和修改性的软件 , 就可 以收到 事半功倍的效果。
对于工程应 用类软件 , 以 上七项指标都 是较为重 要和需要认真对待的内容。 软件质 量鉴定工作应围绕着这几项指标开展考核 , 然后根据每项指标的具 体 等 级 进行综合评 价 。 有关每项指标的等级标准 和软 件评价问 题将在第六节 中讨论。
四 、 软件质量鉴定的基本步骤
虽然 , 开展软件质量鉴定工作存在着不 少的困难 , 但质量鉴定工作也有一定的工作 方法和工作步骤。 这里仅讨论 一些最基本的 步骤 , 供参考 。 说明一点 : 用于质量鉴定的 软件或程序必须 经过充分的调试 , 这是一基 本条件。
- 根据工 程进度 , 组成有软件设计人员 、系统总体人 员和其他相关人 员参加 的软 件鉴定小组。 小组成 员中应包含该工程的参 加者和非参加者。
- 根据软件设计人 员提供的软件和所 有技术资料 , 软件质量 鉴定小组应完成: 第 一 , 审查软件开发 各阶段 技 术 资 料是否完备 、 充分、 有效 , 软件是 否 经过 充 分调试 ( 从调试方法 、 数据及发现 的 错 误 数来评 价) ,是否具有鉴定资格 ; 第立 ,根据软件设计 任务书和 有关技术资料 , 确定该软件的各项 指标等 级和动态测试的 方法 、 条件 、 数据等。
- 先由小 组成员阅读软件清单 ( 具备 必要 的提 示或注 释 ) , 后由设计人员讲解 自 己设 计的 软件 , 并回答小 组 成员对 软件设计 思想 、 功能、 结构、 异常情况处理、 指令使 用等各方面提 出的质疑 , 小组成员负责对软 件的易读性 、 可修改性和可扩 充性做出评价。
- 模拟 软件正常运行 时所需的条件 , 对软件进行实际测试 , 评价软件的精度和运 行 效率 。
- 设置各种非 正常情况 , 考核软件功 能或操作是否出现了不应有的或不允许的运 行结果 , 评价软件的完整性。
- 由多人对软件进行各种使用操作 , 根据 感受对软件的使用 操作做出评价。
- 根据以 上各项指标获得的等级数 , 综合评价出该软件的质量等级 。 不 要把软件质量鉴定工 作看成很容易完 成的事情 。 实际上 , 以 上各个步骤中都包含 了很 多技术内容 , 每个步骤的实现都有多种 方法可 供选择。 在选择方法不当 时 , 会出现 软件质量鉴定不全面 、 不深入的情况 , 造成 工作上失误 , 甚至 经济上的损失 。 由于存在 着这种可能性 , 所以 , 国外软件行业十分重 视软件开发 技术和质量鉴定 技 术 的 研究工 作 , 积累了许 多经验 和成果。 学 习国外同行 的先进方法和技术 , 结合国内实际 , 大力开 展这方面的研究和应 用工作 , 是保证软件质 量 、 促进 软件行业 和市场发 展的 有效途径。
五、 软件评价问题
在完成各项指标的考核后 , 才可能综合的、完整的、 全 面的评价一 个 软 件 质量情况。在本文 第三节中已给出了衡量软件质量 的七项指标 , 这里主要 讨论各 项指标的 等级 标准和软件综合评价中应注 意的问题 。
1 . 各项指标的 考核等级
标准各项指标的等级设置 和 等 级 标 准见下表:
考虑到工程 应用 类软件为特点 , 不 宜设 置过 多的等级和相 应的 标准。 由于软件应用 领域和应用 环境不同 , 没有必要要求 软件的 各项指标均达到一 级水平 ; 否则 , 在开发 经 费和开发 周期上都是不 可接受的。 所以 , 在 软件开发 初 期 , 就应根 据实际应 用需要 , 在 软件技术任务 书中初步下达软件各项指标应 达到的等级水平 , 并在质量鉴定阶段 , 复审 确定。
2. 软件综合评价中应 注意的问题
由于各种因素的限制或影响 , 决定了软 件各项指标不 可能 、 也不 允许 都具有一级水 平 , 所以 , 应选择并确定软件的主要指标项 和次要指标项 , 注重主要项是否达到或超过所要求的等级。
- 随着应用坏境和应用对 象的变化 , 软 件主要指标项和次要 指标项也应调正 。
- 评 价软件质量的关键在于 综合处理 , 而 依据是软件应达到 技术指标等级和 软件实 际达 到的 技 术指标等级 。 下面的表给出了软件质 量等级 的 基本 标准。
- 在评价软件质量的 同时 , 也应对软件 的完 善 、 改进提 出意见 , 总结设计经 验。
- 在完成 软件质量鉴 定之后 , 应编制出 如 下文件: 软件质量鉴定 报告 、 软件使用 指 南 、 软件设计总结报告 。 这些 报告连 同软件 开 发的其他 文件一起归档保存 。
六、 结束语
随着微型计算机 在国 防和国 民经 济各部 门中的广泛 应用 , 应用 软件的 开发工作 日益 具 有 重要 性和迫 切性 。 在这 些领域 中, 软件 开发 的工作量和 技术难度都较大 , 所以 , 要 快速 、 经济地 获得高质量、 高性能的软 件产 品 , 就必须重视普及和研究有关软件开发 技 术与软件质量鉴定技术。 目前 , 软件的工 程组织、设计和 鉴定工作都存在着一定的困难 和 不足 , 从 方 法 到技术都比较落后 , 难以满 足 工程规模和要求 。 为了尽快地扭 转这种局 面 , 就需要一 方面提高每个软件设计人 员的水平 , 另一方面提高整个软件工程的组织、 管理 、 鉴定工作的技术水平。 同时 , 加强软 件开发和 评价等技术的 研究和 交流工作 , 使 我所在计算机应用 和 信息处理事业上达到国 际八十年代水平。