您好,登錄后才能下訂單哦!
架構師的第一步:學習兩種抽象視角(Abstraction View)
第一種抽象視角:架構師基于<變與不變分離>的視角,尋找<萬變不離其宗>的宗,其宗(架構)的不變性帶來簡單性;讓人們能透過掌握簡單來駕馭復雜(多變),落實了架構師的職責。
第二種抽象視角:架構師基于<形與內涵分離>的視角,由于不同內涵之間的<變與不變分離>已經由第一種視角所抽象了。這個視角可從內涵中抽像出共同之形,也可以(無中生有地)創造一種造形(Form)來容納內涵(包括變與不變部分)。由于我們常常拿船運業的集裝箱(Container)來比喻<造形>;而拿形形***的貨品來比喻其(集裝箱)內涵(Content)。所以上述的第二種視角,又稱為<集裝箱式>抽象視角。
實戰演練==>架構師“集裝箱式”抽象視角
架構師的第二步:關心下層的變動自由度(沒錢就改版,改版就有錢)
----架構像什么? 有兩種常見的比喻。
架構像房子的地基(第1種比喻):由于地基要穩定,上層房子才不會倒塌;因此這項比喻讓架構師認為架構要穩定,上層的業務應用才會穩定可靠。這種比喻偏于尋找不變,而不是追求創新。
架構像一棵樹的樹干(第2種比喻):由于樹根必須不斷成長,擁有隨環境而變動的自由度和活力;才能有效吸收更多水分和養分。這項比喻讓架構師關心底層模塊(Module)的變動自由度。具有活力的樹根和樹干,才能有效之撐上層業務應用的蓬勃發展。
實戰演練==> 維護底層模塊的變動自由度(第2種比喻)
架構師的第三步:<系統架構控制力>支撐<商業競爭話語權>
----軟件系統就像一個國家的軍隊,商業模式就像一個國家的實力。
架構師的職責就是要在一個系統架構體系中,替自己公司的軟件系統(或模塊)在架構體系中,取得制高點、取得控制力。
一個企業,如果在系統架構體系中,處于弱勢地位的話;我們就很容易看出,它在商業競爭中,就難以取得話語權。
例如,曹操留給后代極高的政治智慧:挾天子以令諸侯。系統架構師也能運用這項智能,來取得系統架構體系中的控制力或主導權,來支撐該公司商業競爭的話語權或強龍地位。再如,Android架構師運用HAL驅動框架,來爭取眾多硬件廠商的支持,讓Android取得系統控制力,支撐Google的商業強勢地位。
實戰演練==> 掌以握<系統控制點>支撐<商業話語權>
架構師的第四步:<用戶體驗>是讓用戶享受從簡單中叫出復雜的滿足感
----架構設計就是架構師從復雜中找出簡單的設計過程。架構師從復雜中得出簡單,其目的是要讓開發者(Developer)能從簡單中反過來掌握復雜;或者讓用戶(User)能從簡單中叫出復雜,并獲得其中的滿足感。茲說明如下:
<用戶體驗是是讓用戶享受從簡單中叫出復雜的滿足感>這是蘋果公司喬幫主(Jobs)的名言。因為智能化設備的功能內涵愈來愈復雜,如果缺乏有效的架構師來設計出簡單,而讓用戶直接面對復雜,用戶會感到害怕;就欠缺滿足感。
在科學上也是如此。例如,牛頓從很復雜的力學中總結出了f=ma公式,大家就能從這簡單公式而去掌握復雜的力學了。愛因斯坦也一樣,他從復雜的規律中找出簡單的E=mc^2質能互換公式,大家就能從這簡單公式而去了解復雜的質能世界了。
為什么說它簡單呢? 理由之一是:公式的元素不超過三個,比如說,牛頓力學公式里只有F、m和a三個元素;愛因斯坦的公式也一樣,只有E、m和c三個元素。簡單的元素和公式(造形)卻蘊含極為複雜的內涵。
同樣地,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>,非常有助于落實這個步驟的任務了。
例如,想測試Client與Server模塊之間的真實接口<I>。就能設計Mock<E>與 Client銜接;并且設計Mock<T>來與Server銜接;于是既使Cleint和Server兩個模塊都還沒開發,也能迅速開發出 Mock<E>和Mock<T>來測試真實接口<I>。
實戰演練==> 盡快對接口進行檢驗和測試
架構師的第九步:設計<通用性>接口,成為框架(Framework)核心要素
----架構師如何給自己創造重構的自由度,以及支持開發者重構的空間,是框架設計的關鍵議題。這種自由度,決定于架構師是否能仔細分辨出:關注<未來的決策>與關注<今天決策的未來性>的微妙差異了。愈是能關注<今天決策的未來性>,而不是關注<未來的決策>,就愈能創造未來重構的自由度。例如,EIT造形和框架的主角都是接口<I>,愈是關注<目前決策的未來性>時,就愈會想去設計通用性(General)<E>和<I>來包容未來<T>的多變化。而一群<E&I>的巧妙組合,就成為框架了。通用性接口有兩層意義:
容納買主需求(或選擇)的未來變化,或容納新買主的新選擇。茲拿汽車來做比喻,當買主買了車子之后,未來隨時可以改變選擇(沙灘、公路或高山)。例如,買主未來決定將車子要到沙灘上跑時,只要更換新輪胎就行了;這展現出架構師目前決策的未來性。
限制買主的選擇范圍。買主抉擇的改變,表現于應用軟件(App)上,架構師設計通用性接口來<框住>各種App,限制買主的抉擇空間,才不會失控。這些通用性接口的有機整合體,就稱為軟件框架(用來框住App的架構)。
實戰演練==> 演練_設計通用性接口
架構師的第十步:有效減法設計,才能開放加法(設計)
----幅員愈大的國度、大數據應用愈發達的國度,加法(設計)的幅度就愈大。加法設計幅度愈大,系統的復雜性和差異化就愈顯著,此時標準化和統一化的呼聲就愈高。無論是標準化或統一化,都意味著加法設計的大量推進,導致系統復雜而難以駕馭;因而要求架構師提出有效的減法設計方案,從復雜中設計出簡單,讓人們能從簡單中來掌控復雜。就架構師而言,基于有效減法的架構設計,才能開放人人去做加法設計。茲說明如下:
秦朝時代唯有書同文、車同軌的有效減法設計,才能開放加法,整并六國成唯一個大國。
唐朝的詩叫做七言絕句,如“姑蘇城外寒山寺,夜半鐘聲到客船”,一首詩四個句子,每一個句子七個字,它的韻律有兩個“平平仄仄平平仄,仄仄平平仄仄平”,這是唐詩的主要造形(Form)。
秦朝的<書同文、車同軌>,加上唐朝的<詩同形>,有效的減法設計,創造了大一統(加法)的輝煌國度。
君不見,在前面各步驟里,諸如:從復雜中設計出簡單、以需求檢驗設計等都是基于有效的減法設計,一方面給設備供貨商一個開放的加法設計空間;另一方面則讓用戶享受從簡單(來自減法設計)中叫出復雜的滿足感。
此外,在前面各步驟里,諸如:EIT造形、通用性接口和軟件框架(框住某些東西)等,則是減法設計的實踐技術;基于這些有效的減法設計途徑,才能大幅開放加法設計;因而落實了:從簡單中掌握復雜。[歡迎光臨高煥堂的博客首頁:http://www.cnblogs.com/myEIT/ ]。
實戰演練==> 有效減法設計,才能開放加法
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。