从程序员到架构师之路.doc

上传人:您的****手 文档编号:3709037 上传时间:2019-07-07 格式:DOC 页数:10 大小:166.50KB
下载 相关 举报
从程序员到架构师之路.doc_第1页
第1页 / 共10页
从程序员到架构师之路.doc_第2页
第2页 / 共10页
从程序员到架构师之路.doc_第3页
第3页 / 共10页
从程序员到架构师之路.doc_第4页
第4页 / 共10页
从程序员到架构师之路.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

1、1Android:从程序员到架构师之路课程简介:一般而言,人们大多先学开发(代码) 的技术,随后才学 (架构)设计的方法。然而,在实际做事时,却是先设计,随后才写出代码来。敏捷过程则让设计与写码迭代循环下去,一直到完成为止。在本课程里,就遵循敏捷的迭代过程,从思想、方法、模式、范例和成功案例各种不同角度,带你学习从设计到代码的途径。让你在活泼的过程中,轻松地从原本的代码世界,迅速熟悉设计的新天地。在跃入架构设计新天地时,你很快会发现,架构设计的主要流派有二: 抽象思维派:致力于抽象出稳定、可靠、不变的共同性架构;亦即,追求的宗。 组合创新派:致力于组合出具体独特性的创新架构;亦即,追求的特质。

2、在本课程里,将以后者(组合创新 )为主轴,希望能陪伴你在移动互联网、智能终端的创新潮流中,能如鱼得水、展现无比的创造力。此外,也会帮你建立扎实的抽象思维能力。为了让你能顺利从(代码 )开发跃升到(架构) 设计,本课程会坚持一个美好的信念:”各项架构设计决策都必须能迅速落实为代码” 。一方面符合敏捷的原则;另一方面,你可以从熟悉的代码中,领悟到其幕后的设计思想和技术。例如,本课程也以 Android 开源的代码来阐述其幕后的 UI、IPC、HAL 等架构的设计思维和技巧。为了特别强调架构与代码两者之间的无隙缝衔接,高焕堂老师特别设计了 EIT 代码造形,让组合创新派的设计核心:接口( 即 EIT

3、 的)能直接落实到代码。因之,EIT 造形成为架构与代码的核心交汇点。此外,在本课程里,将由高老师指导大家亲自进行架构设计,直接取得实务经验;例如,以移动互联网+智能家庭的情境,设计出手机与 TV 整合、多萤互动的新型系统架构,并迅速落实为可执行的框架代码。并藉由成功案例分享来提供大量的实务设计模式,融合到框架的开发与 API 设计上,让学员在最短的时间内获得扎实的设计经验和技巧;往上应用于各行各业上。2课程大綱:Part-1: 从架构到代码的过程1.1 敏捷与架构的完美组合 敏 捷 开 发 的 原 则 和 价 值 观 开 发 、 架 构 、 测 试 之 关 系 架 构 在 敏 捷 过 程 里

4、 的 角 色 架 构 师 在 敏 捷 过 程 的 职 责 过 程 观 点 : (需 求 )测 试 做 , 敏 捷 (过 程 )做 ; 分 合 观 点 : (架 构 )设 计 做 , (代 码 )开 发 做 测 试 触 发 反 馈 , 反 馈 带 动 迭 代 , 迭 代 驱 动 重 构 迭 代 促 进 了 的 心 灵 沟 通 与 携 手 协 作 举 例 : 架 构 师 如 何 设 计 敏 捷 的 起 始 架 构 (Simple Solution) 加法设计:围绕问题( Problem)和愿景(Vision),产生创意构想(Creative Idea) 减法设计:创意爱上限制(Creativity

5、 loves constraint)1.2 代码是架构的外貌,永远青春 架 构 师 与 开 发 者 的 合 作 成 果 : 架 构 +代 码 =软 件 (系 统 ) 架构是软件的骨架、代码是软件的外貌 架 构 是 软 件 的 核 心 架 构 的 用 意 : 创 新 组 架 构 设 计 的 焦 点 : 接 口 (Interface) 设 计 决 策 具 有 , 系 统 才 能 适 应 未 来1.3 设计与开发的分工合作 架 构 设 计 的 目 的 是 : 组 合 架 构 师 做 , 支 持 开 发 者 做 , 合 作 实 践 (系 统 )组 合 分 得 妙 , 就 能 合 得 快 (即 : 分

6、之 以 为 用 , 合 之 以 为 利 ) 分 得 妙 , 就 能 得 好 接 口 (Interface) 架 构 师 的 核 心 工 作 : 接 口 设 计 (Interface Design) 开 发 者 的 核 心 工 作 : 依 据 接 口 , 开 发 (系 统 )模 块 并 整 合 有 许 多 种 开 发 者 : 如 App 开 发 者 、 底 层 系 统 开 发 者 等1.4 敏捷思维:尽快呈现架构的外貌 接 口 设 计 是 的 组 合 设 计3 接 口 设 计 是 的 分 工 设 计 架 构 师 设 计 多 种 接 口 来 支 撑 分 工 与 组 合 架 构 师 心 中 的 4

