软件质量属性及场景分析

[摘要] 常见的软件质量属性有多种,例如性能、可用性、可修改性、可测试性、功能性和互操作性等。本文主要讨论性能、可修改性,可用性。

[关键词] 软件质量属性

一.可用性

可用性分析所关注的方面包括:如何检测系统故障,系统故障发生的频度,出现故障时会发生什么情况,允许系统有多长时间非正常运行,什么时候可以安全地出现故障,如何防止故障的发生以及发生故障时要求进行哪种通知。可用性面临的主要问题有:物理层失效:比如数据库服务器宕机,停电, 网络欠费被中国电信断网,恶意攻击:例如DOS(Deny of Service)攻击,软件的设计问题或BUG:比如错误的资源控制锁导致某个资源长期被占用。升级或日常维护如何设计故障转移(failover),一般可以使用冗余来消除系统中的单点故障。可以是各种冷热备份,分布式系统。

二、可修改性

  可修改性是有关变更的成本问题。可以修改什么(制品)和何时进行变更以及由谁进行变更(环境)。引起修改的因素:为什么会引起系统的修改,主要(甚至是唯一)的因素是:需求,这个需求会影响到系统给我们带来的收益,它可包含两个方面:1、用户需求,2、系统内在需求。在这解释下需求,成本,修改三者的关系:需求无处不在,时时刻刻产生,判别一个需求的重要性来自于它对系统的成本产生的影响,如果严重影响了系统带来的收益,那必须对系统进行修改,如果某一部分相对于系统收益来说微不足道,甚至不会影响系统的收益,那改不改都“无可非厚”,可能你对这部分修改了还引起系统故障了咋办。例如:一个网站的图标有人觉得不好看,有人觉得不错。场景是:使用的人们已经习惯这个图标的表示或者惯性的认为这个图标代表什么。那么是否对这个图标进行修改?我以为没有必要修改,如果你修改了反而可能会引起使用者的错误判断,比如:这个网站是停止运维了吗?好,那我去用其他的系统吧。类似错误的判断会影响到系统的收益,所以不进行修改就挺好的。以淘宝为说明对象,更具相关资料,初期的淘宝使用的是MySQL作为它的数据库,众所周知MySQL是一个适用于小型企业的数据库,对于起初的淘宝也是适用的,因为没有产生MySQL无法处理的大量数据及相应的实时处理业务。但是近几年来淘宝的数据爆炸产生,在2012年11月30号到达 - 全天访问用户总人数:2亿1千3百万,占中国网民40%;高峰期:每分钟成交订单89678笔.....,这些大量业务数据就会引起系统“自我反馈”,在这总系统本身产生的需求下,如果不进行系统数据库方面的修改会严重影响到淘宝带来的收益。

三、性能

性能与时间有关。事件(中断、消息、用户请求或时间已到)发生时,系统必须做出响应。事件到达和相应有很多特性,但性能基本上与事件发生时,将要耗费系统多长时间做出响应有关。一个软件的质量和性能可以从三个维度来进行考量:1)用户、2)开发人员、3)产品人员。分别对应软件的三个阶段:1)运行时、2)开发时、3)交付时。软件开发的目的是为用户交付可用的产品,所以用户的维度的软件的第一维度。

用户的维度:

1 正确性(Correctness)

正确性是软件最基本,最重要的属性。他代表了这个软件能够正确的执行计算并给出用户正确的结果。如果软件不能保证正确性,那么这个软件将没有价值可言。比如,一个总是计算错误的财务软件,显然是没有任何用处的。对小型的,功能单一的软件来说,正确性是显而易见的,要么正确,要么不正确。但是对于大型的复杂的软件来说,衡量正确性的标准都相当复杂或不确定,所以正确性本身也不是个简单的是和否的问题了。需求不等于正确性,需求不仅要求正确性,还会要求其他属性,如性能等,需求也不一定要求100%的正确性,只要计算结果对于最终用户来说是可用的就可以了。

2 有效性(时效性)

有效性是指软件能在有效的时间内给出计算结果。一个无效的软件,即便其必然能得到正确的结果,也是无价值的。比如,穷举法总是正确的,但是在解决某些问题时,穷举法并不能在有效的时间内给出结果。如果一个用来预报明天天气的软件,却要在后天才能算出明天的天气情况,即使算正确了,也是没有意义的。

 

posted @ 2021-06-24 10:03  海南之风  阅读(516)  评论(0编辑  收藏  举报