代码改变世界

系统架构设计的工程与艺术(0)

2012-01-06 09:13  悦思悦为  阅读(194)  评论(0编辑  收藏  举报

对于系统架构设计,我现在是功力不够,境界还凑合,俗称眼高手低是也。功力不够只能一点一点地练,一点一点的涨了,还不知道什么时候能有所小成。不过有境界也算是一件好事情,所以这个系列会先聊一聊境界方面。

之所以用了这样一个标题,是因为系统架构设计既有比较通用的、相对固定的方法与模式,即工程化的一面,也需要设计师发挥个人的灵感与才华,即艺术的一面。二者不可偏废。

系统架构设计有7个需要注意的要素,可以概括为P4QAD,具体如下:

要素1:原则(Principles)。原则是系统架构的内在规律性的东西,是为了达到系统的可靠性、性能、可重用性、可扩展性等多方面的需求,应当遵守的具有普遍意义的规则。原则的重要性勿需多言,因此在七个要素中它位列第一。

要素2:过程(Process)。过程就是设计系统架构的步骤与操作流程,即先做什么,再做什么,在什么条件下怎么做,等等。对任何一种方法论而言,过程是体现其可操作性的要素,因此其重要性仅次于原则。

要素3:产品(Products)。系统架构设计的产品不是指最终完成的那个系统,而是指的架构设计的方案、文档等,例如传统软件工程的需求分析文档、概要设计文档与详细设计文档。产品往往是和过程耦合的,耦合关系规定了在设计过程的某一步应当输出哪些产品,从而保证过程的每个步骤能够达到目的。通常设计过程中会形成多种产品,分别从不同的角度、不同的尺度对设计进行描述,因此产品体系应当保证完备性(必要的角度和尺度都覆盖到了)与一致性(不同的产品之间没有矛盾)。关于这一点,一些架构框架(architecture framework)有专门的规定。

要素4:模式(Patterns)。模式是前人总结的具有可重用性的设计方案,是学习的榜样和模仿抄袭的对象。不过在模仿之前一定要先搞清楚这个模式针对的需求与适用的环境。

要素5:定量(Quantification)。可选的设计方案往往有多种,如何进行选择呢?针对方案中的不同点进行的定量分析是最有说服力的判断依据。定量分析的结果与我们的直觉相悖是很常见的。只依靠经验与直觉,甚至于只谈设计理念、原则,而不做定量分析,是架构设计道路上的大坑。可惜许多人喜欢往里面跳。

要素6:方面(Aspect)。系统架构设计需要考虑多方面的需求:最终用户能直接体验到的是系统的功能、性能、可靠性等,系统的运营者还要关心系统的控制管理,开发者强调开发周期与成本、可重用性、维护调试等,上述几类参与者都可能会对系统的可扩展性提出需求……设计师需要根据项目实际情况,针对各方面的需求进行设计,并进行融合与折衷,不能只注重系统功能与性能,忽视了其他方面。

要素7:决策(Decisions)。在系统架构设计中,原则、过程、产品、模式这些并不能自动解答设计师面临的所有疑问。拿球赛打个比分,这些只是基本技术动作,掌握好它们是成为一个好球员的基本要求。怎样在比赛中运用这些基本技术动作,对球进行合理的处理,则需要球员根据场上情况,在一瞬间做出自己的决策。这是集中体现球员才华的地方,往往也是球星与普通球员之间的主要区别所在。与球员们相比,系统架构设计师有更充足的时间来进行决策,不过决策同样也是最体现设计师智慧与才华的地方。

在P4QAD中,第一个要素“原则”统领了系统架构设计的工程与艺术,第二个到第六个要素是属于工程方面的,最后一个“决策”属于艺术方面。

(待续)