android从程序员到架构师之路-课程大纲(参考模板)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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造形的
1.6 一群
●认识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)