浅谈软件项目上的长期慢性需求问题

标签: 需求 批评评论 | 发表时间:2013-01-18 00:06 | 作者:Aqee
出处:http://www.aqee.net


本文的作者Capers Jones是Namcook Analytics公司的副总裁和首席技术总监。他一直在收集软件质量和开发效率上的数据。他写了几十本关于软件质量、最佳实践方法、评估、测量方面的著作。

在处理软件需求时,有三个问题一直折磨着我们,并使软件项目消耗无数资金。其中很大一部分都产生在项目交付并运行后的新需求的收集工作中。

下面是在软件需求处理中三个广泛存在的问题,需要我们去寻找比当前普遍的常规做法更有效的解决方案:

  • 很多需求是非常危险或是有毒的,需要坚决抵制。
  • 很多客户坚持要在软件中强加入一些额外的、多余的功能。
  • 需求永远提不完,并以每月1%的速率增加。

软件开发者道德上有义务、职业上有责任在这些问题上提醒客户,并尽可能的帮助他们解决这些问题。换句话说,软件开发者需要充当的角色类似于一个医生。我们有责任帮助客户诊断目前已知的需求,并开出有效的处方。

当然,一旦用户需求收集完成,分析整理完成,承诺的软件规格就应该如实的交付给客户。然而,为了保证软件能安全有效的交付,危险的或有毒的需求必须被除去,多余的和不必要的需求需要让用户知道,潜在的能导致需求滋生的不清晰的地方需要被明确、量化。用户应该从软件开发技术团队那里获得专业的帮助,而不应该在需求收集和分析上被动的扮演旁观者角色。

不幸的是,需求上的缺陷并不能通过普通的测试来消除。如果需求上的错误未能预防而出现,或没有能够通过常规的检查或其它方法消除,那么,从需求上构造出来的测试用例只能再次证实需求的正确,而不是发现其中的错误。(这就是为什么多少年的软件测试都不曾发现并消除”2000年”问题)

另一类需求上的问题,对于一些全新的创造性的软件应用,很可能最初用户只有原创者,没有第二人。参考一些成功的软件的历史,如APL编程语言,第一个电子制表软件,早期的Web搜索引擎(之后成为谷歌)。

这些具有革命性的应用软件全是发明人自己用来解决他们自己的问题的。他们并不是按照常规概念上的“用户需求”开发出来的。除非演示程序被开发完成,其他人基本无法认识到这些软件发明的价值所在。因此,“用户需求”对于一些全新的革命性的软件来说不是能完全适用的,除非它们已经公开发布。

软件需求会不断的发展、繁殖、变化,在其随后的设计和编码阶段统计出的数据,每月增加的量大概是1%到4%,基于这种现状,很显然,要想达到对需求的完全理解是十分困难的。

需求是软件开发的重要一环节,但由于掺杂着有毒的需求,缺失的需求和多余的需求,使得简单的诸如“品质的标准就是照需求完成”这样的定义成为了软件工业的毒药。

软件交付之后

“增长的需求”这个问题经常不受重视。一旦软件应用交付给客户或用户,需求并不是终止或不变了。对于大多数的应用,需求的增长的延续会一直伴随着应用的使用期间。它们增长的速率最高能达到每年15%。

因为需求在增长,软件应用的体量也会变大——不论从功能点,逻辑代码量或其它尺度测量。

为了说明这种持续性增长,下面的表格显示了一个我研究的大型Java应用的变化。

测量周期 功能点 逻辑代码量
1 需求阶段结束时 10,000 530,000
2 需求补充 2,000 106,000
3 计划交付量 12,000 636,000
4 延期的功能量 - 4,800 - 254,400
5 首次提交给客户的量 7,200 381,600
6 一年使用后 12,000 636,000
7 2年使用后 13,000 689,000
8 3年使用后 14,000 742,000
9 4年使用后 (中期提升) 17,000 901,000
10 5年使用后 18,000 954,000
11 6年使用后 19,000 1,007,000
12 7年使用后 20,000 1,060,000
13 8年使用后 (中期提升) 23,000 1,219,000
14 9年使用后 24,000 1,272,000
15 10年使用后 25,000 1,325,000

这些数字在第4年和第8年有一个超出平均值的增加。对于商业软件,为了跟最新的其它软件竞争,有必要增加一些重大的新功能。这叫做“中期提升”。

正如你看到的,需求增加在软件应用使用期间永不会停止,除非开发者开发出相同类型的新产品而放弃对老产品的支持。当然,一些软件会很好的运行10几年。例如,美国空中交通管制系统已经使用了超过30年了。

