[轉載]智慧&大資料時代, 架構師思維的十個學習步驟&演練 By 高煥堂

risingsunczl發表於2017-03-19

架構師的第一步:學習兩種抽象視角(Abstraction View)

  • 第一種抽象視角:架構師基於<變與不變分離>的視角,尋找<萬變不離其宗>的宗,其宗(架構)的不變性帶來簡單性;讓人們能透過掌握簡單來駕馭複雜(多變),落實了架構師的職責。

  • 第二種抽象視角:架構師基於<形與內涵分離>的視角,由於不同內涵之間的<變與不變分離>已經由第一種視角所抽象了。這個視角可從內涵中抽像出共同之形,也可以(無中生有地)創造一種(Form)來容納內涵(包括變與不變部分)由於我們常常拿船運業的集裝箱(Container)來比喻<造形>;而拿形形***的貨品來比喻其(集裝箱)內涵(Content)。所以上述的第二種視角,又稱為<集裝箱式>抽象視角。

實戰演練==>架構師集裝箱式抽象視角


架構師的第二步:關心下層的變動自由度(沒錢就改版,改版就有錢)

----架構像什麼有兩種常見的比喻。

  • 架構像房子的地基(1比喻):由於地基要穩定,上層房子才不會倒塌;因此這項比喻讓架構師認為架構要穩定,上層的業務應用才會穩定可靠。這種比喻偏於尋找不變,而不是追求創新。

  • 架構像一棵樹的樹幹(第2比喻):由於樹根必須不斷成長,擁有隨環境而變動的自由度和活力;才能有效吸收更多水分和養分。這項比喻讓架構師關心底層模組(Module)的變動自由度。具有活力的樹根和樹幹,才能有效之撐上層業務應用的蓬勃發展。

實戰演練==> 維護底層模組的變動自由度(第2比喻)


架構師的第三步:<系統架構控制力>支撐<商業競爭話語權>

----軟體系統就像一個國家的軍隊,商業模式就像一個國家的實力。

  • 架構師的職責就是要在一個系統架構體系中,替自己公司的軟體系統(或模組)在架構體系中,取得制高點、取得控制力。

  • 一個企業,如果在系統架構體系中,處於弱勢地位的話;我們就很容易看出,它在商業競爭中,就難以取得話語權。

  • 例如,曹操留給後代極高的政治智慧:挾天子以令諸侯。系統架構師也能運用這項智慧,來取得系統架構體系中的控制力或主導權,來支撐該公司商業競爭的話語權或強龍地位。再如,Android架構師運用HAL驅動框架,來爭取眾多硬體廠商的支援,讓Android取得系統控制力,支撐Google的商業強勢地位。

實戰演練==> 掌以握<系統控制點>支撐<商業話語權>


架構師的第步:<使用者體驗>是讓使用者享受從簡單中叫出複雜的滿足感

----架構設計就是架構師從複雜中找出簡單的設計過程。架構師從複雜中得出簡單,其目的是要讓開發者(Developer)能從簡單中反過來掌握複雜;或者讓使用者(User)能從簡單中叫出複雜,並獲得其中的滿足感。茲說明如下:

  • <使用者體驗是是讓使用者享受從簡單中叫出複雜的滿足感>這是蘋果公司喬幫主(Jobs)的名言。因為智慧化裝置的功能內涵愈來愈複雜,如果缺乏有效的架構師來設計出簡單,而讓使用者直接面對複雜,使用者會感到害怕;就欠缺滿足感。

  • 在科學上也是如此。例如,牛頓從很複雜的力學中總結出了f=ma公式,大家就能從這簡單公式而去掌握複雜的力學了。愛因斯坦也一樣,他從複雜的規律中找出簡單的E=mc^2質能互換公式,大家就能從這簡單公式而去了解複雜的質能世界了。

  • 為什麼說它簡單呢理由之一是:公式的元素不超過三個,比如說,牛頓力學公式裡只有Fma三個元素;愛因斯坦的公式也一樣,只有Emc三個元素。簡單的元素和公式(造形)卻蘊含極為複雜的內涵。

  • 同樣地,EIT造形的要素,也剛好就是三個簡單的元素和造形卻蘊含極為複雜的內涵,簡單而優雅的介面<I>帶給開發者和使用者享受掌握複雜的滿足感。

實戰演練==> 從複雜設計出簡單,從簡單來掌握複雜


架構師的第步:創意愛上限制,即需求檢驗設計

