<从编程到(架构)设计之路>的翻转式系列课程

<从编程到(架构)设计之路>的翻转式系列课程

课程(1):

 从接口(Interface)出发:接口设计的技术和艺术

  • 一個成功案例的實務傳承
  • 高焕堂37码农经验讲解

指导教练:高焕堂

1. 简介翻转式课堂

1.1  翻转式课堂的目标

萨尔曼·可汗 說:未来的世界是不确定的,因此重要的不是学到什么,而是学习新知识的能力。教育应该具有实践性,其目的应该是帮助学生掌握技能、取得信息,使他们能够谋生。教育应该具有实践性,其目的应该是帮助学生掌握技能、取得信息,使他们能够谋生。学徒制的基础是主动学习—也就是通过实践来学习,即学徒视察并模仿师父的技巧和策略。

1.2  翻转式课堂的步骤

这种<翻转式课堂>的进行步骤如下:

  • 步骤-1:参加在线自学微课
  • 步骤-2: 完成微课之后,自行思考相关议题
  • 步骤-3:参加线下或在线翻转式课堂,分组讨论相关议题;并与同学、嘉宾和教练交换见解
  • 步骤-4: 各组实践与演练
  • 步骤-5: 参加线下或在线翻转式课堂,分组报告实践成果;并与同学、嘉宾和教练分享、交换心得


2. 课程

2.1 课程简介

 

    当我们一谈到软件设计,最重要的就是接口设计(The design of interface)。在大家所熟悉的GoF这本"Design Patterns(设计模式)"的一书里,其开宗明义就明确地指出软件开发的重要原则就是:"Program to an interface, not an implementation." (针对接口而写编程,不要针对实现。)这就是说,我们开发软件的时候,先设计好接口,然后才依循接口的定义而开发实现代码。

大家都知道,要学好软件(或架构)设计,不是从业务或需求开始,而是从接口(Interface)设计出发,才是迅速成为有效(架构)设计师的鸟语花香之路。因为业务(或需求分析)的焦点在于流程(Business flow),而软件(架构)设计的天赋职责就在于结构(Structure),这结构是用来支撑互联网时代下的千变万化企业流程,而未来企业环境、需求与流程的<变化>是不可知的,所以才需要(架构)设计。

因此,知道结构与流程是分别来自不同而互补的两个面向(Dimension),软件(架构)设计师必须基于两个不同视角(View)来设计架构和规划流程。因此,软件(架构)设计不是从业务(或需求)流程开始,而是从接口设计出发的,而接口不是从业务(领域)或需求抽象出来的。许多初学软件设计者常常迷失于其中,没关系的,我(高老师)陪您越过这个原野,驰聘于广阔无垠的软件世界。

2.2  课程内容大纲

Section-1.接口与未来性设计

1A. 设计思维的转换

  • 常见的迷思(Myth):总是抱怨底层碎片化
  • 新潮思维:维护底层(碎片)的变动自由度

1B. 设计技术的演进

  • 古老技术:上层<直接调用>底层接口
  • 新潮技术:中层形式,限制上层,保护底层碎片

1C. 常用设计模式

  • 设计底层碎片
  • 以形式包装碎片
  • 形式创新组合:简单形式,创新组合,美的韵律

Section-2.掌握接口,才有话语权

2A. 什么是强势接口?

  • 强势vs.弱势接口
  • 演练:分辨出强势&弱势接口

2B. 如何转变为强龙

  • 飞上枝头变凤凰:让Server端(地头蛇)变成强龙
  • 扩大地盘:从Server端拓展到Client端
  • Client端Client端或第三方,如何变成强龙?

2C. 实际案例分享

  • Android范例说明 :第三方成为强龙
  • 多机整合范例:解析谁是强龙
  • 挟天子以令诸侯:成为Client端(或Server端)的小强龙

Section-3.强势平台的<通用性接口>设计方法

3A. <通用性接口>设计法则

  • 碎片化时代的创新组合思维
  • 通用性接口:以IBinder为例
  • 活用Object-oriented的多态(Polymorphism)机制

3B. 从<通用性>转换出<特殊性>接口

  • 接口特殊化:运用<组合思维>
  • 特殊化接口设计:以Android系统服务为例
  • 讨论:谁来设计Stub接口和Stub框架呢?

