错误引入软件的方式可归纳为两种特性:程序代码特性,开发过程特性。
程序代码一个最直观的特性是长度,另外还有算法和语句结构等,程序代码越长,结构越复杂,其可靠性越难保证。
开发过程特性包括采用的工程技术和使用的工具,也包括开发者个人的业务经历水平等。
除了软件可靠性外,影响可靠性的另一个重要因素是健壮性,对非法输入的容错能力。
所以提高可靠性从原理上看就是要减少错误和提高健壮性。
三. 提高软件可靠性的方法和技术
1.建立以可靠性为核心的质量标准
在软件项目规划和需求分析阶段就要建立以可靠性为核心的质量标准。这个质量标准包括实现的功能、可靠性、可维护性、可移植性、安全性、吞吐率等等,虽然还没有一个衡量软件质量的完整体系,但还是可以通过一定的指标来指定标准基线。
软件质量从构成因素上可分为产品质量和过程质量。
产品质量是软件成品的质量,包括各类文档、编码的可读性、可靠性、正确性,用户需求的满足程度等。
过程质量是开发过程环境的质量,与所采用的技术、开发人员的素质、开发的组织交流、开发设备的利用率等因素有关。
还可把质量分为动态质量和静态质量。静态质量是通过审查各开发过程的成果来确认的质量,包括模块化程度、简易程度、完整程度等内容。动态质量是考察运行状况来确认的质量,包括平均故障间隔时间(MTBF)、软件故障修复时间(MTRF)、可用资源的利用率。在许多实际工程中,人们一般比较重视动态质量而忽视静态质量。
所定的质量标准度量,至少应达到以下两个目的:
(1).明确划分各开发过程(需求分析过程,设计过程,测试过程,验收过程),通过质量检验的反馈作用确保差错及早排除并保证一定的质量。
(2).在各开发过程中实施进度管理,产生阶段质量评价报告,对不合要求的产品及早采取对策。
确定划分的各开发过程的质量度量:
(1).需求分析质量度量
需求分析定义是否完整、准确(有无二义性),开发者和用户间有没有理解不同的情况,文档完成情况等,要有明确的可靠性需求目标、分析设计及可靠性管理措施等。
(2).设计结果质量度量
设计工时,程序容量和可读性、可理解性,测试情况数,评价结果,文档完成情况等。
(3).测试结果质量度量
测试工时,差错状况,差错数量,差错检出率及残存差错数,差错影响评价,文档等,以及有关非法输入的处理度量。
(4).验收结果质量度量
完成的功能数量,各项性能指标,可靠性等。
最后选择一种可靠度增长曲线预测模型,如时间测量、个体测量、可用性,在后期开发过程中,用来计算可靠度增长曲线的差错收敛度。
在建立质量标准之后,设计质量报告及评价表,在整个开发过程中就要严格实施并及时作出质量评价,填写报告表。