Android架构:认识简法设计与EIT软件造形

原创
移动开发 Android
本文是高焕堂老师分享的Android架构思想,文章所介绍的减法设计和简单造形并不是用来删除复杂(多变),而是用来容纳复杂,让用户都掌握主动力量,从简单中即能享用软件系统的复杂功能和服务。所谓多变,就是易经的“易”;而”容”纳复杂多变,就是”容易”。只要善用减法设计策略和EIT造形战术,就能让一切都很容易了。

内容:

  • 简单法则(减法设计)
  • 减法设计是战略,造形是会赢的战术
  • EIT软件造形是什么?
  • EIT造形的用途
  • EIT造形的特性
  • EIT造形的内部元素
  • 结语

软件设计的复杂和未来的多变都是本质性的、是不可以删除的(因为删除了就不再是一个完整的、有生命的系统了)。本文所介绍的减法设计和简单造形并不是用来删除复杂(多变),而是用来容纳复杂,让用户都掌握主动力量,从简单中即能享用软件系统的复杂功能和服务。所谓多变,就是易经的“易”;而”容”纳复杂多变,就是”容易”。只要善用减法设计策略和EIT造形战术,就能让一切都很容易了。由于科技只会继续变复杂,采取简法设计策略是搭配简单造形的有效战术,是很经济效益的。

一、简单法则(减法设计)

没有简单,我们就无法理解复杂;欲面对复杂,只能简单。

大画家毕加索曾说过,绘画艺术是减法的过程(process of elimination),画出的作品具有<简单性>。美国麻省理工大学的工业设计教授John Maeda也说道:

“减法设计可以是一种富有创意的方式,来看待由设计所推动的世界。简单可以满足人们心灵中想解决谜团、追寻正确完形的自然渴望。”

例如,智慧城市等的设计是复杂的,在垂直面向,切分为上层、中层和实践层;在水平面向,切分为不同的业务区块(Business Area);然后分而治之。这些都是减法设计思维的表现。幅员愈广大的国家,整体设计规模就愈大(例如数据量,网络带宽等),其智慧城市的”中层架构的减法设计”(简称中层设计)就愈重要。其如同树木一般,长得愈高大的树,其中层的树干部分就必须简单而强壮。

二、减法设计是战略,造形是会赢的战术

 基于减法设计策(战)略,当你无法删除身外物(如软件或太阳星系)的复杂关系时;不须要难过,因为它能简化你脑海里的想象,提升你内心面对复杂事物的能力。造形(Form)则是艺术家、设计师的减法设计呈现,它具有简单特质,提升了人们理解和掌握外界复杂多变的能力。

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

”软件的复杂性是本质性的,并非表像而已。”

(The complexity of software is an essential property, not an accidental one.)

于是,高焕堂老师提出简单的EIT软件造形;让人们能理解智慧城市幕后信息化软件体系里的复杂关系。有了中层设计造形的<简单性>,人们就很容易理解智慧城市的中层架构(如同树干结构)的一致性,如何有效支撑上层设计里的繁杂业务功能(如同树叶)了;又能体现、落实于底层快速演化的信息化(IT)新技术上。

三、EIT软件造形是什么?

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

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

图-1  EIT造形

[[77797]]

图-2  几何造形

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

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

[[77798]]

图-3  原子造形

[[77799]]

图-4 唐诗造形

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

[[77800]]

图-5  集装箱造形

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

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

图-6   软件类别造形

图-7   枫叶造形

四、EIT造形的用途

未来的变化和复杂性是本质性(Essential)的,人们无法删除它。于是想办法提升人们管理复杂的能力。

著名软件专家Fred Brooks(“人月神话”一书作者)在40年前就说道:”软件的复杂性是本质性的,并非表象而已。”(The complexity of software is an essential property, not an accidental one.)

于是,也必须想办法提升人们面对软件复杂性的能力。

