软件项目管理 第4章 项目估算.

Slides:



Advertisements
Similar presentations
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
Advertisements

2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
上海交通大学计算机系 概述  软件的概念  软件特征  什么是项目  什么是项目管理,项目管理的特征,涉及的知识 域  项目阶段,项目生命周期  软件项目及其特点,软件项目的阶段  软件项目的目标与人员  常见错误.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
绩效考评表格设计 班级:15服务4班 姓名:杨冬茜.
初级会计电算化 (用友T3) 制作人:张爱红.
软件工程学 中国科学技术大学网络学院.
会计学专业基础课堂之 基础会计(初级会计) 安徽财经大学会计学院.
定积分的换元法 和分部积分法 换元公式 分部积分公式 小结 1/24.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
2-7、函数的微分 教学要求 教学要点.
§5 微分及其应用 一、微分的概念 实例:正方形金属薄片受热后面积的改变量..
第一章 商品 第一节 价值创造 第二节 价值量 第三节 价值函数及其性质 第四节 商品经济的基本矛盾与利己利他经济人假设.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
全国计算机等级考试 二级基础知识 第二章 程序设计基础.
计算机基础知识 丁家营镇九年制学校 徐中先.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Harvard ManageMentor®
SVN的基本概念 柳峰
面向对象建模技术 软件工程系 林 琳.
R in Enterprise Environment 企业环境中的R
SOA – Experiment 3: Web Services Composition Challenge
项目管理 Project Management
走进编程 程序的顺序结构(二).
辅导课程六.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
Visual Studio Team System 简介
软件项目管理 项目管理过程 软件生产率和质量的度量 软件项目的估算 软件项目计划的目标 软件成本和工作量估算 进度安排 软件项目的组织与计划
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
§2 求导法则 2.1 求导数的四则运算法则 下面分三部分加以证明, 并同时给出相应的推论和例题 .
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
圖解專案管理實務與案例演練 第 9 章 成本預估 2009年1月27日 情報技術研究中心
Online job scheduling in Distributed Machine Learning Clusters
第二章 Java语言基础.
第十章 方差分析.
数据挖掘工具性能比较.
1085至1125年间的官员地域分布与社会关系 1.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
程序设计工具实习 Software Program Tool
第一章 函数与极限.
新一代安全网上银行 小组成员:杨志明 王晶 任毅 刘建中 关昊 刘超.
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
项目二:HTML语言基础.
实体描述呈现方法的研究 实验评估 2019/5/1.
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第4章 Excel电子表格制作软件 4.4 函数(一).
Harvard ManageMentor®
PROJECT NAME 项目名称 张三 安徽xx文化传播有限公司.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
系统权限管理概要 用 户 访问权限 对 象 用户和组 全局权限 类别 每个用户可以属于多个用户组 用户组可以与AD安全组同步 系统预置用户组
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
1.非线性规划模型 2.非线性规划的Matlab形式
第七、八次实验要求.
OpenStack vs CloudStack
导 言 经济学的基本问题 经济学的基本研究方法 需求和供给.
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
第二节 C语言的特点.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
1.概述 软件的概念 软件特征 什么是项目 什么是项目管理,项目管理的特征,涉及的知识域 项目阶段,项目生命周期
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
第十七讲 密码执行(1).
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
第六讲 酒店客房管理系统(二) 教育部“十二五”职业教育国家规划教材
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
IT 方法 INTOSAI IT 审计培训.
Presentation transcript:

软件项目管理 第4章 项目估算

人月估算

人月神话? 经常我们谈“人力资源”,工程师是人力资源,但是否能被看作一般资源,如同“软硬件资源”?

第4章 项目估算 4.1 项目估算的挑战 4.2 项目估算的基本内容 4.3 基本估算方法 4.4 软件规模估算 4.5 工作量估算 4.6 资源估算 4.7 工期估算和安排 4.8 成本估算

4.1项目估算的挑战 项目的复杂性、不确定性是项目估算的挑战 对于一个陌生的领域,这种复杂性和不确定性会被放大。 软件规模越大,复杂性越高、不确定性就越大。 对当前项目的理解程度,缺乏理解,估算甚至无从下手 是否有足够历史数据,没有历史数据,就缺乏参照物

接受挑战 2300多年前,亚里斯多德曾说过,“应该满足于事物的本性所能容许的精确度,当只能近似于真理时,不要去寻求绝对的准确……”。 项目管理者不应该被估算所困扰,勇于面对软件项目估算的挑战,克服其中的困难,做出一个相对的有价值的估算

第4章 项目估算 4.2 项目估算的基本内容 4.1 项目估算的挑战 4.3 基本估算方法 4.4 软件规模估算 4.5 工作量估算 4.6 资源估算 4.7 工期估算和安排 4.8 成本估算

