软件隐喻

1.隐喻或者称为“类比”,“建模”通过把你不太理解的东西和一些你较为理解的,且十分类似的做比较,可以对那些不太理解的东西产生更深刻的理解,这种隐喻的方法叫做“建模”

2.隐喻是一种启发式的方法,告诉我们如何去发现这些引导信息,哪里去寻找,是激发思维灵感。算法是比较严谨的,直接解决问题引导

3.书中举例四种常见的软件隐喻

1)书写代码:对写作而言最重要的是原创性,但是对于软件构建来说,努力创造真正的原创成果的开发效率,往往低于专注于重用(reuse)以往项目的一些设计思想,代码以及测试用例的开发效率。这些说明了写作代码还不是一个恰当的的隐喻,容易产生延伸和误导,使用隐喻不能说是错误,而是贴切不贴切之分吧

2)培植系统:将软件创造想象成类似播种和耕种的情形,每次设计一点,写出一段代码,做一点测试,小步前进。这种增量式的技术很有价值,很不错。可这个隐喻也同样存在弱点,它暗示人们将无法对开发软件的过程和方式进行任何的直接控制。在春天播下代码的种子,秋天收获丰盛的代码。很难将耕作这个隐喻恰当地引申到软件开发中

3)系统生成:以牡蛎孕育珍珠的历程来形容软件开发。先做出软件系统的一个尽可能简单,能运行的版本,构成一个强壮的骨架,支撑起为来将要开发的真实系统。把真实的数据替换到进去,而形成了真实完整的系统,这也是增量式开发,敏捷编程的基础,作为一个隐喻而言,增量式开发的优势在于未做过度的承诺。

4)建造软件:建造软件和盖房子相似点很多,从建筑的角度去理解软件开发.在开发软件的时候如果高级语言所提供的功能可以直接使用而不会自己去编写操作系统层次代码,比如软件中用户界面组件和数据库访问组件,建造房子装修的家电也不会自己去制造道理一样,按照房屋建筑所作的这一隐喻,可以向许多其他方向引申这也是隐喻这一方法如此强有力的原因

画出详细的蓝图,雇佣一个承包人--->软件的详细设计、

开工打地基,搭建房子等--->软件的构建、

装修房子美化--->软件优化、

监察框架,地基--->软件评审和详查

时间: 2024-11-26 00:54:41

软件隐喻的相关文章

代码大全读书笔记2---用隐喻来充分理解软件开发

借助隐喻可以更加深刻地理解软件开发的过程.通过把不太理解的东西和一些你较为理解.且十分类似的东西做比较,这样可以对不太理解的东西产生更深刻的理解,这种使用隐喻的方式叫做建模. 隐喻的威力在于其生动性,能够让你把握整个概念,暗示各种属性.关系以及需要查证的部分.但是过度引申时,模型也会误导人们. 软件隐喻的作用更像是启示,而不是算法,告诉你如何去寻找答案.算法是一套定义明确的指令使你完成某个特定的任务,算法是可预测的.确定的.不易变化的. 算法与启发式方法之间的区别就在于其距离最终解决办法的间接程

多年收集的一些稀有软件2

