By 高焕堂

[email protected]

重要参考文章

  • 智慧化潮流的敏捷顶层设计方法论
  • 从Android框架代码学习EIT造形

一、前言

当你无法删除身外物(如软件或太阳星系)的复杂关系时;不要难过,可以简化了脑海里的想象,提升你内心面对复杂事物的能力。造形(Form)可简化了脑海里的想象,提升内心面对复杂事物的能力。没有简单,我们就无法理解复杂;亦即,面对复杂,只能简单。

减法设计是软件架构设计的战略,EIT造形是会赢的战术。

兹回忆,于十七世纪中,牛顿提出了简单公式(即造形):F=ma;让人们能轻易理解物体运动的复杂<关系>。再如,于二十世纪初,爱因斯坦发表了简单公式:E=MC平方;让人们能理解复杂的质量、能量与光速之间的复杂关系。同样地, 在软件方面,著名专家Fred Brooks(“人月神话”一书作者)在40年前就说道:

”软件的复杂性是本质性的,并非表象而已。”
(The complexity of software is an essential property, not an accidental one.)

于是,高焕堂老师提出简单的EIT软件造形;则让人们能理解Android多层框架体系里的复杂关系。有了架构设计造形的<简单性>,人们就很容易理解软件的复杂关系,进而提升了掌握软件系统复杂多变的能力,唯有熟谙此道,才能创造架构和产品的<未来性>。

二、EIT造形像什么?

EIT造形是一种基本的结构(Structure),一种概念(Concept);我们称它为”EIT造形(Form)”。

认识EIT造形---android 架构_第1张图片

同样地,圆形、椭圆等是基本的几何结构,都是概念;称为阿基米得几何造形。

认识EIT造形---android 架构_第2张图片

同样地,原子(Atom)是基本的物质结构,也是概念;是物理学的基本造形。

认识EIT造形---android 架构_第3张图片

同样地,唐诗的七言绝句是基本的文章结构,也是概念;是诗词的基本造形。

认识EIT造形---android 架构_第4张图片

同样地,集装箱(Container)是物流航运的货物结构,也是概念;是物流的基本造形。

认识EIT造形---android 架构_第5张图片

同样地,软件的类别(Class)是基本的软件结构,也是概念;是软件的基本造形。

认识EIT造形---android 架构_第6张图片

同样地,枫叶、樱花都是一种基本结构,也是概念;是赏枫叶、赏花者心中的基本造形。

认识EIT造形---android 架构_第7张图片

三、EIT造形的用途

未来的变化和复杂性是本质性(Essential)的,人们无法删除它。于是想办法提升人们管理复杂的能力。著名软件专家Fred Brooks(“人月神话”一书作者)在40年前就说道: ”软件的复杂性是本质性的,并非表象而已。” 于是,也必须想办法提升人们面对软件复杂性的能力。试想,当你去观察太阳星系时,如果你脑海里没有阿基米得(Archimedes)几何学的”椭圆”概念或造形,你会觉得各星体运行的轨迹非常复杂。这个复杂性是本质的,无法删除,怎么办呢? 等到你学了几何,脑海里有了”椭圆”概念或造形之后,再去看太阳系,你会发现只不过是9个椭圆形轨道而已,非常简单。此时,你并没有去删除你身外星球的复杂关系;但却简化了脑海里的想象,提升你内心面对复杂事物的能力。
同样地,当你去观察Android的多层框架体系时,如果你脑海里没有”EIT概念或造形”,你会觉得Android平台软件非常复杂。这个复杂性是本质的,无法删除,怎么办呢? 等到你学了EIT造形、脑海里有了EIT概念之后,再去看Android平台软件,你会发现只不过是一堆EIT造形的有机(Organic)组合而已,非常简单。例如,在 <HTML5+Android平台>的架构里,就是两层EIT造形的简单组合而已,如下图所示:

认识EIT造形---android 架构_第8张图片
图-1 两层EIT造形的简单组合

所以,EIT造形的主要用途是:提升内在能力、管理外在变化和复杂。

四、EIT造形的特性