7、种 接 口 : SI、 PI、 API 和 UI SI:本架构与外部系统之间的整合接口 PI:本架构与内部挿件(Plug-in)之间的接口 API:本架构与应用程序 (App)之间的接口 UI:App 与用户的互动接口 依 循 敏 捷 原 则 , 接 口 迅 速 落 实 为 代 码 , 尽 快 呈 现 外 貌1.5 EIT 造形:接口美丽的外貌 认 识 EIT 软 件 造 形 EIT 造 形 : 呈 现 核 心 设 计 的 外 貌 EIT 造 形 的 可 涵 盖 三 种 : SI、 PI、 API EIT 造 形 的 代 表 本 架 构 EIT 造 形 的 代 表 本 架 构 的 配 件 (即

8、 插 件 : Plug-in)1.6 一群美妙的组合是:框架(Framework) 认 识 GoF 的 设 计 模 式 (Design Pattern) 随 着 敏 捷 的 迭 代 过 程 , EIT 造 形 会 逐 渐 增 加 如 何 巧 妙 组 合 渐 增 的 EIT 造 形 : 擅 用 设 计 模 式 组 合 起 来 , 就 成 为 软 件 框 架 了 如 何 迭 成 多 层 级 (Layer)的 框 架 体 系 : 以 Android 为 例Part-2: 从 Android 框架代码中学习设计2.1 基础设计模式(Pattern)的代码: 以 Android 为 例 Template

9、 Method 模 式 : IoC(控 制 反 转 )机 制 Observer 模 式 : 接 口 设 计 Abstract Factory 模 式 : 两 个 EIT 造 形 的 组 合 Adapter 模 式 : 封 装 接 口 Composite 模 式 : 实 践 组 合 Faade 模 式 : 组 合 体 的 接 口 设 计 EIT 造 形 是 原 子 , 设 计 模 式 是 分 子 更 多 EIT 造 形 的 组 合 模 式 : 以 Android 代 码 为 例2.2 从 UI 框架入手 View 体 系 的 架 构 设 计 (使 用 Template Method 模 式 )

10、Activity-View 的 架 构 设 计 (使 用 Factory 模 式 ) Layout-View 的 架 构 设 计 (使 用 Composite 模 式 )4 WMS(WindowManagerService)-View 的 架 构 设 计 WMS-SurfaceFlinger 的 架 构 设 计 Surface-Canvas(画 布 )的 架 构 设 计 SurfaceView 与 OpenGL 的 3D 绘 图 架 构 设 计 ListView 框 架 的 设 计2.3 跨进程(IPC)架构设计 Android 的 IPC 幕 后 设 计 : BD(Binder Driver

11、)驱 动 架 构 以 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)代 码 开 发 要

12、 点 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 Servic