4.2 项目估算的基本内容 规模估算 (size estimation):如代码行数、功能点数、对象点或特征点等 工作量估算(workload ~):任务分解并结合人力资源水平来估算 进度估算(schedule ~):通过工作量估算、有效资源分配等对项目进度给出正确的评估。 风险估算(risk ~):一般通过 风险发生的“概率和所带来的损失”来评估风险。 其他估算,如需求稳定因子、资源利用效率、文档复审水平等

估算的基本内容及其关系 规模估算 工作量估算 成本估算 进度估算 资源估算 人力成本 生产力数据

软件估算全貌

第4章 项目估算 4.3 基本估算方法 4.1 项目估算的挑战 4.2 项目估算的基本内容 4.4 软件规模估算 4.5 工作量估算 4.6 资源估算 4.7 工期估算和安排 4.8 成本估算

4.3 基本估算方法 1)分解方法,采用“分而治之”的策略,对软件项目进行分解,再采用逐步求精的方式进行估算,最后通过累加获得整体的估算结果。 2)算术模型,通过估算模型来产生估算。 3)专家判断或经验法,如德尔菲法(Delphi technique)。 4)比例法是比较科学的一种传统估算方法,是基于类比的估算技术,根据过去类似的项目,直接进行类比获得当前项目的估算结果。

WBS估算法 自顶向下估算模式,首先估算出项目一级的工作量,然后层层往下分摊,把上一层工作量分摊到下一层的阶段、活动或任务。通常使用 FPA方法或 COCOMO II 来估算项目一级的工作量。 自底向上估算模式,要求先估算出底层任务/活动一级的工作量,然后层层向上汇总到阶段和项目级。通常使用 QIF 估算方法或专家判断来估算项目低层 WBS 元素的工作量。

第4章 项目估算 4.4 软件规模估算 4.1 项目估算的挑战 4.2 项目估算的基本内容 4.3 基本估算方法 4.5 工作量估算 4.6 资源估算 4.7 工期估算和安排 4.8 成本估算

4.4 软件规模估算 4.4.1 德尔菲法 4.4.2 代码行估算方法 4.4.3 功能点分析方法 4.4.4 标准构件法 4.4.1 德尔菲法 4.4.2 代码行估算方法 4.4.3 功能点分析方法 4.4.4 标准构件法 4.4.5 综合讨论

4.4.1 德尔菲法 德尔菲法鼓励参加者就问题进行相互的、充分的讨论

4.4.2 代码行估算方法 LOC指所有可执行的源代码行数,包括控制语句、数据定义、数据类型声明、等价声明、格式声明等 SLOC (single line of code) KLOC (thousand lines of code) LLOC (logical line of code) PLOC (physical line of code) NCLOC (non-commented line of code) DSI (delivered source instruction) 在生产效率的研究中,LOC又具有一定的误导性。如果把LOC和缺陷率等结合起来看,会更完整些

4.4.3 功能点分析方法 功能点分析法(FPA)是在需求分析阶段基于系统功能的一种规模估算方法,其国际标准 Alain Abran等人提出的全面功能点法 英国软件估算协会(UKSMA)提出的IFPUG 功能点法 UKSMA提出的Mark II FPA功能点法 荷兰功能点用户协会(NEFPUG)提出的NESMA 功能点法 软件估算共同协会(COSMIC)提出的COSMIC-FFP方法

功能点计算元素 外部输入数(EI):计算每个用户输入 外部输出数(EO):计算每个用户输出(报表、屏幕、出错信息等) 内部逻辑文件(ILF):计算每个逻辑的主文件,如数据的一个逻辑组合 外部接口文件(EIF):计算所有机器可读的接口,如磁带或磁盘上的数据文件。 外部查询数(EQ):一个查询被定义为一次联机输入,它导致软件以联机输出的方式产生实时的响应

功能点如何计算? FC = Σ Σ wij × Xij 第二步是用一个已设计的评分标准和方案来评价14种系统特性对应用可能产生的影响。然后将这些特性的分数(从0到1)根据以下公式相加以得到修正值因子(VAF): VAF = 0.65 + 0.01 ΣCi Ci是系统特性的分数。 最后,功能点数可以通过功能数和修正因子的乘积得到: FP = FC × VAF

4.4.4 标准构件法 例如,一个信息系统的标准构件是子系统、模块、屏幕、报表、交互程序、批程序、文件、LOC以及对象级的指令。 软件由若干不同的“标准构件”组成,这些构件对于一个特定的应用领域而言是通用的。项目计划者估算每一个标准构件的出现次数,然后使用历史项目数据来确定每个标准构件交付时的大小。 例如,一个信息系统的标准构件是子系统、模块、屏幕、报表、交互程序、批程序、文件、LOC以及对象级的指令。

