Android架构分析&设计模式 课程

课程(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平台开发与管理 


         wKiom1YUxebBb8FAAAErQ6HQLGY138.jpg          wKiom1YUp-GSnQf3AAFJw9ANiRw075.jpg

        微课-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设计模式

    wKiom1YUqj7zMQO4AAFIw2tgOCU924.jpg        wKioL1YUqwmwuGu-AACzC5O5-Ck261.jpg

     微课-3(请点击此图,立即体验)      微课-4(请点击此图,立即体验)


Section-3、EIT(代码)造形:设计模式的<强势>应用

目标:本节上完之后,学员熟悉传统的静态(Static)设计模式和创新性(Generative)设计模式之外,进一步熟悉强势型(Strong)设计模式,作为建立业务框架和SDK的扎实基础。

EIT造形的意义和角色

  • 目的:建立<强势型>的IT架构,支撑企业取得产业链中的<强龙>地位

  • 做法:强化接口设计,取得接口制定权,掌握整体话语权

设计模式 + EIT = 大力水手吃菠菜

  • 被动型API与主动型API

  • 主动型API创造强势的设计模式

  • EIT造形的接口表示为<I>;<I>可以合并到<E>里

API与商业模式

  • API决定控制权

  • 谁拥用接口的制定权,谁就掌握控制点,就能获得较大的话语权

  • 从API看控制力量的强弱等级

EIT活用要�c(一):容易,插件容纳变化

  • 什么是插件<T>?

  • 插件(Plugin)的分类;插件与接口

  • EIT造形里的插件<T>

EIT活用要�c(二):结构制约,积极掌控插件

  • 什么是接口<I>? 谁控制<I>?

  • 接口的分类

  • <I>决定控制权

EIT活用要�c(三):组合创新,让整体<飞>起来

  • 什么是平台<E>?

  • <E>+<I> = 框架(Framework)

  • <E>是控制点,透过<I>来驱动<T>

EIT活用要�c(四):协天子以令诸侯

  • 拿EIT造形搭配Proxy-Stub设计模式,规划Stub类别(曹操类)

  • 制定自己的<I>,让<T>脱离上层<E&I>所牵制

  • 实现”挟天子以令诸侯”的效果


   wKioL1YUq8jApdFDAADt_zeSYH4840.jpg      

  微课-5(请点击此图,立即体验) 


Section-4、业务框架(Business framework)开发

目标:本节上完之后,学员知道如何从上述的分析、设计到一般的应用框架的开发过程。而且懂得如何建立较复杂而强势的多层框架,例如C++与Java(或Scala)组合的多层框架体系,成为未来发展SDK的核心机制。

从Android开放源码来阐述其Framework设计方法

  • �f明<平台>与<应用>框架之密切关系

  • 如何以C/C++和JNI(Java Native Interface)实现平台框架

  • 如何透过JNI衔接Java层与C/C++层框架

  • �U述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函数

  

   wKioL1YUxmHiKdJNAAEZqE0KgXk037.jpg       wKioL1YUyN6zcy-IAACmayLY6F0529.jpg

   微课-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的安全�c�y�方案

  • UI控件相关的Permission机制定义

  • SDK版本信息和Permission定义

  • 测试框架定义

    wKiom1YUp2HRZlowAACWWebbwHA862.jpg

   微课-8(请点击此图,立即体验) 

    

高焕堂(Tom Kao)  简历

wKioL1SZ-EugQKyFAAD20MWkqEE824.jpg

学历:美国U. of Colorado资管研究所,淡江大学管理科学研究所

Android/Java培训&顾问经历:

       酷派Android手机开发团队培训

       中兴移动、LG北京Android技术培训

       腾讯、支付宝、百度的Android技术培训

       MTK、宏�的Android技术培训

       OPPO、MOTO、联迪的Android技术培训  

        MSTAR、长虹的Android技术培训

       �B�T中��航信、惠州�A�的技术培训   

       �A��(北京)、鼎�颉⒙�友、快�X的技�g培�

曾任:铭传大学专职讲师

          台湾<<对象导向Object-Oriented杂志>> 主编

          英国Access Capital公司嵌入式软件架构师(西班牙.巴塞隆纳) 

现职:美国Aurora高科技医疗仪器公司云端服务系统 总架构师

          亚太地区Android技术合作大会(APAC) 主席

          台湾Android/Java领域框架开发联盟 总架构师

技术专长:

            专精于Android/Java核心框架及核心服务程序开发

书籍著作:

            13本Java/UML/系�y分析相�P��籍

            出版9本Android/Java专业技术书籍。

Android之网页/杂志文章:

            - 发表300多篇中文Android/Java技术性文章

微博:@高焕堂_台北


~ End ~


你可能感兴趣的:(设计模式,领域驱动)