11 月 19 - 20 日 Apache Pulsar 社区年度盛会来啦,立即报名! 了解详情
写点什么

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

  • 2009-08-27
  • 本文字数:867 字

    阅读完需:约 3 分钟

在北约组织举办“软件工程大会”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

2009-08-27 21:101329
用户头像

发布了 37 篇内容, 共 10.3 次阅读, 收获喜欢 4 次。

关注

评论

发布
暂无评论
  • 第 22 讲 | 验证研发团队价值的绩效考核机制

    我们需要有一套合理的绩效考核机制,衡量并验证自己的价值。这套机制需要简单易懂、操作方便,而且需要通过数据说话。

    2018-05-22

  • 为什么说软件估算现在前所未有的重要

    当前人们日渐疏远传统的瀑布式开发,并转型为敏捷开发方法。有观点认为,开发中已不再需要做软件项目估算。这个观点看上去合情合理,但并不正确。实践中,即便是那些已经采用敏捷方法的企业,软件估算依然十分有价值。

  • IP 选路协议

    2019-09-10

  • 敏捷项目估算:什么是故事?什么是点数?

    有没有想过在敏捷项目中我们该如何以及为什么要进行估算?在David Morris为InfoQ写的第一篇文章中,他描绘了自己从90年代以来的经验和其它几位主要敏捷作者的论述,对敏捷估算这个话题进行了探讨:它是什么?我们通常怎么做?为什么要做?对#NoEstimates(不要估算)争论的简要评价,以及最后为初学者提出了一些建议。

  • 11|并列句 = 简单句 + 并列连词 + 简单句

    英语可能拥有世界上那么多种语言里最为简单的句法结构之一,不管句子多长,都只有简单句、并列句和复杂句这三种情况。

    2020-06-03

  • 园中那颗“烂苹果”

    过去几天,Scrum Development Yahoo讨论小组有个激烈的讨论,如果团队中某人“表现欠佳”,你该怎么办?针对“Rotten apple in Scrum team”这个帖子,回帖多达130多篇,讨论也五花八门,从对该问题的建议,到团队士气以及谁来负责的讨论,再到怎样衡量个人这样的经典争论,以及怎样识别一个团队是否是真正的“团队”,当然还有一些其它的内容。

  • 重新构想应用生命周期管理(ALM)

    Sam Guckenheimer提议,重新构想应用生命周期管理(ALM)以支持对软件项目的持续反馈,并采用这样的度量指标:需要多长时间来推动一项实验并从中获取可验证的学识。

  • 利用两个完工定义改进流程

    敏捷团队可以使用分开定义的完工定义的理想版本和当前版本。这样做的目的是扩展完工定义,进而提高成熟度和能力。这既可以在实物板上实现,也可以在其它电子的敏捷工具上实现,如JIRA。

  • #NoEstimates 作者问答

    在 NoEstimates: How to Measure Project Progress Without Estimating这本书中,作者Vasco Duarte探讨了无估算如何帮助管理项目的同时专注价值和可预测性,如何帮助快速和频繁汇报工作进展,和基于现有数据不断调整计划。

  • 第 57 讲 | 敏捷中的期限之殇,软件业该怎么做?

    过度强调如期交付的奖励,会让团队成员忽略质量,不愿意花费时间在计划和沟通上,而且一定会制造研发人员和产品设计人员之间的矛盾。

    2018-07-23

  • 偶然成为敏捷人士:个人回望《敏捷宣言》发布十年

    Johanna Rothman回顾了她的实效敏捷之路。 她提到敏捷实践如何共同生效,从而改进项目产出, 还提到这些方法并不仅限于软件开发领域。 她呼吁团队们拥抱敏捷带来的透明度,而不再是仅仅讨论转向敏捷, 并开始正确实施敏捷。

  • 反面案例:盘点那些失败的软件项目

    软件项目失败并不可怕,最重要的还是在失败后,总结原因,吸取教训。

    2019-06-08

  • “实效主义”是一匹“黑马” —— 现实驱动开发

    通过经验主义的方式,现实驱动开发(Reality Driven Development)强调“严密的试验”这一理念,以改进用户体验和软件开发的技术质量。

  • FIL 币价值与未来, FIL 币价值预估

    FILecoin作为最火的区块链项目之一,日交易额多次超过比特币居全球第一。历尽多年,热度也丝毫不减,经常是币圈浏览器热搜排行的第一名。作为热度火爆FILecoin项目的其唯一通证,FIL币价值与未来如何?FIL币价值预估多少?

    2021-07-07

  • 超越短期的 Scrum 项目估算?

    Scrum只是推荐为接下来的一两个sprint进行任务分解,在这种情况下,如何为整个Scrum项目进行估算呢?我们需要在中长期内对项目进行估算么?

  • 敏捷测试过程的度量标准

    大多数习惯传统阶段性开发模式的测试人员也习惯了制定和使用度量数据、在正式的缺陷跟踪系统中记录缺陷、编写详细的测试计划。这些人在敏捷开发中应该何去何从?许多软件企业必须遵守审计制度或者质量过程模型。这些要求通常不会因为你开始使用敏捷开发实践而消失。事实上,一些人担心敏捷开发与这些模型和标准如CMMI、ISO 9000不协调。敏捷测试经理Lisa讨论了有关度量标准涉及的各个方面。

  • 目前有哪些好用的用例管理工具?

    首先我们需要先明确一下什么是好用的用例管理工具?一款好用的用例管理工具需要具备哪些功能呢?一款测试工程师眼中好用的用例管理工具需要能够实现:测试用例管理与维护、测试计划管理、缺陷提交与追踪以及测试质量报告管理。

    2021-07-12

  • PMBOK 指南第五版的软件开发分册发布

    最近,PMI公布了与IEEE计算机协会共同编写的PMBOK指南第五版之软件开发分册,在其中讲解了从传统软件项目管理到采用敏捷方法的内容,并介绍了一些公认的良好实践,以便为软件项目经理或希望在项目中采用迭代性生命周期的管理者提供帮助。

  • 衡量敏捷度、工艺以及成功

    正当 Scott Ambler、Ross Pettit 以及其他人继续致力于创建敏捷成熟度模型,David Starr 查看了组织如何,以及为什么会希望衡量以下事项:敏捷度、工艺和组织的成功。他发现工艺相对容易衡量,而敏捷度则最难以有益的方式衡量。

  • Spring 数据绑定使用场景:为什么官方文档描述一笔带过?

    2020-05-14

