InfoQ

新闻

DeMarco反思40年软件工程发展之路

作者 Deborah Hartmann Preuss 译者 张晓庆 发布于 2009年8月27日 下午9时10分

社区
Agile
主题
方法论,
领导能力,
客户及需求
标签
评论,
历史,
值和度量,
瀑布模型,
管理

在北约组织举办“软件工程大会”40周年之际──正是在这里首次提出了软件工程规范,Tom DeMarco开始反思规范的发展,包括他对软件度量的先期发展方向的影响。“不能度量,就无法控制”,DeMarco的这句名言被引用甚多,然而现在他怀疑这是否把我们引离了计算机的本质:“更重要的目标是进行转变,编写可以改变世界或者可以改变企业及企业运作模式的软件。”他的这一结论,最先出现在《IEEE软件》七八月刊的“软件工程概念已是明日黄花?”[pdf]一文中。

这篇文章中,DeMarco是这样定义“软件工程”的:

软件工程包含一组特定的规范:定义好的流程、评审及走查、需求工程、跟踪矩阵、度量、精确质量控制、严格的计划和跟踪、编码和文档标准。所有这些都为了努力做到预期和实际结果的一致。
--Tom DeMarco

对敏捷实践者来说,DeMarco可能因为与Tim Lister在1987合著的《人件》一书更广为人知。但是又有多少人会注意到他在1982年编写的颇具影响力的《控制软件开发项目:管理,测算和评价》这本书呢?DeMarco在文章中首先就回顾了这本书:

经过反思,我开始怀疑:
  • 这些建议在当时正确吗?
  • 现在仍然有用吗?
  • 对任何成功的软件开发项目,我是否仍然认为度量必不可少?
我的答案是不,不,不!
--Tom DeMarco

通过对这本书的反思,他发现了更多的真相,同时也指出软件工程规范与物理学这样的自然科学不同:“软件开发...度量...须持怀疑态度。”他继而把这本书与交付价值关联起来,并且建议说:

“...你越关注于控制,项目交付的价值就可能越低。对我来说,有个问题比怎样控制软件项目更重要,到底为什么我们在做那么多无甚价值的项目?
--Tom DeMarco [emphasis added]

在得出结论之前,他简要描述了一个更为适用的增量管理的方法,其要旨与敏捷团队和它们的客户非常类似。

项目不需要控制,或者只需要很少的控制,我真的能说这样没问题吗?几乎可以这样说。首先我们需要选择一些精确控制对它们没有很大影响的项目。然后不管我们花多大力气来控制,都要降低我们对能够控制多少的期望。
--Tom DeMarco

参见原文:DeMarco Reflects on 40 Years of Software Engineering Evolution

环境不同结论也不同。 发表人 xu maoquan 发表于 2009年9月4日 下午11时17分
  1. 返回顶部

    环境不同结论也不同。

    2009年9月4日 下午11时17分 发表人 xu maoquan

    不知道DEMACRO大叔所调查的团队环境都是些怎样的情况。
    一切为了结果。程序开发是一个很难清晰衡量的玩意(从本质可以看出,N多的IF ELSE),但是如果因为难而不去度量,那如何把握进度?如何了解项目组当前状态?难不成个人英雄主义在软件领域就是个特例?
    特别是,如果不去度量,不做计划,对于一个产品来说,肯定是一个噩梦。

深度内容

模块化Java:声明式模块化

本文是模块化Java系列文章的第4篇,介绍的是声明式模块化。文中描述了组件如何以声明的方式来定义并组织在一起,而无需让代码依赖于OSGI API。

Ian Robinson和Jim Webber谈论基于Web的整合

本采访是在伦敦举行的QCon2009上记录的,Ian Robinson和Jim Webber探讨了如何将Web作为整合平台以及REST在理论上和实践中的好处。

项目管理修炼之道(精选版)

项目管理对于项目成败至关重要,但实践中每个项目都有自己的独特性,没有现成的解决方案可以套用。书中从应对实际风险的角度出发,讲述了从项目启动、项目规划到项目结束的整个管理流程,展示了作者的思考过程。本迷你书从原书中精选出5个章节。

那是鸟,还是飞机?不,那是超人!

在这个演讲中,Fred将会揭示敏捷的一些外在因素,并会重点关注敏捷获得成功的内在原因。从案例研究和真实的项目经验来看,Fred认为:工具、管理体系都不能让你变得敏捷。敏捷的成功,植根于士气高涨、充分授权的工作者身上,他们能够以不同以往的方式思考问题。

访谈和书摘:Eben Hewitt的新书《Java SOA Cookbook》

Java SOA Cookbook

Eben Hewitt的新书《Java SOA Cookbook》从Java实现的角度讨论了面向服务架构。Eben在书中讨论了SOA基础、工具、最佳实践和SOA治理等主题。

Mark Richard的《Java消息服务》第二版

Mark Richards的新书《Java消息服务》第二版覆盖了JMS的许多主题, 包括发布和订阅模式以及点对点模式,消息过滤和事务等。InfoQ与Mark谈论了跟他的新作。

模块化Java:动态模块化

本文是“模块化Java”系列文章的第三篇,讨论动态模块化,内容涉及如何解析bundle类、bundle如何变化、以及bundle之间如何通信。

让测试也敏捷起来

对于测试组织来说,敏捷方法带来的快速迭代却让测试本身变得困难起来:缺乏“足够详细的文档”,缺乏“仔细设计用例的时间”等等。在本演讲中,段念将与大家探讨如何在敏捷过程中进行测试。