1.隐喻或者称为“类比”,“建模”通过把你不太理解的东西和一些你较为理解的,且十分类似的做比较,可以对那些不太理解的东西产生更深刻的理解,这种隐喻的方法叫做“建模”
2.隐喻是一种启发式的方法,告诉我们如何去发现这些引导信息,哪里去寻找,是激发思维灵感。算法是比较严谨的,直接解决问题引导
3.书中举例四种常见的软件隐喻
1)书写代码:对写作而言最重要的是原创性,但是对于软件构建来说,努力创造真正的原创成果的开发效率,往往低于专注于重用(reuse)以往项目的一些设计思想,代码以及测试用例的开发效率。这些说明了写作代码还不是一个恰当的的隐喻,容易产生延伸和误导,使用隐喻不能说是错误,而是贴切不贴切之分吧
2)培植系统:将软件创造想象成类似播种和耕种的情形,每次设计一点,写出一段代码,做一点测试,小步前进。这种增量式的技术很有价值,很不错。可这个隐喻也同样存在弱点,它暗示人们将无法对开发软件的过程和方式进行任何的直接控制。在春天播下代码的种子,秋天收获丰盛的代码。很难将耕作这个隐喻恰当地引申到软件开发中
3)系统生成:以牡蛎孕育珍珠的历程来形容软件开发。先做出软件系统的一个尽可能简单,能运行的版本,构成一个强壮的骨架,支撑起为来将要开发的真实系统。把真实的数据替换到进去,而形成了真实完整的系统,这也是增量式开发,敏捷编程的基础,作为一个隐喻而言,增量式开发的优势在于未做过度的承诺。
4)建造软件:建造软件和盖房子相似点很多,从建筑的角度去理解软件开发.在开发软件的时候如果高级语言所提供的功能可以直接使用而不会自己去编写操作系统层次代码,比如软件中用户界面组件和数据库访问组件,建造房子装修的家电也不会自己去制造道理一样,按照房屋建筑所作的这一隐喻,可以向许多其他方向引申这也是隐喻这一方法如此强有力的原因
画出详细的蓝图,雇佣一个承包人--->软件的详细设计、
开工打地基,搭建房子等--->软件的构建、
装修房子美化--->软件优化、
监察框架,地基--->软件评审和详查