您好,欢迎访问三七文档
软件项目估算学院:数学与计算机科学学院专业:计算机科学与技术(软件工程方向)班级:软件12学号:1060612014049姓名:邓茂记时间: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)估算成本:功能模块单价*功能模块数。
本文标题:软件项目估算
链接地址:https://www.777doc.com/doc-1992079 .html