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

1.隐喻的价值

? 隐喻的价值绝不应低估。隐喻的优点在于其可预期的效果:能被所有的人理解。不必要的沟通和误解也因此大为减低,学习与教授更为快速。实际上,隐喻是对概念进行内在化(intemalizing)和抽象(abstracting)的一种途径,它让人们在更高的层次上思考问题,从而避免地层次的错误。

2. 算法

? 算法是一套定义明确的指令,使你能完成某个特定的任务。算法是可预测性的(predictable)、确定性的(deterministic)、不易变化的(no subject to chance)。

3. 编程最大的挑战

? 对于编程来说,最大的挑战还是将问题概念化(conceptualizing),编程中的很多错误都是概念性错误。正因为每一个问题在概念上都是独特的,所有要找到一套能解决所有问题的一通百通的知道规则是很难的,甚至是不太可能的。如此看来,能一般性地知道大致如何解决问题,至少也和知道如何解决问题一样有价值了。

4.软件的系统生长观点

以增量的方式进行设计、编译和测试,都是目前已知的最强有力的软件开发概念。

在进行增量式开发时,我们先做出软件系统的一个尽可能简单、但能运行的版本。它不必接受真实的输入,也无需对数据进行真正的处理,更不用产生真实的输出——它仅仅需要构成一个足够强壮的骨架,支撑起未来将要开发的真实系统。对于你标志出的没一项基本功能,可能仅需要调用虚假的类。

? 在骨架形成之后,你要一点点地在其上附上肌肉和皮肤:把每个虚假的类替换为真正的类;不再假装接受输入,而是把接受真实输入的代码替换进去;不再假装产生输出,而是把产生真实输出的代码替换进去。你一次增加一个小部分代码,知道得到一个完全可以工作的系统。

?

原文地址:https://www.cnblogs.com/rock-cc/p/9839331.html

时间: 2024-10-10 23:25:12

02用隐喻来充分地理解软件开发的相关文章

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

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

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

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

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

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

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

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

定论——软件开发的方法论探讨

http://www.jianshu.com/p/9593bd7b28d9 一.消除隐喻 1.隐喻 软件开发这件事情,出现得很晚.距今只有几十年的时间,关于它的定义,我们可以简单地说:"就是把软件做出来." 这基本上等于什么都没有说.而软件开发究竟是怎么回事,大家也没有搞明白,于是隐喻就派上用场了.当你要向一个完全没有概念的朋友,解释什么是软件开发的时候,你无法向解释建筑工程那样把他带到现场去看--案件开发的现场,你的朋友会以为软件开发就是一群人坐在电脑前面打键盘--你只能打比方:它就

关于软件开发,你老板不知道的7件事

英文原文:7 Things Your Boss Doesn’t Understand About Software Development 你的老板是否不理解你的工作?本文将有助于你更好地理解为什么你的老板不理解软件开发. 你的老板可能真的很棒.我在我自己的编程生涯中就遇到过几个真心棒的老板,但即使是最棒的老板似乎也常常总是不能理解软件开发. 事实上,我想说的是当涉及到不止编程的几个元素时,大多数软件开发经理都有点目光短浅. 所以,我编译了一个简短的清单,用来说明关于编程一些最让你老板.开发经理

对软件开发中uml建模的理解和图形整理(一)

由于uml(统一建模语言)在开发中经常会用到,特别是在软件开发中的OOAD阶段,因此要理解和使用uml显得尤为重要.在uml开始之前,咱先回顾一个OOAD.OOP的主要特征. OOAD:根据面向对象的方法学来对软件系统进行分析和设计的过程.它包括OOA 分析阶段和OOD设计阶段.其中分析阶段主要解决"What to do?"的问题,而设计阶段主要解决"How to do?"的问题.具体来说就是:在OOA分析阶段咱要做的主要工作就是建立对业务问题域的视图(建立模型).

软件开发的核心基本能力是理解和表达事物的能力

? 软件开发的核心基本能力是理解和表达事物的能力. 为什么这么说呢? 从与主管.客户.产品经理和项目经理沟通的角度来说,你需要能够理解他们说话的语境和背景,从而推敲其真正的意图:需要真正理解他人的需要和意图:表达只有在真正理解的基础上进行才是有效和有份量的:这里的理解指“自然语言层面的”. 从熟悉业务和产品的角度来说,你需要能够理解现实中的事物.事务以及相互的关联,并简明扼要地绘制出来:这里的理解指“分析语言层面的”. 从开发程序的角度而言,需要对所要处理的事物的性质和规则有深入的了解,能够理解

我所理解的软件开发模式

在写这篇博客之前,提到软件开发我所能讲出来的只有个人开发团队开发之类的,于是我去百度,得知软件开发模式有:边做边改模型,瀑布模型,迭代模型,快速原型模型,增量模型,螺旋模型,敏捷软件开发,演化模型,喷泉模型,智能模型,混合模型等. 好吧,你赢了. 在读了邹欣老师在知乎发表的Build To Win的文章之后,我对软件开发的模式有了一定新的认知: 软件开发的目地决定了软件开发的模式. 每个人开发软件都是有目地的,我作为学生,写一些小的程序是为了练习,是一个学习的过程,就是邹欣老师在文章中提到的Bu