




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