对于系统架构设计,我现在是功力不够,境界还凑合,俗称眼高手低是也。功力不够只能一点一点地练,一点一点的涨了,还不知道什么时候能有所小成。不过有境界也算是一件好事情,所以这个系列会先聊一聊境界方面。
系统架构设计是一种很复杂的活动,既有工程化的一面,又有艺术的一面。说它有工程化的一面,是因为系统架构设计有比较通用的、相对固定的方法与模式;说它有艺术的一面,是因为系统架构设计也需要设计师发挥个人的灵感与才华。要设计出好的系统架构,工程与艺术都要注重,二者不可偏废。
系统架构设计有7个需要注意的要素,可以概括为P4QAD,具体如下:
要素1:原则(Principles)。原则是系统架构的内在规律性的东西,是为了达到系统的可靠性、性能、可重用性、可扩展性等多方面的需求,应当遵守的具有普遍意义的规则。原则的重要性勿需多言,因此在七个要素中它位列第一。
要素2:过程(Process)。过程就是设计系统架构的步骤与操作流程,即先做什么,再做什么,在什么条件下怎么做,等等。对任何一种方法论而言,过程是体现其可操作性的要素,因此其重要性仅次于原则。
要 素3:产品(Products)。系统架构设计的产品不是指最终完成的那个系统,而是指的架构设计的方案、文档等,例如传统软件工程的需求分析文档、概要 设计文档与详细设计文档。产品往往是和过程耦合的,耦合关系规定了在设计过程的某一步应当输出哪些产品,从而保证过程的每个步骤能够达到目的。通常设计过 程中会形成多种产品,分别从不同的角度、不同的尺度对设计进行描述,因此产品体系应当保证完备性(必要的角度和尺度都覆盖到了)与一致性(不同的产品之间 没有矛盾)。关于这一点,一些架构框架(architecture framework)有专门的规定。
要素4:模式(Patterns)。模式是前人总结的具有可重用性的设计方案,是学习的榜样和模仿抄袭的对象。不过在模仿之前一定要先搞清楚这个模式针对的需求与适用的环境。
要 素5:定量(Quantification)。可选的设计方案往往有多种,如何进行选择呢?针对方案中的不同点进行的定量分析是最有说服力的判断依据。定 量分析的结果与我们的直觉相悖是很常见的。只依靠经验与直觉,甚至于只谈设计理念、原则,而不做定量分析,是架构设计道路上的大坑。可惜许多人喜欢往里面 跳。
要素6:方面(Aspect)。系统架构设计需要考虑多方面的需求:最终用户能直接体验到的是系统的功能、性能、可靠性等,系统的 运营者还要关心系统的控制管理,开发者强调开发周期与成本、可重用性、维护调试等,上述几类参与者都可能会对系统的可扩展性提出需求……设计师需要根据项 目实际情况,针对各方面的需求进行设计,并进行融合与折衷,不能只注重系统功能与性能,忽视了其他方面。
要素7:决策 (Decisions)。在系统架构设计中,原则、过程、产品、模式这些并不能自动解答设计师面临的所有疑问。拿球赛打个比分,这些只是基本技术动作,掌 握好它们是成为一个好球员的基本要求。怎样在比赛中运用这些基本技术动作,对球进行合理的处理,则需要球员根据场上情况,在一瞬间做出自己的决策。这是集 中体现球员才华的地方,往往也是球星与普通球员之间的主要区别所在。与球员们相比,系统架构设计师有更充足的时间来进行决策,不过决策同样也是最体现设计 师智慧与才华的地方。
在P4QAD中,第一个要素“原则”统领了系统架构设计的工程与艺术,第二个到第六个要素是属于工程方面的,最后一个“决策”属于艺术方面。
转载于:https://blog.51cto.com/yuesiyuewei/764442