`
庄表伟
  • 浏览: 1149786 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

定论——软件开发的方法-论探讨(3)

阅读更多
  4)工匠、工艺隐喻

  说到工程隐喻,现在大家自然会想到最近出来的《软件工艺》这本书。如果工程的隐喻有问题,那么工艺怎么样?如果工程师的隐喻有问题,那么工匠怎么样?按照软件工艺的说法:“如果项目中的成员不具备执行项目过程所必备的技能,那么纵有世界上最好的过程,也无法挽救项目失败的命运;与此相反,真正优秀的开发者,能够让任何过程,发挥最大的作用。”真的就这么简单吗?

  工匠与工艺的隐喻,与工程相对,但是这样的对立,并非如《软件工艺》所理解的那样,是由于不同的复杂程度而做出的不同的选择。如果2000个人年的项目,我们应该采用工程的隐喻,5个人年的项目,我们应该采用工艺的隐喻,那么50个人年呢?500个人年呢?我们是不是有可能将两种不同的隐喻像调鸡尾酒一样,选取适合的比例,然后调制起来呢?这样具有的“颠覆性”的理论,我想作者也没有考虑过如何与工程隐喻相调和吧?
 
  在工艺隐喻中,还有几个特点,质量、培训、高手。

  工艺隐喻,意味着工匠(程序员)会在自己的作品上签名,并终生为之负责(这与XP是有区别的)这样就能保证质量。但是我们知道,手工制作就意味着质量无法保证,第一次与第二次不同,第二次与第三次不同,现代工业比起手工业来最大的进步,就是能够保证一个始终如一的质量水平。所谓为自己的作品负责的荣誉感,最多只能保证我能够在“事发之后”找到人来修补,却不能保证我免受这样的损失。软件质量更多的取决于一个开发团队的能力,而不是他们愿意为之负责的决心与荣誉感。如果真的那么简单,中国男足立了那么多次军令状了?早就该有成效了吧?
 
  培训开发人员,当然是非常重要的,但是现在软件开发中较多使用的“新手”,并非“工程隐喻”的罪过。作者设想的学徒的过程,也并不与软件工程相矛盾,这在日本的软件工程实践中,可以得到证实。不客气的说,这样的浮躁,不是软件工程的责任,而是文化的问题。可悲的是,中国的软件产业,较之美国,更为浮躁。
 
  高手是宝贵的,但同样也是稀缺的。一个公司或者一个项目团队,不可能全由高手组成,再者,对于一个项目来说,所有的活都让高手来干,也同样是浪费。在这里还要指出作者的自相矛盾之处。一方面,作者强调“师—徒”式的培训,另一方面,又想把低手从公司里赶出去。那么究竟该怎么做呢?如果一个项目内,低手比高手还要多(这是几乎是必然的)。这样的项目应该如何组织呢?任务如何划分呢?作者没有告诉我们。因为在工艺里面,学徒做的可能是毫不重要的,甚至是重复的劳动,只是为了学习。但是在软件企业,谁来为这样的学徒买单呢?
 
  工艺的隐喻,新则新已,好就未必。这本书,就是那种“用隐喻来思考的产物”。真要照做,只怕危险。
 
  5)敏捷的场景
 
  敏捷开发与其它模式不同,它似乎没有隐喻,但是,还记得我们是如何定义隐喻的吗?一个隐喻是一个完整的场景,这个场景中有很多相互交织的“概念要素”。 当这个场景中多出了与软件开发无关的要素时,就会误导我们。敏捷开发是一个逼真的场景,这个场景不是像软件开发,它就是软件开发,它没有多出任何东西,因此,这样就完美了吗?不,它却少了很多要素。当一个逼真的场景,向你描述了一个成功的,但是却却少了很多要素的软件开发项目时,这样的场景同样会产生误导,会使你认为其他的要素,都是不重要的,至少是可以在大型项目中才需要考虑的。我说的要素,并非CMM的KPA,或者RUP里的关键活动,然后通过剪裁就能得到XP那样的要素。而是指关键的概念,缺少关键概念,故事就会显得虚假,那么在敏捷项目中,缺少了什么呢?时间概念,成本概念以及分工概念。
 
  在一个又一个的迭代周期中,什么时候,项目算是完成呢?这个完成,由谁来决定呢?似乎敏捷开发面对的是一个User Story集合,多一些,少一些,都没关系的。如果用户给定时间,功能的多少,就得由开发人员决定。反之,如果用户要求必须数量的功能,开发时间的多少就得由开发人员决定。这样的项目,可以说简直没有压力,这是咱们梦寐以求的项目,但是这可能吗?
 
  再说成本概念,同样的道理,合同是在开发开始之前签订的,但是按照敏捷开发的场景,能开发出多少东西,需要多少时间,都是不一定的。那么成本如何确定?如果成本无法确定,这个合同可能就会有一方要吃亏,这样的合同,谁去签呢?
 
  再说分工概念,敏捷开发是程序员提出的,而且完全是从程序员的角色出发,在他们的故事里,除了用户,就只剩下了程序员,你也许会说,还有项目经理呢!但是,那只不过是一个名称而已,他不过就是一堆程序员里最有权威的那个。那么其他角色呢?你在敏捷开发的故事里,看不到界面设计人员,看不到独立的、专职的测试人员,看不到数据库管理人员(随着设计的浮现,也许项目进行到40%时,程序员中会有一个人,转而承担较多的数据库管理的职责,但是这并不一定)看不到产品经理,看不到用户手册的编写人员,看不到客户培训人员(XP认为客户会和程序员一起工作,但是那些没来的可能谁去培训呢?)也许XP的支持者会说,“嗨,我们又不是要开发巨型项目。”但是我要说的是:“不管有多大的项目,一定会有不需要、也不应该程序员做的事情。”作为一个软件开发的方法论,就必须包含对这些工作的探讨,一个完全从程序员本位出发的,不考虑其他工作的方法论,不是一个完整的方法论,这样的场景如果被普遍模仿的话,也是相当危险的。
 
  6)银弹隐喻
 
  《没有银弹》如此著名,以至于无论它的赞同者还是反对者,都无法回避它的存在。但是银弹究竟是什么呢?“没有银弹”究竟意味着什么呢?
 
  首先,“银弹”是一个隐喻,它的本意是能够杀死人狼(一种怪兽)的武器。用在软件开发里,银弹是什么,用通过追问“什么是软件开发中的人狼”来得到答案。在一个项目中(在一个村庄里),出现了一个困难(出现了一头人狼),如果任由困难存在,项目就会失败(如果没有办法赶走人狼,村民就会受害),一种方法出现了,解决了这个困难,项目成功了(银弹出现了,打死了人狼,村民获救了)。所以我们可以这样理解:银弹就是能够保证项目成功的方法。但是,如果Brooks真的这样简单的推出自己的结论,那么大家都会说;“废话,谁不知道,没有一种方法能够保证项目的成功?”Brooks的水平当然远不止此。但是很多人对《没有银弹》的理解,却事实上到此为止了,然后他们就拿着这个结论,四处“传道”开来。
 
  Brooks更进了一步(或者说退了一步),他将保证项目成功的目的,弱化为提高项目效率的目的,并且给出了一个看起来能够量化的标准“单一技术,十年之内,提高十倍以上的效率。”(可靠性和简洁性根本无法量化,咱们先不讨论)
 
  但是,我们知道,如果一个论断无法证实,又无法证伪,这个论断就毫无意义。那么我们如何能够检验他的这个论断呢?首先我们要能够明确,什么是单一技术?软件工程算单一技术吗?CMM体系算吗?CMM里的一个KPA呢?UML算吗?设计模式呢?XP呢?还是XP中的结对编程呢?怎么才算单一?没有界定!也无法界定,包括Brooks,也不能告诉我们,什么算单一技术?
 
  然后我们还要确定,如何比较开发效率,如何量化?严格的说,必须证实两组能力,知识水平,人数,了解的信息都完全相同的人马,在互不交流的情况下,同时开发一个项目,都达到了一组项目的目标(即不是不够,也不是超过),然后两组人的开发时间,是否相差十倍。
 
  再者,当我们要证明单一技术的功效时,必须保证这两组人马只在这一项技术上有区别,其他都一样。
 
  最后,当我们要证明十年之内的差别时,还要保证十年后的这组人马,与十年前的那组人马使用相同的软件、硬件设备。(十年前是什么操作系统?WIN32?CPU呢?486?)这样的研究,才能够算是精确的验证。但是这样的验证,没有,也不可能有人去进行,自然这样的论断也就毫无意义!
 
  可笑的是,居然有人,当真去寻找银弹的证据,并且兴奋的宣称找到了,最近还有一家著名的公司,出版了一本的著名的杂志,名字就叫《银弹》!但是,最可笑的还在于,Brooks居然还写了一篇《再论没有银弹》,宣称自己的论断,已经基本上成立了。
 
  如果事情到此为止,那么Brooks也不过就是跟大家开了个玩笑罢了。但是Brooks更进一步指出:“软件开发分为根本问题与次要问题,根本问题占软件开发的90%的比重。而且很难被很好的解决。”一方面,我们要说:“这样的认识很有必要”,另一方面,我们也要说:“这样的论断,毫无疑义。”因为它既不能被证实,又不能被证伪。90%从何而来?如何证实?我们无法得知。我相信,10年,10倍,根本就是他随口说出的一个数字,同样的,90%也不过是一个“印象”。当不得真,作不得数,也无法用来指导我们的实践,更无益于我们提高软件开发水平。这样的玩笑文字,竟然风行世界,备受瞩目,的确是软件开发的方法论,还处于蒙昧的“隐喻时代”的最好证明!
 
(未完待续)
分享到:
评论

相关推荐

    平面设计的思想与方法

    3. **足球 —— 讲台** - 足球 → 比赛 → 观众 → 讲台 4. **树林 —— 电脑** - 树林 → 自然 → 环保 → 电脑 (环保材料) 5. **例子补充:** - **铅笔 —— 星空** - 铅笔 → 绘画 → 天空 → 星空 **三、...

    金融行业研究方法-6资产配臵方法论系列之六:全球配臵中如何管理汇率风险?.pdf

    ### 金融行业研究方法-6资产配置方法论系列之六:全球配置中如何管理汇率风险? #### 学术界:对汇率风险的解读以及管理尚无定论 **什么是汇率风险?** 汇率风险,通常指的是由于货币价值变动而对持有外币资产或...

    物流学习探讨管理基本定论.doc

    物流学习探讨管理基本定论.doc

    劳动价值论争论中的方法论问题.pdf

    争论并未得出定论,表明理论界对劳动价值论的理解和应用仍存在分歧,需要进一步的探讨和实践验证。 综上所述,劳动价值论作为马克思主义经济学的基础,其争论体现了理论与现实的互动,以及方法论在理论创新和经济...

    安全技术-网络信息-论我国网络游戏虚拟财产的民法保护.pdf

    在网络游戏虚拟财产侵权案件中,究竟是采用过错责任原则还是无过错责任原则,目前尚无定论,使得侵权责任的追究成为难题。 在国际范围内,不同国家对虚拟财产保护的法律规定和立法经验不尽相同。例如,美国、韩国和...

    危险化学品安全措施和应急处置原则——一氧化碳.docx

    ### 危险化学品安全措施和应急处置原则——一氧化碳 #### 重要警示 - **极易燃气体**:一氧化碳是一种极易燃气体,有毒,吸入过量可能导致缺氧致死。 - **物理特性**:无色、无味、无臭的气体。微溶于水,溶于乙醇...

    夸克之谜——一场从中国走向世界的科学辩论

    总之,关于夸克存在性的争议是一场跨越国际界限的科学辩论,它不仅涉及粒子物理学的基础理论,也触及了科学研究的方法论和哲学思考。这一争论展示了科学探索过程中的不确定性以及科学家们不断追求真理的精神。

    颠覆性发现存在数据疑团?室温超导论文现身引热议.pdf

    超导研究领域近来迎来了一场激烈的讨论,源于韩国团队宣布的一项潜在的颠覆性发现——室温超导材料LK-99。这一消息如同一颗炸弹,迅速引发了全球科研界的广泛关注。然而,随后的论文发表揭示了一些令人困惑的数据,...

    学术论文研究报告框架的构建及其写作方法.doc

    【学术论文研究报告框架的构建及其写作方法】 学术论文是学术界的重要组成部分,旨在传播新知识、新理论,推动学科发展。对于撰写者来说,理解学术论文的概念和特点至关重要。学术论文具有学术性、科学性、创造性及...

    信息检索与利用:6-3论文写作.ppt

    【信息检索与利用:6-3论文写作】的讲解涵盖了学术论文的核心概念、种类、规模、特点、写作所需信息以及作者的基本素养。学术论文是一种记录科研成果或创新见解的科学文献,常见类型包括专业论文、学年论文、毕业...

    图书馆学论文参考文献 .doc

    7. 社会调查教程和信息分析基础、方法及应用等书籍的引用,为图书馆学研究提供了方法论支持,强调了实证研究和信息处理技术在学术研究中的重要性。 总结来说,图书馆学论文参考文献的丰富性体现了研究的广泛性和...

    人工智能的刑法主体地位反思——自我意思决定、平等主义与刑法技术措施.pdf

    关于人工智能刑法主体性的争论,既有否定论,也有肯定论。否定论认为人工智能无法成为刑法上的主体,因为它们缺乏独立的意志自由和刑法上的可归责性。而肯定论则认为,若智能机器人在程序范围外实施自主行为,就有...

    甲烷二氧化碳重整镍基催化剂的研究进展-论文

    近年来,研究最多的领域是关于该反应催化剂的开发,其中镍基催化剂的研究最广泛。为了全面了解甲烷二氧化碳重整反应及镍基催化剂的应用,介绍了甲烷二氧化碳重整反应的热力学研究及机理;分析了镍基催化剂的积碳原因...

    神犬探长——《狐狸冤案》读后感400字.pdf

    《神犬探长——《狐狸冤案》》是一本引人入胜的儿童侦探小说,以其生动的角色和富有教育意义的故事赢得了读者的喜爱。书中的主角,神犬探长,是一位聪明勇敢、公正无私的侦探形象,他的存在不仅激发了孩子们对侦探...

    煤表面官能团对CH4及CO2吸附性能的影响规律研究-论文

    煤表面官能团对CH4以及CO2吸附性能的影响已得到印证,但不同官能团类型对2种气体吸附行为的具体促进与阻碍作用以及影响因素尚未有定论。利用密度泛函理论,通过计算不同官能团化结构对CH4以及CO2的吸附能数据,揭示...

    黏弹TI煤层介质3层模型Love槽波频散与衰减特征-论文

    煤层是典型的黏弹各向异性介质,将黏弹性和...Hz内是否随频率变化尚无定论,假设煤层Qs随频率线性减小,各阶槽波品质因子曲线低频部分差异很小,高频部分差异变大,当Qs减小到10时,槽波衰减系数随频率增长很快;对于三

    是资源枯竭还是有效需求不足——赵宏图博士《新能源观》读后感言.pdf

    《新能源观》是赵宏图博士的一本著作,该书主要探讨了关于资源枯竭与有效需求不足的议题,尤其在新能源领域中的应用。书中的核心观点是对传统“资源枯竭论”的质疑,并提出资源供给的真正挑战在于如何经济且有效地...

    人工智能创作物的版权保护——以音乐作品为视角.pdf

    首先,要探讨人工智能创作物的版权保护,就必须明确人工智能及其创作物的定义。人工智能是计算机科学的一个分支,它使机器或软件展现出智能化的特征。在音乐创作方面,人工智能需要通过算法来理解和掌握音阶、和声、...

    论文研究 - 乳腺癌组织中FOXC2和YKL-40表达的预后和临床病理价值,免疫组织化学研究

    YKL-40被称为几丁质酶-3-like-1,属于哺乳动物蛋白家族,其氨基酸序列与18-糖基水解酶细菌几丁质酶组相似。 最近的研究发现,YKL-40异常在各种器官的癌症中表达升高,因此它可用作乳腺癌患者的近期预后生物标志物。...

Global site tag (gtag.js) - Google Analytics