android从程序员到架构师之路-课程大纲.doc_第1页
android从程序员到架构师之路-课程大纲.doc_第2页
android从程序员到架构师之路-课程大纲.doc_第3页
android从程序员到架构师之路-课程大纲.doc_第4页
android从程序员到架构师之路-课程大纲.doc_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

麦可网/ 高端android体系化学习Android:从程序员到架构师之路By 高焕堂课程简介:一般而言,人们大多先学开发(代码)的技术,随后才学(架构)设计的方法。然而,在实际做事时,却是先设计,随后才写出代码来。敏捷过程则让设计与写码迭代循环下去,一直到完成为止。在本课程里,就遵循敏捷的迭代过程,从思想、方法、模式、范例和成功案例各种不同角度,带你学习从设计到代码的途径。让你在活泼的过程中,轻松地从原本的代码世界,迅速熟悉设计的新天地。在跃入架构设计新天地时,你很快会发现,架构设计的主要流派有二:l 抽象思维派:致力于抽象出稳定、可靠、不变的共同性架构;亦即,追求的宗。l 组合创新派:致力于组合出具体独特性的创新架构;亦即,追求的特质。在本课程里,将以后者(组合创新)为主轴,希望能陪伴你在移动互联网、智能终端的创新潮流中,能如鱼得水、展现无比的创造力。此外,也会帮你建立扎实的抽象思维能力。 为了让你能顺利从(代码)开发跃升到(架构)设计,本课程会坚持一个美好的信念: ”各项架构设计决策都必须能迅速落实为代码”。一方面符合敏捷的原则;另一方面,你可以从熟悉的代码中,领悟到其幕后的设计思想和技术。例如,本课程也以Android开源的代码来阐述其幕后的 UI、IPC、HAL等架构的设计思维和技巧。为了特别强调架构与代码两者之间的无隙缝衔接,高焕堂老师特别设计了EIT代码造形,让组合创新派的设计核心:接口(即EIT的)能直接落实到代码。因之,EIT造形成为架构与代码的核心交汇点。 此外,在本课程里,将由高老师指导大家亲自进行架构设计,直接取得实务经验;例如,以移动互联网+智能家庭的情境,设计出手机与TV整合、多萤互动的新型系统架构,并迅速落实为可执行的框架代码。并藉由成功案例分享来提供大量的实务设计模式,融合到框架的开发与API设计上,让学员在最短的时间内获得扎实的设计经验和技巧;往上应用于各行各业上。课程大綱:Part-1: 从架构到代码的过程1.1 敏捷与架构的完美组合l 敏捷开发的原则和价值观l 开发、架构、测试之关系 l 架构在敏捷过程里的角色l 架构师在敏捷过程的职责l 过程观点:(需求)测试做,敏捷(过程)做;l 分合观点:(架构)设计做,(代码)开发做l 测试触发反馈,反馈带动迭代,迭代驱动重构l 迭代促进了的心灵沟通与携手协作l 举例:架构师如何设计敏捷的起始架构(Simple Solution)n 加法设计:围绕问题( Problem)和愿景(Vision),产生创意构想(Creative Idea)n 减法设计:创意爱上限制(Creativity loves constraint)1.2 代码是架构的外貌,永远青春l 架构师与开发者的合作成果:架构+代码=软件(系统)l 架构是软件的骨架、代码是软件的外貌l 架构是软件的核心l 架构的用意:创新组l 架构设计的焦点:接口(Interface)l 设计决策具有,系统才能适应未来1.3 设计与开发的分工合作l 架构设计的目的是:组合l 架构师做,支持开发者做,合作实践(系统)组合l 分得妙,就能合得快(即:分之以为用,合之以为利)l 分得妙,就能得好接口(Interface)l 架构师的核心工作:接口设计(Interface Design)l 开发者的核心工作:依据接口,开发(系统)模块并整合l 有许多种开发者:如App开发者、底层系统开发者等1.4 敏捷思维:尽快呈现架构的外貌l 接口设计是的组合设计l 接口设计是的分工设计l 架构师设计多种接口来支撑分工与组合l 架构师心中的4种接口:SI、PI、API和UIn SI:本架构与外部系统之间的整合接口n PI:本架构与内部挿件(Plug-in)之间的接口n API:本架构与应用程序(App)之间的接口n UI:App与用户的互动接口l 依循敏捷原则,接口迅速落实为代码,尽快呈现外貌1.5 EIT造形:接口美丽的外貌l 认识EIT软件造形l EIT造形:呈现核心设计的外貌l EIT造形的可涵盖三种:SI、PI、APIl EIT造形的代表本架构l EIT造形的代表本架构的配件(即插件:Plug-in)1.6 一群美妙的组合是:框架(Framework)l 认识GoF的设计模式(Design Pattern)l 随着敏捷的迭代过程,EIT造形会逐渐增加l 如何巧妙组合渐增的EIT造形:擅用设计模式l 组合起来,就成为软件框架了l 如何迭成多层级(Layer)的框架体系:以Android为例Part-2: 从Android框架代码中学习设计2.1 基础设计模式(Pattern)的代码:以Android为例l Template Method模式:IoC(控制反转)机制l Observer模式:接口设计l Abstract Factory模式:两个EIT造形的组合l Adapter模式:封装接口l Composite模式:实践组合l Faade模式:组合体的接口设计l EIT造形是原子,设计模式是分子l 更多EIT造形的组合模式:以Android代码为例2.2 从 UI框架入手l View体系的架构设计(使用Template Method模式)l Activity-View的架构设计(使用Factory模式) l Layout-View的架构设计(使用Composite模式)l WMS(WindowManagerService)-View的架构设计l WMS-SurfaceFlinger的架构设计l Surface-Canvas(画布)的架构设计 l SurfaceView与OpenGL的3D绘图架构设计l ListView框架的设计2.3 跨进程(IPC)架构设计l Android 的IPC幕后设计:BD(Binder Driver)驱动架构l 以IBinder接口包装BD驱动的服务l 包装IBinder接口的Proxy-Stub设计模式l Proxy和Stub类别的代码l 设计Proxy和Stub类别的APIl 如何自动生成Proxy和Stub类别代码l IBinder & AIDL方法n 方法(一):Implementing a Bindern 方法(二):Using a Messenger n 方法(三):Bound Services2.4 Java与C/C+两层框架的设计l JNI(Java Native Interface)代码开发要点l JNI的数据型态(Data Type)转换规则l JNI的线程(Thread)模式:JNIENV类的设计l 正向通信:Java函数调用本地C函数l 反向通信:本地C函数调用Java函数l Android HAL架构设计n HAL(Hardware Abstraction Layer)的意义n 理解runtime与HAL Stubn 撰写HAL Stub代码n Stub调用Linux Kernel的方法2.5 核心服务的框架设计l 认识核心服务(Core Service)n 核心服务都是在开机过程中,由Android的INIT进程启动的n 包括Android Service和 Native Service两种n 以Java语言撰写的,就称为Android Servicen 以C+撰写的,就称为Native Servicel 亲自撰写一个核心服务n 撰写一个C+类别n 继承BBinder基类,继承得来IBinder界面n 提供接口给Java层(透过JNI)调用 2.6 JUnit测试框架的设计l Android的测试工具,都是基于JUnit测试框架的l JUnit框架也是由许多EIT造形所组成;其TestCase基类是l 从基类衍生出各子类,如ServiceTestCase就是扩充的;其内涵的setUP()和tearDown()函数就是l 可撰写(即Test case)代码,来启动TDD机制l 可使用TestSuite基类来管理一群相关的(即Test case)Part-3: 梳理你的架构设计思想、方法和模式3.1 复习设计概念与技艺概念复习l 说明框架的起源、分层与其无用之用效果l 阐述应用框架魅力的泉源:控制反转(IoC, Inversion of Control)机制 l 深入认识控制反转机制 l 主控者是框架,而不是应用程序 l 现代应用框架:采取广义IoC观念 l 框架的重要功能:提供默认行为(Default Behavior) 技艺复习l 抽象(无之)与衍生(有之)l 打造框架:细腻的抽象步骤l 基本步骤:n 细腻的手艺(一):数据抽象n 细腻的手艺(二):函数抽象n 细腻的手艺(三):将抽象类别转为接口l 善用类的继承(Inheritance)机制l 设计基类的抽象函数l 抽象是手段,组合是目的UML复习l UML的3种基本图表:类图、顺序图和用例图l 以UML表达设计模式和框架l EIT造形的两种表达:UML图和代码3.2 架构设计的需求分析方法l 基本设计技能:把轮胎拔掉l 伟大的雕刻师罗丹( Muse Rodin)说:”把不必要的部分去掉”l 买主需求:想想为什么(why)汽车架构师会决定把轮胎拔掉呢? 其背后的理由是:买主来了,才知道买主对轮胎的偏好或特殊需求。只有等到买主决定和挑选了轮胎之后,才能将轮胎装配上去。 l 探索买主需求n 为什么把轮胎拔掉呢?n 为什么火锅店的桌子要挖洞呢? n 为什么餐厅要分开与呢? 3.3 接口设计模式什么是接口(Interface)l 在OOP里,将接口定义为一种特殊的类别(Class)l 在Java里,将”纯粹抽象类别”称为接口(Interface)l EIT造形的接口表示为l 可以合并到里谁控制? l 成为控制点 l 引擎驱动轮胎如何控制API ?l UI与APIl 被动型API与主动型APIAPI与商业模式l API决定控制权&金流l 没钱就改版,改版就有钱l 以HAL为例,说明API = 话语权l 谁拥用接口的制定权,谁就掌握控制点,就能获得较大的话语权l 从API看控制力量的强弱等级l 把控制力传播出去 Part-4: 亲自、并迭代出代码4.1 情境范例:”手机访问TV/STB”l 愿景:多屏互动、幸福家庭的实践l 亮点:许多智能设备大量进入家庭,在家里的Android TV建立一朵私密云,来整合窗外多个云平台和手机移动终端,变得流行起来。l 情境:手机远距访问TV,透过TV打开家中的壁灯开关l 架构:基于的大小机相联、大小屏幕互动的新架构l 设计:设计TV里的框架、撰写插件l 技术:n 在外的家庭成员透过手机浏览器(Browser)上网访问家庭云,您可以在家庭云里,安装一个i-Jetty网页容器(Web Container)n 此时,I-Jetty里的HttpServlet就是另一个,而它的doGet()等函数就是n 您写的servlet代码就是I-Jetty的,它接受手机的访问4.2 实际开发:依循敏捷、落实为代码阶段的敏捷迭代l Step-0. 准备测试计划n 订定此阶段的测试方案(Test Case)n 以Android手机Browser为测试方案的执行软件l Step-1. 设计敏捷过程的起点架构:Simple Solutionn 通信协议:手机与TV采HTTP通信n 软件接口:TV端的EIT造形与手机端Browser对接n 设计:以UML表达EIT造形n 代码:赚写I-Jetty的Servlet来实践EIT造形l Step-2. 启动TDD机制、进行迭代n 从手机来实机检测TV里的EIT造形的接口代码n 依循TDD的反馈,迭代Step-1和Step-2的活动阶段的敏捷迭代l Step-3. 准备测试计划n 订定此阶段的测试方案:基于用户需求(Requirements)n 以Android手机Browser为测试方案的执行软件l Step-4. 以上阶段Step-2产出的EIT造形为起点架构l Step-5. 依循测试方案,展开细节设计和代码开发n 撰写Android App代码:基于Android应用框架n I-Jetty的调用Android的Appn App透过JNI调用Android的Zigbee驱动代码n Zigbee驱动透过Dongle发信号给壁灯开关l Step-6. 启动TDD机制、进行迭代n 从手机来实机检测TV里的有关代码n 依循TDD的反馈,迭代Step-5和Step-6的活动,直到完成4.3 继续敏捷迭代、开发新功能新功能1:手机控制TV里的Camera拍照片l TV/STB内的i-Jetty含有servlet代码,让手机可以远距来访问它l TV/STB则内含Camera驱动,能控制摄像头硬件l 运用EIT造形和敏捷迭代,开发软件来整合家外的手机与TV/STB上的摄像头硬件,让家庭成员随时从手机来打开TV/STB的摄像头,拍了照片送回到手机上呈现出来l 展开敏捷过程,直到完成新功能2:手机控制TV将照片送上云端(Cloud)l TV/STB将Camera拍摄的照片送上云端:例如Google的GAE等l 基于WiFi通信协议l 展开敏捷过程,直到完成Part-5: 架构设计应用:支持跨平台5.1 三个架构设计策略l 三个实施策略:n 策略-1:把它”EIT(设计)”了n 策略-2:挟天子以令诸侯 n 策略-3:建立中间件(middleware)5.2 跨芯片(小)平台:采取情境A:先有别人的(小)平台,然后才建立我的平台l 小平台是指别人的平台,该平台的变化决定于别人l 为了跨平台,就不宜直接使用别人的平台l 您设计,而且设计来包容别人平台的变化,这就称为:把它”EIT(设计)”了。情境B:先建立我的平台,然后才让别人来扩充(Extend)l 这反过来,让别人设计插件来扩充(extend)您的l 别人为了保护他自己,也会将插件分成两部分:与l 万一您的有变化时,这只壁虎(插件)便能弃尾求生,让跨您的5.3 Android版本(大)平台:采取l Android升级和版本变更频繁,终端必须随之而更新l Android是一个多层级结构,各层都是由Google所开发,Google是强龙,位居天子角色,其设计来控制您的插件l 您可以拿EIT造形搭配Proxy-Stub设计模式,规划Stub类别(曹操类),制定自己的,让脱离Android的所牵制;实现”挟天子以令诸侯”的效果5.4 跨自己的平台(建立中间件):采取l 随着您的公司业务成长,您的平台版本变更频繁;如何包容自己平台的变化呢?l 您可以规划一个上层平台来吸纳自己平台的变化l 此平台又称为中间件,其提供稳定的(又称API),也保护自己平台的变动自由度,实现”没钱就改版,改版就有钱”的效果l 中间件还能提供您的专有API,来凸显自己平台的独特性Part-6: 架构设计的成功案例分享6.1 案例:重构PhoneGap的架构和代码l 议题:PhoneGap目前只搭配HTML5的Web Appn 如何重构PhoneGap的架构和代码n 让PhoneGap也能搭配一般的Native Appl 现况:目前P

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论