几类系统需要关注的质量属性

前一篇文章,总结了三高系统所关注的一些重要质量属性。就想到,其实不同类型的系统对质量属性也往往要求大不一样。

下图是软件系统架构设计时,需要关注的一些软件质量属性。

开发期质量属性,是开发人员或后期的维护人员比较关心的,这些质量的好坏,往往会影响到开发和维护成本。而运行期质量属性,则是最终用户比较关心的,因为其在使用时是能切身体会到这些效果的,故而会影响用户对整个系统的满意度。

所以,对于基于互联网的系统而言,其更关注的是:性能、可用性、伸缩性、扩展性、安全性。这些大多都是运行期的质量属性。而这几年互联网、移动互联网公司越来越热,所以这些公司在讨论设计时,往往是针对三高系统的设计,如:大流量、高并发、大数据量、集群、缓存等,详见上篇博客:《三高系统常用架构模式》。

而对于企业级应用系统而言,其更关注的则是开发期的质量属性。因为 2B 的软件开发公司,关注的更多的是快速开发、快速实施的开发成本,以及后期的维护成本。所以在这些公司的架构师在讨论设计时,往往谈论的是快速开发平台、快速实施平台、业务组件级的大粒度重用等。

再如,游戏的架构设计,则更为复杂。特别是现在的网络游戏,几乎大部分质量属性的要求都会很高。一个好的架构设计,即会影响用户体验、公司的收入,也影响到开发一款新游戏的开发成本。所以厉害的游戏公司,可以很快地通过累积的游戏框架或引擎开发出一款新的游戏,也能在三高的情况下保证用户的体验,甚至还能在运行期不间断的快速持续更新。

当然,上面说的只是简单粗略的划分。其实不同的系统,往往要求都不同,我们不可一概而论。应该说,所有的系统,都应该对开发期、运行期的质量属性进行分析。所以,架构师在做软件架构设计时,需要针对不同类型的系统,对质量属性进行具体的分析。这需要通过与 Stake Holder 的沟通,分析出目标系统对这些质量属性的要求,然后排列出质量属性(非功能需求)的重要度、优先级,以作为架构设计的主要目标。