质量属性定义与风险点敏感点权衡点

1.质量属性

  常见的软件质量属性有多种,例如性能(Performance)、可用性(Availability)、可靠性 (Reliability)、健壮性(Robustness)、安全性(Security)、可修改性(Modification)、可 变性(Changeability)、易用性(Usability)、可测试性(Testability)、功能性 (Functionality)和互操作性(Inter-operation)等。

1)性能

  性能(performance)是指系统的响应能力,即要经过多长时间才能对某个事件做出响应,或者在某段时间内系统所能处理的事件的个数。

代表参数:响应时间、吞吐量

设计策略:增加计算资源、改善资源需求(减少计算复杂度等)、资源 调度(先进先出队列、优先级队列等)、资源管理(并发、数据复制等)。

2)可用性

  可用性(availability)是系统能够正常运行的时间比例。经常用两次故障之间的时间长度或在出现故障时系统能够恢复正常的速度来表示。

代表参数:故障间隔时间

设计策略:冗余、心跳、Ping/Echo、异常。

3)安全性

  安全性(security)是指系统在向合法用户提供服务的同时能够阻止非授权用户使用的企图或拒绝服务的能力。安全性又可划分为机密性、完整性、不可否认性及可控性等特性。

设计策略:抵御攻击(授权、认证和限制访问等)、追踪审计、信息隐藏、攻击检测(入侵检测等)、从攻 击中恢复(部分可用性策略)。

4)可修改性

  可修改性(modifiability)是指能够快速地以较高的性能价格比对系统进行变更的能力。通常以某些具体的变更为基准,通过考察这些变更的代价衡量可修改性。

设计策略:软件模块泛化、 限制模块之间通信、使用中介和延迟绑定。

5)可靠性

可靠性(Reliability)是指产品在规定的条件下和规定的时间内完成规定功能的能力。其子特性包括成熟性,容错性,易恢复性,可靠性的依从性。

5.1.影响因素:

  运行环境(软件可靠性的定义是相对于运行环境的);软件规模;软件内部结构(内部结构越复杂,包含的缺陷数就可能越多);软件的开发方法和开发环境;软件的可靠性投入等。

5.2.遵循原则:
1、软件可靠性设计是软件设计的一部分,必须在软件的总体设计框架中使用,并且不能与其他设计原则相冲突。
2、软件可靠性设计在满足提高软件质量要求的前提下,以提高和保障软件可靠性为最终目标。
3、软件可靠性设计应确定软件的可靠性目标,不能无限扩大,并且排在功能、用户需求、开发费用之后考虑。

5.3.可靠性分析方法: 在软件可靠性设计之前和软件可靠性设计过程中,都需要采用软件可靠性分析和预|测方法,来确定当前系统中的主要可靠性因素和目标。常见的软件可靠性分析方法包括故障树分析方法、失效模式与效应分析方法等。
       故障树分析方法:一种自顶向下的软件可靠性分析方法,即从软件系统不希望发生的事件(顶 事件),特别是对人员和设备的安全及可靠性产生重大影响的事件开始,向下逐步追查导致顶事件发生的原因,直至基本事件(底事件),从而确定软件故障原因的各种可能组合方式和(或)发生概率。基本的步骤是软件故障树的建立、定性分析和定量分析。
  失效模式与效应分析方法:在软件开发阶段的早期,通过识别软件失效模式,分析造成的后果,研究分析各种失效模式产生的原因,寻找消除和减少其有害后果的方法,以便尽早发现潜在的问题,并采取相应的措施,从而提髙软件的可靠性和安全性。SFMEA的分析对象可以是开发早期阶段的高层次的子系统、部件,也可以是详细设计阶段的单元、模块。对于不同的分析对象,其软件失效模式是不同的,采用的SFMEA分析方法也不同,前者采用系统级分析方法(systemFMEA),后者为详细级分析方法(detailedFMEA)。其基本的步骤是系统定义、软件失效模式分析、软件失效原因分析、软件失效影响分析、改进措施分析。

5.4.设计策略:(1)容错设计(N版本程序设计、恢复块方法 、冗余设计、双机热备或集群系统 ) (2)检错设计 (3)降低复杂度设计

(1)错设计技术:对于软件失效后果特别严重的场合,如飞机的飞行控制系统、空中交通管制系统等,采用容错设计技术。常见的容错设计技术有三种:恢复块设计、N版本程序设计和冗余设计。(a)恢复块设计:选择一组软件操作作为容错设计单元,把普通的程序块变成恢复块。一个恢复块包含有若千个功能相同、设计差异的程序块文本,一个运行文本,多个备份文本,构成“动态冗余”,一旦运行文本出现故障,则用备份文本替换。软件容错的恢复块方法就是使软件包含有一系列恢复块。(b)N版本程序设计:N版本程序的核心是通过设计出多个模块或不同版本,对于相同初始条件和相同输入的操作结果,实现多数表决,防止其中某一软件模块/版本的故障提供错误的服务,以实现软件容错。 (c)冗余设计:在一套完整的软件系统之外,设计一种不同路径、不同算法或不同实现方法的模块或系统作为备份,在出现故障时可以使用冗余的部分进行替换,从而维持软件系统的正常运行。缺点是费用和资源的消耗会有所增加。

(2)检错技术:在软件系统中,无需在线容错的地方,或不能采用冗余设计技术的部分,如果对可靠性要求较高,故障有可能导致严重的后果时,一般采用检错技术,在软件出现故障后能及时发现并报警,其缺点是不能自动解决故障。

(3)降低复杂度设计:软件复杂性与软件可靠性有着密切的关系,是产生软件缺陷的重要根源。在设计时考虑降低软件的复杂性,是提高软件可靠性的有效方法。降低复杂度设计的思想是在保证实现软件功能的基础上,简化软件结构,缩短程序代码,优化软件数据流向,降低软件复杂度,从而提高软件可靠性

6)健壮性

健壮性是指在处理或环境中,系统能够承受压力或变更的能力。

7)可变性

可变性是指体系结构经扩充或变更成为新体系结构的能力。

8)易用性

易用性是衡量用户使用一个软件产品完成指定任务的难易程度。

9)可测试性

可测试性是指软件发现故障并隔离、定位其故障的能力特性,以及在一定的时间和成本前提 下,进行测试设计、测试执行的能力。

10)功能性

功能性是系统所能完成所期望工作的能力。

11)互操作性

互操作性是指系统与外界或系统与系统之间的相互作用能力。

2.风险点、非风险点、敏感点与权衡点

系统架构风险是指架构设计中潜在的、存在问题的架构决策所带来的隐患。
敏感点是指为了实现某种特定的质量属性,一个或多个构件所具有的特性。
权衡点是影响多个质量属性的特性,是多个质量属性的敏感点。

发表评论

邮箱地址不会被公开。 必填项已用*标注