当前位置:文档之家› android从程序员到架构师之路-课程大纲(参考模板)

android从程序员到架构师之路-课程大纲(参考模板)

Android:从程序员到架构师之路By 高焕堂课程简介:一般而言,人们大多先学开发(代码)的技术,随后才学(架构)设计的方法。

然而,在实际做事时,却是先设计,随后才写出代码来。

敏捷过程则让设计与写码迭代循环下去,一直到完成为止。

在本课程里,就遵循敏捷的迭代过程,从思想、方法、模式、范例和成功案例各种不同角度,带你学习从设计到代码的途径。

让你在活泼的过程中,轻松地从原本的代码世界,迅速熟悉设计的新天地。

在跃入架构设计新天地时,你很快会发现,架构设计的主要流派有二:●抽象思维派:致力于抽象出稳定、可靠、不变的共同性架构;亦即,追求<万变不离其宗>的宗。

●组合创新派:致力于组合出具体独特性的创新架构;亦即,追求<与众不同>的特质。

在本课程里,将以后者(组合创新)为主轴,希望能陪伴你在移动互联网、智能终端的创新潮流中,能如鱼得水、展现无比的创造力。

此外,也会帮你建立扎实的抽象思维能力。

为了让你能顺利从(代码)开发跃升到(架构)设计,本课程会坚持一个美好的信念:”各项架构设计决策都必须能迅速落实为代码”。

一方面符合敏捷的原则;另一方面,你可以从熟悉的代码中,领悟到其幕后的设计思想和技术。

例如,本课程也以Android开源的代码来阐述其幕后的 UI、IPC、HAL等架构的设计思维和技巧。

为了特别强调架构与代码两者之间的无隙缝衔接,高焕堂老师特别设计了EIT代码造形,让组合创新派的设计核心:接口(即EIT的<I>)能直接落实到代码。

因之,EIT造形成为架构与代码的核心交汇点。

此外,在本课程里,将由高老师指导大家亲自进行架构设计,直接取得实务经验;例如,以移动互联网+智能家庭的情境,设计出手机与TV整合、多萤互动的新型系统架构,并迅速落实为可执行的框架代码。

并藉由成功案例分享来提供大量的实务设计模式,融合到框架的开发与API设计上,让学员在最短的时间内获得扎实的设计经验和技巧;往上应用于各行各业上。