13、e)核 心 服 务 都 是 在 开 机 过 程 中 , 由 Android 的 INIT 进 程 启 动 的包 括 Android Service 和 Native Service 两 种以 Java 语 言 撰 写 的 , 就 称 为 Android Service以 C+撰 写 的 , 就 称 为 Native Service 亲 自 撰 写 一 个 核 心 服 务撰 写 一 个 C+类 别5继 承 BBinder 基 类 , 继 承 得 来 IBinder 界 面提 供 接 口 给 Java 层 (透 过 JNI)调 用 2.6 JUnit 测试框架的设计 Android 的测试工具 ,

14、都是基于 JUnit 测试框架的 JUnit 框架也是由许多 EIT 造形所组成;其 TestCase 基类是 从基类衍生出各子类,如 ServiceTestCase 就是扩充的;其内涵的setUP()和 tearDown()函数就是 可撰写( 即 Test case)代码,来启动 TDD 机制 可使用 TestSuite 基类来管理一群相关的( 即 Test case)Part-3: 梳理你的架构设计思想、方法和模式3.1 复习设计概念与技艺概念复习 说明框架的起源、分层与其无用之用效果 阐述应用框架魅力的泉源:控制反转(IoC, Inversion of Control)机制 深入认识控制

15、反转机制 主控者是框架,而不是应用程序 现代应用框架:采取广义 IoC 观念 框架的重要功能:提供默认行为(Default Behavior) 技艺复习 抽象(无之 )与衍生(有之) 打造框架:细腻的抽象步骤 基本步骤: 细腻的手艺(一):数据抽象 细腻的手艺(二):函数抽象 细腻的手艺(三):将抽象类别转为接口 善用类的继承(Inheritance) 机制 设计基类的抽象函数 抽象是手段,组合是目的UML 复习 UML 的 3 种基本图表:类图、顺序图和用例图 以 UML 表达设计模式和框架 EIT 造形的两种表达: UML 图和代码3.2 架构设计的需求分析方法 基本设计技能:把轮胎拔掉6

16、 伟大的雕刻师罗丹( Muse Rodin)说:”把不必要的部分去掉” 买主需求:想想为什么(why)汽车架构师会决定把轮胎拔掉呢 ? 其背后的理由是:买主来了,才知道买主对轮胎的偏好或特殊需求。只有等到买主决定和挑选了轮胎之后,才能将轮胎装配上去。 探索买主需求 为 什 么 把 轮 胎 拔 掉 呢 ? 为什么火锅店的桌子要挖洞呢? 为什么餐厅要分开与呢? 3.3 接口设计模式什么是接口 (Interface) 在 OOP 里,将接口定义为一种特殊的类别(Class) 在 Java 里,将”纯粹抽象类别”称为接口(Interface) EIT 造形的接口表示为 可以合并到里谁控制 ? 成为控制

17、点 引擎 驱动轮胎 如何控制 API ? UI 与 API 被动型 API 与主动型 APIAPI 与商业模式 API 决定控制权&金流 没钱就改版,改版就有钱 以 HAL 为例,说明 API = 话语权 谁拥用接口的制定权,谁就掌握控制点,就能获得较大的话语权 从 API 看控制力量的强弱等级 把控制力传播出去 Part-4: 亲自、并迭代出代码4.1 情境范例:”手机访问 TV/STB” 愿 景 : 多 屏 互 动 、 幸 福 家 庭 的 实 践 亮点:许多智能设备大量进入家庭,在家里的 Android TV 建立一朵私密云,来整合窗外多个云平台和手机移动终端,变得流行起来。 情境:手机远

18、距访问 TV,透过 TV 打开家中的壁灯开关 架 构 : 基 于 的 大 小 机 相 联 、 大 小 屏 幕 互 动 的 新 架 构7 设 计 : 设 计 TV 里 的 框 架 、 撰 写 插 件 技术: 在外的家庭成员透过手机浏览器(Browser) 上网访问家庭云,您可以在家庭云里,安装一个 i-Jetty 网页容器(Web Container) 此时,I-Jetty 里的 HttpServlet 就是另一个,而它的 doGet()等函数就是 您写的 servlet 代码就是 I-Jetty 的,它接受手机的访问4.2 实际开发:依循敏捷、落实为代码阶段的敏捷迭代 Step-0. 准 备

