摘要:本文针对软件质量的问题,通过可维护性、可靠性、可理解性和效率四个方面对软件进行质量评价,从而获得衡量软件质量好坏的标准。

  关键词:软件质量;

  1、引言

  如何评价一个软件的质量,是终获得高质量的软件的重要问题。以前,对小型程序,人们一般比较强调程序的正确性和效率,近年来随着软件规模的增大和复杂性的上升,对问题的看法已发生了变化。目前,软件质量的定义还是非常模糊的,人们对此尚未形成一致的看法,但一般说来倾向于从可维护性、可靠性、可理解性和效率等方面对软件作较全面的评价,下面分别讨论之。

  2、可维护性

  软件在运行阶段尚需不断“修正”,因为软件虽经测试但不可避免地总还隐含着各种错误,这些错误在运行阶段会逐步暴露出来,因而要进行排错。

  软件在运行阶段尚需不断“完善”,因为系统经过一个时期的使用后,用户必然会逐步提出一些更改或扩充要求,软件需要相应地不断作修改。

  软件在运行阶段往往还需作“适应性”修改,近年来计算机业发展迅速,一般在3至5年内,硬件或系统软件会出现更新换代的新产品,于是应用软件系统也需要作相应的调整或移植。

  在运行期中,对软件所做的上述修正性、完善性和适应性修改,总称为“维护”,它涉及再分析、再设计、再编程、再测试等活动。考虑到大型软件系统的运行期可达10年以上,所以维护的工作量是极大的。

  另外,维护工作也是相当困难的,由于软件逻辑上的复杂性,修改往往会带来新的错误。据统计,软件错误中有19%是由于修改造成的;有人还统计出,如果一个修改设计5至10个语句,修改成功的可能性是50%,如果一个修改设计40至50个语句,则修改成功的可能性下降至20%,因此软件维护是很困难,很冒风险的。

  说明了在计算机软硬件的总投资中,软件维护所占的比例。可以看出,维护费用近年正在迅速上升,按这样的趋势发展下去,现有的人力物力将全部被束缚在维护原有系统上,可能再也没有力量去开发新的系统了。因此软件维护引起了人们的普通关注,人们已意识到,一个软件系统及时其他方面都相当理想,但是如果不容易维护,他将不会有什么实际使用价值,所以,“可维护性”应该作为评价软件质量的重要准则。

  3、可靠性

  可靠性通常包括正确性和健壮性这两个相互补充的方面。

  正确性是指软件系统本身没有错误,所以在预期的环境条件下能够正确地完成期望的功能。毋庸置疑,正确性对系统正常发挥作用是完全必要的。

  对于一个小型程序,我们可以希望它是完全正确的,但对长达几万行甚至几十万行的大型软件,我们一般不能奢望它是“完全”正确的,而且这一点也是无法证实的。此外,一个大型系统运行时,完全可能遇到一些意外遭到意想不到的破坏。

  曾有报道:“操作员手指的一滑使税收损失30万美元”。这产生了一个新的概念——“健壮性”,其含义是指:当系统万一遇到意外时(具体是什么意外,事先是很难预料的)能按某种预定的方式作出适当的处理,如能立即意识到异常情况的出现,保护起重要的信息,隔离故障区防止事故蔓延,并能及时通知管理人员请求人工干预,事后从故障状态恢复到正常状态亦比较容易,所以健壮的系统应该能避免出现灾难性的后果。

  正确性与健壮性是相互补充的,有些系统可能是正确的,但它不是健壮的;而健壮的程序并不一定是正确的。

  总的说来,可靠的软件系统在正常情况下能够正确地工作,而且在意外情况下,亦能适当地作出处理,因而不会造成严重的损失。所以,“可靠性”无疑是重要的。人们宁可在开发时多花些代价,提高系统的可靠性,与发生事故后造成的损失相比,这些代价还是值得的。

  4、可理解性

  在相当长一段时间中,人们一直认为程序只是提供给计算机的,而不是给人阅读的,所以只要它逻辑正确,计算机能按其逻辑正确执行足够了,至于它是否易于被人理解则是无关紧要的。但是随着软件规模的增大,人们逐步看到,在整个软件生命期中,为进行测试、排错或修改,开发人员经常需要阅读本人或他人编写的程序和各种文档。如果软件易于理解,无疑将提高开发和维护的工作效率,而且出现错误的可能性也会大大下降。所以,可理解性应该是评价软件质量的一个重要方面。

  可理解性通常是指简单性和清晰性,对于同一用户要求,解决的方案可以有多个,其中简单、清晰的方案往往被认为是好的方案。

  5、效率

  效率是指系统能否有效地使用计算机资源,如时间和空间等。这一点以前一直是非常强调的,这是过去硬件价格昂贵造成的结果。由于以下一些原因,目前人们对效率的看法已有了变化:首先,硬件价格近年来大幅度下降,所以效率已不像以前那样举足轻重了。第二,人们已认识到,程序员的工作效率比程序的效率远为重要,程序员工作效率的提高不仅能减少开支,而且出错率也会降低。第三,追求效率同时追求可维护性、可靠性等往往是相互抵触的。

  所以,效率虽然是衡量软件质量的一个重要方面,但在硬件价格下降、人工费用上升的情况下,人们有时也宁可牺牲效率来换取其他方面的得益。

  综上所述,一个软件系统的质量应该从可维护性、可靠性、可理解性、效率等多个方面全面地进行评价。对于不同的软件系统,各个目标的重要程度是不同的,每个目标要求达到什么程度又受经费、时间等因素的限制,所以在开发具体软件系统的过程中,开发人员应该充分考虑各种不同的方案,在各种矛盾的目标之间作权衡,并在一定的限制条件下(经费、时间、可用的软硬件资源等)使可维护性、可靠性、可理解性和效率等性质大限度地得到满足。