相關文件:

1.高老師的=>A段架構設計_雋語集

2.高老師的新書《思考軟件,創新設計:A段架構師的思考技術》==>請看目錄

3.欢迎访问 =>高老师的ADT技术论坛

EE                                                                     EE

By 高焕堂:MISOO(大数据.大思考)联盟.台北中心和东京(日本)分社.总教练

  (這是高老師的演講文字稿,演講主題:深入體會EIT造形與使用途徑)

1. 近两年来我最关注的题目是:“设计”

各位IT界的新秀们,大家好,我们有缘千里来相会。

近两年来我最关注的题目就是“设计”两个字,这个设计是广泛的设计,大家都知道美国的乔布斯把IT和设计结合在一起,所以创造的苹果一系列产品让用户体验提高到很高的层次,还有韩国的三星也在讲设计,所以我们说一个民族如果不强调设计,那么将永远被别人“设计”。所以我把设计和IT作为我过去两年来的主要的工作。我去深圳就常常访问深圳大学的设计学院,我去秦皇岛燕山大学设计系做了演讲,去年6月份曾到大连。去年年底我开始闭关,总共闭关了4个半月,在这个过程中都在思考,设计师是怎样思考的,那么IT产业到底有多少设计的能量,假设我们IT产业设计很苍白,那么我们IT产业又如何去帮助别人信息化?我们IT产业又如何去贡献我们设计的思想?这是一个问题。

所以,今天演讲的主题是在IT 人员怎么去进行设计思考,所以今天我就向大家报告一下我在过去一年来的创意。

2. 我的作品就一个字:形(Form)

设计就一定跟创意有关,今天我就来谈一谈我的作品。我的作品就一个字:形。也就是EIT软件代码造形。舞蹈中是有造形的,那么代码中有什么造形呢?所以了解代码造形,码农明天就能顺利变成架构师了,而且是新一代的架构师,新一代的人要跳跃地超越别人,而不是在后面追赶。

有人问,高老师,你这个形到底有什么经济价值?有什么意义,对我们的IT产业有什么帮助?首先想让你了解什么叫形,什么叫做形非常简单,唐朝的诗叫做七言绝句,“姑苏城外寒山寺,夜半钟声到客船”,一首诗四个句子,每一个句子七个字,它的韵律有两个“平平仄仄平平仄,仄仄平平仄仄平”,这个也叫做形。

古代中国创造诗歌都用到形;可是,近代的形都是从国外来的,包括我们的衣服鞋子雨伞。为什么现在我们不会?因为创造形的人没钱赚,唐诗创造形的人是谁,后代都不知道;但是用这个形的人叫做李白、杜甫、白居易都成名了。

就像李白、杜甫等诗人,了解这个形很重要。这个形只有一个,唐诗的形也只有一个,很多的诗人把他的意境用形呈现出来,如果你今天写一首诗,把它配成七言绝句的结构,给别人看,别人就会说这是唐诗,虽然你是现代的人,但是形确实是唐朝的。唐诗有一种好处,就是这个形只有一个,人们依照这个形很容易创造。举个例子,如果今天教你做阳伞,教你怎样做,大家就很容易学习,所以有了形,大家就很容易学习,因为可以从简单中可以了解复杂。

3. 从复杂中设计出简单,让用户从简单中掌握复杂

虽然我找这个形要找很久,因为要在复杂的事物中找出单一的形是很困难的;但是,当我找出这个形之后,别人来应用就简单了,因为大家可以从简单中掌握复杂了。例如,牛顿从很复杂的力学中总结出了f=ma公式,大家就能从这简单公式而去掌握复杂的力学了。爱因斯坦也一样,他从复杂的规律中找出简单的E=mc^2质能互换公式,大家就能从这简单公式而去了解复杂的质能世界了。

为什么说它简单呢? 理由之一是:公式的元素不超过三个,比如说,牛顿力学公式里只有F、m和a三个元素;爱因斯坦的公式也一样,只有E、m和c三个元素。

所以,我找到的EIT软件造形的要素,也刚好就是三个,所有的软件都能用这三个要素进行组合创造。就像唐诗,有了七言绝句造形之后,各种深刻的意境,比如白居易的<琵琶行>诗句:“洵阳江头夜送客,枫叶荻花秋瑟瑟”、“主人上马客在船”等全部都在一个形而呈现出来,还有写白居易哭的多惨:“座中泣下谁最多?江州司马青衫湿”,这么复杂的情感都在唐诗的形里面呈现出来。我们软件的复杂度与唐诗的复杂度差不了多少,这样以一个形呈现出来就比较好管理了。有了软件之形,无论是CMMI、6-Sigma或敏捷开发的效果都会变得更好,所以说构架师就要从复杂中设计出简单,让所有的用户从简单中掌握复杂。在硬件设计上也是一样,你看iPhone为了让用户从简单中掌握复杂,就必须在设计上从复杂到简单。

