课程(2天):
Android架构分析、设计模式和App Framework/SDK开发方法
by 高焕堂
亚太地区Android技术大会 主席
微博:@高焕堂_台北
课程简介:
本课程依据企业软件开发流程里的先后环节来作教学。主要目标在于介绍和阐述各环节的思想、模式、技术和实践要点。让学员能熟悉当今云计算&大数据潮流下,终端与云端的(业务)架构分析、API设计、框架开发和SDK管理等方法和技术。
本课程特别邀请业界知名、拥有37年海内外(美国、日本、西班牙等地区)软件开发经验的专家 高焕堂 老师来亲自指导。他兼具了实务深度和学术高度,于2012年,提出了IT产业界数十年来深具突破性的EIT软件设计造形;并于2013年获得国际学术界的高度认可,受邀于<2013清华设计管理国际大会>进行论文发表。
课程特色:
在此课程里,高焕堂老师不仅仅阐述需求分析、架构设计、开发实践的各项技术,更重要的是从项目管理流程的视角,逐步带您走过真实的企业级系统开发步骤,以便返回到自己岗位上,就能顺利应用到现行的项目上。
课程大纲:
Section-1、架构(需求)分析(Architecture analysis)
目标:本节上完之后,学员熟悉最新项目管理流程中的领域分析、企业架构、框架设计到代码实现的过程。
先进的开发流程
潮流:业界主流的领域知识分析方法-- 领域驱动、模型驱动、SOA、Togaf等
建模:领域驱动与MDA模型驱动分析
符号:MDA方法与UML系统建模技术
过程:从业务分析到API设计
落实:企业框架开发及其API设计-- 抽象技术、EIT代码造形、强势接口设计
应用(一):企业架构(EA)分析方法
应用(二):跨平台架构分析与中间件(Middleware)开发
应用(三):从App开发到SDK平台开发与管理
微课-1(请点击此图,立即体验) 微课-2(请点击此图,立即体验)
结合敏捷开发
架构分析撬动敏捷(Agile)开发
-- User Story举例(一):表达东方传说『嫦娥奔月』故事
-- User Story举例(二):表达西方童话『青蛙王子』故事
-- User Story举例(三):表达POS的售票服务情境
-- User Story举例(四):表达『五子棋』的对弈情境
Section-2、设计模式(Design patterns)
目标:本节上完之后,学员熟悉如何从业务分析到软件设计。一方面学习设计模式的应用要点,而且从Android的源代码解析中,深刻领悟设计模式的实际情境(Context)。
从架构分析到设计模式
本质:领域知识和业务逻辑是内涵(Content),设计模式是软件结构(Structure)
途径:
Step-1:<企业独特内涵>+<通用型结构> = 企业模块(Business module)
Step-2:<一群企业模块>+<特定业务流程> = 独特产品(系统)
活用设计模式
设计模式的意义、起源和角色
介绍GoF的23个软件设计模式
1)设计模式的使用要点
2)常见的设计模式应用情境
Android平台的设计模式
UI架构
-- View体系的Composite设计模式
-- 处理事件的Observer设计模式
-- 远端服务的Proxy设计模式
-- ListView里的Template设计模式
-- SurfaceFlinger里的设计模式
进程与线程
-- IBinder的Fcatory、Delegation及Adaptor设计模式
-- VM的线程安全设计模式
-- JNI里的常用设计模式
数据内容
-- ContentProvider的Faade及Iterator设计模式
底层服务
-- Android Service的Faade及State设计模式
-- Native Service的常用设计模式
-- HAL里的Stub设计模式
微课-3(请点击此图,立即体验) 微课-4(请点击此图,立即体验)
Section-3、EIT(代码)造形:设计模式的<强势>应用
目标:本节上完之后,学员熟悉传统的静态(Static)设计模式和创新性(Generative)设计模式之外,进一步熟悉强势型(Strong)设计模式,作为建立业务框架和SDK的扎实基础。
EIT造形的意义和角色
目的:建立<强势型>的IT架构,支撑企业取得产业链中的<强龙>地位
做法:强化接口设计,取得接口制定权,掌握整体话语权
设计模式 + EIT = 大力水手吃菠菜
被动型API与主动型API
主动型API创造强势的设计模式
EIT造形的接口表示为;可以合并到
API与商业模式
API决定控制权
谁拥用接口的制定权,谁就掌握控制点,就能获得较大的话语权
从API看控制力量的强弱等级
EIT活用要點(一):容易,插件容纳变化
什么是插件
插件(Plugin)的分类;插件与接口
EIT造形里的插件
EIT活用要點(二):结构制约,积极掌控插件
什么是接口? 谁控制?
接口的分类
决定控制权
EIT活用要點(三):组合创新,让整体<飞>起来
什么是平台
EIT活用要點(四):协天子以令诸侯
拿EIT造形搭配Proxy-Stub设计模式,规划Stub类别(曹操类)
制定自己的,让
实现”挟天子以令诸侯”的效果
微课-5(请点击此图,立即体验)
Section-4、业务框架(Business framework)开发
目标:本节上完之后,学员知道如何从上述的分析、设计到一般的应用框架的开发过程。而且懂得如何建立较复杂而强势的多层框架,例如C++与Java(或Scala)组合的多层框架体系,成为未来发展SDK的核心机制。
从Android开放源码来阐述其Framework设计方法
說明<平台>与<应用>框架之密切关系
如何以C/C++和JNI(Java Native Interface)实现平台框架
如何透过JNI衔接Java层与C/C++层框架
闡述HAL(Hardware Abstraction Layer)驱动层框架设计
以软件框架(Framework)实践强势架构设计
假设à假想à愿景à商业模式à架构à软件框架
愿景是自由的假想(Hypothesis)
商业模式来自愿景(Vision)
商业模式是愿景的可获利策略(Profitable Strategy)
架构(Architecture)是商业模式的可实现计划(Achievable Plan)
框架(Framework)是一种计算机可以执行的架构(Architecture)
框架的内涵是程序码。
框架呈现形式是:元素是软件程序码;结构是软件基类(Super class)和API
商业模式是必备条件,框架是充分条件
框架实践话语权
-- 框架API是鱼钩,APP是鱼
-- 掌握框架à掌握APPà掌握User
框架实践强势商业模式
-- 愿景和商业模式都是独特的
-- 基于独特的愿景和商业模式
-- 表现于与众不同软件框架上
-- 拥有别人无法取代的主导权
多层业务框架的实践范例:在C/C++层上建立Java层业务框架
使用JNI(Java Native Interface)
例如,C/C++平台的<业务规则BR引擎>可以搭配一个Java框架
因为C/C++模块(如<业务规则引擎>)可以调用Java函数,所以C/C++平台仍然拥有主控权
观摩Android GPS(Location Service)服务框架体系
-- Java层框架基类及相关类别
-- JNI界面
大数据Spark/Hadoop平台上的Scala应用框架实践范例
活用Spark API
善用Scala的"trait"定义应用框架的API
从Scala框架存取HBase大数据
C/C++模块(如<业务规则引擎>)可以调用Scala函数
微课-6(请点击此图,立即体验) 微课-7(请点击此图,立即体验)
Section-5、SDK设计、开发与管理
目标:本节上完之后,基于讨论形式,各学员都会明白SDK(Software Development Kit)的经济和战略意义。能辨别自己企业是否需要发展自己的SDK或仅仅使用人的SDK(如Google Android SDK)。
讨论:终端SDK的战略意义
SDK和平台(框架)都像”花轿”,做得好稳定好用,是必要条件而已;还要还要有人来抬轿,才是充分条件。
如何<威胁利诱>引导众人来抬轿呢? 例如,以终端SKD封装云平台(后台服务端)的服务,逼迫众多App开发者必须使用SDK。
反过来,为什么云平台(后台服务端)的服务,要让我们的SDK包装呢? 此时,SDK必须带给服务端利益,例如将服务端接口包装与SDK父类里,App必须调用父类函数,间接使用服务端的接口,未来服务端接口通信协议改版了,只要更改SDK父类,而不必更改所有的App。
因此,SDK对云平台开发者极具战略价值的。
终端SDK的安全與測試方案
UI控件相关的Permission机制定义
SDK版本信息和Permission定义
测试框架定义
微课-8(请点击此图,立即体验)
高焕堂(Tom Kao) 简历
n 学历:美国U. of Colorado资管研究所,淡江大学管理科学研究所
n Android/Java培训&顾问经历:
酷派Android手机开发团队培训
中兴移动、LG北京Android技术培训
腾讯、支付宝、百度的Android技术培训
MTK、宏碁的Android技术培训
OPPO、MOTO、联迪的Android技术培训
MSTAR、长虹的Android技术培训
廈門中國航信、惠州華陽的技术培训
華為(北京)、鼎橋、聯友、快錢的技術培訓
n 曾任:铭传大学专职讲师
台湾<<对象导向Object-Oriented杂志>> 主编
英国Access Capital公司嵌入式软件架构师(西班牙.巴塞隆纳)
n 现职:美国Aurora高科技医疗仪器公司云端服务系统 总架构师
亚太地区Android技术合作大会(APAC) 主席
台湾Android/Java领域框架开发联盟 总架构师
n 技术专长:
专精于Android/Java核心框架及核心服务程序开发
n 书籍著作:
13本Java/UML/系統分析相關書籍
出版9本Android/Java专业技术书籍。
n Android之网页/杂志文章:
- 发表300多篇中文Android/Java技术性文章
n 微博:@高焕堂_台北
~ End ~