----無論是移動應用、物聯網等都涉及愈來愈多的系統組合與創新。而軟體開發愈來愈仰賴架構設計,所以架構師們亟需要去學習和領悟創意型的架構設計模式。這種新模式中,最傳神的隱喻是,谷歌公司副總Marissa Mayer提倡的

        “創意愛上限制"(Creativity lovesConstraint)

她說:"創新來自願景與限制的互動"(Innovation is born from the interactionbetween constraint and vision)。限制迫使架構師重新審視願景(Vision)從不同觀點切入,尋找新事物;同時也讓其聚精會神、釐清思路;非常具有創新性。這引匯出架構設計的兩個觀點:

  • 觀點1:架構來自需求。其意味著,基於需求而設計。也就是傳統的Rewquirement-based架構設計。

  • 觀點2:架構基於願景(Vision)的引導,來自架構師的創意其意味著,基於願景而設計,需求用來檢驗架構。一旦創意設計<愛上>了需求的限制,架構(設計)自然心甘情願地滿足需求(限制)

既然是觀點,本身就沒有對錯。架構師同時擁有多個觀點,常常會帶來更多創意的。

實戰演練==> 創意愛上限制,需求檢驗設計


架構師的第六步:練習假設性思維然後”Mappingfrom vision to reality”

----願景是對未來成功情境的想象,含有濃厚的假設性(夢想)。基於假設情境而設計,常常讓許多人感到不安。由於,架構師的職責是設計一個有效架構,既能支撐業主的願景(Vision),又能滿足現時環境(Reality)的需求限制。也就是,架構師要找出一條從願景對映到現實的一條連(Mapping from vision to reality),讓其它團隊成員能依循這條線而去實現該假設性願境(夢想),於是夢想成真了。在邁向智慧化的大資料時代,熟練假設性思維是很關鍵的,理由是:

  • 由於資料量的龐大和異型化(Different Fomat),如迷霧一般,欲取的市場競爭優勢,如同想從大迷宮裡找到出口,最有效的途徑是:基於(假設性)想象多個最可能的出口,然後逆向推理,倒過來尋找出有效的路徑()

  • 蘋果公司喬幫主(Jobs)的名言:你不可能在眺望未來時把生活中的每個點連線起來,只有回顧時能才連點成線。許多人並不知道,他所提的就是架構師的關鍵任務:找到願景(Vision)與現實(Reality)間的連線。這是有效架構師必備修練。

實戰演練==> 練習<假設性思維>和 Mapping from vision to reality


架構師的第步:清晰而明確表述介面(Interface)

----基於前面第一步的兩個視角而抽象,都產生了<分離>的動作。分()是手段,而()合是目的。分離動作則產生了介面,做為後續組合的依據。分得愈美妙就能組得愈快速。分與合兩項動作,往往時間點不同,執行者也不同;屬於跨時空、跨團隊的分工。因而,主導分()的架構師,必須清晰地表述介面,並明確傳達給擔任()合的人員。那麼,又如何清晰表述介面呢有效的途徑是:擅用<EIT造形(Form)>。茲說明如下:

EIT造形是由3個類(Class)所構成的。分別以<E><I><T>來代表之。從架構師角度上,<I>屬於主角,而<E><T>是配角。搭配兩個配角,才能將<I>表述的完整而清晰。就如同英語,搭配了主詞(Subject)和受詞(Object) 兩個配角,就能夠將動詞(Verb)表述得更完整而清晰。例如,

  • Play---沒有主詞和受詞,動詞<play>就顯得意義不夠清晰。

  • (play) 繡球---有了主詞和受詞,動詞<play>就顯得意義很清晰。

  • 老師(play) 鋼琴---有了主詞和受詞,動詞<play>就顯得意義很清晰。