4.  软件本质是复杂? 还是简单?

一位著名的软件专家Fred Brooks,40年前就在他的《人月神话》一书里说道:“软件的复杂是本质性的,并非表象而已”。另外,著名软件架构师 周爱民先生在他的《大道至简》一书里是说:“软件的本质是简单的”。其实这是一体的两面,分别是两个命题,软件有复杂的一面,也有简单的一面。我们能不能把这两个结合起来?但是我们为什么偏向于“大道至简”?因为我们在遇到复杂的时候总是先找简单,因为简单不会让我们害怕。那么怎样找到简单?就是我们怎样从复杂中得到简单?华人最擅长的做法就是抽象,要从码农变成好的架构师就要学会抽象,把很多具象的东西去掉差异性的东西,这叫抽象,这样做对不对?或是好不好呢?

5. 把复杂去掉而得到简单,是一种抽象

或许没有对错,也没有好坏;但是我们要先找到众多具象的东西,却要找很久,团队就不敏捷(Agile)了。所以这样一个抽象的概念跟敏捷刚好冲突,所以敏捷在这种团队会很困难,因为你要想要找到简单就先要找到所有的复杂,旷日又废时。还有当你把一堆猫都抓过来你会发现它们的胡须都不一样。那就把胡须去掉,尾巴不一样就把尾巴去掉,但是没有胡须、没有尾巴的东西还能称为<猫>吗?

6. 回归”本质(Essence)”之意

传统上,大家认为架构师本身的职责是去寻找不变的结构,这合理吗? 想想在敏捷(Agile)里非常重视重构(Re-factory)么,重构就要靠架构师,但是传统架构师本身是想寻找不变;此时如果让他重构,他又能重构些什么呢?所以我们有必要去改变架构师的想法,让架构师自己先敏捷起来,要敏捷起来就得去寻找变化、善待变化,以及变化而产生的复杂。

兹回归”本质(Essence)”之意。我们讲这个”Essential”字眼,称它为”本质”,又称为“道”。其中,道不变,本质不变,真理是简单的,所以我们在开发软件时,就好比建一栋房子,下面的地基不变,上面的房屋是可变的。所以架构师是建造平台(地基)的人,是要找不变的人,那么架构师又如何让系统易于重构、任团队敏捷呢?所以颇为矛盾。因为这个”Essential”字眼,在西方和在东方的含义不同,例如在牛津字典里,这个字眼的涵义是“不可或缺的”,并非”稳定不变”的。

7. 把Essential的复杂包装起来,也是一种抽象

那么,如果”Essential”是指不可或缺的,又怎样才能达到简单呢?只要想一想,女士们为什么要带皮包?把猫(不可或缺的)尾巴放进皮包里不就简单了么?而且你没去伤害猫。《大道至简》一书作者 周爱民先生请我写该书的书评,我写的是“大道至繁”,因为道本身没有简或繁,简繁只是观点或视角而已,还有就是“大道至易”,“易”是改变(Change)的意思,意思是软件之道是:软件无常态,需求和技术都不断变化中。

8. 用户体验的定义:让用户享受从简单中叫出复杂的满足感

这是乔布斯对于用户体验的定义:让用户享受从简单中叫出复杂的满足感。大家都知道iPhone,在出品之前,大家都不知道它的长相,乔布斯从来不做市场调研,也不听取用户的声音,那他怎么做到使iPhone那么受欢迎?怎么做到满足高层次的用户体验?所以从简单中得到复杂的满足感,这叫做用户体验。未来你用我的EIT造形设计软件时,将会感谢我,因为你的用户体验会很好。所以“形”会大大影响用户的体验。

我们的目标就是像这个猫一样非常满足,满足不用去向用户做调研,好好构思。这是简单的法则。

9. 无损害的抽象:把Essential的复杂包装起来

这个是刚刚说到的,传统上人们对于得到简单是怎样思考的。轮胎可因不同地形而变,方向盘可因不同司机而变,外貌颜色可因不同买主而变,这样你怎么来做抽样调查?所以传统上观察众多具像的复杂事物,但只能从一个角度去研究和抽象。这种传统的抽象是将复杂的东西去掉,留下简单,但如果你将猫的尾巴去掉,就会伤害牠,属于伤害性的抽象。

