利用质量属性场景和战术进行质量属性需求设计
质量属性需求包括性能、可用性、可修改性等非功能需求,这些质量属性需求的设计通常是将其分解到功能需求中,通过对功能需求的设计来实现质量属性需求的设计。
除了这种方式之外,还可以通过质量属性场景和质量属性战术对质量属性需求进行设计,它们是对质量属性需求设计的有益的补充。
质量属性场景
质量属性场景,顾名思义就是采用场景的方法将质量属性涉及、关注的内容进行分析和挖掘。典型的质量属性场景包括刺激源、刺激、环境、制品、响应、响应度量。见下图。
制品。制品可以是一个系统、一个模块、一个进程或者一个通信过程,简单地说,就是当前需要获取质量属性的软件/硬件实体。
刺激源。一般指制品外部的输入。例如,当前制品是系统中的某个模块,则外部输入可能来自于系统的另外一个模块,也可以来自于系统外的模块或用户。
刺激。一般特指影响制品的事件,该事件类型包括调用、消息、请求等类型。
环境。指的是制品在收到刺激时整个制品所在系统的状态。比如,系统是处于访问量很小的工作状态,还是处于满负荷的工作状态。
响应。顾名思义指的是制品接收到刺激之后所做的输出。
响应度量。对响应进行度量。包括统计响应的时间、响应的准确性、响应所带来的影响等。例如,在性能的质量属性场景中,响应的度量将主要考虑制品的响应时间。
举例:
以性能需求为例,它的质量属性场景元素如下:
性能的刺激源。性能的刺激源可以来自软件内部模块也可以来自软件外部。具体可由实际性能需求分析来确定。
性能的刺激。性能的刺激就是请求或者事件。它们通常可分为周期性的事件、离散事件等类型。这些刺激类型决定了性能刺激的频度及强度等。
性能的制品。性能的制品就是将该性能需求分解到的功能模块。
性能的环境。性能的状态是指度量性能时当前系统的状态,低负荷正常状态还是超负荷降级运行状态等。
性能的响应。性能的反应是指性能的制品接受刺激后给出的反应,包括返回计算结果、更改系统服务等级等。
性能的响应度量。性能的响应度量包括时延、吞吐量、请求丢失率、数据出错比例等。
质量属性战术
质量属性战术是能够影响一个质量属性响应控制的设计决策。
所谓的质量属性战术,是指通过调整战术方案,使得在同样刺激条件下,得到更好的响应度量。见下图。质量属性战术与具体质量属性场景息息相关。
举例:
以性能需求为例,它的质量属性战术如下:
对于性能需求而言,它的质量属性战术主要控制制品(系统)对刺激的响应时间,最大限度地降低平均等待时间。
一般的性能质量属性战术可以分为资源需求类战术、资源管理类战术、资源仲裁类战术。
资源需求类战术
在性能的质量属性场景中,作为刺激的事件的频度以及每个事件处理所需的资源是制约性能指标的两个重要因素。资源需求类的战术,就是通过调整这两个因素而达到性能提升的目标。资源需求类战术一般有三种,第一是降低事件频度;第二是降低处理单个事件的资源或减少处理时间;第三是控制现存资源的使用。
资源管理类战术
资源管理类的战术即通过对资源的管理从而确保相关性能的实现,一般包括并发战术、维持数据或计算多个副本、增加可用资源等。
资源仲裁类战术
资源仲裁是在资源产生冲突时对资源进行调度的方法。一般包括先进先出、固定优先级、动态优先级、时限优先级最早优先、静态调度等。
总之,通过质量属性场景和战术的设计,可以使得质量属性需求更容易实现。
这正是:
利用场景和战术,质量设计可增强
方法简单但有效,考虑全面易实现
参考书目:软件体系结构,作者:林荣恒,吴步丹,金芝,出版社:人民邮电出版社