`
phpxer
  • 浏览: 71719 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

调查:软件开发过程中工作量(成本)都是如何分布的?

阅读更多
就著名的《人月神话》(含《没有银弹》)中有关软件生产率的问题,最近有意整理一篇相关的文字。在这里跟大家做一个调查。 每一个项目经理,都会关注项目的成本。 我这里所指的成本,只是指软件生产过程中的成本(工作量)。 至于其他的成本,例如销售、采购等等的费用都不算。

人月神话中是这么说的:
引用
所有软件活动包括根本任务——打造由抽象软件实体构成的复杂概念结构,次要任务——使用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言。


引用
我认为软件开发中困难的部分是规格化、设计和测试这些概念上的结构,而不是对概念进行表达和对实现逼真程度进行验证。当然,我们还是会犯一些语法错误,但是和绝大多数系统中的概念错误相比,它们是微不足道的。


为了验证一下真的如《人月神话》中的结论,我想请大家根据自己的实际经验头一下票,验证一下。

以我的理解,将软件生产过程拆成 调研咨询,需求,设计,开发,测试(QA)。 要特别提一下,我这里的设计,自然包含了详细设计,即使你在没有任何设计的前提下去写代码,事实上你也肯定要去考虑设计的。

我把软件生产过程中的全部工作分为2个部分,合计为100%。 打造概念结构的工作属于A类,表达这个概念结构属于B类。
调研咨询,需求,设计近似属于A类,而开发则属于B类。
测试(QA)是对前面两方面的验证,用来测试概念化思维工作的成分你计算为A类,还是用来测试构造工作的作为B类。(如果你的项目里对于测试时会明确区分问题发生的原因是设计原因引起还是编码引起还是需求引起的话,就很好区分)

投票时如下:
A类: 50%
B类: 50%

如果大家对具体工作所属类别的划分有意见,或者对于该书的论点有意见,请在投票的同时写下你的观点和分析。热烈欢迎就这个问题交换意见。
分享到:
评论
29 楼 丁丁豆 2009-08-03  
不错,有功就成,javahands@hotmail.com  有时间加我msn 一块聊天
28 楼 donald 2009-07-09  
为什么能力强的要当救火队员?我始终想不明白,我想尽办法都好象走不出救火队员这个角色。
A 60%
B 40%
27 楼 tiannet 2009-07-07  
编码只是软件的冰山一角(尤其对于企业应用软件),不过很多程序员没意识到这个问题。
A 70%
B 30%
26 楼 phpxer 2009-06-30  
xiaohan.sun 写道

在《人月神话》中作者提到了自己的经验法则是:
1/3计划、1/6编码、1/4构建测试和早期系统测试、1/4系统测试。

工作量分布情况需要视实际项目而定,新项目所需要的设计时间总是要高于比较熟悉的项目的设计时间,但总的说来还是要保证有充足的设计时间,否则越到后续环节,问题的爆发越会成指数级别增长。
项目的时间管理中有叫做PSP和TSP的东西,它们可以帮助进行项目时间管理分析和经验积累,我觉得经验这个东西还是从自己做的项目中来得实在,LZ不妨可以使用这个看看,也许不久之后,这些数据就可以回答你的问题了。


chenlixun 写道
计划、调研、分析、设计、编码、测试都是生产过程中的环节,成本应该包括过程中的所有环节产生的成本,而产出物应该包括各个环节的产出物,具体成本分布率须根据不同的项目(新/旧、熟悉/不熟悉等因素)、不同的软件开发过程而定。

个人认为<<人月神话>>等文中提到的分布率,只是个参考依据罢了。

上面是一点点不成熟的意见,不知当讲否!


看来目前大家都没有特别去收集数据.... 给个经验值吧?

我也没有特意去收集数据,但是总感觉我们花在编码之外的时间其实很多的,但是又经常跟编码掺和在一起,跟维护掺和在一起。
25 楼 chenlixun 2009-06-30  
计划、调研、分析、设计、编码、测试都是生产过程中的环节,成本应该包括过程中的所有环节产生的成本,而产出物应该包括各个环节的产出物,具体成本分布率须根据不同的项目(新/旧、熟悉/不熟悉等因素)、不同的软件开发过程而定。

个人认为<<人月神话>>等文中提到的分布率,只是个参考依据罢了。

上面是一点点不成熟的意见,不知当讲否!
24 楼 xiaohan.sun 2009-06-28  

在《人月神话》中作者提到了自己的经验法则是:
1/3计划、1/6编码、1/4构建测试和早期系统测试、1/4系统测试。

工作量分布情况需要视实际项目而定,新项目所需要的设计时间总是要高于比较熟悉的项目的设计时间,但总的说来还是要保证有充足的设计时间,否则越到后续环节,问题的爆发越会成指数级别增长。
项目的时间管理中有叫做PSP和TSP的东西,它们可以帮助进行项目时间管理分析和经验积累,我觉得经验这个东西还是从自己做的项目中来得实在,LZ不妨可以使用这个看看,也许不久之后,这些数据就可以回答你的问题了。
23 楼 phpxer 2009-06-27  
taelons 写道
软件的生命周期并非到生产结束系统上线后就结束了,所以生产成本只是所有成本的一部分,软件上线后期的维护成本是相当惊人的,遗憾的是大部分PM和客户都没有意识到这一点。他们关注的是软件生产过程中业务功能的实现,而忽视非功能性需求和服务质量的需求。
非功能性需求和服务质量需求事关软件的运维成本,占到整个成本的50%以上,直接影响到客户满意度和客户关系的维系。太多的项目在上线后两年内被替换,因为人们发现,用了xxx系统后,每天都像热锅上的蚂蚁。一个业务需求的变更,哪怕是微小的局部变东,如果在生产阶段没有前瞻性,没有良好的设计,后期的运维将是非常痛苦的,琐碎的小改动,日积月累,加上人员的变动,使系统无法维系下去。
这体现在PM和客户在“战略和战术”两方面的欠缺,欠缺前瞻性的眼光,欠缺过硬的技术。当然,他们也有共识,项目当政绩来做,上线后向上邀功,拿到大部门项目款完事


说得好,所以在软件研发过程中对于质量和可扩展性、对需求变化的响应能力的要求是很高的。不过事实上很多项目对现在的需求都不满足,一上线以后直接出现问题或者用不起来。这是我们现在面对的严重问题。

PM本人,事实上不只是只对某个项目的某次生产过程负责,大部分情况下,只要还在公司做的话,基本上以前所负责的项目其责任仍然会沿袭下来,后面的维护和服务都会产生费用,成为项目成本的一部分。不过某些情况下,这一部分费用被转换到了服务费用中去了。发生这些情况,项目是部分失败的。

总之,在前期进行足够的调研/需求/设计,完全是有必要的。我所了解的项目中,很少有真正成功满意的项目,可能正因为很多时间放在了具体实现上,而不是构建这个概念思维系统上。

我估算一下我们目前的情况:
A 30%
B 70%

也许我们期待的应该是
A 50%
B 50%
?
22 楼 taelons 2009-06-27  
软件的生命周期并非到生产结束系统上线后就结束了,所以生产成本只是所有成本的一部分,软件上线后期的维护成本是相当惊人的,遗憾的是大部分PM和客户都没有意识到这一点。他们关注的是软件生产过程中业务功能的实现,而忽视非功能性需求和服务质量的需求。
非功能性需求和服务质量需求事关软件的运维成本,占到整个成本的50%以上,直接影响到客户满意度和客户关系的维系。太多的项目在上线后两年内被替换,因为人们发现,用了xxx系统后,每天都像热锅上的蚂蚁。一个业务需求的变更,哪怕是微小的局部变东,如果在生产阶段没有前瞻性,没有良好的设计,后期的运维将是非常痛苦的,琐碎的小改动,日积月累,加上人员的变动,使系统无法维系下去。
这体现在PM和客户在“战略和战术”两方面的欠缺,欠缺前瞻性的眼光,欠缺过硬的技术。当然,他们也有共识,项目当政绩来做,上线后向上邀功,拿到大部门项目款完事
21 楼 phpxer 2009-06-26  
yecllsl 写道
看了此贴,想起一句话“屁股决定脑袋”


呵呵,讨论得越来越偏题了... 希望更多有PM经验的朋友们来投投票...
20 楼 yecllsl 2009-06-26  
看了此贴,想起一句话“屁股决定脑袋”
19 楼 RCFans 2009-06-26  
fuwang 写道
软件项目对老板来说就是做生意,就是要用来赚钱的,从这个角度来看,架构师和工程管理者也是砖工(随时可以换掉)。
至于技术,当然是可有可无的东西,项目能赚到钱就行。

说的对。但做生意也有做生意的门道,尤其是想做点技术生意。因为不懂这个门道,所以绝大多数的软件项目就是赚不了钱。
18 楼 phpxer 2009-06-26  
fuwang 写道
phpxer 写道
RCFans 写道

这是一个视角问题,关键在于你如何看待软件开发这件事。如果你是一个醉心于编程本身的开发人员,有所侧重是应该的,但是你应该且必须接受一个观点就是,哪怕是很小的组织,都存在不同的工作视角,从不同的切入点来关注、解决问题。
仅仅作为一个开发人员的视角去考虑问题,无法做出成功的项目——哪怕成功的产品都不行。牢记开发只是一项应用技术,管理是一门科学。实践出真知,不做无真相。



所言极是。 管理是一门科学,开发仅仅是一种工具。 软件产品的开发是由开发人员来完成,他们的工作当然十分重要。但是大部分价值是由开发者之外的人去保证或者完成的。 对这点的感受越来越多。

建筑的隐喻十分合理, 架构师和工程管理者是最重要的,而开发仅仅是砖工(高级砖工)。

(如果读者你从业以来一直在作坊式工厂里,暂时理解不了情有可原)


软件项目对老板来说就是做生意,就是要用来赚钱的,从这个角度来看,架构师和工程管理者也是砖工(随时可以换掉)。
至于技术,当然是可有可无的东西,项目能赚到钱就行。

从老板的角度看,的确如此,研发只是他要关注的众多问题之一。

不过,作为一个软件研发和项目管理者,我们的角度是站在软件研发和项目管理的角度。
17 楼 fuwang 2009-06-26  
phpxer 写道
RCFans 写道

这是一个视角问题,关键在于你如何看待软件开发这件事。如果你是一个醉心于编程本身的开发人员,有所侧重是应该的,但是你应该且必须接受一个观点就是,哪怕是很小的组织,都存在不同的工作视角,从不同的切入点来关注、解决问题。
仅仅作为一个开发人员的视角去考虑问题,无法做出成功的项目——哪怕成功的产品都不行。牢记开发只是一项应用技术,管理是一门科学。实践出真知,不做无真相。



所言极是。 管理是一门科学,开发仅仅是一种工具。 软件产品的开发是由开发人员来完成,他们的工作当然十分重要。但是大部分价值是由开发者之外的人去保证或者完成的。 对这点的感受越来越多。

建筑的隐喻十分合理, 架构师和工程管理者是最重要的,而开发仅仅是砖工(高级砖工)。

(如果读者你从业以来一直在作坊式工厂里,暂时理解不了情有可原)


软件项目对老板来说就是做生意,就是要用来赚钱的,从这个角度来看,架构师和工程管理者也是砖工(随时可以换掉)。
至于技术,当然是可有可无的东西,项目能赚到钱就行。
16 楼 phpxer 2009-06-26  
抛出异常的爱 写道
60%
10%
我怎么认为少了些东西呢?
例如:
一个缓存
6天开发一个版本
一个半月准备期


准备阶段主要做的是调研和设计
15 楼 RCFans 2009-06-26  
welllove53 写道
国内80%的项目都技术都不是问题,
所以我说A 80%, B 20%

很多本来开发做得很好的项目,却因为交付的文档没做好,失败个彻彻底底。
轻则被小骂一顿,重则造成用户数据丢失
14 楼 抛出异常的爱 2009-06-26  
60%
10%
我怎么认为少了些东西呢?
例如:
一个缓存
6天开发一个版本
一个半月准备期
13 楼 welllove53 2009-06-26  
国内80%的项目都技术都不是问题,
所以我说A 80%, B 20%
12 楼 phpxer 2009-06-26  
mock1234 写道
这是一个A、B随时重构的不断循环过程,每一个循环周期只有十分钟(编成程序需要十分钟,而口头表达时我会在10秒钟内就开始对A、B重构)。当经院化地死抠它作为两个静态概念,所以必须分个比例或者全部实现A再实现B或者相互没有多少牵扯、重构的时候,我只能对这种适合学术上忽悠出论文而不适合工程实际的过于通俗的口号一笑置之。


我希望你能够站在工程观点上来对我的讨论做一个评价... 敏捷实践当然是很好的,但是即使敏捷实践也不排斥工程方法,敏捷实践也需要组织起来。 Scrum / lean 即是如此。
11 楼 phpxer 2009-06-26  
RCFans 写道

这是一个视角问题,关键在于你如何看待软件开发这件事。如果你是一个醉心于编程本身的开发人员,有所侧重是应该的,但是你应该且必须接受一个观点就是,哪怕是很小的组织,都存在不同的工作视角,从不同的切入点来关注、解决问题。
仅仅作为一个开发人员的视角去考虑问题,无法做出成功的项目——哪怕成功的产品都不行。牢记开发只是一项应用技术,管理是一门科学。实践出真知,不做无真相。



所言极是。 管理是一门科学,开发仅仅是一种工具。 软件产品的开发是由开发人员来完成,他们的工作当然十分重要。但是大部分价值是由开发者之外的人去保证或者完成的。 对这点的感受越来越多。

建筑的隐喻十分合理, 架构师和工程管理者是最重要的,而开发仅仅是砖工(高级砖工)。

(如果读者你从业以来一直在作坊式工厂里,暂时理解不了情有可原)

10 楼 phpxer 2009-06-26  
发错了,请见下个回复..

相关推荐

    软件开发报价(含软件开发项目工作量及报价模板)的计算方法.pdf

    通过这些综合因素,我们可以得出一个完整的软件开发价格计算公式:软件开发价格 = 开发工作量 × 开发费用/人·月。其中,开发费用/人·月包含了人头费、办公费、国家税收、企业利润,以及管理系数和优质系数。这一...

    软件开发实施项目工作量评估明细表.doc

    在软件开发实施项目中,工作量评估是至关重要的一步,它直接影响项目的进度、成本和资源分配。这份"软件开发实施项目工作量评估明细表"详细列出了推进OA系统应用和新功能开发两个主要部分的工作内容及其预计所需的...

    《软件工程的秘密:软件开发项目为何失败》

    《软件工程的秘密:软件开发项目为何失败》一书由George Stepanek撰写,深入探讨了软件项目失败的原因,为读者提供了宝贵的见解和教训。在软件工程领域,项目的成功与失败往往决定了一家公司的命运,因此理解项目...

    需求调研是软件开发过程中至关重要的一步,它的目的是了解用户的需求、期望和痛点,为软件开发提供方向和支持 以下是几种常用的需求调研

    需求调研在软件开发中扮演着核心角色,它是整个项目的基石,旨在揭示用户的真实需求、期望和痛点,为软件设计和开发提供明确的方向。一个成功的需求调研不仅能够避免后期的返工和修正,还能显著降低项目的成本和风险...

    软件开发费用计算方法

    ### 软件开发费用计算方法详解 #### 一、引言 随着信息技术的发展与普及,软件项目在各个行业中扮演着越来越重要的角色。为了确保软件市场的健康发展,规范软件项目的定价机制变得尤为重要。本文旨在深入探讨...

    软件工程的秘密:软件开发项目为何失败

    《软件工程的秘密:软件开发项目为何失败》一书由George Stepanek撰写,深入探讨了软件项目失败的原因,为软件工程师、项目经理以及所有参与软件开发流程的人员提供了宝贵的洞见和经验教训。以下是对该书核心知识点...

    软件项目需求调研提纲.doc

    本文档是软件项目需求调研提纲,旨在收集和记录财务、采购、库存等方面的需求信息,以便于软件开发和实施。下面将对每个部分的内容进行详细说明。 财务部分(Financial) 1. 财务部门的组织架构及部门职责:财务...

    软件测试人员与软件开发人员的比例

    多数情况下,测试人员工作量大,比开发人员忙,所以想寻求一个数据,来说服其公司,多招些测试人员。有些专家说,根据调查结果发现通常的比 许多公司领导总是希望得到一个合理的比例,然后按这个比例分配招聘的名额...

    软件工程导论 001.软件危机

    6. **成本比例失衡**:随着硬件成本的降低,软件开发成本却因人力需求增加而持续上升,在计算机系统总成本中的比重逐年提高。 7. **生产率提升滞后**:软件开发生产率的增长速度远低于计算机应用普及的速度,供需...

    IPA/SEC日本软件开发(项目)数据调查报告(2007)

    这些数据有助于了解软件开发过程中的质量控制效果及其对项目整体成本的影响。 3. **项目管理**:项目管理方面,报告分析了项目延期的原因、风险管理措施的效果等,为提高项目成功率提供了实用建议。 4. **技术趋势...

    软件工程中的软件开发流程与方法2.pptx

    ### 软件工程中的软件开发流程与方法 #### 第1章:软件工程概述 - **软件工程概念**: - 定义:软件工程是一门研究如何采用系统化、规范化、可度量的...理解和掌握这些核心概念和技术对于从事软件开发工作至关重要。

    专题七:软件工程专题.doc

    "软件工程专题" 软件工程是指应用计算机科学、数学及...软件工程是软件开发和维护过程中的一个重要环节,需要遵循一定的原则和方法,以提高软件生产率、提高软件质量、减低软件成本,使软件开发和维护更加高效、可靠。

    2022年自考软件开发工具复习资料.doc

    软件开发工具的重要性体现在软件开发的全过程中,软件开发工具可以提高软件的质量和效率,缩短软件开发的时间,降低软件开发的成本,提高软件开发者的工作效率和质量。软件开发工具的发展趋势是朝着自动化、智能化、...

    基于android系统的OD调查软件开发.pdf

    基于Android的OD调查软件可以显著提高调查效率,减少后期数据处理的工作量。 居民出行OD调查是城市交通规划与管理中的核心环节,对城市交通需求信息的获取至关重要。它包括出行次数、出行目的、出行时间、出行空间...

    【项目管理知识】质量管理:软件质量问题出在哪里?.docx

    近年来,国内软件企业已经认识到测试的重要性,开始增加测试在整个软件开发流程中的比例。据统计,测试成本通常占据相当一部分,且有上升趋势。软件产品的不成熟意味着将测试成本转嫁给了用户,这会导致项目周期延长...

    软件项目管理综述对开发实行有效的管理

    2. **软件度量**:通过量化方法评估软件开发过程中的成本、生产率、进度和产品质量等指标。 3. **项目计划**:制定合理的项目计划,包括工作量、成本、开发时间等方面的估计,并根据实际情况进行调整。 4. **风险...

    软件开发项目报价书

    ### 软件开发项目报价书相关知识点 #### 一、概述 软件开发项目报价书是一种重要的商业文档,用于向客户或合作伙伴明确展示一个软件项目的成本估算、实施范围和服务条款等内容。报价书中通常包含了项目的背景介绍...

    软件需求调查表 软件分析 软件市场客户群分析

    在软件开发过程中,软件需求调查表是十分关键的一环。它不仅有助于明确项目的范围、目标以及预期结果,还能为后续的设计、开发及测试阶段提供重要的参考依据。通过软件需求调查表,可以有效地收集到用户的真实需求,...

    软件开发的需求分析的学习及参考资料

    在软件开发过程中,需求分析是至关重要的第一步,它决定了项目的成功与否。需求分析涉及理解用户的需求,定义系统的目标,以及创建一个清晰、准确且全面的需求规格说明书。以下是对这一主题的详细探讨: 一、需求...

    现代软件工程方法在医疗软件开发中的合理应用

    现代软件工程方法在医疗软件开发中的应用至关重要,因为医疗软件的稳定性和可靠性直接关系到患者的安全和医疗服务的质量。首先,医疗软件开发面临着人员职责分工不明确、缺乏统一安排和协调等问题,这些问题会导致对...

Global site tag (gtag.js) - Google Analytics