




已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
Android:從程序員到架構(gòu)師之路課程簡介:一般而言,人們大多先學(xué)開發(fā)(代碼)的技術(shù),隨后才學(xué)(架構(gòu))設(shè)計的方法。然而,在實際做事時,卻是先設(shè)計,隨后才寫出代碼來。敏捷過程則讓設(shè)計與寫碼迭代循環(huán)下去,一直到完成為止。在本課程里,就遵循敏捷的迭代過程,從思想、方法、模式、范例和成功案例各種不同角度,帶你學(xué)習(xí)從設(shè)計到代碼的途徑。讓你在活潑的過程中,輕松地從原本的代碼世界,迅速熟悉設(shè)計的新天地。在躍入架構(gòu)設(shè)計新天地時,你很快會發(fā)現(xiàn),架構(gòu)設(shè)計的主要流派有二:l 抽象思維派:致力于抽象出穩(wěn)定、可靠、不變的共同性架構(gòu);亦即,追求的宗。l 組合創(chuàng)新派:致力于組合出具體獨特性的創(chuàng)新架構(gòu);亦即,追求的特質(zhì)。在本課程里,將以后者(組合創(chuàng)新)為主軸,希望能陪伴你在移動互聯(lián)網(wǎng)、智能終端的創(chuàng)新潮流中,能如魚得水、展現(xiàn)無比的創(chuàng)造力。此外,也會幫你建立扎實的抽象思維能力。 為了讓你能順利從(代碼)開發(fā)躍升到(架構(gòu))設(shè)計,本課程會堅持一個美好的信念: ”各項架構(gòu)設(shè)計決策都必須能迅速落實為代碼”。一方面符合敏捷的原則;另一方面,你可以從熟悉的代碼中,領(lǐng)悟到其幕后的設(shè)計思想和技術(shù)。例如,本課程也以Android開源的代碼來闡述其幕后的 UI、IPC、HAL等架構(gòu)的設(shè)計思維和技巧。為了特別強調(diào)架構(gòu)與代碼兩者之間的無隙縫銜接,高煥堂老師特別設(shè)計了EIT代碼造形,讓組合創(chuàng)新派的設(shè)計核心:接口(即EIT的)能直接落實到代碼。因之,EIT造形成為架構(gòu)與代碼的核心交匯點。 此外,在本課程里,將由高老師指導(dǎo)大家親自進行架構(gòu)設(shè)計,直接取得實務(wù)經(jīng)驗;例如,以移動互聯(lián)網(wǎng)+智能家庭的情境,設(shè)計出手機與TV整合、多螢互動的新型系統(tǒng)架構(gòu),并迅速落實為可執(zhí)行的框架代碼。并藉由成功案例分享來提供大量的實務(wù)設(shè)計模式,融合到框架的開發(fā)與API設(shè)計上,讓學(xué)員在最短的時間內(nèi)獲得扎實的設(shè)計經(jīng)驗和技巧;往上應(yīng)用于各行各業(yè)上。課程大綱:Part-1: 從架構(gòu)到代碼的過程1.1 敏捷與架構(gòu)的完美組合l 敏捷開發(fā)的原則和價值觀l 開發(fā)、架構(gòu)、測試之關(guān)系 l 架構(gòu)在敏捷過程里的角色l 架構(gòu)師在敏捷過程的職責(zé)l 過程觀點:(需求)測試做,敏捷(過程)做;l 分合觀點:(架構(gòu))設(shè)計做,(代碼)開發(fā)做l 測試觸發(fā)反饋,反饋帶動迭代,迭代驅(qū)動重構(gòu)l 迭代促進了的心靈溝通與攜手協(xié)作l 舉例:架構(gòu)師如何設(shè)計敏捷的起始架構(gòu)(Simple Solution)n 加法設(shè)計:圍繞問題( Problem)和愿景(Vision),產(chǎn)生創(chuàng)意構(gòu)想(Creative Idea)n 減法設(shè)計:創(chuàng)意愛上限制(Creativity loves constraint)1.2 代碼是架構(gòu)的外貌,永遠(yuǎn)青春l 架構(gòu)師與開發(fā)者的合作成果:架構(gòu)+代碼=軟件(系統(tǒng))l 架構(gòu)是軟件的骨架、代碼是軟件的外貌l 架構(gòu)是軟件的核心l 架構(gòu)的用意:創(chuàng)新組l 架構(gòu)設(shè)計的焦點:接口(Interface)l 設(shè)計決策具有,系統(tǒng)才能適應(yīng)未來1.3 設(shè)計與開發(fā)的分工合作l 架構(gòu)設(shè)計的目的是:組合l 架構(gòu)師做,支持開發(fā)者做,合作實踐(系統(tǒng))組合l 分得妙,就能合得快(即:分之以為用,合之以為利)l 分得妙,就能得好接口(Interface)l 架構(gòu)師的核心工作:接口設(shè)計(Interface Design)l 開發(fā)者的核心工作:依據(jù)接口,開發(fā)(系統(tǒng))模塊并整合l 有許多種開發(fā)者:如App開發(fā)者、底層系統(tǒng)開發(fā)者等1.4 敏捷思維:盡快呈現(xiàn)架構(gòu)的外貌l 接口設(shè)計是的組合設(shè)計l 接口設(shè)計是的分工設(shè)計l 架構(gòu)師設(shè)計多種接口來支撐分工與組合l 架構(gòu)師心中的4種接口:SI、PI、API和UIn SI:本架構(gòu)與外部系統(tǒng)之間的整合接口n PI:本架構(gòu)與內(nèi)部挿件(Plug-in)之間的接口n API:本架構(gòu)與應(yīng)用程序(App)之間的接口n UI:App與用戶的互動接口l 依循敏捷原則,接口迅速落實為代碼,盡快呈現(xiàn)外貌1.5 EIT造形:接口美麗的外貌l 認(rèn)識EIT軟件造形l EIT造形:呈現(xiàn)核心設(shè)計的外貌l EIT造形的可涵蓋三種:SI、PI、APIl EIT造形的代表本架構(gòu)l EIT造形的代表本架構(gòu)的配件(即插件:Plug-in)1.6 一群美妙的組合是:框架(Framework)l 認(rèn)識GoF的設(shè)計模式(Design Pattern)l 隨著敏捷的迭代過程,EIT造形會逐漸增加l 如何巧妙組合漸增的EIT造形:擅用設(shè)計模式l 組合起來,就成為軟件框架了l 如何迭成多層級(Layer)的框架體系:以Android為例Part-2: 從Android框架代碼中學(xué)習(xí)設(shè)計2.1 基礎(chǔ)設(shè)計模式(Pattern)的代碼:以Android為例l Template Method模式:IoC(控制反轉(zhuǎn))機制l Observer模式:接口設(shè)計l Abstract Factory模式:兩個EIT造形的組合l Adapter模式:封裝接口l Composite模式:實踐組合l Faade模式:組合體的接口設(shè)計l EIT造形是原子,設(shè)計模式是分子l 更多EIT造形的組合模式:以Android代碼為例2.2 從 UI框架入手l View體系的架構(gòu)設(shè)計(使用Template Method模式)l Activity-View的架構(gòu)設(shè)計(使用Factory模式) l Layout-View的架構(gòu)設(shè)計(使用Composite模式)l WMS(WindowManagerService)-View的架構(gòu)設(shè)計l WMS-SurfaceFlinger的架構(gòu)設(shè)計l Surface-Canvas(畫布)的架構(gòu)設(shè)計 l SurfaceView與OpenGL的3D繪圖架構(gòu)設(shè)計l ListView框架的設(shè)計2.3 跨進程(IPC)架構(gòu)設(shè)計l Android 的IPC幕后設(shè)計:BD(Binder Driver)驅(qū)動架構(gòu)l 以IBinder接口包裝BD驅(qū)動的服務(wù)l 包裝IBinder接口的Proxy-Stub設(shè)計模式l Proxy和Stub類別的代碼l 設(shè)計Proxy和Stub類別的APIl 如何自動生成Proxy和Stub類別代碼l IBinder & AIDL方法n 方法(一):Implementing a Bindern 方法(二):Using a Messenger n 方法(三):Bound Services2.4 Java與C/C+兩層框架的設(shè)計l JNI(Java Native Interface)代碼開發(fā)要點l JNI的數(shù)據(jù)型態(tài)(Data Type)轉(zhuǎn)換規(guī)則l JNI的線程(Thread)模式:JNIENV類的設(shè)計l 正向通信:Java函數(shù)調(diào)用本地C函數(shù)l 反向通信:本地C函數(shù)調(diào)用Java函數(shù)l Android HAL架構(gòu)設(shè)計n HAL(Hardware Abstraction Layer)的意義n 理解runtime與HAL Stubn 撰寫HAL Stub代碼n Stub調(diào)用Linux Kernel的方法2.5 核心服務(wù)的框架設(shè)計l 認(rèn)識核心服務(wù)(Core Service)n 核心服務(wù)都是在開機過程中,由Android的INIT進程啟動的n 包括Android Service和 Native Service兩種n 以Java語言撰寫的,就稱為Android Servicen 以C+撰寫的,就稱為Native Servicel 親自撰寫一個核心服務(wù)n 撰寫一個C+類別n 繼承BBinder基類,繼承得來IBinder界面n 提供接口給Java層(透過JNI)調(diào)用 2.6 JUnit測試框架的設(shè)計l Android的測試工具,都是基于JUnit測試框架的l JUnit框架也是由許多EIT造形所組成;其TestCase基類是l 從基類衍生出各子類,如ServiceTestCase就是擴充的;其內(nèi)涵的setUP()和tearDown()函數(shù)就是l 可撰寫(即Test case)代碼,來啟動TDD機制l 可使用TestSuite基類來管理一群相關(guān)的(即Test case)Part-3: 梳理你的架構(gòu)設(shè)計思想、方法和模式3.1 復(fù)習(xí)設(shè)計概念與技藝概念復(fù)習(xí)l 說明框架的起源、分層與其無用之用效果l 闡述應(yīng)用框架魅力的泉源:控制反轉(zhuǎn)(IoC, Inversion of Control)機制 l 深入認(rèn)識控制反轉(zhuǎn)機制 l 主控者是框架,而不是應(yīng)用程序 l 現(xiàn)代應(yīng)用框架:采取廣義IoC觀念 l 框架的重要功能:提供默認(rèn)行為(Default Behavior) 技藝復(fù)習(xí)l 抽象(無之)與衍生(有之)l 打造框架:細(xì)膩的抽象步驟l 基本步驟:n 細(xì)膩的手藝(一):數(shù)據(jù)抽象n 細(xì)膩的手藝(二):函數(shù)抽象n 細(xì)膩的手藝(三):將抽象類別轉(zhuǎn)為接口l 善用類的繼承(Inheritance)機制l 設(shè)計基類的抽象函數(shù)l 抽象是手段,組合是目的UML復(fù)習(xí)l UML的3種基本圖表:類圖、順序圖和用例圖l 以UML表達(dá)設(shè)計模式和框架l EIT造形的兩種表達(dá):UML圖和代碼3.2 架構(gòu)設(shè)計的需求分析方法l 基本設(shè)計技能:把輪胎拔掉l 偉大的雕刻師羅丹( Muse Rodin)說:”把不必要的部分去掉”l 買主需求:想想為什么(why)汽車架構(gòu)師會決定把輪胎拔掉呢? 其背后的理由是:買主來了,才知道買主對輪胎的偏好或特殊需求。只有等到買主決定和挑選了輪胎之后,才能將輪胎裝配上去。 l 探索買主需求n 為什么把輪胎拔掉呢?n 為什么火鍋店的桌子要挖洞呢? n 為什么餐廳要分開與呢? 3.3 接口設(shè)計模式什么是接口(Interface)l 在OOP里,將接口定義為一種特殊的類別(Class)l 在Java里,將”純粹抽象類別”稱為接口(Interface)l EIT造形的接口表示為l 可以合并到里誰控制? l 成為控制點 l 引擎驅(qū)動輪胎如何控制API ?l UI與APIl 被動型API與主動型APIAPI與商業(yè)模式l API決定控制權(quán)&金流l 沒錢就改版,改版就有錢l 以HAL為例,說明API = 話語權(quán)l(xiāng) 誰擁用接口的制定權(quán),誰就掌握控制點,就能獲得較大的話語權(quán)l(xiāng) 從API看控制力量的強弱等級l 把控制力傳播出去 Part-4: 親自、并迭代出代碼4.1 情境范例:”手機訪問TV/STB”l 愿景:多屏互動、幸福家庭的實踐l 亮點:許多智能設(shè)備大量進入家庭,在家里的Android TV建立一朵私密云,來整合窗外多個云平臺和手機移動終端,變得流行起來。l 情境:手機遠(yuǎn)距訪問TV,透過TV打開家中的壁燈開關(guān)l 架構(gòu):基于的大小機相聯(lián)、大小屏幕互動的新架構(gòu)l 設(shè)計:設(shè)計TV里的框架、撰寫插件l 技術(shù):n 在外的家庭成員透過手機瀏覽器(Browser)上網(wǎng)訪問家庭云,您可以在家庭云里,安裝一個i-Jetty網(wǎng)頁容器(Web Container)n 此時,I-Jetty里的HttpServlet就是另一個,而它的doGet()等函數(shù)就是n 您寫的servlet代碼就是I-Jetty的,它接受手機的訪問4.2 實際開發(fā):依循敏捷、落實為代碼階段的敏捷迭代l Step-0. 準(zhǔn)備測試計劃n 訂定此階段的測試方案(Test Case)n 以Android手機Browser為測試方案的執(zhí)行軟件l Step-1. 設(shè)計敏捷過程的起點架構(gòu):Simple Solutionn 通信協(xié)議:手機與TV采HTTP通信n 軟件接口:TV端的EIT造形與手機端Browser對接n 設(shè)計:以UML表達(dá)EIT造形n 代碼:賺寫I-Jetty的Servlet來實踐EIT造形l Step-2. 啟動TDD機制、進行迭代n 從手機來實機檢測TV里的EIT造形的接口代碼n 依循TDD的反饋,迭代Step-1和Step-2的活動階段的敏捷迭代l Step-3. 準(zhǔn)備測試計劃n 訂定此階段的測試方案:基于用戶需求(Requirements)n 以Android手機Browser為測試方案的執(zhí)行軟件l Step-4. 以上階段Step-2產(chǎn)出的EIT造形為起點架構(gòu)l Step-5. 依循測試方案,展開細(xì)節(jié)設(shè)計和代碼開發(fā)n 撰寫Android App代碼:基于Android應(yīng)用框架n I-Jetty的調(diào)用Android的Appn App透過JNI調(diào)用Android的Zigbee驅(qū)動代碼n Zigbee驅(qū)動透過Dongle發(fā)信號給壁燈開關(guān)l Step-6. 啟動TDD機制、進行迭代n 從手機來實機檢測TV里的有關(guān)代碼n 依循TDD的反饋,迭代Step-5和Step-6的活動,直到完成4.3 繼續(xù)敏捷迭代、開發(fā)新功能新功能1:手機控制TV里的Camera拍照片l TV/STB內(nèi)的i-Jetty含有servlet代碼,讓手機可以遠(yuǎn)距來訪問它l TV/STB則內(nèi)含Camera驅(qū)動,能控制攝像頭硬件l 運用EIT造形和敏捷迭代,開發(fā)軟件來整合家外的手機與TV/STB上的攝像頭硬件,讓家庭成員隨時從手機來打開TV/STB的攝像頭,拍了照片送回到手機上呈現(xiàn)出來l 展開敏捷過程,直到完成新功能2:手機控制TV將照片送上云端(Cloud)l TV/STB將Camera拍攝的照片送上云端:例如Google的GAE等l 基于WiFi通信協(xié)議l 展開敏捷過程,直到完成Part-5: 架構(gòu)設(shè)計應(yīng)用:支持跨平臺5.1 三個架構(gòu)設(shè)計策略l 三個實施策略:n 策略-1:把它”EIT(設(shè)計)”了n 策略-2:挾天子以令諸侯 n 策略-3:建立中間件(middleware)5.2 跨芯片(小)平臺:采取情境A:先有別人的(小)平臺,然后才建立我的平臺l 小平臺是指別人的平臺,該平臺的變化決定于別人l 為了跨平臺,就不宜直接使用別人的平臺l 您設(shè)計,而且設(shè)計來包容別人平臺的變化,這就稱為:把它”EIT(設(shè)計)”了。情境B:先建立我的平臺,然后才讓別人來擴充(Extend)l 這反過來,讓別人設(shè)計插件來擴充(extend)您的l 別人為了保護他自己,也會將插件分成兩部分:與l 萬一您的有變化時,這只壁虎(插件)便能棄尾求生,讓跨您的5.3 Android版本(大)平臺:采取l Android升級和版本變更頻繁,終端必須隨之而更新l Android是一個多層級結(jié)構(gòu),各層都是由Google所開發(fā),Google是強龍,位居天子角色,其設(shè)計來控制您的插件l 您可以拿EIT造形搭配Proxy-Stub設(shè)計模式,規(guī)劃Stub類別(曹操類),制定自己的,讓脫離Android的所牽制;實現(xiàn)”挾天子以令諸侯”的效果5.4 跨自己的平臺(建立中間件):采取l 隨著您的公司業(yè)務(wù)成長,您的平臺版本變更頻繁;如何包容自己平臺的變化呢?l 您可以規(guī)劃一個上層平臺來吸納自己平臺的變化l 此平臺又稱為中間件,其提供穩(wěn)定的(又稱API),也保護自己平臺的變動自由度,實現(xiàn)”沒錢就改版,改版就有錢”的效果l 中間件還能提供您的專有API,來凸顯自己平臺的獨特性Part-6: 架構(gòu)設(shè)計的成功案例分享6.1 案例:重構(gòu)PhoneGap的架構(gòu)和代碼l 議題:PhoneGap目前只搭配HTML5的Web Appn 如何重構(gòu)PhoneGap的架構(gòu)和代碼n 讓PhoneGap也能搭配一般的Native Appl 現(xiàn)況:目前Phone
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 湖北省黃岡市十五校2024-2025學(xué)年高一下學(xué)期4月期中聯(lián)考語文試卷(含答案)
- 2025-2026學(xué)年湘教版地理八年級上冊第四章測試卷(含答案)
- 照護保險培訓(xùn)課件
- 手機項目活動設(shè)置指南
- 光譜儀培訓(xùn)課件
- 組織建設(shè)培訓(xùn)
- 急性心律失常的處理及護理
- 手拉葫蘆基礎(chǔ)培訓(xùn)
- 重癥患者體溫過高的護理
- 怎么參加崗前培訓(xùn)課件
- 教師培訓(xùn)課件:關(guān)于教師的專業(yè)發(fā)展
- 感染性休克指南解讀
- 綠色施工實施策劃方案
- 【MOOC】天文探秘-南京大學(xué) 中國大學(xué)慕課MOOC答案
- 《老年人合理用藥》課件
- 【MOOC】電工電子學(xué)-浙江大學(xué) 中國大學(xué)慕課MOOC答案
- 2024年廣西職業(yè)院校技能大賽高職組《供應(yīng)鏈管理》賽項規(guī)程
- 現(xiàn)代技術(shù)服務(wù)費合同1
- 2024山西焦煤集團公司招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年度工廠整體搬遷勞動力外包合同
- 水利工程閥門安裝及調(diào)試方案
評論
0/150
提交評論