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

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Android:从程序员到架构师之路

By 高焕堂

课程简介:

一般而言,人们大多先学开发(代码)的技术,随后才学(架构)设计的方法。然而,在实际做事时,却是先设计,随后才写出代码来。敏捷过程则让设计与写码迭代循环下去,一直到完成为止。在本课程里,就遵循敏捷的迭代过程,从思想、方法、模式、范例和成功案例各种不同角度,带你学习从设计到代码的途径。让你在活泼的过程中,轻松地从原本的代码世界,迅速熟悉设计的新天地。

在跃入架构设计新天地时,你很快会发现,架构设计的主要流派有二:

●抽象思维派:致力于抽象出稳定、可靠、不变的共同性架构;亦即,追

求<万变不离其宗>的宗。

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

同>的特质。

在本课程里,将以后者(组合创新)为主轴,希望能陪伴你在移动互联网、智能终端的创新潮流中,能如鱼得水、展现无比的创造力。此外,也会帮你建立扎实的抽象思维能力。

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

一方面符合敏捷的原则;另一方面,你可以从熟悉的代码中,领悟到其幕后的设计思想和技术。例如,本课程也以Android开源的代码来阐述其幕后的 UI、IPC、HAL等架构的设计思维和技巧。为了特别强调架构与代码两者之间的无隙缝衔接,高焕堂老师特别设计了EIT代码造形,让组合创新派的设计核心:接口(即EIT的)能直接落实到代码。因之,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造形的可涵盖三种:SI、PI、API

●EIT造形的代表本架构

●EIT造形的代表本架构的配件(即插件:Plug-in)

1.6 一群美妙的组合是:框架(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 Services

2.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)