前言:幅员愈大的国度、大数据应用愈发达的国度,加法(设计)的幅度就愈大。加法设计幅度愈大,系统的复杂性和差异化就愈显着,此时标准化和统一化的呼声就愈高。无论是标准化或统一化,都意味着加法设计的大量推进,导致系统复杂而难以驾驭;因而要求架构师提出有效的减法设计方案,从复杂中设计出简单,让人们能从简单中来掌控复杂。就架构师而言,基于有效减法的架构设计,才能开放人人去做加法设计。

ee                                                                        ee

欢迎访问 ==>高老师的博客网页

高焕堂:MISOO(大数据.大思考)联盟.台北中心和东京(日本)分社.总教练

EE                                                                        EE

有效减法设计,才能开放加法


本文:

幅员愈大的国度、大数据应用愈发达的国度,加法(设计)的幅度就愈大。加法设计幅度愈大,系统的复杂性和差异化就愈显着,此时标准化和统一化的呼声就愈高。无论是标准化或统一化,都意味着加法设计的大量推进,导致系统复杂而难以驾驭;因而要求架构师提出有效的减法设计方案,从复杂中设计出简单,让人们能从简单中来掌控复杂。就架构师而言,基于有效减法的架构设计,才能开放人人去做加法设计。兹说明如下:

1)秦朝时代唯有书同文、车同轨的有效减法设计,才能开放加法,整并六国成唯一个大国。

2)唐朝的诗叫做七言绝句,如“姑苏城外寒山寺,夜半钟声到客船”,一首诗四个句子,每一个句子七个字,它的韵律有两个“平平仄仄平平仄,仄仄平平仄仄平”,这是唐诗的主要造形(Form)。

3)秦朝的<书同文、车同轨>,加上唐朝的<诗同形>,有效的减法设计,创造了大一统(加法)的辉煌国度。

4)君不见,在前面各步骤里,诸如:从复杂中设计出简单、以需求检验设计等都是基于有效的减法设计,一方面给设备供货商一个开放的加法设计空间;另一方面则让用户享受从简单(来自减法设计)中叫出复杂的满足感。

5)此外,在前面各步骤里,诸如:EIT造形、通用性接口和软件框架(框住某些东西)等,则是减法设计的实践技术;基于这些有效的减法设计途径,才能大幅开放加法设计;因而落实了:从简单中掌握复杂。


演练:

前言:

于此,将联合运用前面所学到的思考技术,以框架及其所含的EIT造形来实践有效的减法设计。以EIT造形明确表述Socket软件界面,藉由两个<E&I>包容包容TCP/IP通信协议和硬件机制,实践开放的加法设计;让通信协议和硬件机制都可以弹性抽换,架构设计具有未来性。

由于EIT造形的主角就是接口<I>,架构师就拿<I>来做为起点(Simple Design),设计出通用性<E&I>;其一方面容纳客户未来抉择的改变,也就是包容未来<T>的多变化;另一方面,则包容未来TCP/IP通信协议的快速演变,或者换掉TCP/IP而改用其它通信协议。于是,架构师的目前决策(决定如何定义接口)具有高度未来性了。接着,规划测试机制,架构师继续两个Mock<T>,做为赝品(Mock)来配合<E&I>来对通信协议进行测试。

最后,迅速将接口(含<E&I>和<T>)落实为代码(请看下述高老师写的范例代码),就能进行实机测试(通信协议)了。(请看下述高老师写的范例代码)

在这些步骤里,诸如:EIT造形、通用性接口和软件框架(框住某些东西)等,则是减法设计的实践技术。基于这些有效的减法设计途径,才能大幅开放加法设计;一方面容纳客户未来抉择的改变,也就是包容未来<T>的多变化;另一方面,则包容未来TCP/IP通信协议的快速演变。因而落实了:从简单中掌握复杂。

Step-1. 基于第二步骤的第2种比喻:

“架构像一棵树的树干。由于树根必须不断成长,拥有随环境而变动的自由度和活力;才能有效吸收更多水分和养分。这项比喻让架构师关心底层模块(Module)的变动自由度。具有活力的树根和树干,才能有效之撑上层业务应用的蓬勃发展。”如下图:

Step-2.基于第一步骤的第2种抽象视角:

