质量属性分析

忽视质量属性需求在内的非功能性需求是很致命的。

 

关于质量属性,以下几方面的认识是很重要的

  1. 软件质量属性可以划分为运行期质量属性和开发期质量属性两种。为了满足性能、持续可用性登运行期质量方面的需求,架构师必须深入研究软件系统运行期间的情况,合理划分系统不同部分的职责,权衡轻重缓急,并指定相应的并行、分时、排队、缓存、批处理等设计决策;而要满足可扩展性、可重用性等开发期间质量需求,则要求架构师深入研究软件系统开发期间的职责划分、变化隔离、框架使用、代码组织等情况,制定相应的设计决策。
  2. 各类需求对架构设计的影响不同,不同质量属性对架构的要求也不同,例如,为了获得高可移植性,架构设计中必须考虑对硬件和平台相关特性进行封装和隔离。
  3. 众多属性需求之间往往有冲突,我们必须权衡。

 

质量属性分析是概念性架构设计的重要步骤,概念性架构包括一些高层次的设计选择,对未来软件系统的质量和功能都起着关键作用。设计概念性架构的第一步是分析关键用例的用例规约,运用鲁棒图构造系统理想化的职责模型。接下来,明确架构模式,确定交互机制,形成初步的概念性架构。最后,还要通过质量属性分析,制定出满足非功能性需求的高层设计决策,并根据这些设计决策对此前的工作成果进行增强、调整,以保证概念性架构体现这些设计决策。

 

所谓质量属性分析,就是软件架构师对软件系统要达到的质量属性需求进行分析、制定相应的软件架构设计决策的过程。

 

我们可以使用‘属性—场景—决策’的方法来进行质量属性分析,它提倡通过一组具体场景将要达到的质量属性需求目标细化,再根据这些实实在在的场景制定架构决策。在使用过程中,它可操作性强、符合人们思维的规律,同时还为评估软件架构设计质量提供了‘可评测’的标准。

 

‘属性—场景—决策’的好处:

  1. 可操作性强
  2. 避免过度设计,通过权衡场景发生的概率和遗漏它的代价,可以决定是否应该满足该场景的要求。
  3. 便于系统升级时参考,在进行架构重构时,可以很快得到旧有架构在质量属性方面的决策考虑。

参考文献:

《软件架构设计》   温昱

原文地址:https://www.cnblogs.com/wing011203/p/1266172.html