论质量属性之可用性
论质量属性之可用性
郝春萌
(石家庄铁道大学,河北省石家庄市,050043)
摘要:软件架构重点关注的是质量属性。文章从常见的六个质量属性中选取可用性进行写起,使读者对其有初步的认识和了解。可用性很重要,因为如果用户不能有效地、高效地、令人满意地实现他们的目标,他们可能会寻找其他解决方案来实现他们的目标如果你的产品可用性不够,它的用户体验就会很差,用户会离开你去找你的竞争对手。考虑到这一点,希望开发长期性产品的设计师需要确保这些产品是可用的,否则就会面临用户流失的风险。
关键词:质量属性;可用性;软件
On the usability of quality attributes
Hao Chunmeng
(Shijiazhuang Tiedao University, Shijiazhuang 050043, China)
Abstract: Software architecture focuses on quality attributes. The article starts by selecting usability from the six common quality attributes, providing readers with a preliminary understanding and understanding of them. Usability is important because if users cannot effectively, efficiently, and satisfactorily achieve their goals, they may seek other solutions to achieve their goals. If your product's usability is insufficient, its user experience will be poor, and users will leave you to find your competitors. Considering this, designers who hope to develop long-term products need to ensure that these products are usable, otherwise they will face the risk of user churn.
Key words: quality attribute; usability;software
引言
伴随着软件复杂性的日益增长,软件开发的周期以及费用也在日益增长,人们对于软件质量的保证与提高越来越重视。而为了了解软件的质量是否满足要求,我们必须定义软件的质量属性。同时质量属性也是影响软件架构的重要因素。软件架构主要由需求决定,需求有功能性的和非功能性的,其中非功能性的需求主要就是指质量属性。下面我们讨论一下最常见的六个属性中的可用性。
1.定义:
可用性是指系统正常运行时间的比例,是通过两次故障之间的时间长度或在系统崩溃情况下能够恢复正常运行的速度来衡量的。
一般将系统可用性定义为:a = 平均正常工作时间 / (平均正常工作时间+平均修复时间)
2.可用性关注的问题:
如何检测故障
发生故障的频度
出现故障时的现象
系统故障排除的时限
如何防止故障的发生
发生故障时的处理
3.错误检测:
(1)命令/响应:这个在ajax中有所应用,ajax有专门的success方法和error方法来对发出的请求做出响应。
(2)心跳(计时器):一个组件定期发出一个心跳消息,另一个组件接收听该信息。如果心跳失败,则假定最初的组件失败,并通知错误纠正组件。。
(3)异常:这个最常见的就是try{}catch{}finally{}以及if语句进行判断。
4.错误恢复:
(1)表决:当表决者接收到多个处理器发过来的数值不同时,需要对结果产生自己的判断,表决算法可以使“多数规则”,“首选组件”或者是其他算法,用于纠正算法的错误操作或者处理器的操作。
(2)主动冗余(热启动):所有的冗余组件都可以并行的对事件作出相应,仅使用第一个响应的组件,所以当有错误发生的时候,即使正常状态下第一个响应的组件挂掉了,其他的组件也会很快进行响应,停机事件通常为几毫秒。
(3)被动冗余(暖重启/双冗余/三冗余) :一个组件(主要的)对事件做出响应,并通知其他组件(备用的)必须进行状态更新。当错误发生时,在继续提供服务前,系统必须首先确保备用状态是最新的。
(4)备件:组件出现故障时,对组件重新启动为适当的软件设置,并对其状态进行初始化。此类战术包括:shadow模式,状态再同步,检查点/回滚。
(5)Shadow操作:以前出现故障的组件可以在短时间内以“shadow模式” 运行,以确保在恢复该组件前,模仿工作组件行为。
(6)状态再同步:主动和被动冗余战术要求恢复的组件在重新提供服务前更新其状态。更新的方法取决于可以承受的停机时间、更新的规模以及更新所要求的消息的数量。
(7)检查点/回滚:检查点就是记录所创建的一致状态,或者是定期进行,或者是对具体事件做出响应。有时系统会以-种不同寻常的方式出现故障,可检测到其状态不一致。在这种情况下,应该使用上一个一 致状态检查点和拍了快照后所发生的事务日志来恢复系统。
5.错误预防:
(1)从服务中删除:从操作中删除系统的一个组件,以执行某些活动来预防预期发生的故障。比如说在连接数据库,进行完操作之后,需要对连接组件进行关闭,防止重复开启发生故障。
(2)事务:对进程中发生错误的步骤及时发现并撤销,防止数据收到影响。这个在开启和数据库的连接和关闭的时候需要注意,进行操作前,需要判断连接是否打开或关闭。
(3)进程监视器: 一旦检测到进程中产生错误,监视进程就会删除非执行进程,并为该进程创建一个新的实例。我们在windows系统中常见,比如用word打开一个pdf文件卡住的时候,可以打开任务管理器,强制关闭这个进程,然后重新打开。
以上即为我针对软件六大属性中的可用性的一些个人的感悟等等。可用性在软件构成过程中都占据着及其重要的地位,相信如果我们能够将其及时掌握,那么对于我们所编写的软件的质量一定会有很大帮助。
参考⽂献
[1]李智慧.大型网站技术架构:核心原理与案例分析.北京:中央编译出版社,1998.
[2]陈康贤. 大型分布式网站架构设计与实践.上海:电子工业出版社,1999.
[3]王忠明.员⼯与组织创新[M].北京:中国经济出版社,2002.
[4]陈惠湘.企业团队修炼[M].北京:当代中国出版社,2001.