软件项目估算
- 格式:docx
- 大小:19.83 KB
- 文档页数:4
快速功能点度量方法估算软件项目规模基本过程是什么?快速功能点度量方法是由北京软件造价评估技术创新联盟依据国际ISO标准提出的一种软件规模度量方法,可采用预估功能点和估算功能点进行软件项目规模的估算和测量。
使用快速功能点度量方法估算软件项目规模的过程可分为6步。
第1步:确定应用类型。
A、新开发:识别所有新增功能。
B、增强开发:识别变化功能;包括新增、修改及删除。
C、已有系统计数:识别最终交付功能。
第2步:识别系统边界。
从用户视角出发,根据软件项目范围来明确系统边界,划分后的内、外部系统一般都可独立运行。
通常情况下,产品型研发组织按照产品架构划分居多,项目型研发组织按照项目划分居多。
第3步:识别功能点计数项。
功能点计数项分为数据功能和交易功能2大类,具体包括以下5个:a)内部逻辑文件(Internal Logical File,ILF,简称内部数据)软件内部需要维护(如增删改查)的数据。
b)外部接口文件(External Interface File,EIF,简称外部接口)在其它系统中维护但本软件需要调用的数据。
c)外部输入(External Input,EI)向软件输入数据或发送指令。
d)外部输出(External Output,EO)软件向使用者或其它系统输出的数据或发送的指令。
e)外部查询(External Query,EQ)EQ指使用软件进行的简单查询。
数据功能代表系统提供给用户的满足系统内部和外部数据需求的功能,分为内部逻辑文件(ILF)、外部接口文件(EIF)两类。
交易功能代表提供给用户的处理数据的功能,每一个交易功能都是一个完整的基本过程,一个基本过程应该是业务上的原子操作,并产生基本的业务价值,基本过程必然穿越系统边界,基本过程分为EI、EO和EQ类。
项目早期(如甲方预算)通常采用预估功能点方法,只需要识别ILF/EIF。
在项目中期(如技术方案、立项、项目计划)通常采用估算功能点方法,需要识别ILF/EIF/EI/EO/EQ。
软件功能点估算软件功能点估算功能点是指为了实现特定任务而需要开发的软件功能单位。
功能点估算是软件开发过程中的重要环节,它用于确定软件开发的工作量、时间和资源需求。
功能点估算的准确性对于项目的成功与否具有关键性的影响。
在进行功能点估算时,需要进行以下步骤:1. 确定软件的需求:首先,需要明确软件的功能和性能要求,包括系统的输入和输出,以及用户交互的方式。
2. 划分功能模块:将软件的功能划分为多个模块,每个模块包含一个或多个功能点。
3. 估算功能点数量:根据每个功能点的复杂度和难度,对每个功能点进行估算,以确定其所需的工作量和时间。
在估算功能点数量时,可以使用以下方法:1. 功能点计数法:按照定义的功能点类型和计算规则,将每个功能点计数,然后汇总得到总功能点数。
2. 功能点权重法:为不同类型的功能点赋予不同的权重,根据权重对每个功能点进行评估,然后得到总功能点数。
3. 基于经验的估算法:根据过去类似项目的经验,对每个功能点进行估算,然后汇总得到总功能点数。
对于一个较大的软件项目,功能点数量可能会很多,估算的准确性会受到多种因素的影响,包括需求的明确性、开发团队的经验和技能、技术平台的复杂度等。
因此,在进行功能点估算时,需要充分考虑这些因素,并采用合适的方法进行估算。
功能点估算的结果可以用于确定项目的进度计划、资源配置和开发成本,同时也可以用于与客户进行沟通和协商。
如果功能点估算不准确,可能会导致项目延期、资源不足和客户不满等问题,因此,准确估算功能点数量对于项目的成功至关重要。
总之,功能点估算是软件开发过程中的重要环节,它用于确定软件开发的工作量、时间和资源需求。
在进行功能点估算时,需要充分考虑需求的明确性、开发团队的经验和技能、技术平台的复杂度等因素,并采用合适的方法进行估算。
只有通过准确的功能点估算,才能为项目的成功奠定坚实的基础。
软件工程领域中的成本估算与质量控制分析随着信息技术的快速发展,软件工程已经成为企业发展的重要组成部分。
软件产品的质量和成本事关企业的生存和发展,因此,软件工程领域中的成本估算和质量控制成为了许多企业关注的焦点。
一、成本估算软件工程中的成本估算是指在软件开发过程中,对软件项目成本进行估算和预算。
成本估算是软件项目管理的基础,可以帮助企业在开发过程中控制成本,避免不必要的浪费。
1. 成本估算方法常见的成本估算方法包括专家判断法、相似度估算法、自下而上估算法和自上而下估算法等。
专家判断法是指通过专家对项目进行评估,结合经验和相关资料,对项目成本进行估算。
这种方法可以提高估算的精度和可靠性,但可能存在主观因素和误差。
相似度估算法是指通过比较新项目与之前类似项目的相似度,来进行成本估算。
这种方法的优点是快速、简单、适用范围广,但与实际情况可能存在较大误差。
自下而上估算法是指基于每个任务的成本进行估算,最后得到总成本。
这种方法适用于任务比较明确、相对独立的项目,可以提高成本估算的准确性。
自上而下估算法是指通过将整个项目拆分为几个阶段,对每个阶段的成本进行估算,最终得到总成本。
这种方法适用于项目比较复杂、阶段比较清晰的情况,可以提高成本估算的精确性。
2. 成本估算的关键因素软件成本估算的关键因素包括项目范围、时间、技术、人员、设备等。
在进行成本估算时,需要考虑这些因素对成本的影响,并对其进行合理的调整和设计。
二、质量控制软件质量控制是指在软件开发过程中,通过对软件质量的管理和控制,保证软件的质量符合要求。
1. 质量控制方法常见的软件质量控制方法包括设计规范、代码检查、单元测试、集成测试、系统测试等。
其中,设计规范和代码检查主要是在开发过程中进行质量控制,单元测试、集成测试和系统测试则是在软件开发完成后进行质量控制。
设计规范是指对软件设计过程中的规范和标准进行约束和管理,以确保设计过程符合规范。
代码检查是指对代码的规范、格式和逻辑等进行检查,以便更加符合算法完整性。
软件维护费用估算方案(参考示例)1. 项目背景软件维护是确保软件系统持续运行和正常运作的重要环节。
在估算软件维护费用之前,需要了解项目的背景和具体要求。
2. 费用估算方法软件维护费用的估算可以采用以下方法:2.1 工作量估算法根据软件维护的工作量来进行费用的估算。
具体步骤包括:- 分析软件系统的规模和复杂度- 根据系统的规模和复杂度确定每个维护任务所需的时间- 计算所有维护任务所需的总时间- 根据开发人员的工作时间和单位工时费用来计算维护费用2.2 功能点估算法根据功能点的数量来进行费用的估算。
具体步骤包括:- 分析软件系统的功能点数量- 根据功能点数量和维护任务的平均工时来计算维护费用2.3 综合估算法综合利用工作量估算法和功能点估算法进行费用的估算。
可以根据实际情况选择合适的比例来计算维护费用。
3. 成本因素在估算软件维护费用时,需要考虑以下成本因素:3.1 人力资源成本包括开发人员的工资、福利和培训成本等。
3.2 硬件和设备成本包括服务器、计算机等硬件设备的购置和维护费用。
3.3 软件工具和许可证成本包括用于软件维护的工具和许可证的购买和更新费用。
3.4 外包成本如果选择外包软件维护工作,需要考虑外包合作伙伴的费用。
4. 费用估算报告根据以上方法和成本因素,编写一份详细的费用估算报告,报告中应包含以下内容:- 软件维护费用的估算方法和依据- 软件维护费用的具体数值- 费用估算的参考数据来源- 费用估算的不确定性和风险5. 结论软件维护费用的估算是一个复杂的过程,需要综合考虑多个因素。
本文提供了软件维护费用估算的参考示例,希望能为您的项目提供一些帮助。
根据项目实际情况,可以选择适合的估算方法和成本因素,进行费用的估算。
功能点估算方法1概述 (1)1.1编写目的 (1)1.2适用范围 (1)1.3术语定义 (1)1.4功能点定义与分类 (2)2功能点估算方法 (2)2.1估算流程 (2)2.1.1项目前期 (3)2.1.2需求明确 (4)2.1.3需求变更 (4)2.2调整前功能点计算(UFC) (5)2.2.1复杂度矩阵(项目前期) (5)2.2.2复杂度矩阵(需求明确、需求变更).................. .62.3调整系数 (7)2.4调整后功能点计算(FP) (10)3实例说明 (10)3.1项目前期 (10)3.2需求明确 (13)3.3需求变更 (19)1概述1.1编写目的为规范软件项目规模的度量方法,结合国际先进的估算方法及公司业务运营模式,制定基于软件功能的度量估算方法,为度量项目规模和项目工作量提供指导依据。
1.2适用范本方法适用于公司的研发类项目,项目应覆盖软件开发全过程(包括项目准备阶段、需求阶段、设计阶段、编码与测试、交付部署、运行维护各个阶段工作,1.3术语定义1.4功能点定义与分类功能点(Function Points)是响应客户、其他应用请求或自行触发而进行处理并输出结果的一个最小功能单元。
功能估算过程中,将软件的功能分为以下4类:1)接口:是指在其他系统中维护但本系统需要调用的数据。
包括:调用外部接口和提供外部系统调用的接口。
2)数据处理:是指来自于系统外部的数据输入、控制信息或事务数据输入,并对输入数据进行逻辑处理。
包括:新增、修改、删除、流程流转和发布。
3)统计:是指对数据经过组合、计算、统计分析后得出的数据集合,并由程序内部输出到外部。
包括:定时统计和实时统计。
4)查询:是一个输入输出的组合过程,向应用程序边界外发送数据基本处理的过程。
包括:单表查询和多表联合查询。
2功能点估算方法2.1估算流程功能点估算方法,是从软件项目的功能需求角度来评估项目规模,功能点估算流程如下图所示。
软件项目估算指南
1.近似估算方法
-模糊估算:根据对项目的了解和经验,对项目的工作量、周期和资
源需求进行粗略的估算。
-相似估算:参考类似的已完成项目或已有的软件产品,对新项目的
工作量进行估算。
-参数估算:根据项目的规模、复杂度等关键参数,使用统计模型或
经验公式来估算工作量和成本。
2.功能点估算方法
-功能点分析法:将软件的功能模块进行分类和评估,根据功能点的
数量和复杂度来估算项目的工作量和成本。
- Use Case点估算法:根据软件系统的用例来估算项目的工作量和
成本,将每个用例分解为具体的任务,并评估每个任务的复杂度和工作量。
3.任务估算方法
-专家判断法:请专家根据对项目需求和技术的了解,对每个任务的
工作量进行估算。
-冲刺估算法:将整个开发期间划分为多个冲刺,通过团队的共识来
估算每个冲刺的工作量。
4.其他估算方法
-时间盒法:将项目划分为多个时间盒,每个时间盒内完成一些任务,通过时间盒的实际工作量来估算整个项目的工作量和成本。
-增量估算法:根据每个增量的工作量,来估算整个项目的工作量和成本。
在进行软件项目估算时,还需要考虑一些与项目相关的特定因素,如技术难度、人员素质、软件开发环境等。
同时,利用估算工具和模型也可以提高估算的准确性。
总之,软件项目估算是软件开发过程中非常重要的环节,可以帮助项目管理者在项目的起始阶段就能做出准确和可行的规划和决策。
各种估算方法和指南可以帮助项目管理者根据不同的情况和项目特点选择合适的估算方法,以及提高估算的准确性和可靠性。
软件开发成本估算与工作量计算例题【引言】在软件开发过程中,成本估算和工作量计算是项目计划和管理的关键环节。
准确的成本估算和工作量计算有助于为项目提供合理的预算和人力资源分配。
本文将介绍软件开发成本估算与工作量计算的方法及实例分析。
【软件开发成本估算方法】1.类比估算:根据历史类似项目的成本数据,对新项目进行预测。
类比估算适用于具有相似功能和规模的项目。
2.参数估算:通过对项目的工作量、工时等参数进行量化,计算项目成本。
适用于工作量可量化、有规律的项目。
3.专家评审:邀请具有相关经验的专家对项目成本进行评估。
适用于复杂、不确定性较高的项目。
4.逐项估算:逐一分析项目中的各个任务,估算其成本并累加。
适用于详细规划的项目。
【工作量计算方法】1.工时法:根据项目成员的工时计算工作量,适用于有明确任务分工的项目。
2.帕累托分析法:分析项目任务的重要性,优先分配关键任务,减少工作量。
3.类比法:参照历史类似项目的工时数据,对新项目的工作量进行预测。
【实例分析】以一个简单的在线教育平台项目为例。
项目包括前端开发、后端开发、数据库建设和测试四个部分。
根据项目规模和团队成员的经验,采用类比法和工时法进行成本估算和工作量计算。
1.成本估算:类比估算:参照历史类似项目,预计在线教育平台项目成本为50万元。
工时法:估算各个任务所需工时,累计得出项目总工时,再根据团队平均工时费用计算成本。
2.工作量计算:类比法:参照历史类似项目,预计在线教育平台项目工作量为1000人天。
工时法:根据项目成员分配任务,计算各任务工时,累计得出项目总工作量。
【结论】准确地进行软件开发成本估算和工作量计算,有助于项目顺利进行。
在实际操作中,可以根据项目特点和团队经验,灵活运用多种方法进行成本估算和工作量计算。
项目估算指南Version 1.1文档名称:CMMI5-项目估算指南-V1.1.doc修订历史记录目录1 目的 (4)2 围 (4)3 术语、缩写词 (4)4 估算过程 (4)4.1简要说明 (4)4.2流程图 (5)4.2.1自顶向下的方法 (5)4.2.2自底向上的方法 (6)4.3估算规程 (6)4.4裁剪指南 (7)5 估算方法 (7)5.1UCP估算算法 (7)5.1.1估算UUCP (8)5.1.2估算TCF调整因子 (8)5.1.3估算EF调整因子 (9)5.1.4估算UCP (10)5.1.5估算工作量 (10)5.1.6估算进度 (10)5.1.7估算成本 (11)6 附录 (11)6.1生产率数据来源 (11)6.2进度估算数据来源 (11)项目估算指南1目的本文用于估算软件项目的规模、进度、工作量、成本,以指导项目作出合理的估算。
2围本文件包括软件项目估算的各个方面,包括规模、进度、工作量、成本,并包括其在项目的中的分布估算。
本文件适用于公司所有项目。
3术语、缩写词UCP Use Case Point,用例点4估算过程4.1简要说明准确的估算是最大可能加快开发速度的基础,没有准确的进度估算,再有效的进度计划也无从谈起。
不切实际的估算、不正确的期望是带来项目问题的主要原因。
估算是一个不断改进的过程,只有当详细地理解了每个功能,你才有可能准确估算出软件开发的进度和成本。
因此,能够提前做出的决策越多,估算的精确度就越高。
准确的估算可以更好的控制项目的规模、进度、成本。
工作量和进度估算通常在提交建议书及制定项目计划时进行,在项目实施过程中,也可能要对工作量和进度重新估计。
对于软件规模的估算主要有三种方法:代码行,功能点,用例点。
本公司现在主要使用用例点方法。
对于工作量的估计,主要有两种方法:⏹自顶向下的方法(Top-down approach),用一个简单的方程从估计的规模求出估计的总工作量,各阶段的工作量可以根据它们占总工作量的百分比而得到。
软件测试成本估算是软件项目管理中非常重要的一部分。
以下是一些常用的软件测试成本估算方法:1. **工作量估算法**:这种方法是最简单和最常用的软件测试成本估算方法之一。
它根据测试人员在测试期间需要执行的任务数量和所需时间来计算测试成本。
该方法可以通过根据测试任务的难易程度、复杂性、风险等因素对任务进行分类,从而更加准确地估算测试成本。
2. **历史数据法**:这种方法基于过去的测试经验和历史数据来估算软件测试成本。
它可以使用以前完成的类似项目的测试成本数据,以及过去测试周期所花费的工时和资源数据来预测测试成本。
3. **比例法**:该方法基于软件开发成本的比例来估算软件测试成本。
它通常将软件测试成本估算为软件开发成本的15%~20%左右,但具体比例会因项目规模、复杂度等而异。
4. **专家判断法**:这种方法基于测试专家的经验和判断来估算软件测试成本。
测试专家可以根据项目的具体情况,考虑各种因素并做出预测。
5. **三点估算法**:该方法通常使用项目经理、测试人员和质量保证人员来进行估算。
它通过估算最乐观、最悲观和最可能情况下的测试成本,并计算出平均值来预测测试成本。
当进行软件测试成本估算时,可以考虑以下详细因素:1. **测试类型和范围**:不同类型的测试(如单元测试、集成测试、系统测试、验收测试等)对应不同的成本。
确定所需执行的测试类型和其覆盖范围,以便估算所需资源和时间。
2. **测试工作量**:根据测试用例的数量、复杂性和优先级等因素,估计测试所需的工作量。
这可以基于过去的经验,也可以通过与团队成员讨论来获得专家意见。
3. **测试环境**:考虑需要搭建和维护的测试环境,包括硬件设备、操作系统、网络配置和测试工具等。
这些因素可能会增加测试成本。
4. **测试工具和资源**:确定所需的测试工具和资源,如自动化测试工具、性能测试工具和测试人员等。
考虑到工具和资源的购买、培训和维护成本。
5. **人员工时**:估算测试人员的工时和工资,并考虑项目周期内每个阶段所需的测试人员数量。
软件工程估算方案一、引言软件开发是一项复杂的工程,需要合理的规划和估算。
在软件工程中,估算是一个非常重要的环节,它直接影响到项目的成本和进度。
因此,合理的估算方案对软件开发项目的成功至关重要。
本文将介绍一种软件工程估算方案,以期为软件开发项目的估算提供一些参考。
二、估算的重要性估算是软件开发项目管理的重要一环。
它能够帮助项目管理者对项目的成本和进度进行合理的规划和控制。
合理的估算能够有效地帮助项目团队避免一些常见的风险和问题,比如资源不足、进度延误等。
因此,估算是软件开发项目成功的关键所在。
通常来讲,软件工程估算可以分为两种类型:粗略估算和详细估算。
粗略估算通常是在项目初期进行的估算,目的是对项目的整体情况进行一个预估。
而详细估算则是在项目的后期进行的估算,目的是对项目的各个方面进行详细的估算。
在进行估算时,项目管理者需要充分考虑项目的规模、复杂度、技术难度、人员素质等各个方面的因素,以确保估算的准确性和可靠性。
三、估算的方法针对软件工程估算,一般可以采用以下几种方法:1. 基于历史数据的估算:这种方法是根据过往项目的数据和经验进行估算,通过分析历史项目的情况,可以得出一些规律和趋势,从而对新项目的成本和进度进行估算。
2. 专家评估法:这种方法是依靠专家团队对项目的规模、复杂度、技术难度等方面进行评估,然后结合历史数据进行综合估算。
3. 参数化估算法:这种方法是根据项目的规模、复杂度、技术难度等因素,建立一些数学模型,然后通过对这些模型进行参数化调整,来对项目的成本和进度进行估算。
四、估算的步骤在进行软件工程估算时,一般可以按照以下步骤进行:1. 确定项目的规模和复杂度:首先需要对项目的规模和复杂度进行一个清晰的定义和界定,这对估算的准确性非常重要。
2. 收集历史数据和经验:通过分析过往项目的数据和经验,可以得出一些规律和趋势,从而为新项目的估算提供一些参考依据。
3. 进行专家评估:可以组织专家团队对项目的规模、复杂度、技术难度等方面进行评估,然后结合历史数据进行综合估算。
软件开发⼯作量的估算⽅法在讨论软件⼯作量估算⽅法前,⾸先要清楚什么事软件⼯作量估算。
我理解的⼯作量估算,就是估算软件项⽬所耗费的资源数,这个资源包含⼈⼒和时间,⼀般⽤⼈天、⼈⽉的形式来衡量。
(⽽软件的成本=耗费的资源*资源的单价)。
⽽且我个⼈觉得软件⼯作量与软件规模是不等的,规模是指⼤⼩是固定的,⽽⼀个软件开发的⼯作量与许多因素有关,如公司的效率啊,参与开发⼈员的编程⽔平等。
从估算单位⾓度来说,⼯作量估算的⽅法分为两类:直接估算法和间接估算法。
直接法指基于WBS的⼯作量估算⽅法,直接估算出⼈天⼯作量;间接估算法是先估算软件规模,再转换成⼈天⼯作量。
根据估算⾓度的不同,间接法⼜分为基于代码⾏(SLOC)的⼯作量估算⽅法和基于功能点(FP)的⼯作量估算⽅法。
1、基于WBS的⼯作量估算基于WBS的⼯作量估算⽅法,是最常见的⼀种估算⽅法,也是⼚商最常⽤的。
基于WBS的⼯作量的估算⽅法,⼜称为由底向上法(⾃下⽽上法),通常的估算步骤如下:1)寻找类似的历史项⽬,进⾏项⽬的类⽐分析,根据历史项⽬的⼯作量凭经验估计本项⽬的总⼯作量;2)进⾏WBS分解,⼒所能及地将整个项⽬的任务进⾏分解;3)参考类似项⽬的数据,采⽤类⽐法或专家法,估计WBS中每类活动的⼯作量;4)汇总得到项⽬的总⼯作量;5)与第1)步的结果进⾏印证分析,根据分析结果,确定估计结果。
2、基于代码⾏的⼯作量估算基于代码⾏(SLOC)的⼯作量估算,是从开发者的技术⾓度出发来度量软件。
代码⾏数是软件开发者最早进⾏规模测量的主要⽅法。
进⾏⼯作量估算时,先采⽤WBS法、类⽐法等统计出软件项⽬的代码⾏数,然后将代码⾏数转换为⼈天数。
其中,将代码⾏(SLOC)转换成⼈天数主要有2种⽅法。
(1)⽣产率⽅法:要求有开发商每⼈天开发的代码⾏数,估算出代码⾏数后,直接利⽤代码⾏数÷SLOC/⼈天,即得⼯作量⼈天数。
(2)参数模型法:利⽤模型,将代码⾏数转换成⼈天数。
原理Function Point Estimation 功能点估算是一种用来估算项目大小的技术。
功能点是对软件功能和规模的间接定量测量,它基于客观的外部应用接口和主观的内部应用复杂度以及总体的性能特征。
功能点法和专家法估算最大的不同点在于对估算规模的细化的定量分析上面.我们在用专家法估算的时候往往会直接去估算工作量,或在规模的估算中掺杂了生产率的数据,导致估算数据出现问题.专家法估算虽然有时候也很准确,但不能提升为组织级可以参考和借鉴的同样规则.其实专家法的估算要做准确也是遵循了功能点法估算的思路,在考虑一个软件功能究竟涉及到哪些操作,涉及到多少数据文件的存在,每个操作需要访问哪些数据文件等相关问题.只是这些想法停留在专家头脑里面而没有量化出来.我们的预测,分析和决策能力要提升,就必须对我们的经验进行模型化和定量分析.功能点法正好就起到了这个作用.其实功能点发也有不完善的地方,这可以根据我们项目实际的使用情况去不断的改进.功能点发进行估算的时候具体过程是:1.对估算功能单元的类型进行识别2.计算每种类型的复杂度.3.计算总体的调整前的功能点数4.根据调整因子对功能点数进行调整功能点估算中有5种信息域需要进行描述:其中事务类的有EI,EO和EQ,数据存储类有ILF和EIF.外部输入(EI):通过界面等的输入,插入更新等操作都是典型外部输入外部输出(EO):仅仅输出,入导出,报表,打印等输出外部查询(EQ):先要输入数据,在根据输入数据计算输出,如查询内部逻辑文件(ILF):可以理解为业务对象,可能对应多个数据表外部接口文件(EIF):其它应用提供的接口数据A.对事务类功能点的估算:对事务类的功能点估算需要确定DET和FTR两个指标:DET:可以理解为界面的录入具体数据项,按钮也要作为数据项FTR:事务功能需要操作的数据文件的数目对EI的复杂度的计算:对EO和EQ复杂度的计算:B.对数据存储类功能点的估算对数据存储类功能点的估算需要确定DET和RET两个指标DET:具体数据存储文件的数据项的数目RET:数据文件是复合文件时候关联或引用的个数.如订单数据文件由于存在订单头和明细关联引用,RET应该算2.对ILF和EIF复杂度的计算:信息域数据估算完成后可以开始考虑调整因子:调整因子是一种补偿机制,即通过五个信息域和复杂度都还没有办法考虑到的因素就应该做为调整因子.如同样一个软件系统一种是系统要支持分布式和自动更新,而另一种是不考虑这种需求,如果不考虑调整因子这两者的规模是一样的,但很明细第一种情况复杂度和规模都会更大些.有了调整因子后最终可以得到调整后的功能点数:AFP(调整后功能点)= UFP (未调整功能点数目)* AF (影响因子)实例需求:实现一个订单的录入,更新,删除和查询功能.订单信息是指一个用户订购的公司产品的情况.其中订单头包含了具体的类型,订购时间,发运地址,客户名称等信息.订单明细包含了订购的具体产品的数量的情况.假设:1.用户表和产品数据表已经建立,本次订单功能开发仅仅是引用和取这些数据.2.暂不考虑其它特殊业务逻辑和权限功能界面情况:STEP1:计算出EI,EO和EQ事务功能举例:对于订单保存功能,项目自我约定对于组合框DET算2,对于GRID的DET算3.其余界面控件DET都算1,所以可以数出DET数目为15.再来考虑FTR数目,这里需要操作订单数据文件,客户数据文件和产品数据文件FTR数应该算3.STEP2:计算出ILF和EIF事务功能1.这里订单文件只算一个DET,但后台数据表会涉及到两个数据表.由于订单头和订单明细有关联关系,所以这里RET取2.2.客户文件和产品文件虽然不是外部系统文件,但本次开发的功能并不需要再去设计该数据文件和数据表,所以这里把其作为EIF来处理.STEP3:根据对应表计算各个信息域复杂度的情况.最终的估算情况如下:最终的未调整的功能点数目为:61调整因子在这里不再举例说明了,如项目调整因子为1.08,则最终功能点数为:AFP = 61*1.08 = 66.还有些没有细化考虑的,如具体的DET数量的计算规则等,还请指正.。
软件项目估算
学院:数学与计算机科学学院
专业:计算机科学与技术(软件工程方向)
班级:软件12
学号:*************
姓名:***
时间:2014年5月10日
软件项目估算是软件项目管理的核心所在,通过估算才能得出软件项目的计划,并成为软件项目控制的依据。
一个成功的软件项目首先要有一个好的起点,也就是一个合理的项目计划,而一个好的项目计划,离不开一个准确、可信、客观的项目估算。
但是因为软件本身的复杂性、历史经验的可重复性、估算工具的缺乏以及一些人为错误,都会导致软件项目的估算往往和实际情况相差甚远。
软件项目估算的目的在于为软件项目制定一个预算,确定项目目标是否能够实现,从而让项目在可控的状态下达成这个目标,同时为后续的软件质量提供对比依据,从中找出项目中存在的问题和好的经验,促进企业的持续改进。
对项目经理来说,合理、有效的项目估算能够让自己在工作中掌握主动权,否则在工作中只能是疲于奔命。
软件项目估算主要包括规模估算、工作量估算和成本估算。
软件项目估算一般分为两种应用场景:一是招投标的时候用来估价、报价;二是用来安排进度计划和指导项目具体工作的分配。
前者是为了确定承接项目签合同进行的估算,后者是在项目确定后进一步的细化估算,往往前者的结果可能会影响项目的执行。
一个完全准确地估算基本是不可能的,这主要在于估算本身存在很多困难。
进行软件估算的困难有些是软件本身所固有的,特别是软件的复杂性和不可见性。
在估算一个软件项目时,软件项目经理需要明确以下三点:一是软件本身是非常困难的,但是估算又是必须的。
二是只有准确地估算软件的功能,才能准确地估算出软件的成本,并制定出合理的进度计划。
三是估算终究是估算,一个准确的与实际情况一模一样的估算是不可能的。
软件的估算有主观和客观两种估算方法。
主观的估算方法可以通过召集项目团队成员,或者邀请各方面的专家,共同对某个项目的属性进行评估,参与评估的每个人都要单独进行估算,如果发现大家对某个项目属性估算的结果存在较大偏差,那么就需要做进一步的讨论,直到取得共识为止,对个别特殊属性进行主观估算时,一定要有直接干系人的参与。
客观的估算方法是利用公司提供的各种度量数据进行估算。
软件估算要有一个时机,不能过早也不能过迟,过早的估算使估算的结果可能与实际的结果相差很远,项目快结束时进行估算,虽然误差不会很大,但是此时似乎又不需要估算了。
尽管估算是非常困难的,但是项目估算在项目的不同阶段都在某一个可以预测的范围内,估算最终是收敛的。
软件项目的估算不是一个一劳永逸的活动,它是随着项目进展不断细化的过程。
软件开发的每一个阶段都可能最终影响到项目成本与进度,一般需要从可行性研究、需求说明、系统设计、系统实现、系统运行五个阶段进行估算。
可行性研究阶段的估算是为软件组织提供基本的信息,已决定项目对组织是否有利;需求说明阶段的估算有助于组织在进入产品开发之前再次权衡产品的可行性;系统设计阶段的估算主要考虑的是如何将设计好的系统开发出来以及有没有被忽视的问题;系统实现阶段的估算主要是对原有的估算进行调整;系统运行阶段的估算是对估算过程的评价,用实际的消耗和各个阶段的估算值进行比较,总结估算工作中哪些方面需要提高,为向项目提供经验。
软件项目估算的步骤:确定软件项目范围、确定完成软件开发所需的资源(包括人力资源、可复用软件资源、环境资源)、估算工作量、估算成本。
常见的软件规模估算方法主要包括:代码行法、功能点法、自下而上法、类比法、专家判断法、参数估算法、简单估算法等。
代码行是常用的度量软件规模的一种方法,是对软件产品的源代码的行数进
行测量。
现在的一般规则是计算物理行数,不计算空行,不计算注释。
对于其他选项,一般为计算源文件根目录下的所有文件。
所以代码行指的是所有的可执行的源代码行数,包括可交付的工作控制语言语句、数据定义、数据类型声明、等价声明、输入/输出的格式声明等。
但是这种方法也存在许多问题:1、在需求、计划、设计阶段因为本身没有代码行,需要靠估算来解决。
2、在满足客户的要求以及反映进度方面的能力差强人意,对于管理者意义不大。
3、可视化编程工具的大量采用以及模板库、类库的广泛采用,在程序的结果中有大量自动生成的代码或者复杂的自动配置脚本或资源文件设置。
4、对于不同的编程语言来说,代码行也缺乏可信转换方式。
但是由于它容易使用、非常直观、操作成本低,因此仍然是规模估算中的一种可推荐的方法。
功能点分析法是重要的,也是有效的软件规模估算方法,它可以在项目早期就对项目进行测量,并在开发过程中不断地更新数据,从而实现一种持续一致的管理。
功能点分析法是从用户的角度来估算软件规模,因为这种方法与开发语言无关,而和系统的功能相关。
此方法是在需求分析阶段基于系统功能的一种规模估算方法,是基于应用软件的外部、内部特性以及软件性能的一种间接的规模估算。
功能点分析法是从软件用户的角度来评估一个软件系统的功能-,它将软件的功能分为5个基本要素。
其中两个表示终端用户的数据需求:内部逻辑文件和外部接口文件;另外三个表示用户对数据的获取处理的事务功能,即人机交互事务类型的功能点:用户输入、用户输出和用户查询。
内部逻辑文件是指一组以用户角度识别的、在应用程序边界内且由用户输入来维护的逻辑相关数据或控制信息。
外部接口文件是指一组在应用程序边界内被查询,但在其他应用程序中被维护的、以用户角度来识别的、逻辑上相关的数据。
用户输入是来自软件外部的数据输入,可以是控制信息,也可以是事务数据输入。
用户输出是“经过处理”的数据,由程序内部输出到外部。
用户查询是向应用程序边界外发生数据基本处理的过程,是一个输入输出的组合过程,从一个或多个ILF、EIF中取出数据输出到程序外部。
自上而下法的基础来自于范围定义时进行的WBS分解。
首先对WBS中项目工作包进行详细的规模、成本估算,然后按照WBS的层次结构将结果累加起来得出项目总规模或成本。
用这种方法进行估算最为准确,但是这种方法适用于WBS分解足够准确的情况,否则估算的结果肯定有误差,而且这种方法不适用于项目初期的估算。
类比法适合评估一些与历史项目在应用领域、环境和复杂的方面相似的项目,通过新项目与历史项目的比较得到规模估计。
类比法估算结果的精确度取决于历史项目数据的完整性和准确度。
类比法也可分为自顶向下类比法和自底向上类比法,前者将估算项目的总体参数与类似项目进行直接比较,从项目的整体出发进行类推;后者比较类似的项目工作单元,然后通过工作单元的累加得出项目的估算结果。
类比法简单易行,适合项目初期信息不足时使用。
专家判断法是通过专家对项目成本做出估算。
这种方法的精确度取决于专家对估算项目的定性参数的了解和经验。
德尔菲法是最流行的专家评估技术,在没有历史数据的情况下,这种方法适用于评定过去与将来、新技术与特定程序之间的差别。
软件项目成本估算包括综合估算法和简单估算法。
软件项目的成本分为直接成本和间接成本。
直接成本是指直接和本项目相关的成本,主要包括项目的开发成本、管理成本和质量成本。
具体来说如人员工资、差旅费、通讯费、硬件、工
具、招待费等。
综合的成本估算方法是参数法和自上而下的结合,步骤如下:(1)根据软件项目的功能创建WBS,并估算每个工作包的工作量(人月)Qi。
(2)根据规模,直接估算每个工作包的直接成本:Ei=Qi*人力成本参数。
从而整个项目的直接成本=E1+……+En。
(3)根据项目的直接成本估算项目的间接成本:间接成本=直接成本*间接成本系数。
(4)估算总成本:总成本=直接成本+间接成本。
(5)估算项目报价:项目报价=项目总成本+风险利润=项目总成本*(1+利润系数)。
基于工作量的简单成本估算法的公式是:成本=工作量*单位人员平均工资*成本系数。
基于系统功能的简单成本估算法的步骤如下:
(1)整理出项目功能列表。
(2)将功能列表进行归类,整理成模块。
(3)按照模块估算代码量和工作量。
(4)估算出功能模块成本。
(5)根据用户的需求和实现方式,估算开发系数。
(6)估算成本:功能模块单价*功能模块数。