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

下载本文档

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

文档简介

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

温馨提示

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

最新文档

评论

0/150

提交评论