By 高焕堂 2013/04/10
新一代的 <创新组合派设计>,其重视“未来性”。它以”组合”为目标,先定接口(Interface)来支持组合,并以接口包装内部的结构,让内部结构也是可以变动的,以便支持弹性地重构。例如,软件层的Socket接口可以是较稳定的,此接口的实现类内涵可变动,包括Socket接口在通信层的实践通信协议(如SOAP、WiFi、Zigbee、蓝芽等)都是可重构的,让系统具有高度敏捷性、未来性。
1、从<抽象思维派>到<创新组合派>设计
由于架构设计有两个基本技艺:抽象与组合(封装)。因此衍生两个不同的架构设计流派:
- 抽象思维派:致力于抽象出稳定、可靠、不变的共同性架构;亦即,追求<万变不离其宗>的宗。
- 创新组合派:致力于组合出具体独特性的创新架构;亦即,追求<与众不同>的特质。
相对上,新潮的<创新组合派>比较能陪伴你在移动互联网、云计算的潮流中,能如鱼得水、展现无比的创造力。通常,架构师都必须兼顾两者,仍然必须时时梳理和强化<抽象思维派>技艺,这是有效架构师的必备能力。<创新组合派>重视“未来性”。它以”组合”为目标,先定接口(Interface)来支持组合,并以接口包装内部的结构,让内部结构也是可以变动的,以便支持弹性地敏捷重构。例如,软件层的Socket接口可以是较稳定的,此接口的实现类内涵可变动,包括Socket接口在通信层的实践通信协议(如SOAP、WiFi、Zigbee、蓝芽等)都是可重构的,让系统具有高度敏捷性、未来性。<创新组合派>重视“落地性(可实现性)”,这也符合敏捷开发的原则,就是坚持一个美好的信念:
“各项架构设计决策都必须能迅速落实为代码”。
为了特别强调架构与代码两者之间的无隙缝衔接,高焕堂老师特别设计了EIT代码造形,让组合创新派的设计核心:接口(即EIT的<I>)能直接落实到代码。因之,EIT造形是架构与代码的优先交汇点。也能进一步,成为敏捷开发的起始点(Simple solution);所以EIT被称为:从架构到代码的捷径。
<创新组合派>最传神的隐喻是,谷歌公司副总Marissa Mayer所提倡的:
“创意爱上限制”(Creativity loves Constraint)。
她说:”创新来自愿景与限制的互动”(Innovation is born from the interaction between constraint and vision)。限制迫使架构师重新审视愿景(Vision),从不同观点切入,寻找新事物;同时也让其聚精会神、厘清思路;非常具有创新性。在软件开发领域中,上述的限制主要来自系统”需求”(Requirement);需求是用来检验(Test)架构的。因此,需求在上述两个派别中,其扮演的角色是不一样的:
- 抽象思维派:需求是架构设计的基础;所以又称为Requirement-based架构设计方法。
- 创新组合派:愿景是起点,创新组合是目标,需求用来检验;所以又称为Test-Driven架构设计方法。
此外,上述的创意主要来自设计思考(Design Thinking)模式,就是:溯因(Abductive)逻辑思考。无论是移动应用、物联网等都涉及愈来愈多的系统组合或整合。而软件开发(如敏捷方法),愈来愈仰赖架构设计,所以架构师们亟需要去学习和领悟创意型的架构设计模式。
俗语说,内行人看门道;专业的视角、专业的造形(Form)和模式(Pattern)就是其中之道。因此,希望您能以内行人的视角,领会设计思考、设计出未来性、落实为代码、且需求检验架构。于是,确保了架构设计的最佳性、可实现性和团队的敏捷性。
2、<创新组合派>设计的特色
2.1 仍然是以<抽象思维派>为基础
- 抽象(思维)派:抽象出稳定、可靠、不变的共同性架构:
- (创新)组合派:增添一个”合”元素,组合出具体独特性的创新架构:
- “合”元素的影响:以”组合”为目标,先定接口(Interface)来支持组合,并以接口包装内部的结构,让内部结构也是可以变动的,以便支持弹性地敏捷重构。
2.2 设计决策的未来性
架构师的职责是致力于现在决策,并让它能包容未来的变化,也就是让<目前决策>具有未来性。架构师不是去预测未来,不是去关心<未来决策>、或去替未来做决策。未来环境是善变的、市场需求也往往如流水般不可测;也就是因为它的未来的不可测性,所以我们需要优越的架构设计。
例如上图所示,有两个软件模块:C(Client)模块与S(Server)模块;而且两者之间透过网络通信机制来互通。此时一般人会先去寻找标准的通信机制(如协议),然后才开发C和S软件模块。这就是预测未来(通信途径)了,会让软件架构失去未来性,所以不是有效的软件架构设计思维。
2.3 迅速落实为代码(Code):造形与框架的角色
依赖两项重要的代码造形:
- EIT造形
- 框架(Framework)
Kent Beck曾说:”代码是设计(Design)与现实(Reality)的明暗交会处”。代码是架构的外貌,为了让架构与代码两者能无隙缝衔接,高焕堂老师设计了EIT代码造形:
EIT造形让接口(Interface)的设计,能够直接落实到代码透过接口的落实为代码。EIT造形是一个较小的框架;而框架是一个较大的造形。造形与内涵可以分离,所以可以先建立多层框架体系,然后将内涵添加进去。过去<抽象思维派>并没有将造形和内涵分离,大多先建立底层平台(包括内涵),再建立中层平台(包括内涵),然后建立上层平台(包括内涵),依序迭上去。当你阅读本文之后,就会以框架和造形思维去看多层平台(框架)体系了。多层框架体系就如同一座森林(造形),而众多子系统就像许多棵树木(内涵)一样,可以不断地添加进去。这就是现在流行的多层框架体系了。[歡迎光臨 高煥堂 網頁: http://www.cnblogs.com/myEIT/ ]
2.4 需求(Requirement)的角色
- 抽象思维派:需求是架构设计的基础;所以又称为Requirement-based架构设计。这是Waterfall开发过程所仰赖的架构设计途径。
- 创新组合派:愿景是起点,创新组合是目标,需求用来检验;所以又称为Test-Driven架构设计;或TDD( Test-Driven Development)方法:
在TDD检验机制里,需求是架构设计的限制(Constraint);而不是架构设计的基础。这反而让架构师获得更大的创意空间。所以,谷歌公司副总Marissa Mayer提倡:“创意爱上限制”(Creativity loves Constraint)。她说:”创新来自愿景与限制的互动”(Innovation is born from the interaction between constraint and vision)。限制迫使架构师重新审视愿景(Vision),从不同观点切入,寻找新事物;同时也让其聚精会神、厘清思路;非常具有创新性。
2.5 创新的来源:设计思考(Design Thinking)
◆ 有设计的架构
需求善变的项目开发需要敏捷,敏捷需要搭配<创新组合型>架构设计师,架构师需要设计思考技巧,设计思考仰赖溯因(Abductive)逻辑推理能力。溯因推理是由观察现象(结果)到原因的猜测推导过程,沿着现象的特征往回追溯产生该现象之原因;它是除了演绎推理、归纳推理之外的第三种逻辑推理方法。运用这种方法去猜测现象的可能原因,受逻辑规则制约的程度较小,具有高度的灵活性,是一种颇具创造性的推理方法。如下左图所示。
- 敏捷开发的幕后思维,就是 {溯因逻辑 + 迭代过程},如下图所示。
在一个企业(或公司)里,程序员、架构师和高层经里三者之间有着”战术引导战略”的重要关系。经理与架构师之间是:战略-战术关系;而架构师与程序员之间也是:战略-战术关系。敏捷方法,让”战术引导战略”的机制实际运行起来,例如TDD对代码(战术效果)检验的反馈,带动了架构的重构(战略调整)。传统上,关于”架构设计”往往比较重视”架构”而不是”设计”,因此对于设计思考、设计技术并不太重视;这常常导致:没有设计的架构。
◆ 架构的一生
架构的主人是愿景(Vision),架构的生母是问题(Problem),架构的养母是现实(Reality or Constraint),架构的养份是设计师的创意(Creativity),架构的外貌是代码(Code),架构的情人是需求(Requirement),架构的岁月是迭代(Iteration)。
◆ 框架是可执行的架构
框架(Framework)则是代码层级的架构,也是可由电 脑直接执行的架构。EIT造形让框架接口(Interface)设计,迅速落实为代码。
◆ EIT造形组合出独特的新框架
EIT造形是一个较小的框架;而框架是一个较大的造形。EIT造形让框架接口(Interface)设计,迅速落实为代码。◆
[Go Back]
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步