第二章 用隐喻更充分地理解软件开发

Key Points:

  • 什么是隐喻
  • 隐喻有什么作用
  • 如何使用隐喻
  • 关于软件建构的一些隐喻

 

什么是隐喻?

隐喻就是比喻、类比的意思,用更形象的、我们理解得更深的事物去描述另外的一些现象和事物。比如,病毒就是一个隐喻,用于描述一类具有传播性、寄生性、破坏性的软件。

隐喻是对概念进行内化和抽象。

所谓内化,是指我们接受外部的观点、能力、经验等,经过“消化”(这就是一个隐喻),变成我们大脑中结构稳定结构的一个过程。如果说大脑就像一个大泥球,内化就是把更多的泥巴涂上来,并且揉进去。更详细的解释。隐喻能使用我们更好的用现有的知识去理解新的知识,减少内化的阻力。

所谓抽象,接近于“建模”,可以让我们站到更高的层面去理解问题,而避免一些低层的错误。比如将气体的分子运行隐喻为“撞球”。

 

隐喻有什么作用?

隐喻有助于我们理解问题、在整体概念上考虑问题、更易于沟通。

 

如何使用隐喻?

隐喻不是算法(解决特定问题的直接方法),而是启示(无法直接解决问题,它告诉你的是如何去探索答案)。

如果答案是你一个朋友的家,那么算法的意思是告诉你,“上高速路,前行101公里,右侧车道出收费站,前进1000米,左转即到”

而隐喻的意思是告诉你,”你朋友的家在安乐镇太平乡和谐村,你先开车到这个小镇,再打听一下,如果没人认识,你再打给12580或打个电话叫朋友出来接你”

隐喻不应该过度引申,一个悲剧的例子就是将光与声过度类比,结果花费大量精力去寻找根本不存在的光传播介质“以太”

隐喻可以多个,根据应用场景组合着用。

 

关于软件构建有哪些觉的隐喻?

  • 写作。对于小项目的来说比较合适,而对于中大项目来说,是一个多人参与的复杂系统性工程,一个很私人的行为很难贴切。
  • 培植系统。除了”增量“以外,难有相似点。有一段好玩的吐槽--”你在春天手代码的种子,然后按农历蒸气向大地佬儿许几个愿,你将会在秋天收获丰盛的代码。“
  • 牡蛎养殖观点。虽然作者还蛮喜欢,但个人认为是一个奇怪的比喻,又是冲积层,又是牡蛎。一个是知识离我(可能离大众也是)比较远;二是,所有有关“增量”、“演化”、“迭代”、“自适应”的类比,并不很贴切。因为它们既没有明显的周期划分,更没有体现不同周期的进化,“自适应”的类比也是很牵强。
  • 建设。这是一个比较合适的类比。既可以体现构建过程的阶段(需求定义、需求分析、设计、建设、装修等),也体现构建的迭代性跟演化性,也可以体现不同项目规模适用于不同的方式,还可以体现于对于库类的使用,居然还可以体现对于变更的成本和良好的设计对于变更的作用性,等等。就是具有很高的相似性,软件界经常会从建筑学借鉴名词和思想。
posted @ 2013-05-30 00:34  路边飞  阅读(216)  评论(0编辑  收藏  举报