软件质量概述的六大属性

摘要:软件属性包括功能属性和质量属性,但是,软件架构(及软件架构设计师)重点关注的是质量属性。文章从常见的六个质量属性,即可用性、可修改性、性能、安全性、可测试性、易用性写起,使读者对其有初步的认识和了解。

关键词:软件;质量属性;体系架构;

Six attributes of software quality overview

Absrtact:Software attributes include function attributes and quality attributes, but software architecture (and software architecture designers) focus on quality attributes. This paper starts with six common quality attributes, that is, usability, modifiability, performance, security, testability and USABILITY, so that readers have a preliminary understanding of them.

Keywords: Software; quality attributes; architecture;

一、可用性

1、可用性战术将会组织错误发展为故障,或者至少能够把错误的影响限制在一定范围内,从而使系统恢复成为可能。可用性是指系统正常运行时间的比例,是通过两次故障之间的时间长度或在系统崩溃情况下能够恢复正常运行的速度来衡量的。

2、维护可用性的方法:

1)错误检测——用来检测故障的某种类型的健康监视

2)自动恢复——检测到故障时某种类型的恢复

3)错误预防——阻止错误演变为故障

3、可用性战术分类

错误检测、恢复监测和修复、重新引入、预防

二、可修改性

可修改性是指系统或软件能够快速地以较高地性价比对系统进行变更地能力。对于一个网站,我们要修改它某一板块地UI界面,当我们对界面进行修改时是否引起对另一个UI模块地影响,是否会引起后台控制,业务逻辑代码地变更,是否会引起整个网站地崩溃,这就体现了一个网站地整个架构是否具备可修改性。

引起可修改性地因素包括用户需求和系统内在需求。用户需求例如用户对软件某些图标的更改,而淘宝网后期对数据库体系架构的更新和完善则来源于系统内在的需求。

可修改性地战术分析:

1、局部化变更

局部化意味着实现“模块化”思想,也就是设计模式中的“单一职责原则”的设计原则。通俗的来讲就是一个模块只完成一个部分,使每一个模块责任单一,防止职责过多引起整体变更时的繁琐,复杂,主要表现在类、函数、方法和接口的时候,实现“高内聚,低耦合”。

2、防止连锁反应

所谓连锁反应就是我们平时编程,无论是写函数还是写类,都需要被其他类还是函数调用,修改此函数或类就会影响到调用他的函数,这就是连锁反应。

防止连锁反应:

·信息隐藏。信息隐藏就是把某个实体地责任分解为更小地部分并选择哪些信息成为共有,哪些信息成为私有的。

·维持现有的接口。该战术的模式包括添加接口、添加适配器、提供一个占位程序。

·限制通信路径。限制与一个给定的模块共享的模块,减少联系,一旦变更影响会小很多。

·使用仲裁者。插入仲裁者来管理依赖之间的关系,就比如数据库的使用,通过数据库来管理不同的数据信息。

3、推迟绑定时间

将有可能的修改,尽量用配置文件,或者其他后期让非开发人员可调整的方式实现。

三、性能

性能反应的是系统的响应能力,表现在三个方面,速度、吞吐量和持续高速性。

性能战术的目标是对一定的时间限制内到达系统的事件生成一个响应,这些事件可以是消息到达、定时器到时,系统状态的变化。

影响响应时间的因素,包括资源消耗和闭锁时间。资源包括CPU、数据存储、网络通信带宽和内存等;资源消耗是指实际需要耗费的时间;比如:数据的增删改查,CPU进行大量的加减运算等等。由于资源争用、资源不可用或长时间计算导致事件无法处理,这是指计算机可能等待的时间。最常见的就是多个进程同时操作一个数据,写操作正操作此数据,读操作只能等待,必须等写操作解锁,读操作才能进行,这就会产生等待时间。

性能战术的三大分类:

1)资源需求——分析影响性能的资源因素。提高计算效率,减少计算开销,管理事件率,控制采样频率。

2)资源管理——提高资源的应用效率。引入并发维持多个副本,增加可用资源。

3)资源仲裁——解决资源的争用。调度策略,先进/先出,固定优先级,动态优先级,静态调度。

四、安全性

安全性是指在确保用户正常使用系统的情况下,软件抵御攻击的能力。

提高安全性的方法主要分为三大类:抵抗攻击,检测攻击,从攻击中恢复

1、抵抗攻击:防止攻击队系统和数据造成影响乃至破坏

1)用户的证实:通过账号密码,指纹等识别手段,确定现在正在访问系统的人是真正的用户

2)用户的授权:管理用户权限,确认用户的操作在自己的权限内

3)维持数据的保密性:数据传输时进行加密

4)维持数据的完整性:利用MD5码等校验文件是否未修改。MD5码是和文件内容相关的字符串,文件的任何一点改动理论上都会导致MD5码变化

5)减少暴露:关闭不安全的或没必要的端口,自启动服务和无线路由SSID等

6)访问控制:通过白名单,限制可以访问的用户或其他主机

2、检测攻击:尽早发现正在进行地攻击,确保能够及时作出回应如关闭主机等。系统监测一般是软件和人工结合,既有自动检测系统检测异常,也有安全专家人工复核或检查

3、从攻击中恢复:在被攻击并产生了影响后,尽快地从异常情况中恢复

1)恢复状态:采用提高可用性的一些手段,如备份等,提高恢复速度

2)攻击者的识别:找出并确定攻击者,震慑潜在的攻击者

五、可测试性

可测试性战术的目标是允许在完成软件开发的一个增量后,轻松地对软件进行测试,从而发现错误。

可测试性战术分析:

1、管理输入/输出

1)记录/回放。指将捕获跨接口地信息,并将其作为测试专用软件地输入。

2)将接口与现实分离。将接口与实现分离允许实现的代替。

3)特化访问路线/接口。具有特化的测试接口允许通过测试工具并独立于其正常操作,来捕获或指定组件变量的值。

2、内部监视。组件可以维持状态、性能负载、容量、安全性或其他可通过接口访问的信息。当监视状态被激活时可以记录事件。例如可以使用编译器控制台实时显示程序运行时的各种查询或输入输出结果,一遍监视。

六、易用性

易用性涉及用户完成任务的容易程度以及所提供的用户支持类型。易用性可以划分为几个模块:学习系统功能、有效使用系统、最小化错误影响、系统适应用户需求和提高用户信息和满意度。

易用性场景分析的响应得出系统可以提供一下一个或多个响应:

支持“学习系统功能”——帮助系统对上下文敏感;用户熟悉界面;界面在不熟悉的上下文中使用

支持“有效使用系统”——数据/命令的集合;重用已经输入的数据/命令;支持屏幕内的高效导航;具有一致操作的清晰视图;全面的搜索;最小化错误的影响:撤销、取消、从系统故障恢复、识别并纠正用户错误、检索忘记的密码,验证系统资源

支持“适应系统”——定制化、国际化

支持“感觉舒服”——显示系统状态、按照用户的步调工作

参考文献:

[1] naughty,软件中的质量属性(一)

[2] naughty,软件中的质量属性(二)

[3] iteye_2272,软件的质量属性及其说明

posted on 2021-03-20 15:31  阡陌祁画  阅读(1637)  评论(0编辑  收藏  举报