----搭配了兩個配角(主詞和受詞),主角(動詞)的涵意就顯得更完整而清晰了。同理,架構師只要採用EIT造形,就能將介面表述得完整而清晰了。[歡迎光臨高煥堂的部落格首頁:http://www.cnblogs.com/myEIT/ ]。

實戰演練==> 清晰而明確表述介面(Interface)


架構師的第步:儘快對介面進行檢驗和測試

----基於EIT造形屬於程式碼層級的造形,能迅速實現為軟體程式碼,並進行電腦的實際執行、檢驗和測試。軟體的程式設計開發是一件費時的事情,等待各層面的細節設計&程式碼開發之後,才進行系統模組之間的檢驗和整合測試,往往會將檢驗和測試工作時辰延後,這將大幅升高系統整合的風險與提高專案開發的整體成本。尤其像Android平臺的終端<軟硬整合>產品開發,硬體需要迅速與軟體進行整合設計(Co-Design),才能有效降低軟硬整合的風險,縮短開發時程,並提高產品可靠性。擅用EIT造形,將很容易落實這個步驟的任務,如下說明:

  • EIT造形的<I>是主角,架構師必須清晰而明確定義之。至於<E><T>都是配角,開發者可以做<假模組(Mock)>來實現<E><T>配角,進行對<I>的模擬測試。就如同飛機架構師會設計<風洞>來模擬測試飛機的機翼一般。

  • 目前市場上,有許多測試環境提供了Mock-based的整合測試工具,能迅速開發出 Mock<E>Mock<T>來測試<I>,非常有助於落實這個步驟的任務了。

  • 例如,想測試ClientServer模組之間的真實介面<I>。就能設計Mock<E> Client銜接;並且設計Mock<T>來與Server銜接;於是既使CleintServer兩個模組都還沒開發,也能迅速開發出 Mock<E>Mock<T>來測試真實介面<I>

實戰演練==> 儘快對介面進行檢驗和測試


架構師的第九步:設計<通用性>介面,成為框架(Framework)核心要素

----架構師如何給自己創造重構的自由度,以及支援開發者重構的空間,是框架設計的關鍵議題。這種自由度,決定於架構師是否能仔細分辨出:關注<未來的決策>與關注<今天決策的未來性>的微妙差異了。愈是能關注<今天決策的未來性>,而不是關注<未來的決策>,就愈能創造未來重構的自由度。例如,EIT造形和框架的主角都是介面<I>,愈是關注<目前決策的未來性>時,就愈會想去設計通用性(General)<E><I>來包容未來<T>的多變化。而一群<E&I>的巧妙組合,就成為框架了。通用性介面有兩層意義:

  • 容納買主需求(或選擇)的未來變化,或容納新買主的新選擇。茲拿汽車來做比喻,當買主買了車子之後,未來隨時可以改變選擇(沙灘、公路或高山)。例如,買主未來決定將車子要到沙灘上跑時,只要更換新輪胎就行了;這展現出架構師目前決策的未來性。

  • 限制買主的選擇範圍。買主抉擇的改變,表現於應用軟體(App)上,架構師設計通用性介面來<框住>各種App,限制買主的抉擇空間,才不會失控。這些通用性介面的有機整合體,就稱為軟體框架(用來框住App的架構)

實戰演練==> 演練_設計通用性介面


架構師的第十步:有效減法設計,才能開放加法(設計)

----幅員愈大的國度、大資料應用愈發達的國度,加法(設計)的幅度就愈大。加法設計幅度愈大,系統的複雜性和差異化就愈顯著,此時標準化和統一化的呼聲就愈高。無論是標準化或統一化,都意味著加法設計的大量推進,導致系統複雜而難以駕馭;因而要求架構師提出有效的減法設計方案,從複雜中設計出簡單,讓人們能簡單中來掌控複雜。就架構師而言,基於有效減法的架構設計,才能開放人人去做加法設計。茲說明如下:

  • 秦朝時代唯有書同文、車同軌的有效減法設計,才能開放加法,整並六國成唯一個大國。

  • 唐朝的詩叫做七言絕句,如姑蘇城外寒山寺,夜半鐘聲到客船,一首詩四個句子,每一個句子七個字,它的韻律有兩個平平仄仄平平仄,仄仄平平仄仄平,這是唐詩的主要造形(Form)

  • 秦朝的<書同文、車同軌>,加上唐朝的<詩同形>,有效的減法設計,創造了大一統(加法)的輝煌國度。

  • 君不見,在前面各步驟裡,諸如:從複雜中設計出簡單、以需求檢驗設計等都是基於有效的減法設計,一方面給裝置供貨商一個開放的加法設計空間;另一方面則讓使用者享受從簡單(來自減法設計)中叫出複雜的滿足感。

  • 此外,在前面各步驟裡,諸如:EIT造形、通用性介面和軟體框架(框住某些東西)等,則是減法設計的實踐技術;基於這些有效的減法設計途徑,才能大幅開放加法設計;因而落實了:從簡單中掌握複雜。[歡迎光臨高煥堂的部落格首頁:http://www.cnblogs.com/myEIT/ ]。

實戰演練==> 有效減法設計,才能開放加法

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/653579/viewspace-2135620/,如需轉載,請註明出處,否則將追究法律責任。

相關文章