质量属性分析
忽视质量属性需求在内的非功能性需求是很致命的。
关于质量属性,以下几方面的认识是很重要的
- 软件质量属性可以划分为运行期质量属性和开发期质量属性两种。为了满足性能、持续可用性登运行期质量方面的需求,架构师必须深入研究软件系统运行期间的情况,合理划分系统不同部分的职责,权衡轻重缓急,并指定相应的并行、分时、排队、缓存、批处理等设计决策;而要满足可扩展性、可重用性等开发期间质量需求,则要求架构师深入研究软件系统开发期间的职责划分、变化隔离、框架使用、代码组织等情况,制定相应的设计决策。
- 各类需求对架构设计的影响不同,不同质量属性对架构的要求也不同,例如,为了获得高可移植性,架构设计中必须考虑对硬件和平台相关特性进行封装和隔离。
- 众多属性需求之间往往有冲突,我们必须权衡。
质量属性分析是概念性架构设计的重要步骤,概念性架构包括一些高层次的设计选择,对未来软件系统的质量和功能都起着关键作用。设计概念性架构的第一步是分析关键用例的用例规约,运用鲁棒图构造系统理想化的职责模型。接下来,明确架构模式,确定交互机制,形成初步的概念性架构。最后,还要通过质量属性分析,制定出满足非功能性需求的高层设计决策,并根据这些设计决策对此前的工作成果进行增强、调整,以保证概念性架构体现这些设计决策。
所谓质量属性分析,就是软件架构师对软件系统要达到的质量属性需求进行分析、制定相应的软件架构设计决策的过程。
我们可以使用‘属性—场景—决策’的方法来进行质量属性分析,它提倡通过一组具体场景将要达到的质量属性需求目标细化,再根据这些实实在在的场景制定架构决策。在使用过程中,它可操作性强、符合人们思维的规律,同时还为评估软件架构设计质量提供了‘可评测’的标准。
‘属性—场景—决策’的好处:
- 可操作性强
- 避免过度设计,通过权衡场景发生的概率和遗漏它的代价,可以决定是否应该满足该场景的要求。
- 便于系统升级时参考,在进行架构重构时,可以很快得到旧有架构在质量属性方面的决策考虑。
参考文献:
《软件架构设计》 温昱
作者:李潘
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。