3C. 应用:API设计法则

  • 领域知识与买主知识
  • 设计思考演练
  • 业务(领域)知识分析--以五子棋为例
  • 企业框架的API设计--活用设计思考

Section-4. 接口设计的实践与演练

4A. 实践目标

  • 如何设计商城(Web Shop)的业务流程接口

4B. 实践平台

  • 平台:Android/HTML5 + Servlet/PHP + Spring MVC

4C. 实践产出(交付)

  • Servlet/PHP与Spring MVC之间的通用性接口
  • 针对WebShop用例(Use Case):查询某一笔交易(Transaction)
  • 基于上述接口,撰写一个App雏型(Prototype),实践上述用例

2.3 课程进行流程

時間長度:5

第一周:参加在线自学微课

  • 高老师已经准备好的视频微课

          

(微课-1)                           (微课-2)

  • 完成微课之后,自行思考相关议题(含老师指定的议题)
  • 参加在线的<与老师对谈>活动(2.5小时),讨论相关议题

第二周:参加在线自学微课

  • 高老师已经准备好的视频微课

        

(微课-3)                             (微课-4)

     

(微课-5)                            (微课-6)

  • 完成微课之后,自行思考相关议题(含老师指定的议题)
  • 参加在线的<与老师对谈>活动(2.5小时),讨论相关议题

第三周:参加在线自学微课

  • 高老师已经准备好的视频微课

     

(微课-7)                            (微课-8)

(微课-9)

  • 完成微课之后,针对WebShop用例进行分组讨论,提出初步解决方案
  • 参加在线的<与老师对谈>活动(2.5小时),讨论初步方案

第四周:分组实践与演练(一)

  • 分组讨论,基于初步方案来进行优化,提出高可用的实践方案
  • 参加在线的<与老师对谈>活动(2.5小时),讨论实践方案

第五周:分组实践与演练(二)

  • 分组讨论,基于实践方案来进行UI设计、领域建模、结合MVC架构,成为可编程的细部实践方案
  • 编写HTML5/JS代码来实现UI设计,准备执行于Android移动终端。
  • 编写Servlet或PHP代码来使用自己设计<通用性>接口,调用到Spring MVC框架,并存取DB Service数据;然后显示于Android终端上。
  • 如果没有实体的平台设备(如Spring服务器),可以暂用伪码(Pseudo code)来做出雏形。
  • 参加在线的<与老师对谈>活动(2.5小时),讨论雏型代码和执行结果

~ End ~

时间: 2024-10-21 01:18:41

<从编程到(架构)设计之路>的翻转式系列课程的相关文章

[js高手之路]node js系列课程-创建简易web服务器与文件读写

web服务器至少有以下几个特点: 1.24小时不停止的工作,也就是说这个进程要常驻在内存中 2.24小时在某一端口监听,如: http://localhost:8080, www服务器默认端口80 3.要能够处理基本的请求:如get, post 在node js中创建一台服务器非常的简单,因为node自带http模块,该模块可以帮助我们非常快速搭建一台web服务器,来处理一个简单的请求. 1 const http = require("http"); 2 var server = ht

高并发大访问量架构设计演进之路 归纳总结

第01:大型架构的演进之路第02(上):分布式缓存第02(下):分布式缓存第03:分布式消息队列第04:分布式数据存储第05:分布式服务框架第06:高性能系统架构第07:高可用系统架构第08:系统的安全架构第09:架构实战案例分析第10:如何成为技术专家 系统的垂直伸缩,水平伸缩系统的性能瓶颈:分部式缓存:分布式数据存储,分布式服务架构: 强烈的好奇心,工程技术,产生价值赚钱(科学研究不同)扎实的软件技术基础:操作系统,数据结构,设计模式,编程语言,出色的编程能力:优秀的代码深刻领悟主流技术产品

从编程到设计之路:Java 与 C/C++整合的JNI设计