当我们心怀阿基米得几合学的椭圆造形去看待太阳系星球的运行时,就会发现其单一造形所创造出来的整体之美。同样地,当我们心怀枫叶单纯造形去看待枫叶树林时,也立即会发现其单一造形所创造出来的整体之美。以此类推,当我们心怀EIT单纯造形去看待Android系统框架时,也会发现其单一造形所创造出来的整体之美。
这项美感来自于自然造物法则。自然界的造形主要来自「信息的有限性」( Information Limitations)。由于这项限制,一个生物形体的造成,是出自一个概括性的计划:「单纯的造形」。随着生物的成长、与环境的交互信息愈多,逐渐在细节上修修补补,就发展出「不同的内涵」。然后,基于单纯的造形,不断进行「重复地组合」。例如,漂亮的枫叶林,就是合乎「单纯造形、不同内涵、重复组合」三项特性。许多造形相同(且不同细节)的枫叶,组合出一遍美丽的树林。如下图:

认识EIT造形---android 架构_第9张图片
图-2 单纯的造形、美丽的组合

EIT造形就像<枫叶造形>,其特性为:

  • 每一个EIT造形都有一致的轮廓;每一片枫叶都有一致的轮廓外形。
  • 每一个EIT造形的内涵都不同;每一片枫叶的细节都不同。
  • 众多的EIT造形构成一个有机体系;枫树(含有众多树叶)是一个有机体。

造形的有机体系具有整体的和谐美感;枫树林(枫叶林)具有整体的和谐美感。再如人们的手掌的造形也都极为相似,其细节纹路也各不相同,也满足上述三项特性。此外,在工业设计品中,你常常可以发现其杰作具有其特色:「简单造形、内涵不同、无限重复」。货柜(集装箱)就是典型的单纯造形,它兼具了「简单造形、内涵不同、无限重复」三项特质。更重要的是:它带来无比巨大的商业潜力和暴利商机。只要拥有上述三项特质的工业设计品,都会具有无现活力和巨大商业潜能。在文学诗词上,例如唐诗七言绝句的造形是:4行7字和平仄韵律。基于此造形,人人都能轻易加入创作,促成鼎盛诗风。在建筑上,四合院造形也是。

五、EIT造形的内部元素

造形概念有两层作用:1)规范<小>元素组合规律,让人们容易组合出<中>间模块。2)规范中间模块组合规律;让人们容易组合出<大>系统。例如,玫瑰花就是一个造形,规范了花瓣、花蕊、花衬叶等有限<小>元素的组合规律。同时它无限重复也大大影响(和简化)了整体<大>树系统的组合规律。这项造物法则,提升了掌握自然界复杂多变的能力,唯有熟谙此道,才能创造架构和产品的未来性。
于是,树是一个单一造形(Form),含叶、枝、干、根等共同元素种类,也有元素之间的简单组合规律。然后依循将树这种造形依循简单规律,无限重复和组合就成为林。再从太阳系有九大行星的运行轨迹而观之,其单一造形就是椭圆形。每个造形都含有两个元素:太阳和行星。如果太阳系本身不是一位出色的几何学家,那么一定有一位杰出的几何学家创造了太阳系。
在软件上也是把复杂多变的内涵封装于一个简单的造形里。例如,面向对象的类别(Class),其内部只有两个元素:函数(Function)和数据项(Data Item)。基于这简单造形,人们掌握能力增强了,不再畏惧了,就敢大胆去尝试各项组合,成为形形色色的应用软件(Application)。一般而言,造形的组成元素种类,大多为2或3种,并且有简单的元素组成规律。例如:

  • 太阳系的行星运行轨迹,呈现单纯的椭圆造形。每个造形都只含有两种元素:太阳和行星。
  • 政府架构,其造形也只有三种元素:行政、立法和司法。
  • 软件的类别,其造形也只有两种元素:函数和数据项。
  • 软件XML的造形也只有两种元素:Tag和Content。
  • 物理的原子,其造形只有三种元素:质子、中子和电子。
  • 等等。

