架构设计的第一步:需求、愿景与架构
架构设计的第一步:需求、愿景与架构
了解<需求>、<愿景>与<架构>三者的关系。也就是<需求分析>、<观想愿景>与<架构设计>三者的关系。
一、需求(Requirements)分析
这通常是由目前面临的问题(Problem)所引发出来的。着重于现实问题和条件的分析,然后寻求解决问题的方法、技术和资源。就系统开发人员来说,需求主要有两种:用户需求和系统需求。一般而言,人们通常会把它看成是系统开发时必须满足的<限制>(Constraint),也是要达成的<目标>(Goal)。
二、观想愿景(Vision)
由于需求非常贴近现实,若直接拿来当作<目标>的话,常有见招拆招或见树不见林的缺点。甚至,会有<短视而缺乏远见>之嫌。于是,透过观想愿景来汇集更多视角、扩大视野、产生洞见,成为系统开发的理想目标。一般而言,带来重大革新的公司(如苹果)都会提出一个愿景(Vision),告诉人们应该去追求的事物。苹果公司的前首席设计师布鲁诺(R. Brunner)说道:
“通常,伟大产品的成功之道并不是从草图和定义开始的,而是以一个点子(想法)开始,形成一条切实可行的路;然后对此不断开发和经营,这是一个战略性的过程。”
三、架构(Architecture)设计
需求分析从现实(Reality)出发,不但找出问题,并且厘清它的现实条件和限制。观想愿景则指引出我们的方向和目标(Goal)。架构设计就从这个目标出发,以终为始,从愿景映射到现实(Mapping from vision toreality)。恰好与需求分析是相反的视角,两者互补而相成,殊途而同归,才能得出一条从现实通往目标之路(或蓝图),这就是所谓的架构(Architecture)了。
四、两者互补:需求分析偏重<分>,架构设计偏重<合>
<分>的另一面是<合>。需求分析注重于<分>,另一面是架构设计注重于<合>。许多人误认为,架构设计是要寻觅系统的共通性和不变性。其实,这是需求<分析>的工作;而不是架构<设计>的工作。在人们展开对事物(或系统)的分析(Analysis)过程中,自然而然会对其分析结果进行抽象,抽出万变不离其<宗>,把此宗视为不变的序(Order)或本质(Essence),就会得到系统的共通性和不变性了。如下图:
需求分析与架构设计是两个不同视角,互补而相成,所以架构师必须兼顾两个视角,才能完成一个优质的架构(蓝图)。架构是独一无二的,架构设计是追求独特性的、气象万千的、与众不同的崭新组合。苹果乔布斯说:
“创造无非就是把事物联结起来。即若是非凡的创造通常也不过是对已有事物进行的新组合和关联而已。”
在《7 Brains:怎样拥有达芬奇(De Vinci)的7种天才》一书里,作者写道:
“能不能看出事物的关系和模式,并做出不寻常的组合和关联,乃是创造力的核心要素。”
例如,在飞机行业里,架构师的愿景是把一群各自「不会飞」的组件(如轮胎、引擎、机翼、机尾、油箱等),以精致架构将它们巧妙地组<合>起来,竟然整体就飞起来了。如下图:
从愿景出发,架构师心中先有<合>的目标,才来做分的动作。分离出很多接口,依据接口来组合出许多新奇的产品。例如,肯德基餐厅卖炸鸡,肯德基是客人来之前大师傅先做分(庖丁解鸡),等客人来了才由柜台的小弟小妹迅速组合,如下图:
五、两种观点兼顾的架构设计方法
传统上,架构设计常常是从需求分析出发的,后来专家们逐渐改变了。因为领域需求只是架构设计的单一观点。今天,专家们倡导<需求分析>与<接口设计>两项观点兼顾,才能产出优质的架构设计。随着互联网/大数据的潮流,软件产业逐渐远离过去大量制造、固定流程与稳定需求的ERP软件时代,而碎片化、互换性变成新时代的致胜关键,因此<接口设计>观点变得优先,由设计引导需求分析,成为最有效的架构设计新模式。例如,谷歌公司副总Marissa Mayer提倡:
“创意爱上限制"(Creativity loves constraint)。
她说:
"创新来自愿景与限制的互动"(Innovation is born from theinteraction between constraint and vision)。
她主张架构的创新设计,是从愿景(Vision)出发,而不是从需求出发。需求成为设计的限制,需求限制迫使架构师重新审视愿景和设计,从不同观点切入,寻找新事物;同时也让其聚精会神、厘清思路;非常具有创新性。
~ End ~