质量属性分析

摘要:
软件架构关注质量属性。软件质量特征包括功能性、可靠性、易用性、效率、可维护性和可移植性,每个特征都包括几个子特征。它包括对速度、吞吐量和持续高速的要求。实现这些质量属性的基本设计决策称为“战术”,战术集合称为“架构策略”。

软件架构(及软件架构设计师)重点关注的是质量属性。

软件质量特性包括功能性、可靠性、易用性、效率、可维护性、可移植性等 6个方面,每个方面都包含若干个子特性。

功能性:适合性、准确性、互操作性、依从性、安全性;

可靠性:成熟性、容错性、易恢复性;

易用性:易理解性、易学性、易操作性;

效率:时间特性、资源特性;

可维护性:易分析性、易改变性、稳定性、易测试性;

可移植性:适应性、易安装性、遵循性、易替换性;

质量属性之间的相互制约关系(正相关或负相关),其中“+”代表“行属性”能促进“列属性”;而“-”则相反。

1.运行期质量属性
性能:性能是指软件系统及时提供相应服务的能力。包括速度、吞吐量和持续高速性三方面的要求。
安全性:指软件系统同时兼顾向合法用户提供服务,以及阻止非授权使用的能力。
易用性:指软件系统易于被使用的程度。
可伸缩性:指当用户数和数据量增加时,软件系统维持高服务质量的能力。例如,通过增加服务器来提高能力。
互操作性:指本软件系统与其他系统交换数据和相互调用服务的难易程度。
可靠性:软件系统在一定的时间内无故障运行的能力。
持续可用性:指系统长时间无故障运行的能力。与可靠性相关联,常将其纳入可靠性中。
鲁棒性:是指软件系统在一些非正常情况(如用户进行了非法操作、相关的软硬件系统发生了故障等)下仍能够正常运行的能力。也称健壮性或容错性。


2.开发期质量属性
易理解性:指设计被开发人员理解的难易程度。
可扩展性:软件因适应新需求或需求变化而增加新功能的能力。也称为灵活性。
可重用性:指重用软件系统或某一部分的难易程度。
可测试性:对软件测试以证明其满足需求规范的难易程度。
可维护性:当需要修改缺陷、增加功能、提高质量属性时,定位修改点并实施修改的难易程度;
可移植性:将软件系统从一个运行环境转移到另一个不同的运行环境的难易程度。

实现这些质量属性的基本设计决策,称为“战术”,而把战术的集合称为“架构策略”。

战术分为:错误检测、错误恢复、错误预防。
① 错误检测
命令/响应:一个构件发出一个命令,并希望在预定义的时间内收到一个来自审查构件的响应,例如远程错误的检测。心跳(计时器):一个构件定期发出一个心跳消息,另一个构件收听到消息,如果未收到心跳消息,则假定构件失败,并通知错误纠正构件。
异常:当出现异常时,异常处理程序开发执行。
② 错误恢复
表决:通过冗余构件(或处理器)与表决器连接,构件按相同的输入及算法计算输出值交给表决器,由表决器按表决算法(如多数规则)确定是否有构件出错,表决通常用在控制系统中。
主动冗余(热重启、热备份):所有的冗余构件都以并行的方式对事件做出响应。它们都处在相同的状态,但仅使用一个构件的响应,丢弃其余构件的响应。错误发生时通过切换的方式使用另一个构件的响应。
被动冗余(暧重启/双冗余/三冗余):一个构件(主构件)对事件做出响应,并通知其他构件(备用的)必须进行的状态更新(同步)。当错误发生时,备用构件从最新同步点接替主构件的工作。
备件:备件是计算平台配置用于更换各种不同的故障构件。
状态再同步:主动和被动冗余战术要求所恢复的构件在重新提供服务前更新其状态。更新方法取决于可以承受的停机时间、更新的规模及更新的内容多少。
检查点/回滚:检查点就是使状态一致的同步点,它或者是定期进行,或者是对具体事件做出响应。当在两检查点之间发生故障时,则以这个一致状态的检查点(有快照)和之后发生的事务日志来恢复系统(数据库中常使用)。
③ 错误预防
从服务中删除:如删除进程再重新启动,以防止内存泄露导致故障的发生。
事务:使用事务来保证数据的一致性,即几个相关密切的步骤,要么全成功,要么都不成功。
进程监视器:通过监视进程来处理进程的错误。

免责声明:文章转载自《质量属性分析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇sqlserver2012安装过程操作系统--内存管理下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

软件过程模型(软件开发模型)

软件过程模型也称为软件开发模型,它是软件开发全部过程、活动和任务的结构框架。典型的软件过程模型有瀑布模型、增量模型、演化模型(原型模型、螺旋模型)、喷泉模型、基于构件的开发模型、形式化方法模型、统一过程(UP)模型、敏捷方法等。 1、瀑布模型(Waterfall Model) 瀑布模型是将软件生存周期中各个活动规定为依线性顺序连接的若干阶段的模型,包括需求...

oracle-gi安装

############################################### 在cs6.5,cs7.2上安装grid11.2.0.1 和database11.2.0.1还是有问题 1.i386与i686的问题 2.cs7.2中的semmni内核参数问题  已经设置了kernel.sem = 250 32000 100 128这四个值,但安...

Bartender 打印RFID标签 (使用C#_SDK进行RFID打印或者表面信息打印)

为了摆脱复杂的ZPL、以及其他语言的各种打印协议, 所以研究了一下如何使用C# SDK调用BartenderSDK 进行模板打印。 优点: 利用Bartender的可视化编辑工具, 进行调节模板, 设置变量, 软件代码无需关心打印的内容调整, 轻松对接各类打印机系统。 缺点: 需要花钱买bartender授权的软件。 (不过大部分公司会使用Bartende...

很简单的在Ubuntu系统下安装字体和切换默认字体的方法

摘要: Ubuntu系统安装好后,默认字体对于中文的支持看上去不太美丽,于是很多朋友可能需要设置系统的默认字体为自己喜欢的字体。本文主要介绍如何解决这两个问题。 说明:测试系统是Ubuntu14.04。 安装字体:以微软雅黑字体为例(其他的宋体、黑体等点阵字体都一样的),我们的雅黑字体文件是:msyh.ttf(常规字体)和msyhbd.ttf(微软雅黑加...

Flutter的环境配置以及一些常见问题

flutter & AndroidStudio flutter的下载与配置 flutter是Google推出的基于Dart语言开发的跨平台开源UI框架,能够支持安卓与iOS。 flutter框架的下载地址为: Windows macOS Linux 若在上述网址中无法顺利下载,也可以去flutter的github下载,注意,github上flu...

Ubuntu简单搭建git私有服务

gitserver搭建过程 搭建gitserver过程记录 例如以下: 环境: serverUbuntu虚拟机(Boss),能通过网络訪问到(server地址:192.168.9.103)。 clientWin7电脑一台(work) 软件需求: client软件msysgit:http://msysgit.github.io/ 软件版本号:Git-1....