如何理解软件的质量

什么是质量span> 词典的定义是:① 典型的或本质的特征;② 事物固有的或区别于其他事物的特征或本质;③ 优良或出色的程度。 CMM对质量的定义是:① 一个系统、组件或过程符合特定需求的程度;② 一个系统、组件或过程符合客户或用户的要求或期望的程度。 上述定义很抽象,软件开发人员看了准会一脸迷惘。软件的质量不容易说清楚,但我们今天非得把它搞个水落石出不可。 就以健康做类比吧。早先人们以为长得结实、饭量大就是健康,这显然是不科学的。现代人总是通过考察多方面的生理因素来判断是否健康,如测量身高、体重、心跳、血压、血液、体温等。如果上述因素都合格,那么表明这人是健康的。如果某个因素不合格,则表明此人在某个方面不健康,医生会对症下药。同理,我们也可以通过考察软件的质量属性来评价软件的质量,并给出提高软件质量的方法。 一提起软件的质量属性,人们首先想到的是“正确性”。“正确性”的确很重要,但运行正确的软件就是高质量的软件吗得,因为这个软件也许运行速度很低,并且浪费内存,甚至代码写得一塌糊涂,除了开发者本人谁也看不懂,也不会使用。可见正确性只是反映软件质量的一个因素而已。 软件的质量属性很多,如正确性、精确性,健壮性、可靠性、容错性、性能、易用性、安全性、可扩展性、可复用性、兼容性、可移植性、可测试性、可维护性、灵活性等。除此之外还可以列出十几个,新词可谓层出不穷。 上述这些质量属性“你中有我,我中有他”。如果开发人员每天都要面对那么多的质量属性咬文嚼字,不久就会迂腐得像孔乙己,因此我们有必要对质量属性做些分类和整合。质量属性可分为两大类:“功能性”与“非功能性”,后者有时也称为“能力”(Capability)。 从实用角度出发,本章将重点论述“10大”质量属性,如表1-1所示。 表1-1 “10大”软件质量属性

 

功 能 性 正确性(Correctness) 健壮性(Robustness) 可靠性(Reliability)
非 功 能 性 性能(Performance) 易用性(Usability) 清晰性(Clarity) 安全性(Security) 可扩展性(Extendibility) 兼容性(Compatibility) 可移植性(Portability)

 

  其中,功能性质量属性有3个:正确性、健壮性和可靠性;非功能性质量属性有7个:性能、易用性、清晰性、安全性、可扩展性、兼容性和可移植性。 为什么碰巧是“10大”呢span> 不为什么,只是方便记忆而已(如同国际、国内经常评“10大”那样)。 为什么“10大”里面不包括可测试性、可维护性、灵活性呢不也是很重要的吗span> 它们是很重要,但不是软件产品的卖点,所以挤不进“10大”行列。我认为如果做好了上述“10大”质量属性,软件将会自然而然地具备良好的可测试性、可维护性。人们很少纯粹地去提高可测试性和可维护性,勿要颠倒因果。至于灵活性,它有益处也有坏处,该灵活的地方已经被其他属性覆盖,而不该灵活的地方就不要刻意去追求。 根据经验,如果你想一股脑儿地把任何事情都做好,结果通常是什么都做不好,做事总是要分主次的。什么是重要的质量属性,应当视具体产品的特征和应用环境而定,请读者不要受本书观点的限制。最简单的判别方式就是考察该质量属性是否被用户关注(即卖点)。 提高软件质量的基本方法 质量的死对头是缺陷,缺陷是混在产品中的人们不喜欢、不想要的东西。缺陷越多质量越低,缺陷越少质量越高。 Bug是缺陷的形象比喻,人们喜欢说Bug是因为可以把Bug当作“替罪羊”。软件的缺陷明明是人造成的,有了Bug这个词后就可以把责任推给Bug——“都是Bug惹的祸”。唉,当一只Bug真是太冤枉了! 软件存在缺陷吗,有以下典故为证。

错误是严重的缺陷。医生犯的错误最终会被埋葬在地下,从此一了百了。但软件的错误不会自动消失,它会一直骚扰用户。据统计,对于大多数的软件产品而言,用于测试与改错的工作量和成本将占整个软件开发周期的30%,这是巨大的浪费。如果不懂得如何有效地提高软件质量,项目会付出很高的代价,你(开发人员)不仅没有功劳,也没人欣赏你的苦劳,你拥有最多的将只是疲劳。 怎样才能提高软件的质量呢span> 还是先来听一个中国郎中治病的故事吧!

林锐,韩永泉编著 电子工业出版 出版文章知识点与官方知识档案匹配,可进一步学习相关知识 络技能树跨区域 络的通信学习 络层的作用23045 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年2月1日
下一篇 2022年2月1日

相关推荐