试想,当你去观察太阳星系时,如果你脑海里没有阿基米得(Archimedes)几何学的”椭圆”概念或造形,你会觉得各星体运行的轨迹非常复杂。这个复杂性是本质的,无法删除,怎么办呢?

等到你学了几何,脑海里有了”椭圆”概念或造形之后,再去看太阳系,你会发现只不过是9个椭圆形轨道而已,非常简单。

此时,你并没有去删除你身外星球的复杂关系;但却简化了脑海里的想象,提升你内心面对复杂事物的能力。

同样地, 当你去观察Android的多层框架体系时,如果你脑海里没有”EIT概念或造形”,你会觉得Android平台软件非常复杂。这个复杂性是本质的,无法删除,怎么办呢?

等到你学了EIT造形、脑海里有了EIT概念之后,再去看Android平台软件,你会发现只不过是一堆EIT造形的有机(Organic)组合而已,非常简单。例如,在 <HTML5+Android平台>的架构里,就是两层EIT造形的简单组合而已,如下图所示:

图-8  复杂外貌来自于EIT造形的简单组合

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

#p#

五、EIT造形的特性

当我们心怀阿基米得几合学的椭圆造形去看待太阳系星球的运行时,就会发现其单一造形所创造出来的整体之美。

同样地,当我们心怀枫叶单纯造形去看待枫叶树林时,也立即会发现其单一造形所创造出来的整体之美。

以此类推,当我们心怀EIT单纯造形去看待Android系统框架时,也会发现其单一造形所创造出来的整体之美。

这项美感来自于自然造物法则。自然界的造形主要来自「信息的有限性」( Information Limitations)。由于这项限制,一个生物形体的造成,是出自一个概括性的计划:「单纯的造形」。随着生物的成长、与环境的交互信息愈多,逐渐在细节上修修补补,就发展出「不同的内涵」。然后,基于单纯的造形,不断进行「重复地组合」。例如,漂亮的枫叶林,就是合乎「单纯造形、不同内涵、重复组合」三项特性。许多造形相同(且不同细节)的枫叶,组合出一遍美丽的树林。如下图:

图-9  枫叶造形的组合

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

六、EIT造形的内部元素

造形概念有两层作用:1)规范<小>元素组合规律,让人们容易组合出<中>间模块。2)规范中间模块组合规律;让人们容易组合出<大>系统。例如,玫瑰花就是一个造形,规范了花瓣、花蕊、花衬叶等有限<小>元素的组合规律。同时它无限重复也大大影响(和简化)了整体<大>树系统的组合规律。这项造物法则,提升了掌握自然界复杂多变的能力,唯有熟谙此道,才能创造架构和产品的未来性。

于是,树是一个单一造形(Form),含叶、枝、干、根等共同元素种类,也有元素之间的简单组合规律。然后依循将树这种造形依循简单规律,无限重复和组合就成为林。再从太阳系有九大行星的运行轨迹而观之,其单一造形就是椭圆形。每个造形都含有两个元素:太阳和行星。如果太阳系本身不是一位出色的几何学家,那么一定有一位杰出的几何学家创造了太阳系。

在软件上也是把复杂多变的内涵封装于一个简单的造形里。例如,面向对象的类别(Class),其内部只有两个元素:函数(Function)和数据项(Data Item)。基于这简单造形,人们掌握能力增强了,不再畏惧了,就敢大胆去尝试各项组合,成为形形色色的应用软件(Application)。

一般而言,造形的组成元素种类,大多为2或3种,并且有简单的元素组成规律。例如:

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

等等。

同样地EIT造形也是基于固定而有限的元素种类(如引擎、接口、轮胎三种元素),加上简单的组合规律(如引擎透过接口来呼叫轮胎),也形成了「单纯造形」。虽然造形的轮廓相同,组成元素种类也相同,然而其内部元素,以及元素的不同组合,覆予各个造形不同的内涵。

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

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

