前一篇文章,总结了三高系统所关注的一些重要质量属性。就想到,其实不一样类型的系统对质量属性也每每要求大不同。html
下图是软件系统架构设计时,须要关注的一些软件质量属性。缓存
开发期质量属性,是开发人员或后期的维护人员比较关心的,这些质量的好坏,每每会影响到开发和维护成本。而运行期质量属性,则是最终用户比较关心的,由于其在使用时是能切身体会到这些效果的,故而会影响用户对整个系统的满意度。安全
因此,对于基于互联网的系统而言,其更关注的是:性能、可用性、伸缩性、扩展性、安全性。这些大多都是运行期的质量属性。而这几年互联网、移动互联网公司愈来愈热,因此这些公司在讨论设计时,每每是针对三高系统的设计,如:大流量、高并发、大数据量、集群、缓存等,详见上篇博客:《三高系统经常使用架构模式》。网络
而对于企业级应用系统而言,其更关注的则是开发期的质量属性。由于 2B 的软件开发公司,关注的更多的是快速开发、快速实施的开发成本,以及后期的维护成本。因此在这些公司的架构师在讨论设计时,每每谈论的是快速开发平台、快速实施平台、业务组件级的大粒度重用等。架构
再如,游戏的架构设计,则更为复杂。特别是如今的网络游戏,几乎大部分质量属性的要求都会很高。一个好的架构设计,即会影响用户体验、公司的收入,也影响到开发一款新游戏的开发成本。因此厉害的游戏公司,能够很快地经过累积的游戏框架或引擎开发出一款新的游戏,也能在三高的状况下保证用户的体验,甚至还能在运行期不间断的快速持续更新。并发
固然,上面说的只是简单粗略的划分。其实不一样的系统,每每要求都不一样,咱们不可一律而论。应该说,全部的系统,都应该对开发期、运行期的质量属性进行分析。因此,架构师在作软件架构设计时,须要针对不一样类型的系统,对质量属性进行具体的分析。这须要经过与 Stake Holder 的沟通,分析出目标系统对这些质量属性的要求,而后排列出质量属性(非功能需求)的重要度、优先级,以做为架构设计的主要目标。框架