但是,如果你将猫的尾巴装进口袋,不仅能去掉复杂,还不会伤害猫。中国古代就有这个理念,孙悟空会72变,大闹天宫,唐三藏怎么处理?就是在孙悟空的头上安一个紧箍咒,念紧箍咒孙悟空就会头疼,所以唐僧还是达到用简单去控制复杂,但他没有去伤害孙悟空。但现在的架构师就会把孙悟空的尾巴胳膊去掉,让他变成没手没脚的孙悟空,把这当成是系统的架构,但最终是没有用的。

10.  两种抽象视角

现在,我来讲讲刚才两种思考方式的差别。

  • 第1种视角:一般抽象思考。从一堆软件函数中抽象出“抽象函数”,也从一堆软件数据中抽象出“共同数据结构”。
  • 第2种视角:设计思考。从具象的一堆函数和数据中抽象或设计出“类结构”来包容具象和抽象的函数或数据。所以创造“形”出来就把各种事物想成“类”,实际是函数和数据的内涵塞到“类”里面,变成面向对象(Object-Oriented)。所以你就会知道“形”的威力有多大,它可以容纳各项不可或缺的复杂。经过25年,到1995年,跑出一个叫做“设计模式”,但设计模式不是形,它是23种设计模式,设计模式是有内涵的,但而形不能有23个。

基于第1种视角,软件的结构要稳定,其实是错误的。因为其认为,软件的平台,就是地基,上面的房子就是App,所以房子要稳定才能建的好。但这样是不对的,因为如果这样做的话,敏捷就无法做到。

来看看第2种视角,要把一堆函数和数据中塞进类造形里,得先把复杂内涵抽离而提炼出简单造形(Form)。与其说是用类来表现复杂内容,不如说是把复杂内容塞进类里面。例如,白居易作诗,是先有了丰富(复杂)的感情,然后把感情塞进去诗的间单之“形”里(减法设计思维),而不是以诗的简单之“形”去表现复杂的感情(加法设计思维)。

11. 类(Class)造形与EIT造形

1980年代,人们找到了一个(造)形,叫做“类(Class)”,经过20年,外国人又找到了一个形,叫做设计模式(Design Pattern)。今天,我(高焕堂)找到了一种比类更大,比模式小一点的,叫做“EIT造形”,它是由3个类造形来组成,我不是把既有的类造形替换掉,而是把既有的类加以扩充。

请留意,设计模式不是形,它是23种设计模式,设计模式是有内涵的,但而形不能有23个。如果架构师要写23种模式,代码师要写23种代码。但这时候,代码怎么管理?做测试怎么测?以后改变的时候怎么处理?所以就要把模式抽象,得出代码造形。至于EIT代码造形则包含3个要素:基类是<E>,子类是<T>,抽象函数是<I>。因为代码才是被测试的单位,所以我这叫EIT代码造形。全世界所有的代码都可以用这个来表示,就像1980年代,大家当时都相信所有的软件都可以用类来表示。现在我们也可以说,所有的软件都可以用EIT来表达。

这就是EIT造形。大家有没有见过集装箱?我现在向大家讲讲集装箱的意义。集装箱是与我们的皮包一样,本身没有任何意义,当你放鞋子进去,它就叫鞋子集装箱;一旦你放袜子进去,它就叫做袜子集装箱。同样地,你在类(Class)之形里面放东西,本身类是没有意义的,你放车子的属性和函数放进去类里面,它就叫车子类。

虽然集装箱本身没有内涵,但是集装箱却大大影响到所有货物的管理,还有运输等各层面。所有的造形都会产生这样的效益,它让管理体系从原来的复杂的货物变成单一的简单的组件,也就是从复杂中得到了简单,各层面的管理者又从简单中掌握复杂,它的经济效益就这样产生出来了。这也就是,为什么面向对象(Object-Oriented)只是创造一个类(Class)之形,却影响了整个软件产业界的缘由。

12.  造形的特性   

那么这个类(Class)造形是谁创造的?不知道,但它的影响很大,所以你要想成为无名伟人,你就要创造形。这个形有三个条件:

  • 第1,结构简单。即要素不要超过三个,而且要严格定义出要素的关系。
  • 第2,内涵复杂。可以把所有的内涵都往里面塞。
  • 第3,重复组合。有简单规律来重复组合。

