架构第三原则:架构=范围+联接件。
【1.基本前设】
架构的目标究竟是什么?我们当然知道其目标是系统—-无论是大的、复杂的体系,还是一个小的、有含义的组成,又或是我们要考虑其系统性的任何东西。然而这一概念下的系统,其内涵是丰富以至于无可穷尽的。架构作为一个事实工具或对于这一系统的事实影射,只能表达其中的部分而决非全集。因此,我们所谓“架构的目标是什么”,其答案必将指向系统,也必然是系统特定的一面两面或数个方面,这是我们在这一前设中必须明确的。
对于本书的总论与上一章中所讨论的架构,在总论中已经确定地将它的源起指向“系统方向的必要性”。若某种架构并不以“系统方向”为目标,那么它不适宜作为这些章节要讨论的基本对象,亦即它们在基本的抽象概念上是不同的◎。“架构=范围+联接件”这样的求解是特指面向系统的方向问题的。若是讨论系统的其他问题,则相关的求解仍可以称为“架构”,并仍满足第一和第二原则,但未必满足第三原则。
本原则是对第二原则的补充,讨论架构作为工作产物时的内容。
【2.范围与联接件之于系统的意义】yipindushu.com
决策层在系统的方向问题上赋予架构师的职责是“目标的映射”。这包括两方面的含义,其一,不一定是确实的目标,例如某个产品或产品的某个版本;其二,是对目标的约束,而非说明其实施的细节。范围与联接件是架构师的两个工具,与其说它们是对规模与复杂性的求解,不如说它们事实上就是架构师对“系统的方向问题”的两个求解。
所谓方向与目标有一些基本性质,包括:其一,系统的方向可能是确实的,也可能是阶段性变化的;其二,阶段目标清晰而明确,但方向却可能存有模糊性;其三,方向必是一个面的问题,而目标方才是点的问题。架构的很大一部分工作,便在于把握这些“模糊的阶段状态(阶段目标或产品版本)”背后的系统关键,通过联接件来刻画系统的脉络。无论系统在中长期上的变化为何,这些通过联接件得到的系统脉络是很难有变化的。比如说,我们很难改变Web中用户行为的流向,总是从主页到二级、三级或更多级页面。但是,当某种行为模式提出来的时候,这种脉络就变化了。例如,以用户为中心的SNS网站,那么就会是从登录/验证开始,并经由不同用户行为引导①因此我并不能确切地说“世界上所有称为架构的东西”都适于本书的讨论(尤其是指总论与上一章的讨论)。
而形成流向。那么这两类网站的联接件与联接关系就会非常不同,而各自的(关于联接的)架构也必是在这一网站的发展过程中长期不变的①。因此,相对于系统的多个阶段目标,联接件(及其联接关系)总是纵贯其间的。
但是联接件只是解构系统复杂性的一个手法。如同我们在层次架构中通过“逐层清晰”来解构系统复杂性一样,这一手法通常用来确保系统长期的不变性——复杂性通常是由可变性引起的。
架构在应对系统方向下的规模问题时,采用的方法通常有两个:其一是对“系统组成”的明确约定,例如模块图或(细化的)层次架构图;其二是对系统构件的明确概念。后者——构建明确概念是架构抽象中最困难而又最重要的工作之一。例如,我们在讨论办公系统时,对于“办公业务系统”与“办公管理系统”的概念定义与辨析。当架构师使用这样一个词汇(定义,或称之为“概念”)来表述目标系统时,事实上就是对系统范围的明确约束。但问题通常不在于如何表述,而在于架构师“何以确定这一表述是符合系统方向的”2。
系统总在变大③,在它的形态与内涵两个方面都必将存在失控的风险。这两个风险是骈生的。此外,风险与机会也是骈生的,所以在架构上不单能够反映系统的“范围与联接件",也可以反映系统的“转折点”。只是后者常常仅被视作风险而遭到严防死守罢了。无论从哪一个角度入手,范围与联接件都是架构用于保障系统方向以及提供系统在方向上应变的可能性的主要工具,架构所表达的是此二者的全集,而非其一或其他。
版权声明
本站素材均来源与互联网和网友投稿,欢迎学习分享
架构原则3:http://www.yipindushu.com/xuexifangfa/16480.html
推荐文章
12-05
1 如何快速学习一门语言01-17
2 如何提高小学生的学习成绩09-13
3 让你在欢笑中充满正能量的语录!02-14
4 该如何学习日语02-03
5 成人高考脱产学习方法吗