一、软件质量
概括地说,软件质量就是“软件与明确地和隐含地定义的需求相一致的程度”。
软件质量是软件与明确地叙述的功能和性能需求、文档中明确描述的开发标准以及任何专业开发的软件产品都应该具有的隐含特征相一致的程度。
定义强调了下述的3个要点:
■软件需求是度量软件质量的基础,与需求不一致就是质量不高。
■指定的开发标准定义了一组指导软件开发的准则,如果没有遵守这些准则,几乎肯定会导致软件质量不高。
■通常,有一组没有显式描述的隐含需求。如果软件满足明确描述的需求,但却不满足隐含的需求,那么软件的质量仍然是值得怀疑的。
影响软件质量的主要因素,是从管理角度对软件质量的度量。可以把这些质量因素分成3组,分别反映用户在使用软件产品时的3种不同倾向或观点。这3种倾向是:产品运行、产品修改和产品转移。

二、软件质量保证措施
软件质量保证(software quality assurance,SQA)的措施主要有:
■基于非执行的测试(复审或评审),主要用来保证在编码之前各阶段产生的文档的质量;
■基于执行的测试(软件测试),需要在程序编写出来之后进行,它是保证软件质量的最后一道防线;
■程序正确性证明,使用数学方法严格验证程序是否与对它的说明完全一致。
1. 技术复审的必要性
正式技术复审的显著优点是,能够较早发现软件错误,从而可防止错误被传播到软件过程的后续阶段。
统计数字表明,在大型软件产品中检测出的错误,60%~70%属于规格说明错误或设计错误,而正式技术复审在发现规格说明错误和设计错误方面的有效性高达75%。由于能够检测出并排除掉绝大部分这类错误,复审可大大降低后续开发和维护阶段的成本。
正式技术复审是软件质量保证措施的一种,包括走查(walkthrough)和审查(inspection)等具体方法。走查的步骤比审查少,而且没有审查正规。
2. 走查
走查组由4~6名成员组成。走查组组长引导该组成员走查文档,力求发现尽可能多的错误。
走查组的任务仅仅是标记出错误而不是改正错误,改正错误的工作应该由该文档的编写组完成。
走查的时间最长不要超过2小时,这段时间应该用来发现和标记错误,而不是改正错误。
走查主要有下述两种方式:
■参与者驱动法
■文档驱动法
3. 审查
■综述:由负责编写文档的一名成员向审查组综述该文档。
■准备:评审员仔细阅读文档。
■审查:评审组仔细走查整个文档。
■返工:文档的作者负责解决在审查报告中列出的所有错误及问题。
■跟踪:组长必须确保所提出的每个问题都得到了圆满的解决。
通常,审查组由4人组成。组长既是审查组的管理人员又是技术负责人。审查过程不仅步数比走查多,而且每个步骤都是正规的。
4. 程序正确性证明
在20世纪60年代初期,人们已经开始研究程序正确性证明的技术,提出了许多不同的技术方法。
人工证明程序正确性,对于评价小程序可能有些价值,但是在证明大型软件的正确性时,不仅工作量太大,更主要的是在证明的过程中很容易包含错误,因此是不实用的。为了实用的目的,必须研究能证明程序正确性的自动系统。
目前已经研究出证明PASCAL和LISP程序正确性的程序系统,正在对这些系统进行评价和改进。现在这些系统还只能对较小的程序进行评价。