只有具备这三项条件的造形,都会在产业引发具大的风潮。例如,我在2008年元月份的北京<<程序员>>杂志上,就已经在说明集装箱的概念,我当时就预测出来,Android平台将在整个大陆和台湾地区,形成一个巨大的新IT产业,如今几乎全被我料中了。

13.  EIT造形之例

Java提供了一个Thread基类和一个Runnable接口,就是E和I。

这<E&I>强龙公司(开发框架者)创造出来的,而地头蛇公司(开发App者)写出了<T>,经过<I>这个接口,而塞进这个引擎<E>里。

我今天要提醒各位要多关注架构背后的东西,强龙先做了<E>和<I>,地头蛇才做了<T>,所以有些地头蛇觉得自己是老大,其实强龙才是老大。地头蛇做的是司机和轮胎,强龙做的是引擎和接口。所以强龙企业(如Google或App)在这样的产业上比较强势,但他们提供了一个平台,而我们的软件产业永远赚不了大钱。

现在来讲一下安卓(Android)世界,安卓有多层构架体系:

这每一层里面全部都是EIT。

14.  EIT造形的应用:以<硬硬结合商业模式>为例

如果你要问这个EIT实际效果有什么用,有很大用处,好好利用能够产生经济效益,那就要从商业模式出发,例如:<硬硬结合商业模式>。比如手机是主体,它还有插件和配件。例如,iPhone手机要如何才能控制一只甲虫呢? 如下图:

答案是:iPhone手机提供通用性的耳机接口,只要插上檔口(Dongle)插件发射Zigbee信号,就能控制甲虫配件了。如下图所示:

硬件EIT造形经常可对映到手机主件里的软件EIT造形。硬件EIT造形与软件EIT造形的配对,能有效支持硬件配件的增加,如下图:

通常,手机侦测到新配件时,就会自动启动相对映的配件模块,来解析来自配件的信息。再比如家庭配件,手机控制家里的机顶盒,机顶盒控制家里的电视机和微波炉等。

15. MCS系统架构与EIT代码造形

我们要做<硬硬结合的销售模式>就要做多机整合产品,做多机整合产品就要做架构设计,我教你怎样做了,第一步骤是先想造形,想造形有哪点好处?如果别人有形,你可以拿来用,如果别人没有,自己可以创造形,最后是制造卖钱。首先来看看物联网和移动互联网:

一共有三个元素:移动终端(M)、云计算(C )和感知终端(S)。

当然这需要互联网的连接。但在MCS元素里面会有一个整合者,如TV。

还有就是智能家庭的应用,以电视为主角,从云里把股票的数据提取到家里,股票分析师在家里把最新的股票计算,再通过微信推送到客户的移动客户端。所以未来都可以在家里上班。

下面就是系统设计了,开始写代码,系统架构里面会有接口,有接口就要用到EIT造形,因为EIT造形里面也有<I>接口。然后系统架构里面有很多通信协议,通信协议在两个EIT造形里面,以后通信协议随时可以改变。所以我们就不用天天要求通信协议标准化。现在来说明下为什么它有这个效益,因为它能设计出未来性:包容通信的未来变化。

因为EIT造形的特性是内涵塞进去之后马上可以变代码,所以马上可以做测试,由MCS系统的架构对应到EIT代码的形,然后马上做测试,测试后马上进行反馈。而且这个形,做代码的人很快就能了解,做测试的人也很快能够了解。于是,详细设计如下:

在这两个EIT造形里,基类是可变的,因为要配合敏捷,我要让所有的架构师敏捷起来起来,所有的团队敏捷起来,所以C和S都没变,只是里面多了一些插件。一旦通信协议改变了,只要改变基类即可,不会影响到C和S两端的主要模块。我今年已经把我的这个“EIT”的思想投稿到国内在设计界最高层的论坛——清华设计管理国际论坛,现在初稿已经被采纳了,我将要说明,怎样用设计思考(Design Thinking)来改变软件产业。◆

