登录

软件质量

百科 > 软件项目管理 > 软件质量

1.什么是软件质量

  软件质量是指:“对用户在功能和性能方面需求的满足、对规定的标准和规范的遵循以及正规软件某些公认的应该具有的本质”。该软件质量定义一共强调了三项:前二项是根据质量术语“明确需要而规定的;后一项是按术语“隐含需要”而提出的意即:用户的需求是软件质量评价的基础,不满足用户需求的软件是不能交付使用和走向市场的;其次为规定的标准和规范是软件开发的共同准则,不遵循这些标准和规范,就可能导致软件开发的无序和软件质量的低下;再次是对软件的某些要求虽未明确提出,但却是大家公认的,也应得到满足

2.影响软件质量的因素

  软件质量包括两方面的内容,(1)软件过程质量;(2)软件产品质量。目前流行的标准和模型充分体现了这一点,其中最具代表性就是ISO系列标准和CMM。影响软件质量的因素如下:

  1.确性

  是指系统满足规格说明和用户目标的程度,即在预定环境下能正确地完成预期功能的程度。它要求软件没有错误,能够满足用户的目标。

  2.可靠性

  是指在规定的时间和条件下,软件所能维持其性能水平的程度。可靠性对某些软件是重要的质量要求,它除了反映软件满足用户需求正常运行的程度,且反映了在故障发生时能继续运行的程度。

  3.性能

  性能通常是指软件的“时间一空间”效率,而不仅是指软件的运行速度。人们总希望软件的运行速度高些,并且占用资源少些。既要马儿跑得快,又要马儿吃的少。性能优化的关键工作是找出限制性能的“瓶颈”,不要在无关痛痒的地方瞎忙乎。

  程序员可以通过优化数据结构、算法和代码来提高软件的性能。例如数据库程序的优化。算法复杂度分析是很好的方法,可以达到“未卜先知”的功效。

  性能优化就好像从海绵里挤水一样,你不挤,水就不出来,你越挤海绵越干。有些程序员认为现在的计算机不仅速度越来越高,而且内存越来越大,因此软件性能优化的必要性下降了。这种看法是不对的,殊不知随着机器的升级,软件系统也越来越庞大了和复杂了,性能优化仍然大有必要。

  4.易用性

  指对于一个软件,用户学习、操作、准备输入和理解输出时,所做努力的程度。易使用性反映了与用户的友善性,即用户在使用本软件时是否方便。现代人的生活节奏快,干啥事都想图个方便。所以把易用性作为重要的质量属性对待无可非议。

  软件的易用性要让用户来评价。当用户真的感到软件很好用时,一股温暖的感觉油然而生,于是就用“界面友好”、“方便易用”等词来评价软件产品

  5.清晰性

  清晰意味着所有的工作成果易读、易理解,可以提高团队开发效率,降低维护代价。

  开发人员只有在自己思路清晰的时候才可能写出让别人易读、易理解的程序和文档。

  可理解的东西通常是简洁的。一个原始问题可能很复杂,但高水平的人就能够把软件系统设计得很简洁。如果软件系统臃肿不堪,它迟早会出问题。所以简洁是人们对工作“精益求精”的结果,而不是潦草应付的结果。

  6.安全性

  安全性是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。信息安全是一门比较深奥的学问,其发展是建立在正义与邪恶的斗争之上。究竟什么样的安全性是令人满意的呢?一般地,如果黑客为非法入侵花费的代价(考虑时间、费用、风险等因素)高于得到的好处,那么这样的系统可以认为是安全的。对于普通软件,并不一点要追求很高的安全性,也不能完全忽视安全性,要先分析黑客行为。

  7.维修性

  指在一个可运行软件中,为了满足用户需求、环境改变或软件错误发生时,进行相应修改所做的努力程度。可维修性反映了在用户需求改变或软件环境发生变更时,对软件系统进行相应修改的容易程度。一个易于维护的软件系统也是一个易理解、易测试和易修改的软件,以便纠正或增加新的功能,或允许在不同软件环境上进行操作。

  8.可扩展性

  可扩展性反映软件适应“变化”的能力。在软件开发过程中,“变化”是司空见惯的事情,如需求、设计的变化,算法的改进,程序的变化等等。现代软件产品通常采用“增量开发模式”,不断推出新版本,获取增值利润。可扩展性越来越重要。可扩展性是系统设计阶段重点考虑的质量属性。

  9.健壮性

  健壮性是指在异常情况下,软件能够正常运行的能力。正确性描述软件在需求范围之内的行为,而健壮性描述软件在需求范围之外的行为。开发者往往把异常情况错当成正常情况而不作处理,结果降低了健壮性。用户才不管正确性与健壮性的区别,反正软件出了差错都是开发方的错。所以提高软件的健壮性也是开发者的义务。健壮性有两层含义:一是容错能力,二是恢复能力。从语义上理解,恢复不及容错那么健壮。Unix容错能力很强,可惜不好用。Windows容错能力较差,但是恢复能力很好,而且很好用。占了90%的操作系统市场。

  10.可移植性

  指一个计算机系统或环境转移到另一个计算机系统或环境的容易程度。主要体现为代码的可移植性。编程语言越低级,用它编写的程序越难移植,反之则越容易。软件设计时应该将“设备相关程序”与“设备无关程序”分开,将“功能模块”与“用户界面”分开。

  11.兼容性

  兼容性是指不同产品(或者新老产品)相互交换信息的能力。例如两个字处理软件的文件格式兼容,那么它们都可以操作对方的文件,这种能力对用户很有好处。兼容性的商业规则:弱者设法与强者兼容,否则无容身之地;强者应当避免被兼容,否则市场将被瓜分。

评论  |   0条评论