QQ:365543212 Fuel Economy Calculator v1.1 B.001(汽车工程软件,用于预测车辆燃油消耗率,是目前此类软件中最为全面的,能接收从最新的发动机分析程序Engine Analyzer自动发送来的强大的游标和发动机规格) Psat v5.1 1CD ProScan.v5.1 1CD PowerFlow v3.3p3a for Linux 1CD(Exa公司的汽车外气流计算软件) Rotating Inertia Calculator v1.1 A.000(一款

苹果iOS人机界面指南

iOS 8人机界面指南(二):设计策略 iOS 8人机界面指南(一):UI设计基础 打造出色 UI 的 7 个法则(上) 打造出色 UI 的 7 个法则(下) 用户界面原则 好的人机界面规范遵从于用户思考和行动的方式,而不屈从于设备的性能.一个缺乏吸引力,复杂的,或违悖逻辑的用户界面,却会让原本优秀的应用变得索然无味.反过来, 一个漂亮的,直觉感知的,引人入胜的界面能强化应用程序的功能,并且能在用户心中激发出正面的情绪. 整体之美 整体之美,并不是简单地指应用界面有多漂亮,而是指应用的外观和功能

Code Complete 笔记—— 第二章 用隐喻来更充分理解软件开发

在这章里面,提到的隐喻,类同于比喻(建模)的方法的去理解软件开发. 隐喻的优点在于其可预期的效果能被所有人所理解.不必要的沟通和误解也因此大为减低,学习与教授更为快速,实际上,隐喻是对概念进行内在化和抽象的一种途径,它让人们更高的层面上思考问题,从而避免低层次的错误. -- Femando J.Corbato 如何使用软件终端饿隐喻? 用来提高对编程问题和编程过程的洞察力 用来帮助思考编程过程中的活动,想象出更好地做事情的方法 要点: 隐喻是启示而不是算法,因此它们往往有一点随意(sloppy)

用隐喻来更充分地理解软件开发

隐喻是启示而不是算法.因此它们往往有一点随意(sloppy). 隐喻把软件开发过程与其他你熟悉的活动联系在一起,帮助你更好地理解. 有些隐喻比其他一些隐喻更贴切. 通过把软件的构建过程比作是房屋的建设过程,我们可以发现,仔细的准备是必要的,而大型项目和小型项目之间也是有差异的. 通过把软件开发中的实践比作是智慧工具箱中的工具,我们又发现,每位程序员都有许多工具,但并不存在任何一个能适用于所有工作的工具,因地制宜地选择正确工具是成为能有效编程的程序员的关键. 不同的隐喻彼此并不排斥,应当使用对你最

《代码大全》阅读笔记-2-用隐喻来更充分地理解软件开发

隐喻的价值绝不应该被低估.隐喻的有点在于其预期的效果:能被所有的人理解.不必要的沟通和误解也因此大为降低,学习与教授更为快速.实际上,隐喻是对概念进行内在化和抽象的一种途径,它让人在更高的层面上思考问题,从而避免低层次的错误. 隐喻是启示而不是算法.因此他们往往有一点随意 隐喻把软件开发过程与其他你熟悉的活动联系在一起,帮助你更好地理解 有些隐喻比其他一些隐喻更贴切 通过把软件的构建过程比作是房屋的建设过程,我们可以发现,仔细的准备是必要的,而大型项目和小型项目之间也是有差异的 通过把软件开发中

02用隐喻来充分地理解软件开发

1.隐喻的价值 ? 隐喻的价值绝不应低估.隐喻的优点在于其可预期的效果:能被所有的人理解.不必要的沟通和误解也因此大为减低,学习与教授更为快速.实际上,隐喻是对概念进行内在化(intemalizing)和抽象(abstracting)的一种途径,它让人们在更高的层次上思考问题,从而避免地层次的错误. 2. 算法 ? 算法是一套定义明确的指令,使你能完成某个特定的任务.算法是可预测性的(predictable).确定性的(deterministic).不易变化的(no subject to cha

敏捷软件开发简述

前言:由于我读了邹欣老师的<构建之法:现代软件工程(第二版)>,因此对敏捷软件开发有了比较大的兴趣.于是我在网上找了一些论文,比如Requirements Engineering and Agile Software Development.A decade of agile methodologies: Towards explaining agile software development.在读了这些论文之后,对敏捷软件开发有了大致的了解.这篇博文主要是简单介绍敏捷软件开发,重点集中在主

全程软件测试之测试需求分析与计划

全程软件测试之测试需求分析与计划 在项目启动之后,就要着手软件项目的计划,包括软件测试计划.软件测试计划是整个开发计划的组成部分,同时,它又依赖于软件组织过程.项目的总体计划.质量文化和方针.在测试计划活动中,首先要确认测试目标.范围和需求,其中"测试需求分析"是关键任务,然后在测试需求基础上制定测试策略,并对测试任务.时间.资源.成本和风险等进行估算或评估. 无论何时进行估算,我们都是在预测未来,并会接受某种程度的不确定性.软件项目计划的目标是提供一个框架,不断收集信息,对不确定性进