19、测 试 计 划 订定此阶段的测试方案(Test Case) 以 Android 手机 Browser 为测试方案的执行软件 Step-1. 设 计 敏 捷 过 程 的 起 点 架 构 : Simple Solution 通信协议:手机与 TV 采 HTTP 通信 软件接口:TV 端的 EIT 造形与手机端 Browser 对接 设计:以 UML 表达 EIT 造形 代码:赚写 I-Jetty 的 Servlet 来实践 EIT 造形 Step-2. 启 动 TDD 机 制 、 进 行 迭 代 从手机来实机检测 TV 里的 EIT 造形的接口代码 依循 TDD 的反馈,迭代 Step-1 和 S

20、tep-2 的活动阶段的敏捷迭代 Step-3. 准 备 测 试 计 划 订定此阶段的测试方案:基于用户需求(Requirements) 以 Android 手机 Browser 为测试方案的执行软件 Step-4. 以 上 阶 段 Step-2 产 出 的 EIT 造 形 为 起 点 架 构 Step-5. 依 循 测 试 方 案 , 展 开 细 节 设 计 和 代 码 开 发 撰写 Android App 代码:基于 Android 应用框架 I-Jetty 的 调用 Android 的 App App 透 过 JNI 调 用 Android 的 Zigbee 驱 动 代 码 Zigbee

21、 驱 动 透 过 Dongle 发 信 号 给 壁 灯 开 关 Step-6. 启 动 TDD 机 制 、 进 行 迭 代 从手机来实机检测 TV 里的有关代码 依循 TDD 的反馈,迭代 Step-5 和 Step-6 的活动,直到完成4.3 继续敏捷迭代、开发新功能新功能 1: 手机控制 TV 里的 Camera 拍照片 TV/STB 内的 i-Jetty 含有 servlet 代码,让手机可以远距来访问它8 TV/STB 则内含 Camera 驱动,能控制摄像头硬件 运用 EIT 造形和敏捷迭代,开发软件来整合家外的手机与 TV/STB 上的摄像头硬件,让家庭成员随时从手机来打开 TV/

22、STB 的摄像头,拍了照片送回到手机上呈现出来 展开敏捷过程,直到完成新功能 2: 手机控制 TV 将照片送上云端 (Cloud) TV/STB 将 Camera 拍摄的照片送上云端:例如 Google 的 GAE 等 基于 WiFi 通信协议 展开敏捷过程,直到完成Part-5: 架构设计应用:支持跨平台5.1 三个架构设计策略 三 个 实 施 策 略 : 策 略 -1: 把 它 ”EIT(设 计 )”了 策 略 -2: 挟 天 子 以 令 诸 侯 策 略 -3: 建 立 中 间 件 (middleware)5.2 跨 芯 片 (小 )平 台 : 采 取 情 境 A: 先 有 别 人 的 (

23、小 )平 台 , 然 后 才 建 立 我 的 平 台 小 平 台 是 指 别 人 的 平 台 , 该 平 台 的 变 化 决 定 于 别 人 为 了 跨 平 台 , 就 不 宜 直 接 使 用 别 人 的 平 台 您 设 计 , 而 且 设 计 来 包 容 别 人 平 台 的 变 化 , 这 就 称 为 : 把 它 ”EIT(设 计 )”了 。情 境 B: 先 建 立 我 的 平 台 , 然 后 才 让 别 人 来 扩 充 (Extend) 这 反 过 来 , 让 别 人 设 计 插 件 来 扩 充 (extend)您 的 别 人 为 了 保 护 他 自 己 , 也 会 将 插 件 分 成 两

