功能性和质量属性是相交的。因为如果功能性和质量属性之间不是正交关系,那么,功能性选择将会规定安全性、性能、可用性或易用性的级别。然而母庸置疑的是威哥质量属性,都可以独立的选择所期望的级别。
至少从20世纪70年代开始系统的质量属性就引起了软件团队的注意。到目前为止,有许多关于质量属性的分类和定义,其中的很多分类和定义都有自己的研究和实践着团体。质量属性场景是一种面向特定的质量属性的需求。它是由刺激源(这是某个声称该刺激的实体)、刺激(该刺激是当刺激到达系统时需要考虑的条件)、环境(该刺激在某些条件下发生。当刺激发生时,系统可能处于过载,或者正在运行,也可能是其他情况)、制品(某个制品被刺激。这可能是整个系统,也可能是系统的一部分)、响应(该响应是在刺激到达后所采取的行动)、响应度量(当响应发生时,应该能够以某种方式对其进行度量,以此来对需求进行测试)。
如果不顾及所有的质量属性,每一个好的质量属性都是有害的。这句话是由 Ralph Waldo Emerson说的在确定实现期望的变化的一组模式之前,设计师应该考虑可以应用什么样的可修改性战术组合。那么,是什么使一个设计具有了可移植性,一个设计具有高性能,而另一个具备了可继承性。答案是基本的设计决策。战术就是影响质量属性响应控制的设计决策。我们把战术的集合成为“构建策略”。
有三种用于管理测试的输入和输出的战术。记录\回放,将接口与实现分离、特化昂文路线\接口。用于错误恢复的战术有:表决、主动冗余(热重启)、被动冗余(暖重启/双冗余/三冗余)、备件、shadow操作、状态再同步、检查点/回滚。
错误预防包括从服务中删除、事物、进程监视器。
防止连锁反应:语法、语义、顺序、A的一个接口身份、A的位置、A提供的服务/数据的质量、A的存在、A的资源行为。
许多战术的目的是在载入或运行时产生影响,如:1、运行时注册支持支持即插即用操作,但需要管理注册的额外开销。2、配置文件的目的是在启动时设置参数。3、多态允许方法调用的后期绑定。4、组建更换允许载入时间绑定。5、遵守已定义的协议允许独立进程的运行时绑定。