4.4.5 综合讨论 一般在项目层次上,缺少可比性,但在模块或组件层次上、阶段性任务上具有可比性,可以基于历史数据来进行比较来获得数据。 在实际估算工作中,一般先采用分解的方法,将项目分解到某个层次上,然后再采用对比分析方法和经验方法。 任何估算方法都要结合实际来考虑。

第4章 项目估算 4.5 工作量估算 4.1 项目估算的挑战 4.2 项目估算的基本内容 4.3 基本估算方法 4.4 软件规模估算 4.6 资源估算 4.7 工期估算和安排 4.8 成本估算

4.4 工作量估算 4.5.1 COCOMO方法 4.5.2 多变量模型 4.5.3 基于用例的工作量估计 4.5.2 多变量模型 4.5.3 基于用例的工作量估计 4.5.4 IBM RMC估算方法 4.5.5 不同场景的估算法

4.5.1 COCOMO模型 构造性成本模型(COCOMO:constructive cost model)是一种精确、易于使用的基于模型的成本估算方法: 1)基本COCOMO模型,静态单变量模型,用已估算出来的源代码行数(LOC)为自变量的函数来计算软件开发工作量。 2)中间COCOMO模型,在用LOC为自变量的函数计算软件开发工作量的基础上,再用涉及产品、硬件、人员、项目等方面属性的影响因素来调整工作量的估算。 3)详细COCOMO模型,包括中间COCOMO模型的所有特性,但用上述各种影响因素调整工作量估算时,还要考虑对软件工程过程中分析、设计等各步骤的影响。

COCOMO基本变量 DSI(源指令条数),定义为代码行数,包括除注释行以外的全部代码。若一行有两个语句,则算做一条指令。KDSI即为千代码行数。 MM(估算单位为人月)表示开发工作量。 TDEV(估算单位为月)表示开发进度,由工作量决定。

COCOMO模型影响因素 产品因素:软件可靠性、数据库规模、产品复杂性。 硬件因素:执行时间限制、存储限制、虚拟机易变性、环境周转时间。 人的因素:分析员能力、应用领域实际经验、程序员能力、虚拟机使用经验、程序语言使用经验。 项目因素:现代程序设计技术、软件工具的使用、开发进度限制

COCOMO影响因子EAF值

COCOMO计算公式·

4.5.2 多变量(Putnam)模型 假设工作量在开发过程符合某特定的曲线分布 根据4000多个软件项目的历史数据统计推导出来的 Ea = [LOC / ( P ×td4/3 )]3×B   

4.5.3 基于用例的工作量估计 通过用例来描述系统的需求更清楚,可以在功能点和用例之间建立良好的映射关系,项目的估算会更准确些。

用例的具体例子

用例的层次 集成系统,由多个系统构成综合系统; 独立的系统,由多个子系统组成; 子系统,由多个模块或组件构成; 模块/组件,由多个类组成,例如可假定平均8个类构成一个组件。 类,无需用例来描述。

用例估算方法 基于用例的估算,最好还是和WBS方法结合起来使用 一般认为用例的数量在10-50 个范围比较合适,而每个用例可以带有几十个相关场景 假定每一层的每一个组件平均有 10 个用例 考虑总的工作量规模时,需要对个别用例的小时数做进一步调整

4.5.4 IBM RMC估算方法 RMC 的工作量估算采用的是 QIF(定量影响因子)估算方法和自底向上估算模式,对项目的任务、活动、阶段、子项目、项目等进行自底向上的层层估算 可以定义多个估算模型 每个估算模型可以定义任意数量的估算因子 每个估算因子都会关联估算公式 使用估算公式来计算该估算因子对应的工作量

IBM RMC估算方法公司

IBM RMC估算步骤 创建估算模型,定义相关的估算因子; 把估算模型的估算因子应用到 WBS 底层元素,计算出它们的工作量;

示例1-创建估算因子

示例二:各个任务的工作量估算

示例二:估算结果显示

4.5.5 不同场景的估算法 合同签订之前,了解的需求比较有限,只能了解到项目的总体需求,主要采用“类比分析和经验判断”等方法 基于WBS估算的多维验证,获得类似项目的历史数据、软件生命周期的生产率数据和详细需求,从而可以从不同的路径来估算工作量,获得多个结果,这些结果可以互相印证,以发现估算过程中的不合理之处,使估算更准确。 需求变更的工作量估计,关键是需求变更的波及范围分析

第4章 项目估算 4.6 资源估算 4.1 项目估算的挑战 4.2 项目估算的基本内容 4.3 基本估算方法 4.4 软件规模估算 4.5 工作量估算 4.6 资源估算 4.7 工期估算和安排 4.8 成本估算

资源估算基本过程 根据WBS进行估算 由工作量和开发周期来估算 资源特征描述 资源分配给任务 定义项目角色 人员分配