創新組合型的架構設計(Part-4):EIT造形幕後的設計思想相关推荐

  1. 新一代組合創新架構師_學習地圖

    ◎高焕堂颁发EIT认证: 新一代<組合創新>架構師  從初學到認證 學習地圖 第1步:自行(免費)學習線上課程,包括: 課程-1. (3.5小時)               需求碎片化时 ...

  2. 學習 React.js:瞭解 Flux,React.js 的架構

    2019独角兽企业重金招聘Python工程师标准>>> Getting To Know Flux, the React.js Architecture Ken Wheeler (@k ...

  3. 【軟體架構師如何煉成?硬功夫軟技能點滿技能樹】

    軟體架構師如何煉成?硬功夫軟技能點滿技能樹 協助企業資訊系統轉型,架構師擔任關鍵角色 如何成為軟體架構師 技術領域硬技能 職場領域軟技能 結語 協助企業資訊系統轉型,架構師擔任關鍵角色 「人無遠慮,必 ...

  4. 角色架構安全性與 Web Services Enhancements 2.0 的相互應用

    Microsoft .NET Framework 與 Microsoft ASP.NET 支援多種適用於程式碼的安全性功能.因此如果您只需要使用與 HttpContext.Current.User.I ...

  5. (新聞) 2008 Altera 亞洲創新大賽 台灣學生成果傲視全球

    Abstract 由全球 FPGA 領導大廠 Altera 及友晶科技在兩岸及全球主辦的 2008亞洲創新大賽,台灣賽區在為期長達半年的競賽過程後,終於在上週六的決賽中,圓滿落幕.台灣賽區由一百四十隊 ...

  6. [修練營ASP.NET]淺談多層式架構 (Multi Tiers)

    從需求談起 我們舉個小例子來理解一般的方式與多層的方式有何不同 假設:我需要顯示最近三個月內,所有營業員的銷售金額成績排名 一般的做法: 在一個畫面中,拉個GridView,一個SqlDataSouc ...

  7. 修練營ASP.NET]淺談多層式架構 (Multi Tiers)

    從需求談起 我們舉個小例子來理解一般的方式與多層的方式有何不同 假設:我需要顯示最近三個月內,所有營業員的銷售金額成績排名 一般的做法: 在一個畫面中,拉個GridView,一個SqlDataSouc ...

  8. 基於IIS的WCF的分布式多層架構開發實現

    曾用.NET Remoting,基於IIS,為公司實現過分布式多層架構,客戶端采用Web Browser瀏覽,當時,公司領導告訴我可能會有多臺中間服務器用於系統,又不想每臺電腦的去安裝程序,所以,我最 ...

  9. linux 内核裁剪不当 死机,Linux編譯x86架構內核出現_stack_chk_guard未定義錯誤

    背景 android模擬器運行於virtualbox中,而virtualbox運行於x86架構的pc端,所以android及其Linux內核都編譯成x86架構.當virtualbox的vt未開啟的情況 ...

最新文章

  1. 机器学习入门必读:6种简单实用算法及学习曲线、思维导图
  2. MySQL学习笔记01【数据库概念、MySQL安装与使用】
  3. lock_sga and pre_page_sga设置
  4. python学习并发编程
  5. 从txt导入10个数据c语言,怎么将txt中带逗号的数据导入定义好的数据结构中
  6. signature=f7a4b29b93ef2b36608792fdef7f454a,Embedding of image authentication signatures
  7. ListViewWebPart Code
  8. 服务器上怎么安虚拟主机呀,上线虚拟主机产品步骤
  9. dell计算机维修教程,戴尔Dell Latitude E6410/E6510官方拆机图解维修手册
  10. 什么是GPS,GPS技术主要有哪些特点?
  11. 推荐16个高清图片网站,可做网站背景
  12. java nio wakeup_Java NIO 的 wakeup 剖析
  13. linuxGame:文明5汉化
  14. 京东后台模板导入SKU报格式错误
  15. gis统计百分比_详细讲解ArcGIS数据统计及字段计算
  16. unity热更新json_unity3d热更新插件uLua学习整理
  17. BigGAN代码解读(gpt3.5的帮助)——谱正则化部分
  18. 为什么用链路聚合_链路聚合技术作用和优点
  19. 视频加密后的录屏行为怎么做防范?
  20. Sers微服务快速入门-02.快速接入

热门文章

  1. 阿里云 MVP Tech Show 第21期成都站成功举办
  2. 冷冰:Android核心分析系列
  3. 湖北民院OJ 计算球体体积
  4. 领英辅助工具领英精灵的下载安装的细节和方法
  5. C++ endl/ends/flush的区别
  6. 职业推手自曝微博炒作内幕 十万水军任你调遣!
  7. 怎么安装Nginx的监控模块
  8. Unity 编辑器扩展菜单
  9. 触摸DevOps,从现在开始DevOps之旅
  10. php函数形参,PHP中的函数形参的默认值