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