高焕堂的招牌课程

 

企业架构分析、设计模式和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 测试框架定义