同样地EIT造形也是基于固定而有限的元素种类(如引擎、接口、轮胎三种元素),加上简单的组合规律(如引擎透过接口来呼叫轮胎),也形成了「单纯造形」。虽然造形的轮廓相同,组成元素种类也相同,然而其内部元素,以及元素的不同组合,覆予各个造形不同的内涵。
在物理学上的原子造形也是如此,氢原子(H)和氧原子(O)两者的都是原子造形。这两个造形轮廓相同(都是原子造形),但是内涵不同。从EIT 造形与原子造形的对比,很容易理解到造形内部元素之间,有其组合与互动的韵律(或规律)。基于固定而有限的元素种类(如质子、中子、电子三种元素),加上简单的组合规律(如电子围绕质子和中子),形成所谓的「单纯造形」。同样地,EIT造形也是基于固定而有限的元素种类(如引擎、接口、轮胎三种元素),加上简单的组合规律(如引擎透过接口来呼叫轮胎),也形成了「单纯的造形」。

六、EIT造形的外部组合规律

刚才谈到物理上的原子,例如氢原子(H)和氧原子(O)两者的都是原子造形,轮廓相同,但是内部元素组合不同,形成不同的内涵。除了上述的内部元素组合规律之外,还要谈谈外部的组合规律。也就两个造形、或多个造形之间的组合方式。例如,在某项规律下,两个氢原子(H)造形,可以和一个氧原子(O)造形,相互结合而形成一个水分子(H2O)。
在生物界里,也是如此。例如,每一片树叶(如枫叶或橄榄树叶)都是一个轮廓相同而内涵不同的造形。它们会依循某种规律而组合成树枝,如下图所示:

认识EIT造形---android 架构_第10张图片
图-3 树叶造形的(外部)组合规律

从上述的图-2和图-3里,很容易看出其组合的规律性,及其无限的自我类似与重复。于是,树叶持续自我重复,就组成较大的树枝。树枝再自我重复,就成为一棵树。树再自我重复,就成为一座森林了。由于无尽的自我重复,同一棵树上的众多叶子皆有共同的结构、一致的型态。其具有整体的和谐感觉,而且拥有该树独特的风味。一致的造形就如同基因(Gene),决定叶子的巨观结构,却也支撑并创造出每片叶子细腻的特殊内涵,此外也让众多树叶能和谐地创造出无限的特殊组合体:一颗树。
以上所述的树叶是个造形,经由简单重复组合及修修补补而成为一棵树,甚至一座森林。当我们反向细观叶子内部的复杂,也会看到叶子也是一个整体,也是由更小的单位、更简单的序而形成的。一直小到DNA都是呈现「单纯造形、内涵不同、重复组合」的特性。例如,<<猫掌与弹弓>>一书里就写到:

“一个DNA螺旋形的结构,可以由完全相同的小单位形成(好比一面墙是由相同结构的砖砌成);再者,每一个小单位所插入的方式,与别的小单位一模一样。只要你一旦明白一个DNA结构的装置方式,你便可以掌握全部。“

DNA的螺旋形式结构如下:

认识EIT造形---android 架构_第11张图片
图-4 DNA造形的螺旋状组合

DNA的小单位就是造形,内涵可简单也可能复杂,但轮廓简单一致,组合规则也简单,不过组合出来的DNA螺旋结构的内涵却极为复杂,但结构外形仍是简单的。生物从DNA开始就是依循「信息局限性」的原则所规范的,因而创造出生物的有机次序(Organic Order),带来和谐而多彩多姿的大自然。同样地,在信息化的方面,当你学会了软件EIT造形、脑海里有了EIT概念之后,再去看Android平台软件,你会发现只不过是一堆EIT造形的简单组合而已,非常简单。例如下图:

认识EIT造形---android 架构_第12张图片
图-5 Android平台的组合范例

七、结语

著名设计师保罗.兰德(Paul Rand)曾说,我们会从最复杂的部分开始着手,最后的成品却具有简单性。这个减法过程本身是复杂的,然而一旦达到简单了,就能发挥杠杆作用,让人们能面对变化、掌握复杂。苹果公司前CEO乔布斯(Steve Jobs)也曾说到:

“简单比复杂更难,你必须努力让你的想法变得清晰明了,让它变得简单。但终究是值得的,因为只要你获得其<简单性>,就能搬动大山了。”
(Simple can be harder than complex:you have to work hard to get your thinking clean to make it simple. But it’s worth it in the end because once you get there, you can move mountains.)

就像爱因斯坦所提出的公式”E=MC平方”具有简单性,让人们能掌握复杂的质、能与光速的关系。同样地,减法思维和设计造形的简单性,提升了人们掌握软件复杂多变的能力。◆