发现更多内容

华为云CDN加速,如何为中小企业创新发展效力?

秃头也爱科技

JavaScript刷LeetCode拿offer-栈相关题目

js2030code

JavaScript LeetCode

Wallys/DR7915-wifi6-MT7915-MT7975-2T2R-support-OpenWRT-802.11AX-supporting-MiniPCIe-Module//QCA9882/QCA9880

wallys-wifi6

QCA9882 MT7915

03 详细架构设计

神奇的叶叔叔

全嘉宾阵容官宣 | 2022 云原生峰会即将启动,实战派企业向你发出邀请

阿里巴巴云原生

阿里云 云原生 峰会

【Java SE】java中变量和表达式计算的相关问题

安苒

Java

华为云CDN加速,如何助力企业信息化转型?

秃头也爱科技

华为云数据灾备全场景应用方案,为企业数据安全护航

爱尚科技

华为云对象存储服务OBS,海量存储安全可靠,让云存储更加简单

爱科技的水月

2022云原生峰会开启报名 | 一年一度云原生技术风向标就看这里!

阿里巴巴云原生

阿里云 云原生峰会

微信小程序部署流程

codingyt

10月月更

华为云CDN加速服务,如何让你的网速“飞”起来!

秃头也爱科技

【Java SE】Java程序的运行详解

安苒

Java

css学习

codingyt

CSS 10月月更

华为云帮助企业做好核心数据灾备,为企业数据安全与稳定发展提供保障

爱尚科技

聚焦云计算、大数据、人工智能等开源技术,这场开源开发者的盛会不容错过!

OpenAnolis小助手

人工智能 云计算 大数据 COSCon'22 开源盛会

前端监控系列4 | SDK 体积与性能优化实践

字节跳动终端技术

性能优化 前端监控 sdk 体积优化

flex容器布局

codingyt

CSS Flex 10月月更

华为云CDN为什么成为企业首选?四大优势助力企业腾飞!

秃头也爱科技

企业存储难题难以解决?不如试试华为云OBS对象存储服务

爱科技的水月

设计师高效办公必备神器-呆猫云工作站

爱科技的水月

降低成本,快速搭建企业知识库的方法盘点

Baklib

知识库

华为云大数据BI,便捷高效的大数据解决方案,助力企业数字化运营

爱科技的水月

Spring Boot「16」自定义错误页面

Samson

Java spring 学习笔记 spring-boot 10月月更

精细化边缘安全防护:如何防止CDN域名被恶意刷量?

阿里云视频云

CDN 边缘安全

“程”风破浪的开发者|总结巧用CSS实现各种效果的「百计千谋」

叶一一

CSS 学习方法 前端 “程”风破浪的开发者

“程”风破浪的开发者 | 元宇宙就是“虚晃一枪”?

三掌柜

1024 1024程序员节 元宇宙 “程”风破浪的开发者

Spring Boot「15」统一异常处理

Samson

Java spring 学习笔记 spring-boot 10月月更

NFTScan 与 Cobo 达成合作,双方将共同推动 NFT 资管安全市场的发展

NFT Research

区块链 NFT 数据基础设施

【DS】二叉树大总结!

安苒

数据结构 二叉树

Java Stream中map、flatMap 的使用区别

zarmnosaj

10月月更

DeMarco反思40年软件工程发展之路_敏捷_Deborah Hartmann Preuss_InfoQ精选文章