“第二种抽象视角:架构师基于<形与内涵分离>的视角,由于不同内涵之间的<变与不变分离>已经由第一种视角所抽象了。这个视角可从内涵中抽像出共同之形,也可以(无中生有地)创造一种造形(Form)来容纳内涵(包括变与不变部分)。由于我们常常拿船运业的集装箱(Container)来比喻<造形>;而拿形形色色的货品来比喻其(集装箱)内涵(Content)。所以上述的第二种视角,又称为<集装箱式>抽象视角。”

从小的造形(如函数、类别、EIT等),到较大的造形(如模式、框架等),都是都是软件人员常用的<集装箱>,集装箱的简单造形是有效的减法设计,其能容纳天下万物,实践了开放的加法设计。例如,由软件框架(Framework)来提供上层接口(API)和下层接口(PI)来实践有效的减法设计;其包容上层多样化的应用软件,也包容底层硬件和通信机制的善变,则支持开放的加法设计。如今,无论是Android、iOS或云平台,几乎都采取这种架构。如下图:

例如,下图里的”通信协议”就属于树根的部分,应该开放加法;亦即我们必须包容它的不断变化、更新与成长。

此时,就能使用框架(有效减法)来包容通信协议的弹性变化(开放加法)。

Step-3.依循第七步骤:清晰而明确表述接口。其有效的做法是:擅用框架里的EIT造形(Form)。架构师认知到两个接口的存在,如下图:

藉由EIT造形<I>来明确地<定义>上图里的接口,并藉由<E>和<T>来辅助其清晰表达接口的<涵意>。因此,使用两个EIT造形分别来表述一个接口。

藉由这两个EIT造形将三项善变的内涵分离开来,如下图:

其中,利用两个<E>的联合来包容树根(通信协议内涵)部分的加法设计,如下图:

然后,利用两个<T>分别包容树梢(智慧家庭和交通车联网内涵)部分的加法设计,如下图:

Step-4.依循第八步骤:尽快对接口进行检验和测试。上图只是架构师脑海里的设计而已,那么又如何确保它是可落地的呢?因此,需要尽快落实为代码,并立即进行检验和测试。此时针对实际的<通信协议>来测试,例如上图里采纳软件的Socket接口和 TCP/IP实体通信协议。如下图:

于是,就以EIT造形明确表述Socket软件界面,如下图:

其中,藉由两个<E&I>包容包容通信协议和硬件机制,让通信协议和硬件机制都可以弹性抽换,架构设计具有未来性。接着,就是规划测试机制,准备测试两个<I>是否能有效包容通信协议的技术变迁;进而对通信机制的能量进行可靠性测试。于是,基于EIT造形是<基类/子类>的结构,<E>是基类(Super class),<T>是子类(Subclass),架构师设计两个<E&I>,并设计两个Mock<T>。如下图:

所谓Mock代码,就意味着并没有真正联结到<智能家庭系统>和<交通车联网>;而只是做个赝品(Mock)来配合<E&I>来进行测试而已。[歡迎光臨高煥堂的博客首頁:http://www.cnblogs.com/myEIT/ ]。

Step-5.依循第九步骤:设计通用性接口,成为框架(Framework)核心要素。构师想象EIT造形就是<基类/子类>的结构,<E>是基类(Super class),<T>是子类(Subclass),而<I>则实现为基类里的抽象函数(Abstractfunction)。于是,设计出两个<I>接口,如下图里的红色框框部分:

就能直接写成代码,进行实机测试(通信协议)了。EIT造形的主角就是接口<I>,架构师就拿<I>来做为起点(Simple Design),设计出通用性<E>和<I>来容纳客户未来抉择的改变,也就是包容未来<T>的多变化。例如,包容未来TCP/IP通信协议的快速演变,或者换掉TCP/IP而改用其它通信协议。于是,架构师的目前决策(决定如何定义接口)具有高度未来性了。

Step-6. 最后,请看高焕堂老师所撰写的”Socket+EIT造形”范例代码,如下:

本范例代码摘自网页:

http://bbs.51cto.com/thread-1085282-1.html

高老师将之改为EIT造形架构。

请看代码=> 客户端的<EIT造形+ Socket代码>

请看代码=> 服务端的<EIT造形+ Socket代码>

~ End ~

演练:有效减法设计,才能开放加法相关推荐

  1. 软件设计原则 — 开放封闭原则

    一.开闭原则的定义 Software entities like classes,modules and functions should be open for extension but clos ...

  2. 依赖治理、灰度发布、故障演练,阿里电商故障演练系统的设计与实战经验

    2019独角兽企业重金招聘Python工程师标准>>> 2016 年,阿里巴巴研发了故障演练系统,把故障以场景化的方式沉淀到系统中,在线上主动回放故障,验证监控报警.限流降级.故障迁 ...

  3. ICANN:新类别顶级域名2013年才能开放申请

    12月24日全球互联网名称与数字地址分配机构(ICANN)网站发表了总裁和首席执行官Rod Beckstrom先生题为"2009年-域名界历史性的一年(2009 – A Historic Y ...

  4. python怎么在运行中查看执行状态,Python程序运行时查看对象状态怎样设计才能实现...

    不知大家有没有用过Rthymbox的python console. Rthymbox可以在运行的时候,让它的 交互式命令行 对程序进行控制. 比如说可以调用player的play函数,让它播放, 还可 ...

  5. HTML5期末大作业:学校网站设计——安徽开放大学(16页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 web前端期末大作业

    HTML5期末大作业:学校网站设计--安徽开放大学(16页) HTML+CSS+JavaScript 学生DW网页设计作业成品 web课程设计网页规划与设计 计算机毕设网页设计源码 常见网页设计作业题 ...

  6. stm32 整数加法循环时间_【教学设计】小数加法教学设计

    小数加法教学设计 刘秀锦 舞钢市特殊教育学校 教材分析 本节课是第四单元"小数加减法"的第一课时,小数加减法是以整数加减法为基础进行教学的,本节课走踏实了,后边的知识才能顺利的进行 ...

  7. JUC(3)List、Set、Map集合线程安全Callable创建线程三大工具类:CountDownLatch减法计数器、CyclicBarrier加法计数器、Semaphore计数信号量

    1. List集合线程安全 CopyOnWriteArrayList是线程安全的集合: ArrayList是线程不安全的集合: Vector是线程安全的集合(不推荐使用) 1.1 解决ArrarLis ...

  8. 怎么用计算机计算减法,计算机只会加法,那么它如何用加法来计算减法呢?

    计算机中的加减乘除都是经过加法实现的,那么你确定很好奇,加法和减法是彻底不一样的操做啊,如何用加法来进行减法运算呢?下面我就经过几个例子,来解释一下具体的操做过程.web 二进制加法 开始以前,咱们先 ...

  9. c语言加法减法乘法,一元多项式的加法减法乘法c语言描述线性表应用

    一元多项式的加法减法乘法 --(c语言描述)线性表应用 来源:永远的北邮人 vc6.0下调试通过 #include #include #include #include #include #inclu ...

最新文章

  1. android首页图片轮播效果,Android_Android自动播放Banner图片轮播效果,先看一下效果图支持本地图 - phpStudy...
  2. linux shell curl 超时与重试
  3. [Java基础]内部类基础
  4. 在Sqoop中管理密码的关键提示
  5. 如何安装Vscode软件及设置成中文界面?
  6. 无法安装冰点还原_系统还原软件介绍与功能
  7. 这些年,阿里巴巴技术大牛们曾经写过哪些书籍!
  8. http://fonts.googleapis.com/css?打开很慢解决方案
  9. 电脑卡住了怎么办,鼠标无法操作,那就试试快捷键吧
  10. 计算机开机壁纸能不能更换,如何修改电脑开机的背景图片
  11. cannot dynamically load executable的尴尬经历
  12. bootstrap的tooltip
  13. 用Vue3写个气泡对话框组件
  14. 编程之美 一摞烙饼的排序问题
  15. squid代理服务器(正向代理与反向代理)
  16. BASE理论是什么?
  17. 好offer是怎么来的
  18. ADI推出高速模数转换器简化FPGA应用设计
  19. Z-Wave Battery Support Basics ZWAVE如何实时控制电池供电设备
  20. [深度学习][数据集][目标检测]工程车辆数据集16881张15种类别车辆介绍

热门文章

  1. C++基础-string截取、替换、查找子串函数
  2. 在Pycharm编辑器中调用getpass模块
  3. JMF介绍之媒体框架二
  4. 数据显示Windows Phone市场份额依旧十分稳定
  5. 恩布开源安卓手机IM,EntboostIM发布1.5.2版本
  6. iOS VideoToolbox硬编H.265(HEVC)H.264(AVC):1 概述
  7. C#+WebSocket+WebRTC多人语音视频系统
  8. Android中文API(115)——AudioFormat
  9. 计算机组成原理A原是什么,计算机组成原理A
  10. tensorflow常见问题