高老师陪您成长... << 高焕堂演讲主题 >> 主题:从编程到设计之路:Java 与 C/C++整合的JNI设计 地点:杭州.浙江大學 (2014/6/5) 下载:高焕堂的演讲PPT << 內容說明 >> ☆ 无论是C++或Java,都是从C语言的struct数据结构和function代码结构为基础,而发展出来的.因此,Java与C/C++可以进行无缝对接的设计.如下图: ☆ 以上是两个观点(视角)的交叉,C语言是从函数观点切入,看到了函数的代码指挥计算机

Android架构师之路 网络层架构设计与实战

第1章 课前须知介绍如何去学习,课程适合的人群.怎么才能融会贯通 第2章 主流网络框架分析常用网络框架介绍,分析volley .Android-async-http.Afinal框架.xUtils.okhttp.retrofit.优有点缺点.教会选择一个框架的标准是什么? 第3章 http协议详解介绍http1.0.1.1 2.0版本和spdy协议.示例讲解请求头的应用场景.响应头的种类划分.缓存相关字段等. 第4章 okhttp3详解讲解使用 okhttp3发送同步请求异步请求 get/pos

为什么结构化编程、面向对象编程、软件工程、架构设计最后没有成为软件领域的银弹

为什么结构化编程.面向对象编程.软件工程.架构设计最后没有成为软件领域的银弹? 从计算机语言开始讲,一步一步的概述和讲解,最终会有一个结论,大家往后看,即可明白. 1.机器语言(1940年之前) 机器语言,直接使用二进制码0和1来表示机器可以识别的指令和数据. 比如0100011111000010101,请问你知道是什么意思吗?反正我是不知道. 当然了,不可否认的是机器语言是最底层与CPU直接交互. 机器语言之所以没有流行下来,原因三个方面: (1)太难读了; (2)太难写了; (3)太难改了(

饿了么的架构设计及演进之路

网站在刚开始的时候大概只是一个想法:一个产业的模型,快速地将它产生出来."快"是第一位的,不需要花太多精力在架构设计上.在网站进入扩张期才需要对架构投入更多的精力来承载网站在爆发时的流量. 饿了么成立已经8年,现在日订单量突破900万,我们也有了较为完善的网站架构.   一.网站基础架构 初期,我们使用了能够更容易拓展SOA的框架.我们用SOA的框架解决两件事情: 1. 分工协作 网站初期,程序员可能就1~5个,那时大家忙同一个事情就可以了.彼此之间的工作都互相了解,往往是通过&quo

OpenStack之路: OpenStack架构设计指南 - 一般用途云架构(摘录并翻译)

第二章. 一般用途General purpose 目录 用户需求 技术考虑因素 运维考虑因素 架构体系 规范性示例 一般用途云架构是开始建设云实施的常常被考虑使用的方案,这种价格原本就是被设计为平衡所有组件,而且在整个计算环境中不强调任何特殊因素.云架构的设计必须给予计算.网络,及存储组件相同的权重.一般用途云架构在私有云.公有云及混合云环境中都较常见,这也就使得这种价格可以用于很多不同的案例. 注: 一般用途云架构是均匀分布部署的,而且不适合用于特殊环境或者边缘使用案例. 一般用途云架构的常见

OpenStack之路: OpenStack架构设计指南 - 概述(摘录并翻译)

OpenStack是在云技术淘金过程中的领导者,作为一个组织,让形形色色的企业发现了可以以更大的灵活性和速度,向市场推出自助服务的云计算及基础架构即服务(IaaS)产品.然而,为了能够真正享受到这些好处,云必须通过适当的架构设计. 一个良好的云计算架构,应该是一个稳定的IT环境,可以提供方便访问所需的资源,基于使用的计算费用,按需求增加额外的容量,灾难恢复和安全的环境:一个良好架构的云计算平台不能奇迹般地自身建成的.这需要仔细考虑多种因素,包括技术和非技术的. 目前没有单一的架构是"非常合适&q

Java架构师,微服务架构设计,并发编程,java8新特性,P2P金融项目,高并发,分布式

微服务架构设计 微服务 软件架构是一个包含各种组织的系统组织,这些组件包括 Web服务器, 应用服务器, 数据库,存储, 通讯层), 它们彼此或和环境存在关系.系统架构的目标是解决利益相关者的关注点. Conway's law: Organizations which design systems[...] are constrained to produce designs which are copies of the communication structures of these or