刚才谈到物理上的原子(如上图-3所示)来看,氢原子(H)和氧原子(O)两者的都是原子造形,轮廓相同,但是内部元素组合不同,形成不同的内涵。除了上述的内部元素组合规律之外,还要谈谈外部的组合规律。也就两个造形、或多个造形之间的组合方式。例如,在某项规律下,两个氢原子(H)造形,可以和一个氧原子(O)造形,相互结合而形成一个水分子(H2O)。

在生物界里,也是如此。例如,每一片树叶(如枫叶或橄榄树叶)都是一个轮廓相同而内涵不同的造形。它们会依循某种规律而组合成树枝,如下图所示:

图10、树叶造形的(外部)组合规律

从上述的图-9和图-10里,很容易看出其组合的规律性,及其无限的自我类似与重复。于是,树叶持续自我重复,就组成较大的树枝(如上图-9和图-10)。树枝再自我重复,就成为一棵树。树再自我重复,就成为一座森林了。由于无尽的自我重复,同一棵树上的众多叶子皆有共同的结构、一致的型态。其具有整体的和谐感觉,而且拥有该树独特的风味。一致的造形就如同基因(Gene),决定叶子的巨观结构,却也支撑并创造出每片叶子细腻的特殊内涵,此外也让众多树叶能和谐地创造出无限的特殊组合体:一颗树。

以上所述的树叶是个造形,经由简单重复组合及修修补补而成为一棵树,甚至一座森林。当我们反向细观叶子内部的复杂,也会看到叶子也是一个整体,也是由更小的单位、更简单的序而形成的。一直小到DNA都是呈现「单纯造形、内涵不同、重复组合」的特性。例如,<<猫掌与弹弓>>一书里就写到:

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

DNA的螺旋形式结构如下:

图-11  DNA造形的螺旋状组合

 DNA的小单位就是造形,内涵可简单也可能复杂,但轮廓简单一致,组合规则也简单,不过组合出来的DNA螺旋结构的内涵却极为复杂,但结构外形仍是简单的。生物从DNA开始就是依循「信息局限性」的原则所规范的,因而创造出生物的有机次序(Organic Order),带来和谐而多彩多姿的大自然。

同样地,在信息化的方面,当你学会了软件EIT造形、脑海里有了EIT概念之后,再去看Android平台软件,你会发现只不过是一堆EIT造形的简单组合而已,非常简单。例如下图:

图-12  EIT造形的组合范例

八、结语

著名设计师保罗.兰德(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平方”具有简单性,让人们能掌握复杂的质、能与光速的关系。同样地,减法思维和设计造形的简单性,提升了人们掌握软件复杂多变的能力;唯有熟谙此道,才能让城市居民掌握主动力量,从简单中即能享用智能城市的复杂功能和服务。

By:高焕堂《android从程序员到架构师之路》

责任编辑:徐川 来源: 51CTO
相关推荐

2014-01-06 11:23:54

Mesos设计架构

2016-06-24 15:24:51

2023-04-28 08:23:51

软件架构设计

2011-03-09 10:56:00

LAMP架构

2017-02-21 16:40:16

Android垃圾回收内存泄露

2018-10-29 11:41:22

架构MVCAndroid

2012-06-07 10:45:12

软件架构设计原则

2009-02-01 10:17:19

Java架构设计设计模式

2010-07-07 10:35:40

UML软件建模

2023-04-13 08:23:28

软件架构设计

2017-06-13 09:32:34

存储架构超融合

2009-07-20 09:52:20

2022-11-03 11:31:43

结构分析法监测

2021-12-23 08:21:36

软件设计系统

2011-02-28 14:34:01

苹果iOS

2023-12-04 07:15:55

2022-01-20 10:14:33

架构软件开发

2010-12-28 19:55:20

软件架构可靠性

2022-06-04 16:11:14

勒索软件加密Nokoyawa

2014-11-26 14:40:48

PHP云架构
点赞
收藏

51CTO技术栈公众号