软件构造的质量目标

软件系统的质量属性

软件系统的质量属性可以分为两部分:外部质量因素(External Quality Factors)以及内部质量因素(Internal Quality Factors)。外部质量因素是指那些可以被用户在使用过程中察觉到的因素,最常见的外部质量因素就是软件的运行速度和其是否友好(方便使用),因此我们也可以说外部质量因素影响用户。与之相对应的是内部质量因素,是指那些用户难以发觉,但是对软件本身的开发者影响很大的因素,比如代码的可读性就是一个常见的内部质量因素,下面我们将详细地讨论这两种因素。

外部质量因素

1.    正确性(Correctness):正确性是指软件产品按照预先定义的规约(specification)执行任务的性能,简单来说,就是软件是否能满足预设要求。对于软件的开发者来说,满足正确性是最基本,也是最重要的要求。

常见的保证软件的正确性的方法有四种,分别是分层(Conditional)测试和调试(Testing & Debugging)防御式编程(Defensive Programming)以及形式化方法(Formal Approach)。分层是指将整个软件进行有层次地分割,每一层在假设下层的正确性的情况下保证自己的正确性。测试和调试不是为了从源头上避免错误的出现,而是为了及时发现错误,消除之。防御式编程则是在写程序时就尽量保证程序的正确性。形式化方法则是通过形式化验证发现问题,通过数学方法证明软件的正确性。

2.    健壮性(Robustness):健壮性是软件针对软件异常情况的处理能力。正确性和健壮性看似相似,实则不同。正确性要求软件的行为严格符合规约定义,而一旦出现前置条件不满足规约的时候,一个只有正确性却没有健壮性的软件理论上可以做任何事,而这显然不是我们想要的。而健壮性的意义就是处理这种情况。当一个软件面临规约中所未规定的异常的时候,一个有良好健壮性的软件可以在提示用户已经发生异常的情况下继续良好地运行。

3.    可扩展性(Extendibility):可扩展性是指当软件的规约被修改时,软件内否容易地适应这种变化。为了提高软件的可扩展性,有两条原则至关重要:简约主义设计(Design Simplicity)以及分离主义设计(Decentralization)。简约设计主义是指尽量缩小一个单位代码块的规模,因为代码的规模越大,逻辑越复杂,扩展起来的难度就越大。分离主义设计是要求程序员在设计软件时,要尽量将软件系统的各个模块独立化。独立化的好处是,当我们不得不修改其中的一个部分时,独立化越高的软件所需要牵连修改的模块就越少,触发系统连锁反应的可能性就越小。

4.    可复用性(Reusability):可复用性是衡量一个软件为多个不同的应用程序提供服务的能力。因为一个软件几乎不可能只服务于一个应用程序,而是要服务于多种背景相似却又略有不同的应用程序,这就要求程序员在开发软件的时候要尽量做到“一次开发,多次使用”。通过观察,软件系统通常遵循相似的模式,应该极可能利用这种共性,避免做重复的工作。

5.    兼容性(Compatibility):兼容性是指不同的软件系统之间是否可以容易地集成。软件和软件之间不可避免地存在交集,但是软件和软件之间规约前置条件不同的客观条件也是不可忽视的。最常见的与兼容性有关的例子就是一个操作系统下某个应用的文件在另一个功能相似的软件下无法打开。而实现良好兼容性的关键就在于保持设计的同构性(Homogeneity of Design),以及实现标准化。

6.    性能(Efficiency):性能是评价软件系统在运行时对硬件资源消耗情况的评价指标,常见的硬件资源有时间、内存以及外部储存等。需要主义的是,任何软件都不能为了提高性能而放弃正确性,放弃了正确性的软件是没有意义的。

7.    其他属性:软件构造过程中的其他属性还有可移植性(Portability)、易用性(Ease of Use)、功能(Functionality)、及时性(Timeliness)、可验证性(Verifiability)、完整性(Integrity)、可修复性(Repairability)等,这里就不一一介绍了。

8.    质量属性的折中:俗语说的好“鱼和熊掌不可兼得”,这句话同样适用于软件构造的过程。在实际的构造过程中,经济性常常与功能相悖;为了提高性能往往需要牺牲兼容性。其他常见的质量属性矛盾如下图所示:

基于以上原因,正确的软件开发过程中,开发者应该懂得平衡不同质量因素之间的关系,但是这种折中绝对不能以牺牲正确性为代价。而且,除了正确性不可“妥协”之外,健壮性,可扩展行和可复用性也很重要,尽量不要降低这三种性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值