By 高焕堂 2011/09/04

[ IT史上最完整、最经典的软件框架开发技术宝典 (上百篇经典文章&eBooks) ]

                                                                                                            

[Go Back]  

 

1. 最简方案(Simplest Solution)

     「敏捷宣言」包含4项原则:

             1. 人员交流重于过程和工具

             2. 客户协作重于合同谈判

             3. 可用软件重于完备文件

             4. 包容改变重于遵循计划

 

      从这4项原则而衍生出敏捷开发过程的概念:

             最简方案(Simplest solution)

            迭代过程(Iterative process)

            重构(Re-factoring)

            持续整合(Continuous integration)

  

 

  图-1、敏捷迭代过程(一)

 

 

  图-2、敏捷迭代过程(二)

      依循敏捷过程,以测试驱动(TDD, Test-Driven Development)引导出持续地反馈(Feedback)与迭代(Iteration)的软件开发过程。基于愿景而设计足够好(Good Enough)的简单方案,做为基础,尽快将设计落实成为代码;然后以需求来进行检测,将测试结果反馈回来,修正和重构设计和代码,持续迭代循环下去。 

 

2. 架构师的角色

聆听Fred George怎么说 

“As an architect, I will implement the most difficult parts of a system.” 

   (身为架构师,我先实现系统里最艰难的部分。)

“I call it "pioneering", the process where I see if an idea in my head actually is a good idea.” (我称它为”先验过程”,这过程检视我的设计理念是否足够好。)

“I will always refine the idea in that first implementation. Then I feel comfortable letting the rest of the programming team follow that pattern. That is the architecture.”

   (在这先验过程的实践中,我会不断修正设计里念,直到有了感觉足够好的设计模式。然后才让开发团队跟进;这项设计模式就是系统架构了。)  

从Fred George得到的启示

Simple solution是足够好的架构,它也是来自迭代过程(“Always refine …”)。

架构师在设计出simple solution时,已经进行了无数次心智内的敏捷迭代了

◎ 架构设计也需要敏捷迭代。架构设计本身若不敏捷,又如何支撑敏捷开发呢?

 

  图-3、架构设计的敏捷迭代过程

反思传统视角:以不变应万变

传统架构设计视角偏于抽象思维,致力于抽象出稳定、可靠、不变的共同性架构;做为应用发展的基础。

然而,这项稳定架构无法迅速得到,不是“足够好”而已,这违背敏捷的Simple Solution的要求,不易迅速推动敏捷迭代。

取得新视角:敏捷求新求变

新视角:师法自然;基于简单造形,组合出复杂。

就像一个DNA螺旋形的结构,可以由相同造形(Form)的小单位组成;再者,每一个小单位所插入的方式,与别的小单位一模一样。只要你一旦明白一个DNA结构的组成形式,便可掌握整体了。 

 

图-4、DNA螺旋形的结构

基于造形,进行创新组合

  • 造形特性:形式简单、内涵复杂、重复组合
  • 造形范例:物理原子(Atom)、唐诗七言绝句之形
  • 造形与内涵:例如,物理原子(Atom)

 图-5、造形与内涵

 

  图-6、就像氢、氧原子(造形)组合成为水分子

 [關於EIT代碼造形的詳細說明]

 

4. 软件架构设计的基本造形:以EIT代码造形为例

     不仅仅自然界有造形,像唐诗七言绝句之形也是。此外,软件产业也富有许多造形;就以高老师提倡的EIT代码造形为例。如下图:

 

       图-7、软件的EIT代码造形

 软件造形特性,与自然界造形一样,具备三项特性:

  • 形式简单
  • 内涵复杂
  • 重复组合。

EIT造形能容纳各种内涵。例如,利用EIT造形来容纳善变的“通信协议”,如下图:

 

  图-8、将特殊内含装入EIT造形里

 

5. 抽换EIT造形里的内涵:以SurfaceView框架为例

      基于EIT造形,就很容易联想的如何使用SurfaceView框架,来与Camera进行组合,做出具有未来性的设计。

  

   图-9、EIT造形容纳了”拍照片”的内涵

       一旦SurfaceView与Camera两者变成为疏结合(Loosely Coupled)关系了,当业主在稍后出现时,就能做弹性的组合了。例如,所以,在EIT造形的概念下,我们很容易联想到,可委托开发者把护士站的Android TV/STB联接到医院加护病房的仪器设备上。如下图所示: 


 图10、随时抽换其内涵,造形仍然不变

    由于EIT造形的<简单性>,让人们能拥有能力来面对复杂多变的需求。从图4和图5可以看出,目前Android的SurfaceView框架幕后就是一个EIT造形。基于高焕堂老师提出的简单”EIT软件造形”,你就能容易理解Android多层框架体系里的复杂关系。有了架构设计造形的<简单性>,你就提升了掌握软件系统<复杂性>的能力;同时,基于对EIT用途的熟悉,你也能轻易联想到SurfaceView的更多用途了。     

[關於敏捷開發的相關文章]