软件规模估算的假设和思路:
¡软件的规模和其外延成正比
l外延包括: 功能, 数据, 用户操作界面数, 显示界面数等等
¡不同的功能点实现的困难度不同, 但从整个项目来说, 平均的困难度差不多
¡规模估算的目标:是决定工作量的大小。对于成本模型,规模是计算软件项目的工作量、成本和进度的主要输入
¡规模估算的责任者:程序员、软件工程师、系统分析员负责决定软件项目的规模
¡规模估算的入口准则 :在规模估算之前,软件功能需求必须被定义。在项目早期定义需求可能是非常困难任务。然而,在对需求一无所知的情况下,精确的估算出项目的成本和进度是不可能的。如果知道部分需求,那么估算基于已知的需求并且相信每一个人都相信估算仅仅是基于那些已知的需求,如果使用了增量或演进的开发策略,那么估算基于增加的已定义需求。
¡规模估算输入 :软件需求说明书(SRS)
历史规模数据
¡规模估算活动 : 软件产品规模通常以代码行(SLOC)或千代码行(KSLOC)度量。软件应该以全新代码或者合并新旧代码进行开发。对已存在代码接口的估算与新代码的估算是同等重要的。已存在代码借口通常需要与开发新代码相同的工作量。
¡软件产品规模估算应该主要基于历史数据和经验。历史规模数据可以从组织软件过程数据库中找到。而且,两个或更多的具有类似经验的软件工程师应该开展自顶向下/自底向上规模估算,步骤如下:
A) 基于定义每个计算机软件模块的需求开发系统的高级架构图
B) 基于每个计算机软件模块开发功能WBS
C) 根据相似项目经验和历史数据,为每一个软件模块手工估算出最底层(自底向上)可能详细的代码行或功能点,规模估算工具可以作为第二个输入
D) 估算出期望的规模加上标准偏差,即:规模的最低值和最高值来反映名义值的不确定性。在项目的早期阶段,最低和最高估算结果之间的范围可能是30-50%,例如:概念阶段。如果缺乏经验或有较高的技术风险,范围将会更大
E) 具有类似经验的软件工程师应该评审并优化估算结果直至达成一致意见。经验表明,规模估算经常偏低,故最低规模估算结果应该给与特别审查
一些规模估算的标准方法和工具如下:Wideband Delphi技术、Pert Sizing技术、功能点方法、类比法和自动化规模估算工具。这些方法的详细描述在前面功能估算和预算制定中已经提到。建议至少使用两种方法进行规模估算,不要依赖于任何一种方法
提示:项目早期规模估算可能非常难以精确的确定。对于单一的规模数字,取而代之使用值的范围(最大值、最小值、可能值)。随着项目的进展,规模的确定越来越精确。一旦项目的编码完成,就可以使用自动化的代码行工具计算程序的规模了。
目前常用的软件规模评估方法
¡FPA(Function Points Analyze)(1989)
l主要适用于 MIS,前面已做过详细说明
¡FFP(Full Function Points)(1997)
l适用于 real-time software, system software, general application, and also MIS applicationl不适用于包含复杂的数学计算的 application(如: 专家系统, 仿真软件, 自学习软件, 媒体播放等)
预测性对象点(Predictive Object Points)
¡预测性对象点是特意为面向对象软件设计的,是通过系统计算面向对象的特征进行度量。
¡POPs方法的核心是每类加权方法数(Weighted Methods per Class WMC)。这种方法测量每个顶层类(或者说,每个在用户的视野中清楚的对象)并且根据类的行为(方法)类型不同进行加权。一旦得到WMC的值,POPs方法将把它和有关按类分对象组的信息和对象类之间的关系进行联合计算。
=========
功能点法回顾
面向功能的软件度量是对软件和软件开发过程的间接度量。面向功能度量的关注点在于程序的“功能性”和“实用性”,而不是对LOC计数。一种典型的生产率度量法叫做功能点度量,该方法利用软件信息域中的一些计数度量和软件复杂性估计的经验关系式而导出功能点FPs(Function Points)。
功能点通过填写表1所示的表格来计算。首先确定五个信息域的特征,并在表格中相应位置给出计数。信息域的值以如下方式定义:
§ 用户输入数:各个用户输入是面向不同应用的输入数据,对它们都要进行计数。输入数据应有别于查询数据,它们应分别计数。
§ 用户输出数:各个用户输出是为用户提供的面向应用的输出信息,它们均应计数。这里的输出是指报告,屏幕信息,错误信息等,在报告中的各数据项不应再分别计数。
§ 用户查询数:查询是一种联机输入,它导致软件以联机输出的方式生成某种即时的响应。每一个不同的查询都要计数。
§ 文件数:每一个逻辑主文件都应计数。这里的逻辑主文件,是指逻辑上的一组数据,它们可以是一个大的数据库的一部分,也可以是一个单独的文件
§ 外部接口数:对所有被用来将信息传送到另一个系统中的机器可读写的接口(即磁带或磁盘上的数据文件)均应计数。
做软件开发的成本究竟如何估算
在对一个软件项目进行开发成本估算时,应该包括从项目立项直至项目研发活动结束所花费的资源总和,并且可以按阶段进行估算或测量。
软件开成本估算的过程可分为:估算规模、估算工作量、估算工期和估算成本这4个过程,最终确定软件成本。其中成本估算需要对直接人力成本、间接人力成本、间接非人力成本及直接非人力成本分别进行估算。
1、估算规模
通常情况下,软件规模的估算是软件成本估算过程的起点。估算规模是后续计算软件项目的工作量、成本和进度的主要依据,是项目范围管理的关键,因此,在条件允许的情况下,应该进行软件项目规模估算。
规模估算时,要根据可行性研究报告或类似文档明确项目需求及系统边界。选择估算方法时,要依据项目特点和需求详细程度来决定。
若当前项目的需求不确定,可跳过这一环节,进入下个一环节。
2、估算工作量
软件项目工作量估算可采用方程法、类比法和类推法。
类推法:软件项目需求极其模糊或不确定时,如果有高度相似的历史项目,可采用此方法,利用历史项目数据来粗略估算工作量。
类比法:软件项目需求极其模糊或不确定时,如果有与本项目部分属性类似的一组基准数据,可采用类比法,利用基准数据来粗略估算工作量。
方程法:已经开展了规模估算的项目,可以采用方程法,通过各项参数来确定待估算项目的工作量。
项目工作量估算都应该采用两种估算方法来对估算结果进行交叉验证,以追求估算的准确性。工作量的估算结果是一个范围,不是单一的值。
3、估算工期
软件项目工期的估算同样可以采用类推法、类比法和方程法。
4、估算成本
类比法和类推法同样适用于需求极期模糊或不确定时的成本估算。
成本估算结果通常为一个范围。
在获得工作量和工期后,采用科学的方法来进行成本估算。中基数联做为北京软件造价评估技术创新联盟的授权合作伙伴,在对软件成本估算时,采用快速功能点法进行成本估算。
估算软件工作量多少或大小时如何选择合适的方法?
在估算软件工作量时选择哪种方法好,我觉得你应该先了解一下软件项目工作量的估算方法主要有哪些。通常用的就3种:方程法、类比法和类推法。一般情况下估算软件项目工作量是由估算软件规模的结果作为输入,然后采用方程法来进行估算。但也有一些特殊情况,比如需求非常模糊而无法进行规模估算时,可以直接采用类比法或类推法来估算软件工作量。
以我个人的经验,在估算软件项目工作量时,如果你对于上面说的3种方法的使用足够了解,是可以很容易选择出合适的方法的。有关这3种方法的详细介绍我认为你还是多去了解一下,或者系统的了解一下软件成本估算方面的知识,毕竟工作量估算只是软件成本估算中的一小部分。我可以推荐一本书给你,由北京软件造价评估技术创新联盟编写机械工业出版社出版的《软件研发成本度量规范释义》第2版。或者也可以购买刚刚发布不久的国家标准《GB/T 36964-2018 软件工程 软件开发成本度量规范》来了解相关知识。
希望我的回答可以帮到你,如还有疑问可以跟我联系沟通。
软件项目的成本如何估算?
我觉得这个问题一两句话说不明白,我只能系统的回答你一下。首先,我们在对一个软件项目的成本进行估算或评估时,应该从这个项目立项开始直到项目研发活动结束所花费的资源总和,并且可以按阶段进行估算或测量。软件成本的估算可以进一步细分为估算软件规模、估算项目工作量、估算软件工期和估算软件成本。其中成本估算需要对直接人力成本、间接人力成本、间接非人力成本及直接非人力成本分别进行估算。
我们常用的软件研发成本估算公式为:软件研发成本=工作量×平均人力成本费率(含直接人力成本、间接成本)+直接非人力成本。此公式基本包含了软件研发成本估算的内容和过程。
估算的方法常用的有类比法、类推法,方程法。如果你是想要从事这方面的工作,我建议你还是进行一下专业的培训。希望我的回答可以帮到你!
在正式需1求分析前,怎么尽可能准确估算软件系统的工作量
同其他任何工程项目一样,软件项目同样存在一个非常重要的问题,这就是软件管理的问题,而这一问题通常容易被一般的软件开发人员所忽视。在一般的软件工程资料中所讨论的重点也只是软件开发方法,对软件管理问题大多一笔带过。在一个小的软件开发项目中也许还无所谓,但一个大型的软件开发项目如果没有优秀的软件管理人员来领导和协调整个项目,其失败的可能性就很大了。因此有必要引起大家对此问题的重视,这也是本文的目的所在。 软件管理工作涉及到软件开发工作的方方面面,其直接对象包括人、财、物,简单地说,人就是指软件开发人员,财就是指项目经费,物就是指软件项目。也许还没有关于这方面的专门理论,但在工商管理领域已经有十分成熟的管理学理论,他山之石,可以攻玉,所以我们完全可以引进到软件项目方面的管理。 作为软件管理人员,应该站在高处来俯瞰整个项目,如果有不识庐山真面目的感觉就不太好了。有了俯瞰全局的意识这一前提,采用适当的管理技术,项目开展就容易罗。软件项目的管理工作可以分位四个方面:软件项目的计划、软件项目的组织、软件项目的领导和软件项目的控制,下面对这四个方面进行详细的介绍。编辑本段软件项目的计划 软件开发项目的计划包括定义项目的目标,以及达到目标的方法。他涉及到项目实施的各个环节,带有全局的性质,是战略性的。计划应力求完备,要考虑到一些未知因素和不确定因素,考虑到可能的修改。计划应力求准确,尽可能提高所依据的数据的可靠程度。主要工作集中在软件项目的估算、软件开发成本的估算和软件项目进度安排。软件项目计划的目标是提供一个能使项目管理人员对资源、成本和进度做出合理估算的框架。这些估算应在软件项目开始时的一段有限时间内作出,并随着项目的进展进行更新。软件项目的估算 软件项目管理过程开始于项目的计划,在做项目计划时,第一项活动是估算。现在已经使用的使用技术是时间和工作量的估算。因为估算是其他项目计划活动的基石,而且项目计划又未软件工程过程提供了工作方向,所以我们不能没有计划就着手开发,否则就会陷入盲目性。 估算本身带有风险,估算资源、成本和项目进度时需要经验、有用的历史信息、足够的定量数据和作定量度量的勇气。估算的精确程度受到多方面的影响。首先,项目的复杂性对于增加软件计划的不确定性影响很大,复杂性越高,估算的风险就越高。复杂性是相对度量的,他与项目参加人员的经验有关,比如如果让搞MIS的项目组去搞操作系统设计显然增加了复杂性。其次,项目的规模对于估算的精确性和功效的影响也比较大,因为随着软件规模的扩大,软件相同元素之间的相互依赖、相互影响也迅速增加,因而估算时进行问题分解也会变得更加困难。还有项目的结构化程度也影响项目估算的风险,这里的结构性是指功能分解的简便性和处理信息的层次性,结构化 程度提高,进行精确估算的能力就提高,相应风险将减少。此外,历史信息的有效性也影响估算的风险,在对过去的项目进行这综合的软件度量之后,就可以借用来比较准确地进行估算。影响估算的因素远不止这些,比如用户需求的频繁变更给估算带来非常大的影响。 估算的依据是软件的范围,包括功能,性能、限制、接口和可靠性。在估算开始之前,应对软件的功能进行评价,并对其进行适当的细化以便提供更详细的细节。由于成本和进度的估算都与功能有关,因此常常采用功能分解的办法。性能的考虑主要包括处理和响应时间的需求。约束条件则标识外部硬件、可用存储和其他现有系统对软件的限制。 另外软件项目计划还要完成资源估算,包括人力资源、硬件资源和软件资源。在考虑各种软件开发资源时最重要的是人,必须考虑人员的技术水平、专业、人数以及在开发过程各阶段对各种人员的需要。硬件资源作为一种工具投入。软件资源包括各种帮助开发的软件工具,比如??数据库等。 工作两估算是最普遍使用的技术。经过功能分解之后,可以估计出每一个项目任务的分解都需要花费若干人年,总计之后就知道软件项目总体工作量。下面就是一个示意性工作量估算表。 表格 1 某软件系统工作量估算表(单位:人日) 任务 需求分析 设计 编码 测试 小计 用户定义 2 5 1 0.5 8.5 系统定义 2 5 1 0.5 8.5 广告预定 4 10 2 0.5 16.5 划版 5 20 10 0.5 35.5 制作和组版 3 5 3 1 12 总计 16 45 17 3 81 软件开发成本的估算 软件开发成本主要是指软件开发过程所花费的工作量及其相应的代价。它不同于其他物理产品的成本,它主要包括人的劳动的消耗,人的劳动的消耗所需的代价就是软件产品的开发成本。 开发成本的估算方法有很多种,象简单的代码行技术,任务分解技术,自动估计成本技术,专家判定技术,还有参数方程法,标准值法,以及COCOMO模型法。其中COCOMO (Constructive Cost Model)模型法是一种精确、易于使用的成本估算方法,该模型按其详细程度分为三级:基本COCOMO模型、中间COCOMO模型和详细COCOMO模型【3】。软件项目进度安排 软件项目的进度安排主要是考虑软件交付用户使用的这一段开发时间的安排。进度安排的准确程度可能比成本估计的准确程度更重要。软件产品可以靠重新定价或者靠大量的销售来弥补成本的增加,但进度安排的落空会导致市场机会的丧失或者用户不满意,而且也会导致成本的增加。因此在考虑进度安排时要把人员的工作量与花费的时间联系起来,合理分配工作量,利用进度安排的有效分析方法严密监视软件开发的进展情况,以使得软件开发的进度不致被拖延。 在进行进度安排时要考虑的一个主要问题是任务的并行性问题。当参加项目的人数不止一人是软件开发工作就会出现并行情况。因为并行任务是同时发生的所以进度计划表必须决定任务之间的从属关系,确定各个任务的先后次序和衔接,确定各个任务完成的持续时间。另外还应注意关键路径的任务,这样可以确定在进度安排中应保证的重点。常用的进度安排方法有两种,即甘特图(Gantt Chart)法和工程网络法。编辑本段软件项目的组织 参加软件开发的人员如何组织起来,使他们发挥最大的工作效率,对成功地完成软件项目极为重要。编辑本段组织结构 开发组织采用什么形式由软件项目的特点决定,同时也与参加人员的素质有关。通常有三种组织结构模式:按课题组划分的模式 :把开发人员按课题组成小组,小组成员自始至终承担课题的各项任务。该模式适用于规模不大的项目,并且要求小组成员在各方面有技术专长。按职能划分的模式 :把开发项目的软件人员按任务的工作阶段划分为若干工作小组。要开发的软件在每个专业小组完成阶段加工后沿工序流水线向下传递。这种流水作业的方式使用于多项目并行的情况。矩阵形模型 :这种模式是以上两种模式的复合。一方面按工作性质成立一些专门小组,另一方面每一个项目都有它的经理人员负责。每一个软件开发人员属于某一个专门小组,有参加某一个项目的工作。该模式的优点有一方面参加专门组的成员可以在组内交流在各个项目中取得的经验,这更有利于发挥专业人员的作用;另一方面,各个项目有专门的人员负责,有利于软件项目的完成。这种模式比较适合于规模比较大的项目。 组织结构的最后一层是程序设计小组的组织形式。通常认为程序设计工作是按独立的方式进行的,程序人员独立地完成任务。但这并不意味着相互之间没有联系。一般在人数比较少时组员之间的联系比较简单,但随着人数的增加,相互之间的联系变得负责起来。小组内部人员的组织形式对对生产率有着十分重要的影响。
软件产品实际规模小于估算,进度滞后怎么办
分析滞后原因,制定缓解措施
人事用人的办法
技术事用技术的办法
转载请注明出处51数据库 » 如何估算软件规模 软件规模估算有哪些方法