怎么办…

软件需求是软件工程技术中最薄弱的一个环节。因为需求总是不完备的,总是含有错误的,这就要求软件开发者一定要使用最先进的软件需求方法。用户并没有培训过这些需求收集/分析技术,在没有经过受训的需求专家的帮助下无法提供完整无误的需求,更重要的,软件开发者应该理解——甚至拥抱——这样的事实:在软件交付运行之后,跟用户关于需求的对话将不会停止。


本文由 外刊IT评论网( www.aqee.net)原创发表,文章地址: 浅谈软件项目上的长期慢性需求问题

相关 [软件 项目 慢性] 推荐:

浅谈软件项目上的长期慢性需求问题

- - 外刊IT评论
本文的作者Capers Jones是Namcook Analytics公司的副总裁和首席技术总监. 他一直在收集软件质量和开发效率上的数据. 他写了几十本关于软件质量、最佳实践方法、评估、测量方面的著作. 在处理软件需求时,有三个问题一直折磨着我们,并使软件项目消耗无数资金. 其中很大一部分都产生在项目交付并运行后的新需求的收集工作中.

Planner – 项目管理软件 | 小众软件 > 办公软件

- HICU - FeedzShare
来自: 小众软件 - FeedzShare  . 发布时间:2011年09月12日,  已有 3 人推荐. Planner 是一款开源、易用、跨平台的项目管理软件. 二猪用了 OpenProject 几年,现在已经受够了它的各种问题. 前段时间发现了 Planner,这个也算有些历史了,可是完全不如 OpenProject 名气大.

一地鸡毛——软件项目中的人际困局

- 乾 - 《程序员》杂志官网
作者结合切身经历,展示了他之前所在团队软件项目延期的种种原因,而其中印象最深刻的是各种人事纷扰乃至于勾心斗角. 六年前,毕业未久的我在一家外企工作,我所在团队开发的软件项目在交付到集成测试组时因种种原因延期一周. 这本身根本不是什么大事情,但其间各种人事纷扰乃至于勾心斗角却着实令我印象深刻. 我的老东家是一家大型跨国电信设备开发商,曾具有辉煌的历史.

软件项目经理要向NASA学习什么

- - CSDN博客研发管理推荐文章
原文:http://www.itworld.com/article/2845997/what-software-project-managers-can-learn-from-nasa.html. 无可否认,NASA 的工程经验相当丰富. 他们不只做出了火箭和太空船这些酷炫的硬件,还做出了一系列 高可用的软件.

谈软件开发项目管理之需求变更(转)

- - CSDN博客研发管理推荐文章
在软件开发过程中需求的变更会给开发带来不确定性,但只要把需求变更作为重点、难点小心加以控制,软件开发的进度、成本和质量也就有了"安全"的基础. 变化并不是人们最害怕的,最怕的是跟不上变化的步伐. 需求变更是因为需求发生变化. 根据软件工程思想,需求说明书一般要经过论证,如果在需求说明书经过论证以后,需要在原有需求基础上追加和补充新的需求或对原有需求进行修改和削减,均属于需求变更.

[原]软件项目量化管理目标举例

- - 麦哲思科技
进度:项目工期偏差率介于+-15%之间;. 质量:项目的缺陷逃逸率不高于5%;.       项目交付的缺陷密度不高于1个bugs/KLOC;. 规模:需求变更率不超过15%;. 成本:工作量偏差率不超过+-30%;.       每人月实际投入项目的时间不少于上班时间的50%;. 项目返工工作量不高于20%;.

如何给软件开发项目估价?

- - 博客园_新闻
“兄弟,你看做这样一个软件需要多少钱. ” 这估计是所有软件从业人员被问的最多也是最无奈的一个问题. 这个问题等同于,“你看装修一个 100 平米的房子需要多少钱. 软件开发你不懂,装修你总懂吧,100 平米的房子装修从 10 万到 100 万均有可能,取决于你找什么级别的设计公司,买什么样的材料,请什么样的施工队……所以,我真的没有办法回答你“做这样一个软件需要多少钱.

软件项目需要很多人一起完成可能是一个骗局

- Me - 云风的 BLOG
本文的标题只是一个猜想,并不是我坚信的观点. 事实上,我这几年自觉学到的重要东西之一,就是如何在开发过程中分工,如何信任队友开发的组件,如何组织许多人做同一个项目. 这个世界上我们需要做的软件可能没有太多真正庞大到需要很多人合作才做的出来. 需要配置产品经理,需要设计人员,需要前端开发,后端开发等等.