课程大綱:Part-1: 从架构到代码的过程1.1 敏捷与架构的完美组合●敏捷开发的原则和价值观●开发、架构、测试之关系●架构在敏捷过程里的角色●架构师在敏捷过程的职责●过程观点:(需求)测试做<反馈>,敏捷(过程)做<迭代>;●分合观点:(架构)设计做<分>,(代码)开发做<合>●测试触发反馈,反馈带动迭代,迭代驱动<架构代码>重构●迭代促进了<架构师&开发者>的心灵沟通与携手协作●举例:架构师如何设计敏捷的起始架构(Simple Solution)⏹加法设计:围绕问题( Problem)和愿景(Vision),产生创意构想(Creative Idea)⏹减法设计:创意爱上限制(Creativity loves constraint)1.2 代码是架构的外貌,永远青春●架构师与开发者的合作成果:架构+代码=软件(系统)●架构是软件的骨架、代码是软件的外貌●架构是软件的核心●架构的用意:创新组<合>●架构设计的焦点:接口(Interface)●设计决策具有<未来性>,系统才能适应未来1.3 设计与开发的分工合作●架构设计的目的是:组合●架构师做<分>,支持开发者做<合>,合作实践(系统)组合●分得妙,就能合得快(即:分之以为用,合之以为利)●分得妙,就能得好接口(Interface)●架构师的核心工作:接口设计(Interface Design)●开发者的核心工作:依据接口,开发(系统)模块并整合●有许多种开发者:如App开发者、底层系统开发者等1.4 敏捷思维:尽快呈现架构的外貌●接口设计是<物>的组合设计●接口设计是<事>的分工设计●架构师设计多种接口来支撑分工与组合●架构师心中的4种接口:SI、PI、API和UI⏹SI:本架构与外部系统之间的整合接口⏹PI:本架构与内部挿件(Plug-in)之间的接口⏹API:本架构与应用程序(App)之间的接口⏹UI:App与用户的互动接口●依循敏捷原则,接口迅速落实为代码,尽快呈现外貌1.5 EIT造形:接口美丽的外貌●认识EIT软件造形●EIT造形:呈现核心设计的外貌●EIT造形的<I>可涵盖三种:SI、PI、API●EIT造形的<E>代表本架构●EIT造形的<T>代表本架构的配件(即插件:Plug-in)1.6 一群<E&I>美妙的组合是:框架(Framework)●认识GoF的设计模式(Design Pattern)●随着敏捷的迭代过程,EIT造形会逐渐增加●如何巧妙组合渐增的EIT造形:擅用设计模式●组合起来,就成为软件框架了●如何迭成多层级(Layer)的框架体系:以Android为例Part-2: 从Android框架代码中学习设计2.1基础设计模式(Pattern)的代码:以Android为例●Template Method模式:IoC(控制反转)机制●Observer模式:接口设计●Abstract Factory模式:两个EIT造形的组合●Adapter模式:封装接口●Composite模式:实践组合●Façade模式:组合体的接口设计●EIT造形是原子,设计模式是分子●更多EIT造形的组合模式:以Android代码为例2.2 从 UI框架入手●View体系的架构设计(使用Template Method模式)●Activity-View的架构设计(使用Factory模式)●Layout-View的架构设计(使用Composite模式)●WMS(WindowManagerService)-View的架构设计●WMS-SurfaceFlinger的架构设计●Surface-Canvas(画布)的架构设计●SurfaceView与OpenGL的3D绘图架构设计●ListView框架的设计2.3 跨进程(IPC)架构设计●Android 的IPC幕后设计:BD(Binder Driver)驱动架构●以IBinder接口包装BD驱动的服务●包装IBinder接口的Proxy-Stub设计模式●Proxy和Stub类别的代码●设计Proxy和Stub类别的API●如何自动生成Proxy和Stub类别代码●IBinder & AIDL方法⏹方法(一):Implementing a Binder⏹方法(二):Using a Messenger⏹方法(三):Bound Services2.4 Java与C/C++两层框架的设计●JNI(Java Native Interface)代码开发要点●JNI的数据型态(Data Type)转换规则●JNI的线程(Thread)模式:JNIENV类的设计●正向通信:Java函数调用本地C函数●反向通信:本地C函数调用Java函数●Android HAL架构设计⏹HAL(Hardware Abstraction Layer)的意义⏹理解runtime与HAL Stub⏹撰写HAL Stub代码⏹Stub调用Linux Kernel的方法2.5 核心服务的框架设计●认识核心服务(Core Service)⏹核心服务都是在开机过程中,由Android的INIT进程启动的⏹包括Android Service和 Native Service两种⏹以Java语言撰写的,就称为Android Service⏹以C++撰写的,就称为Native Service●亲自撰写一个核心服务⏹撰写一个C++类别⏹继承BBinder基类,继承得来IBinder界面⏹提供接口给Java层(透过JNI)调用2.6 JUnit测试框架的设计●Android的测试工具,都是基于JUnit测试框架的●JUnit框架也是由许多EIT造形所组成;其TestCase基类是<E&I>●从基类衍生出各子类,如ServiceTestCase就是扩充的<E&I>;其内涵的setUP()和tearDown()函数就是<I>●可撰写<T>(即Test case)代码,来启动TDD机制●可使用TestSuite基类来管理一群相关的<T>(即Test case)Part-3: 梳理你的架构设计思想、方法和模式3.1 复习设计概念与技艺概念复习●说明框架的起源、分层与其「无用之用」效果●阐述应用框架魅力的泉源:控制反转(IoC, Inversion of Control)机制●深入认识控制反转机制●主控者是框架,而不是应用程序●现代应用框架:采取广义IoC观念●框架的重要功能:提供默认行为(Default Behavior)技艺复习●抽象(无之)与衍生(有之)●打造框架:细腻的抽象步骤●基本步骤:⏹细腻的手艺(一):数据抽象⏹细腻的手艺(二):函数抽象⏹细腻的手艺(三):将抽象类别转为接口●善用类的继承(Inheritance)机制●设计基类的抽象函数●抽象是手段,组合是目的UML复习●UML的3种基本图表:类图、顺序图和用例图●以UML表达设计模式和框架●EIT造形的两种表达:UML图和代码3.2架构设计的需求分析方法●基本设计技能:把轮胎拔掉●伟大的雕刻师罗丹( Musée Rodin)说:”把不必要的部分去掉”●买主需求:想想为什么(why)汽车架构师会决定把轮胎拔掉呢? 其背后的理由是:买主来了,才知道买主对轮胎的偏好或特殊需求。

只有等到买主决定和挑选了轮胎之后,才能将轮胎装配上去。

●探索买主需求⏹为什么把轮胎拔掉呢?⏹为什么火锅店的桌子要挖洞呢?⏹为什么餐厅要分开<食谱>与<点菜单>呢?3.3 接口设计模式什么是接口(Interface)●在OOP里,将接口定义为一种特殊的类别(Class)●在Java里,将”纯粹抽象类别”称为接口(Interface)●EIT造形的接口表示为<I>●<I>可以合并到<E>里谁控制<I>?●<E>成为控制点●引擎<E><I>驱动轮胎<T>如何控制API ?●UI与API●被动型API与主动型APIAPI与商业模式●API决定控制权&金流●没钱就改版,改版就有钱●以HAL为例,说明API = 话语权●谁拥用接口的制定权,谁就掌握控制点,就能获得较大的话语权●从API看控制力量的强弱等级●把控制力传播出去Part-4: 亲自<敏捷+架构>、并迭代出代码4.1 情境范例:”手机访问TV/STB”●愿景:多屏互动、幸福家庭的实践●亮点:许多智能设备大量进入家庭,在家里的Android TV建立一朵私密云,来整合窗外多个云平台和手机移动终端,变得流行起来。

相关主题