知识卡片
确定关键质量的三方面工作
内容
落实[[关键需求决定架构,其余需求验证架构]]这条原则,确定对架构关键的质量属性需求要做三方面工作。一,考虑为了提高系统受认可的程度,应着重提高哪些方面的质量属性——这是从”什么质量最影响客户满意度”这个业务视角出发做初步筛选。二,充分考虑这些质量属性之间的相互制约或相互促进关系,据此调整不同质量属性的要求标准——比如可能会决定”高性能要求最重要,可扩展性也比较重要”这样的优先级排序,因为质量属性之间天然存在冲突:互操作性需求往往会给安全性需求造成威胁,为满足高性能需求往往需要使用特定平台的非标准能力,这又会牺牲系统的可移植性——这类矛盾关系可以用一张质量属性关系矩阵可视化(”+“表示行促进列,”-“表示行影响列),矩阵里的每一个”减号”都潜藏着需要主动权衡的风险,架构师应据此确定关键质量的优先级,并把这个优先级明确记录进《架构文档》。三,必须满足各种约束性需求——这里考虑的范围非常广泛,需要覆盖从客户群、企业现状、未来发展、预算、立项、开发、运营到维护,整个软件生命周期涉及的种种商业限制因素,这些约束对架构设计的关键质量目标同样有很大影响。这三方面工作合起来说明:确定关键质量不是简单列出”我们要高性能、要安全”这样一份清单,而是一个先筛选、再权衡冲突、再纳入约束校验的多轮收敛过程,最终产出的是一份带优先级、且经过内部一致性检验的关键质量清单。
参考来源
- 位置:《软件架构设计:程序员向架构师转型必备》第8章《确定关键需求》"8.3.1 确定关键质量"节(源文件:_epub-src/OEBPS/text00011.html)
- 结论依据:原文列出三方面工作,并给出质量属性矛盾关系的具体例子("'互操作性'需求往往给'安全性'需求造成威胁,而为了满足'高性能'需求,往往需要使用特定平台的非标准能力,这势必影响了系统的'可移植性'"),说明质量属性关系矩阵的"+/-"用法,直接支撑本卡片结论。
- 原始内容:确定关键质量时考虑质量属性之间的矛盾关系,例如,"互操作性"需求往往给"安全性"需求造成威胁……图8-2所示为质量属性关系矩阵……任何一个"减号"都潜藏着风险。