这是以前写的一篇文章,当时就没有写完,一直保留在我自己的机器上,现在打算贴出来见人,也好激励我把它写完。
一、消除隐喻
1、隐喻
软件开发这件事情,出现得很晚。距今只有几十年的时间,关于它的定义,我们可以简单地说:“就是把软件做出来。” 这基本上等于什么都没有说。而软件开发究竟是怎么回事,大家也没有搞明白,于是隐喻就派上用场了。当你要向一个完全没有概念的朋友,解释什么是软件开发的时候,你无法向解释建筑工程那样把他带到现场去看——案件开发的现场,你的朋友会以为软件开发就是一群人坐在电脑前面打键盘——你只能打比方:它就像是造一幢楼,有基础,有结构,有可以使用的房间,在这之前必须要设计,最后一样要通过验收,最终用户就能够住进去——哦,不,是可以使用软件的各种功能。
这样,你用上了一个隐喻:软件开发就像建筑工程,或许极可以称之为软件工程。还有其它一些隐喻:比如手工作坊与软件工艺。我们不会说建筑工程就像什么什么,它们都有自己鲜明的特点,不需要通过像什么什么来解释。但是软件开发,还是太年轻,也缺乏鲜明的特征,只能借助隐喻,我们才能向人们解释它。在这条路上,很多人都已经走得太远,隐喻不但被用来向外行解释什么是软件开发,居然被用来说服自己人,软件开发就应该像那个比喻的对象一样,具有类似的规范、过程、特征以及方法论。但是,比喻只能是比喻。软件开发的方法论,只应该从软件开发的本质推导出来,而不是从一些隐喻里抄袭过来。
2、另一个隐喻
佛教有一种说法:“佛法不过是一条渡船,过河之后,你就不再需要它了。”寻求软件开发的本质,也许还是需要隐喻的帮助,只是这些船能不能把你带到彼岸,要仔细辨别。
设想这样一个场景:在公安局的一个办公室里,你的对面坐着一个目击证人,而你是一个犯罪肖像画家。这个证人在讲述他还记得的罪犯特征,你一边提问,一边在纸上沙沙的画着。一开始的提问与回答总是很概要性的。“圆脸”“不,很瘦的长脸”;“戴眼镜?”“是的”。在纸上出现了大致的轮廓之后,对话变得比较琐碎,“眼睛再小一点?”“鼻子比这个大一些。”渐渐的,证人的话越来越少,而且不断地端详着纸上的那个人,而你还在做一些细小的修正。突然,证人激动地大叫起来:“就是他!就是这个人……”于是,你的任务完成了!
这个过程像不像软件开发呢?有人也许会说,嗯,软件开发就是这样的。不!其实软件开发,并不是这样的,它应该是这样的……
你的朋友,晚上到你家来了。“我昨天晚上做了一个梦,梦见了我这辈子见过的最美的女孩,你帮我把她画出来吧。”“她的脸是……”在一段又一段如梦如幻的描述之后,你开始画起来,过程与前面有点类似,但是,似乎你的朋友没有停下来的迹象,他不断的要求你改进,希望这个她能够更加完美。终于,他放弃了:“就这样吧,虽然不是她,但是已经很像了。”你长吁了一口气,但是,你的朋友疯了,他恳求你把这个女孩变成一个活人,能跑能跳,能够跟他交流,而且还能够爱上他。没想到,其实你不是人,而是上帝,而且你大发慈悲,竟然真的满足了他的要求。终于,他满意地回去了。但是,几天之后,他又来了,他居然因为还不够满足,又来了!“上帝,”他恳求道,“你能不能够帮我把她改一下,当我……”随后的日子里,他不断地找到你,要求你再完善完善他的女人。直到有一天,你发了一道闪电,劈死了这个贪得无厌的家伙。
不不,最后这一幕没有出现,因为根据软件开发及维护合同,你不能劈死你的客户!(我敢打赌,是个程序员,就想过这么干。)如果这个合同签得不够好,他真的有可能向你提任何要求。
3、消除隐喻
这个隐喻怎么样?这是对软件开发过程的一个好的描述吗?不,它还不够好,而且我们不可能通过修正完善这个隐喻,来得到一个对软件开发的准确的描述。事实上,所有的隐喻都不够好,都会扭曲软件开发过程的真相,都会使我们对软件开发的过程产生误解。
为什么会这样呢?为什么一个挺像软件开发的隐喻会最终误导我们呢?原因在于一个隐喻是一个完整的场景,这个场景中有很多相互交织的“概念要素”。当这些要素有很多在软件开发中出现时,我们就会认为这个隐喻很贴切,而当一个隐喻越是贴切时,这个隐喻中的其他一些在软件开发中不存在的要素,或者与软件开发相矛盾的要素,就会打扰我们的分析,干扰我们的判断。使得我们不再思考软件开发本身,而是将思考建立在某个隐喻的场景中。这样思考得到的结果,肯定存在着误导的可能。再由于不同的隐喻互不相容——你无法想象一群工匠去建设现代化的高楼大厦,他们最多只能造些平房——因此,建立在各种隐喻基础上的软件开发,至今没有找到适合自己的方法论,倒是不同的隐喻之间互相打得火热。
(未完待续)
分享到:
相关推荐
物流学习探讨管理基本定论.doc
突然发现,很多公司一夜之间变戏法似的迅速的推出了自己基于云的业务系统:比如存储云,或者基于云环境的数据仓库等。...因为云的定义目前可谓是众说纷纭,未有定论——从而任你如何标榜大概都无可厚非。
近年来,研究最多的领域是关于该反应催化剂的开发,其中镍基催化剂的研究最广泛。为了全面了解甲烷二氧化碳重整反应及镍基催化剂的应用,介绍了甲烷二氧化碳重整反应的热力学研究及机理;分析了镍基催化剂的积碳原因...
煤表面官能团对CH4以及CO2吸附性能的影响已得到印证,但不同官能团类型对2种气体吸附行为的具体促进与阻碍作用以及影响因素尚未有定论。利用密度泛函理论,通过计算不同官能团化结构对CH4以及CO2的吸附能数据,揭示...
———————————————————————————————— 作者: ———————————————————————————————— 日期: 大数据研究综述全文共11页,当前为第2页。 大数据研究综述...
煤层是典型的黏弹各向异性介质,将黏弹性和...Hz内是否随频率变化尚无定论,假设煤层Qs随频率线性减小,各阶槽波品质因子曲线低频部分差异很小,高频部分差异变大,当Qs减小到10时,槽波衰减系数随频率增长很快;对于三
YKL-40被称为几丁质酶-3-like-1,属于哺乳动物蛋白家族,其氨基酸序列与18-糖基水解酶细菌几丁质酶组相似。 最近的研究发现,YKL-40异常在各种器官的癌症中表达升高,因此它可用作乳腺癌患者的近期预后生物标志物。...
论文研究- 58家大中型水泥企业投入产出要素的效益分析.pdf, 大中型...过去对此只有一个模糊的定论,总的认为大中型水泥企业的管理技术落后,生产效率低,但究竟低到什么程度就缺少一个量的概念。本文针对58家大中型水泥
在国内外的理论和实证水平上,关于政府债务与经济增长之间的相关性的研究仍然没有定论。 结合中国的实际情况,本文以我国1995年至2014年的31个省和地方政府债务和经济增长数据为18个(2005、2013年,拒绝)为样本。 ...
机构投资者能否稳定市场和改善市场效率尚无定论.通过检验不同类型机构投资者的交易行为对波动率和信息效率的影响,基于非平衡面板数据两阶段最小二乘回归模型提供了新的...
它们可能与使用老年人护理服务的经验有关,这在以前的文献中仍然没有定论。 这项研究旨在探讨以前在正式和非正式长期护理服务中的经验与老年人及其非正式护理人员对生活安排的看法之间的关系。 研究设计和方法:本...
针对无线Mesh网络混合策略的接口角色决定问题至今尚未定论,定义了接口角色决定问题,并证明了该问题是NP难题。为了在合理的时间内解决接口角色决定问题,提出了一种近似1/2算法。该算法在维持原拓扑结构的情况下,...
人工智能介绍 人工智能介绍全文共11页,当前为第1页。 人工智能之父 阿伦·图灵(AlanTuring) 阿伦·图灵(1912—1954),英国数学家、逻辑学家,被称为计算机科学之父、人工智能之父。 《机器会思考吗?》(Can ...
GML指数、ML指数、以及超效率SBM测算的matlab代码,可以计算VRS以及CRS下非期望...最后一种方法是Rolf Fare&Grosskopf(2010)基于方向距离函数的SBM模型(SBM-DDF模型),三种方法的优劣及合理性评价,目前暂无定论。
通过其运算符,每种 EC 方法都针对勘探-开发平衡提出了特定的解决方案,该解决方案目前在 EC 文献中被认为是一个未定论的问题。 另一方面,多代理系统被引入为智能、合作和自组织结构,其中简单规则的协同作用在...
许多过程,技术,工具,方法论和方法声称可以促进信息系统的开发过程,但是公开报道了很少有支持这些声明的经验验证。 这项研究从两个方面解决了这一缺陷。 首先,它为系统分析技术的比较开发并应用了有前途的实验...
emacs和vi孰优孰劣争论几十年至今无定论(有定论就怪了)。 很多人认为emacs很难学,其实这是误解,emacs的常用命令一般通过把界面首页的“Emacs快速指南”走几遍就能熟练掌握了。虽然入门不难,但要用emacs煮咖啡...
初中语文文摘社会大熊猫是熊?百年无定论
尽管理论上后路腰椎椎间融合术(PLIF)比后外侧腰椎融合术(PLF)具有更多优势,但证据尚无定论。 目的:本研究的目的是比较PLIF与PLF在腰椎滑石症患者中的临床和功能结局。 患者和方法:我们招募了38例接受PLIF(N...
你的观点或方法正是需要通过论文研究撰写所要论证的核心内容,提出和论证它是论文的目的和任务,因而并不是定论,研究中可能推翻,也可能得不出结果。开题报告的目的就是要请专家帮助判断你所提出的问题是否值得研究...