`
yangzb
  • 浏览: 3499676 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

一个愚蠢农夫和奶牛的故事-转载

    博客分类:
  • QC
阅读更多
Ivar Jacobson博士   
 
他被认为是影响或改变了整个软件 工业开发模式的几位世界级大师之一,是软件方法论的一面”旗帜”。他是组件和组件架构、用例、现代业务工程、Rational统一过程等业界主流方法或技术的创始人。
  
Ivar Jacobson博士认为,如果采用不良的软件过程,通过CMM /CMMI的成熟度级别越高,只会使软件企业生产不合格软件的过程更加有效率,而不是使企业开发出更好的软件。
  
软件外包是时下的一个热门话题,被我国不少软件企业视为一座金矿,而CMM被人们认为是进入这个市场的敲门砖,为了拿到那张代表资格的CMM认证证书,不 少企业甚至不惜投入数百万之巨。事实上,拿到CMM认证在国外并不代表企业就能提供一个合格的软件,著名的软件专家、拥有组件技术、用例技术等多项发明、 与Grady Booch、James Rumbaugh一起被称为UML之父的Ivar Jacobson博士在近期访华期间一再提醒中国的软件企业,谨防掉入CMM陷阱。

CMM/CMMI的缺点
  
CMM/CMMI最早起源于美国国防部。为了改变在采购过程中频繁地采购到大量不合格软件的局面,美国国防部需要一种评估软件质量 的方法,这就是要求软件企业进行CMM/CMMI认证。然而,CMM/CMMI真正解决这个问题了吗?
  
CMM/CMMI被认为是一种最成熟、最有效地提高软件工程化水平的方法和标准,用来评估和改进过程,它是一个描述在软件开发过程中有待改进的关键因素的 框架,描述了一个能用渐进方式进行改进的途径。它为软件过程改进提供一个基础,将软件开发从一个相对来说随意、不成熟的过程变成非常成熟的、有规律的、可 管理的过程。
  
然而,CMM/CMMI也有一些与身俱来的缺点不容忽视。比如,CMM/CMMI的评估耗资不菲,一个CMM2级评估就可能达到数百万之巨,而且耗时很 长,过程十分复杂,常常导致效果不太理想。不少企业的认证流于形式,评估完成后就只留下一大堆文档,而真正的软件开发过程却依然故我。而且,CMM/CMMI只告诉我们应该怎么做,而没有具体地告诉如何做 。比如说,它要求必须改进需求管理,那么到底该如何做需求管理?CMM/CMMI没有提供答案。
  
还有最重要的一点是,不少软件企业陷入了一个误区,以为单单通过CMM/CMMI评估就可以解决软件质量不高的问题,而忽略了软件过程这一真正改善软件质量的环节 。事实上,完全有可能出现这样的情况: 软件成熟度为CMM 1级或2级的企业开发出的软件是真正好用的,而有的企业即使通过了CMM 5级认证,也无法保证它交付好的软件。最糟糕的情形是,如果采用不好的软件过程,通过CMM/CMMI的成熟度级别越高,只会使软件企业生产差劲软件的过程变得更加有效率,而不是使企业开发出更好的软件。

Ivar Jacobson认为,好的软件过程首先一定是基于组件的,在此基础之上,还要符合迭代开发、用例驱动开发和以架构为中心的这三个最佳实践。

合理的软件过程是软件质量的基础
  
为什么会是这样呢,Ivar Jacobson举了一个非常形象的例子。这是一个农夫和他的奶牛的故事。在奶牛喝水的途中(称为”牛路”)有一片庄稼地,牛会吃掉很多庄稼。农夫看到这 种情况后,意识到必须对奶牛喝水的过程进行改进,所以他就在这条道路上铺上了沥青。结果,农夫得到了一个好的”牛路”,牛走得更快了,但是并没有真正解决 牛吃庄稼的问题。它应该有更好的方式,就是为牛喝水寻找一条全新的道路。
 
软件企业利用CMM框架进行软件质量控制的过程,就像是这个农夫为牛路铺沥青。对于软件企业来说,如果从一个错误的软件过程开始,即使你在这个上面再改 进,得到的永远只是”牛路”。这里更应该考虑的是要选择一条更好的路,也就是从一开始时,就采用能够开发出好的软件的过程。然后在这个软件过程的基础上, 对这个软件进行度量,改进这个软件的过程,也就是进行CMM/CMMI要求的改进。

Ivar Jacobson博士认为,从一个不良的软件过程出发,在此基础上进行改进,实际上会把软件开发变得更糟糕,因为你把软件开发过程固化了,使日后再想对它进行改造,变得更加困难。正确的方法是,先要有一个好的软件过程,这是不容易的,但是值得做的事情。
 
Ivar Jacobson 说,”把一个好的软件过程变得可度量非常容易,但是把一个可度量的软件过程变成一个好的软件过程却很难 ”。也就是说,只有把一个好的软件过程,即能够开发出好的软件的过程变得可度量才是有益的。而把一个已经经过CMMI改进的、可度量的过程变成一个真正的能够开发出好软件的过程,这是几乎不可能的事情。

那么什么是一个好的软件过程?Ivar Jacobson建议从以下几个方面进行辨别:
 
1 坏的过程关注文档上,而好的过程关注在可执行的程序或者系统上;
2 坏的过程延误了揭露风险的时间,而好的过程一开始就把自己暴露在风险之下,并及时解决它;
3 坏的过程在项目的最后才能够验证这个项目的质量,而好的过程其质量是每时每刻都能够得到验证的;
4 坏的过程有一个非常复杂的跟踪关系矩阵,从需求到代码需要一个非常复杂的矩阵,而好的过程,却是一个无缝链接;
5 在面对变更时,坏的软件很脆弱,好的软件会很健壮。
  
Ivar Jacobson提醒软件开发人员要做聪明的农夫,首先得到一个正确的软件过程; 然后,再考虑去度量它、定义它。因为软件项目管理 的本质不是能否描述并度量软件过程以及过程到底怎么样,而是首先关注软件,你是否能很好地开发出合格软件。重点是得到结果,通过软件过程得到这个结果,也就是交付的软件产品。

观点碰撞
敏捷开发企图终结软件危机
  
如今在软件开发领域占绝对主流地位的传统软件工程学思想是大约在20世纪60年代伴随着”软件危机”言论的出现而诞生的。所谓软件危机是指在计算机软件的 开发和维护过程中所遇到的一系列严重问题,它包含两方面内容:一是如何开发软件,以满足不断增长、日趋复杂的需求;二是如何维护数量不断膨胀的软件产品。 的确,传统软件工程学思想的诞生,把软件开发活动按照工程化的原则和方法进行组织,并一度被认为是摆脱软件危机的一个主要出路。
  
但是,数十年后的今天,人们对于软件危机的”恐惧”仍没有丝毫减弱,相反随着软件系统的急速膨胀而越发不可收拾了:对软件开发成本和进度的估计常常不准 确,开发成本超出预算,实际进度比预定计划一再拖延的现象并不罕见;用户对”已完成”系统不满意的现象也经常发生;软件产品的质量往往靠不住,Bug一大 堆,补丁一个接一个;等等。于是,无论是产业界还是理论界,都开始对传统软件工程学思想产生怀疑,甚至背叛。因此,关于软件到底是”工程”还是”艺术”的 讨论一度风靡全球。而以迭代式循序渐进开发方式为主,以”人”为核心的敏捷开发方法就是在这样的背景下产生的,它背叛了传统软件工程学中以”过程”为核 心,把设计和开发尽可能分开,尽量弱化”人”在整个工程中地位的思想。
  
近日,当世界软件开发领域最具影响力的五位大师之一、敏捷软件开发方法的早期开拓者马丁·福勒先生来华与国内软件高手论道之际,北京大学软件学院院长阵钟 老师再次将软件是”工程”还是”艺术”这一问题摆到了桌面上。而这位软件教父似乎对这一问题早有深入思考,他认为,这一争论的核心应该在于软件设计是否要与软件开发分开 ,这也正是传统工程化软件开发方法与敏捷软件开发方法的重要区别。
  
作为敏捷软件开发方法的推动者,马丁先生认为,软件设计应该和软件开发紧密结合在一起,采用迭代式开发。软件开发不能被认为是一个既定的过程,因为软件开发中有太多的变化出现,既定的过程设置不可能达到合适的预想结果 。 由于需求变化、技术更新、人员流动等问题的存在,许多软件设计工作应该在软件开发到一定程度的时候才能进行,两者不应该在顺序上严格分开。他说:”至于从 哲学的角度讲,到底软件开发活动是艺术还是工程呢?我很难清晰地界定,也许都是或者都不是。也许我们应该把软件开发活动当做一个独立的东西来对待。”
  
由此看来,马丁先生既不认为软件开发活动应该是一个先进行设计,然后根据 “设计图纸”进行构建的工程化过程,也不认为软件开发应该是完全依赖于开发者头脑中随时蹦出的灵感的艺术活动,因为这两种倾向在人类数十年的软件开发实践中已经被证明都不甚完美。而他企图在两者之间找到一个均衡点,这个均衡点也许正是真正解决”软件危机”的突破口。
  
据了解,敏捷开发实际上包括了许多优秀的软件开发习惯。首先,这种方法改变了软件测试的流程,在编写代码前进行测试,减少了开发风险;其次,可以对软件进 行持续集成,即每个小时都在集成,任何部件间的冲突都可以随时解决;此外,这种方法的”动态规划”和”重构”做法,意味着开发者可以对软件架构进行持续改 进,可以根据用户的需求随时进行改进,而利用传统的软件开发方法则很难对软件的架构进行调整,同时也会造成成本的大幅增加。
本文为人月神话博客原创文章,转载请务必注明出处。
分享到:
评论

相关推荐

    一年级数学下册 农夫的一天--认识方位教学反思 青岛版五年制 教案.doc

    《一年级数学下册 农夫的一天--认识方位教学反思》是针对青岛版五年制小学数学课程的一个教学教案,旨在帮助学生理解并掌握基本的方位概念。教学反思中提到,对于一年级的小学生而言,理解方向的概念较为抽象,因此...

    农夫的奶牛场,C语言编写,实现奶牛出逃算法

    奶牛们所在的土地(农场)被划分成了r行和c列的一个矩形地图。奶牛们都待在这个矩形中的某一个位置。 请帮助john确定给定的一个地图上是否存在一个安全的逃离方案。 比如,下面列举的两种情形: 左边的例子表示了一...

    20210719-中泰证券-农夫山泉-9633.HK-十年磨一剑,打造“天然健康”的深厚护城河.pdf

    20210719-中泰证券-农夫山泉-9633.HK-十年磨一剑,打造“天然健康”的深厚护城河.pdf

    五年级语文下册 第八单元 角度 3 两个农夫教案 北师大版-北师大版小学五年级下册语文教案.doc

    - 基于课堂讨论,学生为两个农夫提出改进的建议,这既是对故事内容的深化,也是对写作技能的锻炼。 - 小组内部评选出优秀建议,进行全班分享。 #### 5. 板书设计 教师可以根据讨论内容和学生的反馈,将关键点和学习...

    农夫和毒蛇-读后感作文.doc

    故事的主角是一个善良的农夫,他在寒冷的冬天遇到了一条冻僵的毒蛇。农夫的善良驱使他去救助这条蛇,即使他知道蛇是危险的生物。这一行为体现了人类的同情心和慈悲精神,是社会道德的重要组成部分。然而,毒蛇苏醒后...

    20210228农夫山泉-9633.HK-2021年农夫山泉企业研究报告.rar

    由于压缩包内只有一个名为“20210228-头豹研究院-农夫山泉-9633.HK-2021年农夫山泉企业研究报告.pdf”的文件,这意味着报告的详细内容将集中在这份PDF文档中,涵盖上述提到的所有方面。对于投资者、分析师或对农夫...

    农夫过河-C语言数据结构

    “农夫过河”问题是一个经典的逻辑谜题,通常涉及一个农夫、一只狼、一只羊和一棵白菜(或类似物品),他们需要过河,但农夫的小船只能载农夫和其中一个物品。如果农夫不在场,狼会吃掉羊,羊会吃掉白菜。因此,农夫...

    农夫山泉-9633.HK-2021年农夫山泉企业研究报告.rar

    首先,农夫山泉作为一家上市公司,其股票代码为9633.HK,表明该公司在港交所上市,投资者可以通过这个代码追踪公司的股价变动和财务报告。2021年报告中可能涉及公司的财务数据,包括营业收入、净利润、毛利率等关键...

    02007 农夫山泉销售人员培训--消费者促销.ppt

    02007 农夫山泉销售人员培训--消费者促销.ppt

    农夫过河问题-数据结构课程设计

    一个农夫带着一只狼、一只羊和一棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他面前只有一条小船,船只能容下他和一件东西,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,羊不能吃白菜,否则狼会吃羊...

    20210228-头豹研究院-农夫山泉-9633.HK-2021年农夫山泉企业研究报告.pdf

    农夫山泉在这一趋势下,提前布局了无糖茶、即饮咖啡、功能饮料和纯果汁等产品线,显示出其产品策略符合行业发展趋势。 再者,农夫山泉在产品力、渠道力和营销力上构筑了企业的强大护城河。在产品力方面,农夫山泉...

    农夫过河问题【代码+流程图+可执行文件】

    农夫过河问题是一个经典的逻辑谜题,它涉及到在有限的资源和条件约束下如何有效地解决问题。在这个问题中,农夫需要将自己、一只狼、一只羊和一捆白菜全部安全地从河的一边送到另一边,而一艘小船只能承载他本人或者...

    20210311-国泰君安-农夫山泉-9633.HK-首次覆盖报告:水之王者,乘风起航.pdf

    农夫山泉作为国内著名的饮料品牌,一直以生产天然水和饮料为主营业务。其在激烈的市场竞争中脱颖而出,依靠差异化营销和对消费者需求的深刻理解,形成了强大的盈利能力。国泰君安出具的这份报告深入分析了农夫山泉的...

    农夫过河问题农夫过河问题

    一个农夫带着一只狼、一只羊和一棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他前面只有一条小船,船只能容下他和一件物品,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,羊不能吃白菜,否则狼会吃羊...

    数据结构农夫过河问题

    总结,"数据结构农夫过河问题"是一个典型的用数据结构和算法解决逻辑问题的例子,它展示了如何利用广度优先搜索策略来寻找最优解。通过编码实现,我们可以找到安全地将所有物品运送到对岸的步骤,同时也学习了如何...

    农夫的日记-应用文.doc

    这篇文档实际上是一个虚构的故事,通过农夫的日记形式探讨了一个重要的哲学和社会心理学议题:情感亲疏如何影响我们对事物的认知和决策。在这个故事中,农夫最初固守旧有的方法捕兔,即使失败也不愿改变,这反映了...

    农夫过河的问题

    "农夫过河"是一个经典的逻辑谜题,它涉及到如何有效地安排运输物品和人物过河的问题。在这个问题中,通常设定有农夫、他的儿子、他的女儿、一只狼、一只羊和一颗白菜,只有一艘小船,且每次只能载两个人或物。问题的...

    农夫山泉-9633.HK-公司深度报告:匠心独运,水到渠成.rar

    《农夫山泉-9633.HK-公司深度报告:匠心独运,水到渠成》这份压缩包文件中的主要焦点是对中国知名饮用水品牌农夫山泉的深度分析,特别是围绕其在港股上市(9633.HK)的情况进行探讨。报告的核心内容可能涉及以下几个...

    农夫过河问题求解

    一个农夫带着—只狼、一只羊和—棵白菜,身处河的南岸。他要把这些东西全部运到北岸。他面前只有一条小船,船只能容下他和—件物品,另外只有农夫才能撑船。如果农夫在场,则狼不能吃羊,羊不能吃白菜,否则狼会吃羊...

    图的应用------农夫过河

    农夫过河。一个农夫带着一只狼,一只羊和一些菜过河。河边只有一条一船,由 于船太小,只能装下农夫和他的一样东西。在无人看管的情况下,狼要吃羊,羊 要吃菜,请问农夫如何才能使三样东西平安过河。

Global site tag (gtag.js) - Google Analytics