根据WBS进行估算 根据WBS的分解结果来估算资源,主要是一些独立的工作应该由独立的人员去完成,而减少人员沟通成本,减少人员之间的依赖性,并使人员的经验和特长得到发挥,力求达到最高的工作效率。

人员数量= 工作量估算(人日)/工期估算(日) 由工作量和开发周期来估算 人员数量= 工作量估算(人日)/工期估算(日) 在不同的阶段所需要的人力资源是不同的,会随时间变化

资源特征描述 每一类资源都由四个特征来说明:资源描述、可用性说明、需要该资源的时间、及该资源被使用的持续时间。 资源的可用性必须在开发的最初期就建立起来,包括人力资源、软硬件和可复用的构件。

资源分配给任务 完全可分配资源。 外部资源,指项目外非直接可支配的资源。 多项目资源,多个项目共享的资源。 特殊技能资源。 备用资源。 在进行资源分配的时候,要对资源的可支配时间进行充分的考虑: 完全可分配资源。 外部资源,指项目外非直接可支配的资源。 多项目资源,多个项目共享的资源。 特殊技能资源。 备用资源。

项目角色职能确定 角色 职能 项目经理 项目的整体计划、组织和控制。 需求人员 在整个项目中负责获取、阐述以及维护产品需求及书写文档 设计人员 在整个项目中负责评价、选择、阐述以及维护产品设计以及书写文档。 编码人员 根据设计完成代码编写任务并修正代码中的错误 测试人员 负责设计和编写测试用例,以及完成最后的测试执行、递交测试报告。 质量保证人员 负责对开发流程进行评审和监控,指导流程的执行,参加各种内容的评审,保证项目组成员遵守已定义的标准和规范 环境维护人员 负责开发和测试环境的部署和维护。 其他 如文档规范人员、硬件工程师等。

人员分配 谁最有能力来完成这项任务? 谁愿意来完成这项任务? 谁有时间来完成这项任务?

人月神话 《人月神化》一书中特别强调:用人月作为衡量一项工作的规模是一个危险和带有欺骗性的神话。 因为人之间是有差异的。所以在确定人力资源的时候不仅要根据项目的缓急轻重来合理安排人力资源,而且要根据项目规模、独立工作任务的多少来安排合适的人(数),避免带来不必要冲突和浪费。

第4章 项目估算 4.7 工期估算和安排 4.1 项目估算的挑战 4.2 项目估算的基本内容 4.3 基本估算方法 4.4 软件规模估算 4.5 工作量估算 4.6 资源估算 4.7 工期估算和安排 4.8 成本估算

4.7 工期估算和安排 4.7.1 工期估算方法 4.7.2 特殊场景

计划时间 =(T乐观 + 4×T可能 + T悲观)/6 4.7.1 工期估算方法 常用方法是专家(经验)估算法、基于历史数据的类比法 当面临高度不确定性任务时,可以采用三点估算法来进行工期估算 计划时间 =(T乐观 + 4×T可能 + T悲观)/6 工期估算中还要预留一定比例作为冗余时间以应付项目风险。随着项目进展,冗余时间可以逐步减少。 在分析标识项目活动的时候,活动资源和历时的分析其实是同时进行的。

工期估算(日) = 工作量估算(人日) / 人员数量(人) 4.7.2 特殊场景 工期估算(日) = 工作量估算(人日) / 人员数量(人) 使用这个公式时,避免人月估算的错误。要对每个人的能力进行分析,确定他们自己的等价关系,这样,“人员数量”不是人员的自然数量,而是更客观反映人力的等价数量 按照历史数据来估算开发周期,其准确度是可以接受的 在实际使用历史数据估算法时,组织应建立一个历史项目数据库是必要的。

第4章 项目估算 4.8 成本估算 4.1 项目估算的挑战 4.2 项目估算的基本内容 4.3 基本估算方法 4.4 软件规模估算 4.5 工作量估算 4.6 资源估算 4.7 工期估算和安排 4.8 成本估算

4.8 成本估算 4.8.1 成本估算方法 4.8.2 学习曲线

4.8.1 成本估算方法 同样可以使用专家评估办法、经验法、比例法和WBS方法等 成本估算过程中,要紧密结合项目进度计划。 避免过于乐观或者过于保守的估算。 在费时较长的大型项目中,还应考虑到今后的职工工资结构、设备费用以及管理费用是否发生较大变化等 在有新员工的项目中,还应考虑其培训成本 人力资源成本是随着团队开发效率的变化而变化的

4.8.2 学习曲线 了解学习曲线的原理,尽可能地缩短学习曲线, 降低软件产品的成本。缩短学习曲线没有什么特效的方法,重要的还是靠自己的学习、思考、积累和总结。

http://blog.csdn.net/Kerryzhu Q & A