24、 部 分 : 与 万 一 您 的 有 变 化 时 , 这 只 壁 虎 (插 件 )便 能 弃 尾 求 生 , 让 跨您 的 5.3 Android 版 本 (大 )平 台 : 采 取 Android 升级和版本变更频繁,终端必须随之而更新 Android 是 一 个 多 层 级 结 构 , 各 层 都 是 由 Google 所 开 发 , Google是 强 龙 , 位 居 天 子 角 色 , 其 设 计 来 控 制 您 的 插 件 您 可 以 拿 EIT 造 形 搭 配 Proxy-Stub 设 计 模 式 , 规 划 Stub 类 别 (曹 操 类 ),制 定 自 己 的 , 让 脱 离

25、Android 的 所 牵 制 ; 实 现 ”挟 天 子 以令 诸 侯 ”的 效 果95.4 跨 自 己 的 平 台 (建 立 中 间 件 ): 采 取 随 着 您 的 公 司 业 务 成 长 , 您 的 平 台 版 本 变 更 频 繁 ; 如 何 包 容 自 己 平 台 的 变 化呢 ? 您 可 以 规 划 一 个 上 层 平 台 来 吸 纳 自 己 平 台 的 变 化 此 平 台 又 称 为 中 间 件 , 其 提 供 稳 定 的 (又 称 API), 也 保 护 自 己 平 台 的 变动 自 由 度 , 实 现 ”没 钱 就 改 版 , 改 版 就 有 钱 ”的 效 果 中 间 件 还

26、能 提 供 您 的 专 有 API, 来 凸 显 自 己 平 台 的 独 特 性Part-6: 架构设计的成功案例分享6.1 案例: 重 构 PhoneGap 的 架 构 和 代 码 议 题 : PhoneGap 目 前 只 搭 配 HTML5 的 Web App 如 何 重 构 PhoneGap 的 架 构 和 代 码 让 PhoneGap 也 能 搭 配 一 般 的 Native App 现 况 : 目 前 PhoneGap 的 架 构 设 计 HTML5 & PhoneGap 可 以 让 UI 更 容 易 跨 平 台 其 依 赖 Browser 和 PhoneGap 的 插 件 来 吸

27、收 平 台 的 差 异 化 如 果 插 件 很 多 时 , PhoneGap 里 的 PluginManager 负 责 管 理 之 UI 事 件 是 从 WebView 传 送 到 PhoneGap 的 插 件 目 标 : 即 使 不 采 用 HTML5, 也 能 使 用 PhoneGap 来 管 里 插 件 一 旦 不 使 用 HTML5, PhoneGap 就 不 再 搭 配 WebView 于 是 , PhoneGap 转 而 搭 配 一 般 的 View, 如 Button 等 UI 事 件 (Event)改 从 一 般 的 传 送 到 PhoneGap 的 插 件 收 获 : 如

28、何 拦 截 App 的 启 动 事 件 (onCreate 事 件 )和 UI 事 件 以 EIT 造 形 加 快 理 解 PhoneGap 框 架 的 结 构 深 刻 领 悟 的 设 计 要 领 : 如 IPlugin 接 口 设 计 熟 悉 从 到 的 过 程6.2 重 构 的 设 计 思 考 重构范围内共有 3 个 EIT 造形的美妙组合 第 1 个 造 形 : Activity-DroidGap 第 2 个 造 形 : WebView-CodavaWebView 第 3 个 造 形 : PluginManager-Plugin- 熟 悉 从 到 的 过 程10 因为不再搭配 WebVi

29、ew,所以前两个 EIT 造形都必须重构 第 3 个 造 形 最 复 杂 上 上 策 是 : 不 重 构 第 3 个 造 形 , 其 内 涵 和 接 口 代 码 都 保 持 不 变 成 功 地 让 第 3 个 造 形 跨 到 重 构 的 新 平 台 (即 前 两 个 造 形 )6.3 案 例 的 成 功 关 键 和 启 示 关 键 : 在 于 上 述 的 设 计 思 考 洞 悉 : 心 怀 EIT 造 形 去 观 察 架 构 技 巧 : 从 观 察 重 构 的 变 动 震 幅 , 找 出 上 上 之 策 启 示 : 优 越 架 构 , 带 来 易 于 重 构 的 机 会 , 创 造 了 系 统 未 来 性 end

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 企业管理资料库 > 人力资源

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。