[ 摘要 ] 本文论述了软件的质量要求,在此基础上,论述了 LOGISCOPE 对软件开发的质量保证工作。如何在软件开发的各个阶段使用这些工具,以保证所开发的软件的高可靠性和可维护性等。对 LOGISCOPE 的合理使用,将有助于开发队伍通过 ISO9001 认证,更便于提高开发队伍的 CMM 等级。将 Logiscope 和设计工具 SCADE 结合使用,能够使软件符合 RTCA/DO-178B 、 IEC1508 、 IEC880 和 GJB-2786 对安全 - 关键系统的软件质量要求。
1. 软件的质量要求
软件,是大系统中的重要组成部分;嵌入式软件,是指将软件作为系统的一部分嵌入在系统中,作为系统的一部分使用的软件,这种软件最关键的要求是安全性和高可靠性。特别是在军用领域中更是如此。
因此,必须用有效的手段和软件工具支持和满足嵌入式软件开发、软件测试和评审等单位,以保证他们进行软件质量保证活动。即,要有相应的软件工具支持开发者,以保证在最短的时间内、用最少的费用,开发高质量的软件,以满足客户的需求,同时减少产品交付后的维护费用。
通过对实际工程的统计,会发现在不同的阶段发现和更改一个错误的费用是不同的,下表表明了具体的数据 [1] 。
软件开发阶段 | 编码阶段 | 测试阶段 | 维护阶段 |
发现和更改错误的费用 | 1 倍 | 4 倍 | 16 倍 |
另一方面,统计表明一个项目中, 80% 的错误往往是由 20% 的程序引起的。因此,如何有效的确认和标识出这 20% 的部件是十分重要的。
经验也告诉我们,错误多的程序,其结构、算法、程序风格往往非常复杂。
下表是在各个软件开发阶段各种活动(评审和测试)发现错误的情况 [1] :
发现错误活动 | 每 1000 行发现的错误数 |
需求评审 | 2.5 |
设计评审 | 5.0 |
代码评审 | 10.0 |
集成测试 | 3.0 |
验收测试 | 2.0 |
软件产品同其它工业产品一样,其质量取决于软件的开发过程中对质量的控制。要提高好软件的质量,必须从各个阶段来控制。
LOGISCOPE 是一组工具集。它贯穿于软件开发、代码评审、单元 / 集成测试、系统测试、以及软件维护阶段。
LOGISCOPE 是面向源代码进行工作的。 LOGISCOPE 针对编码、测试和维护。因此, LOGISCOPE 的重点是帮助代码评审( Review )和动态覆盖测试( Testing )。
2 LOGISCOPE 用于 开发阶段
2.1 定义质量模型
重视软件开发质量的公司,应当定义程序员编程规则[2]和质量评价模型。以保证公司所开发的源代码的稳定性性、易维护性、高可靠性和可移植性。
RuleChecker 预定义了 50个的编程规则:
· 名称约定(如:局部变量用小写等);
· 表示约定(如:每行一条指令);
· 限制(如:不能用GOTO语句,不能修改循环体中的计数器等);
用户可以从这些规则中选择,也可以用Tcl、脚本和编程语言定义新的规则。
此外,还提供50个面向安全-关键系统的编程规则。
Audit 以 ISO9126 [3]模型作为质量评价模型的基础。质量评价模型描述了从Halstend、McCabe的度量方法学和VERILOG引入的质量方法学中的质量因素(可维护性、可重用性、等)和质量准则(可测试性、可读性、等)。
工程项目领导或质量管理人员可以根据准则、应用软件的生存周期、合同需求等,挑选并采纳适用于项目需求的质量模型。
2.2 验证、评审和改进代码
RuleChecker 用所选的规则对源代码进行验证。指出所有不符合编程规则的代码,并提出改进源代码的解释和建议。 RulrChecker通过文本编辑器直接访问源代码并指出需要纠正的位置。
Audit 将被评价的软件与规定的质量模型进行比较,用图形形式显示软件质量的级别,因此,质量人员可以把精力集中到需要修改的代码部分。对度量元素和质量模型不一致的地方作出解释并提出纠正的方法。
对软件质量的详细分析, Audit 可用各种图形表示:
· 应用系统的体系结构——调用图显示过程和函数之间的关系。评审应用系统的设计;
· 每个过程和函数的逻辑结构——控制流图显示算法的逻辑路径。用图形表示评审函数的复杂性;
· 与质量模型的一致性——Kiviat图和饼图使质量等级与所选择的参考之间的一致性更加可视化。
3 LOGISCOPE 用于测试阶段
3.1 定义测试准则
在软件测试阶段,最重要的是保证代码的所有路径都被充分的覆盖 [4,5] 。只有那些,经过充分测试的软件才是可信的。特别是高可靠性的软件。
为保证测试的有效性,必须客观地定义可量化的准则和策略以判断何时结束测试阶段。
LOGISCOPE推荐对指令(IB)、逻辑路径(DDP)和调用路径(PPP)的覆盖测试。此外对安全-关键软件还提供了MC/DC的覆盖测试[5]。