一种支持风险评估的软件外包成本估算方法

35
中中中中中中中中中中中中中中中中中中中中 中中中中中中中中中中中中中中中中中中 中中中中中中中中中中中中中中中中中中

Upload: donna-cotton

Post on 31-Dec-2015

50 views

Category:

Documents


14 download

DESCRIPTION

一种支持风险评估的软件外包成本估算方法. 提纲. 研究背景与意义 国内外相关研究 软件外包成本估算方法 基于成本驱动因子的软件外包风险评估方法 案例研究与验证 支持风险评估的软件外包成本估算系统 总结与进一步工作 研究生期间的工作. 研究背景与意义. 研究背景 软件外包成本估算和风险评估是软件外包项目管理中重要的部分 软件外包成本估算与风险评估方法尚不成熟 准确的风评评估需要 用户 较为准确的判断,但这通常很困难,一方面因为经验丰富的专家不多,另一方面由于每个项目有其固有的特点 。 目的与意义 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 一种支持风险评估的软件外包成本估算方法

中国科学院软件研究所基础软件工程研究中心

一种支持风险评估的软件外包成本估算方法一种支持风险评估的软件外包成本估算方法

Page 2: 一种支持风险评估的软件外包成本估算方法

提纲

研究背景与意义 国内外相关研究 软件外包成本估算方法 基于成本驱动因子的软件外包风险评估方法 案例研究与验证 支持风险评估的软件外包成本估算系统 总结与进一步工作 研究生期间的工作

2

Page 3: 一种支持风险评估的软件外包成本估算方法

研究背景与意义

研究背景 软件外包成本估算和风险评估是软件外包项目管理中重要的部分 软件外包成本估算与风险评估方法尚不成熟 准确的风评评估需要用户较为准确的判断,但这通常很困难,一方

面因为经验丰富的专家不多,另一方面由于每个项目有其固有的特点。

目的与意义 找出一种支持风险评估的软件外包成本估算方法,能够在进行成本

估算的同时,支持项目的风险评估。

3

Page 4: 一种支持风险评估的软件外包成本估算方法

提纲

研究背景与意义 国内外相关研究 软件外包成本估算方法 基于成本驱动因子的软件外包风险评估方法 案例研究与验证 支持风险评估的软件外包成本估算系统 总结与进一步工作 研究生期间的工作

4

Page 5: 一种支持风险评估的软件外包成本估算方法

软件成本估算方法( 1/2)

5

Page 6: 一种支持风险评估的软件外包成本估算方法

软件成本估算方法( 2/2)

COCOMO:分析结果是客观的和可重复的 ,公式化的分析过程非常公正;分析结果能够在一定程度上反映预测项目的特征,特别是在进行敏感性分析的时候,能够发现对项目构成最大影响的几个参数;能够体现项目人员的经验在项目中的作用。

专家估算:可快速产生估算结果;几乎不花费任何时间和成本;可以和其它高成本的估算方法产生一样精确的结果。

类比估算:避免了知识定义和知识抽取过程,相对专家经验方法更客观;使用更灵活,根据实际情况定义项目属性数量;仅处理实际产生的问题,而参数模型法须考虑所有可能发生的问题。

6

Page 7: 一种支持风险评估的软件外包成本估算方法

软件风险评估方法( 1/2 )

经典软件项目风险管理体系 Boehm理论:关于风险损失程度和风险发生概率的计算方法, Boehm提

出采用核对明细表的方式,这样可以获取它们估算值;通过使用原型建模、模拟、基准对照等方式获得精确估算值。

CRM模型:在软件项目生命周期的各个阶段持续关注风险识别和风险管理相关工作,它将软件项目风险管理过程定义为为识别、分析、计划、跟踪和控制的循环过程,并强调在这一过程中风险交流的重要性,指出必须将风险信息传达到适当的组织层次以得到最有效的风险分析和管理。

PMBOK知识体系:由 PMI ( Project Management Institute)提出 [26],指出软件项目风险管理的目标在于增加正面事件的发生概率和影响,降低负面事件的发生概率和影响。

Riskit方法:该方法提供组织的项目在早期采用系统化的风险管理过程和技术,旨在完整的管理风险的起因、触发事件及其影响等,并使用合理的步骤进行风险评估。

7

Page 8: 一种支持风险评估的软件外包成本估算方法

软件风险评估方法( 2/2 )

常见软件项目风险评估方法 定性的工具与方法

核对清单:核对清单法通过历史经验、根据风险属性,总结出一个风险分类系统,提供一个列表用以核对风险。

头脑风暴法:采用头脑风暴法进行群体决策时, 要集中有关专家组织召开专题会议 , 主持者以明确的方式向所有参加者阐明问题、说明会议的规则,尽量创造一种融洽轻松的会议气氛。

Delphi法: Delphi法采用匿名方式调查专家对问卷中问题的看法,在此过程中专家不可以互相讨论,经过多次信息反馈,最后归纳出专家基本一致的意见作为比较准确的风险预测结果。

定量的工具与方法 敏感分析法:将多个风险因素中的一个因素作为输入变量,在假定其他风险因素保持正常

值的情况下,变动该输入变量的值,通过分析、计算该变量的变化对风险结果产生的影响。

Pareto分析法: 80/20法则,即 80%的项目风险集中在 20%的关键风险因素上,所以只要识别出这 20%的风险因素即可解决大部分的项目风险问题。

蒙特卡洛仿真法:通过多次重复的统计实验来求解具有随机特性问题的方法 决策树分析法、层次分析法、盈亏平衡分析法……

8

Page 9: 一种支持风险评估的软件外包成本估算方法

风险评估与成本估算结合

Ray Madachy 和 Kari Kansala 为将风险评估与成本估算相结合开创了先河。

在 Ray Madachy 的方法中,软件风险评估的基本单位是风险关联规则,每个风险关联规则中涉及到两个或三个 COCOMO模型中的成本驱动因子。每个风险关联规则有两个属性:风险级别、工作量乘数的乘积,其中风险级别代表风险发生的可能性。

9

Page 10: 一种支持风险评估的软件外包成本估算方法

提纲

研究背景与意义 国内外相关研究 软件外包成本估算方法 基于成本驱动因子的软件外包风险评估方法 案例研究与验证 支持风险评估的软件外包成本估算系统 总结与进一步工作 研究生期间的工作

10

Page 11: 一种支持风险评估的软件外包成本估算方法

模型的构建流程图

11

成本驱动因子等级

软件外包项目数据

估算的项目规模

基于线性回归建立模型

模型的性能验

数据的预处理估算模型的建

立估算模型的验

提取

软件外包成本驱动因子的确定及度量

Page 12: 一种支持风险评估的软件外包成本估算方法

典型软件外包成本驱动因子的确定及度量 ( 1/2 )

典型软件外包成本驱动因子的确定 在建立估算模型的过程中,成本驱动因子的确定是最难以解决的问题。 成本驱动因子的确定关键在于具有丰富的软件成本估算方面的专家知识。

软件外包成本驱动因子 业务流程的复杂度:包括技术复杂性和组织复杂性 。 需求的不确定性:评价了软件需求的易变性。 系统复杂度:主要包括控制操作、计算操作、 I/O 相关操作、数据库管理操作以及用户界

面管理等方面的复杂性。 团队稳定性:用人员年流动率来评价团队的稳定性 。 人员能力:主要从开发人员能力和开发人员经验等方面考虑。 协作效率:指软件外包发包方与接包方之间的协作效率,可从沟通频率等方面考虑。 软件外包项目管理能力:指管理人员以前的软件外包项目管理经验程度。

成本驱动因子的构成 名称和描述 等级 生产率影响:为该成本驱动因子对项目成本产生最大影响与最小影响之间的倍数 。

12

Page 13: 一种支持风险评估的软件外包成本估算方法

典型软件外包成本驱动因子的确定及度量 (2/2)

典型软件外包成本驱动因子的度量根据文献调研度量这些成本驱动因子,避免过多的主观输入影响估算的准确性

业务流程的复杂度 技术复杂性、组织复杂性

需求的不确定性 需求的稳定性、需求质量、需求的规范性

系统复杂度 控制操作、计算操作、 I/O 相关操作、数据库管理操作、用户界面管理

软件外包项目管理能力 需求变更管理、进度和成本管理、终端用户期望管理、外包项目管理经验

人员能力 接包方业务技巧、接包方技术技巧

团队稳定性 人员配备情况、接包方员工的连续性、接包方团队士气

协作效率 文化差异、语言障碍、时区、团队合作的有效性、员工交流技能

13

Page 14: 一种支持风险评估的软件外包成本估算方法

建模数据的预处理

软件外包项目规模的收集新增代码行数、修改代码行数、重用代码行数 调整后的代码行数

软件外包项目工作量的收集 项目实际工作量,注意单位的统一(人时、人日、人月)。

成本驱动因子的收集 根据度量指标建立了详细的数据收集依据。

14

重用代码行数修改代码行数新增代码行数 重用修改 *W*WSizeadjusted

Page 15: 一种支持风险评估的软件外包成本估算方法

软件外包成本估算模型的建立

公式法所有的成本驱动因子输入都确定采用回归建立估算模型

蒙特卡洛仿真存在成本驱动因子输入不确定的情况(输入:最小值、最大值、最可能值)

采用三角形分布取样

Page 16: 一种支持风险评估的软件外包成本估算方法

软件外包成本估算模型的验证

统计学角度R 方:表示数据中自变量与因变量关系强弱的一个数,越大表明模型的拟合度越好。

P-value : p- 值是结果可信程度的一个递减指标, p-值越小,我们认为样本中变量的关联是总体中各变量关联的可靠指标。

经验软件工程角度MREMMREPRED

Page 17: 一种支持风险评估的软件外包成本估算方法

提纲

研究背景与意义 国内外相关研究 软件外包成本估算方法 基于成本驱动因子的软件外包风险评估方法 案例研究与验证 支持风险评估的软件外包成本估算系统 总结与进一步工作 研究生期间的工作

17

Page 18: 一种支持风险评估的软件外包成本估算方法

基于成本驱动因子的软件外包风险评估方法

构建流程图

成本驱动因子等级

估算的项目规模

软件外包风险评

估模型的建立

模型的性能验证

数据的预处理风险评估模型的建立

风险评估模型的验证

项目规模等级

风险因子等级

风险因子对

关联规则

映射

映射

Page 19: 一种支持风险评估的软件外包成本估算方法

数据的预处理

成本驱动因子与风险因子的映射

如右上图所示 风险因子对的确定

如右下图所示依据风险关联规则

IF(( 需求不确定性>Nominal) AND ( 项目规模 >Nominal))

THEN < 需求不确定性,项目规模 >会产生一个项目风险。

Page 20: 一种支持风险评估的软件外包成本估算方法

基于成本驱动因子的软件外包风险评估方法的建立及验证

公式法

Projectrisk 为项目的总风险 为风险因子对 < Rfi , Rfj > 的发生概率 Rfi *Rfj 为风险因子对 < Rfi , Rfj > 发生的情况下对项目造成

的影响 蒙特卡洛仿真

同成本估算中的蒙特卡洛仿真 验证

R 方和 p-value

88

1i

)*(risk Prij

jiij RfRfriskproboject

ijriskprob

Page 21: 一种支持风险评估的软件外包成本估算方法

提纲

研究背景与意义 国内外相关研究 软件外包成本估算方法 基于成本驱动因子的软件外包风险评估方法 案例研究与验证 支持风险评估的软件外包成本估算系统 总结与进一步工作 研究生期间的工作

21

Page 22: 一种支持风险评估的软件外包成本估算方法

案例背景

案例背景 数据来源于某银

行的软件外包项目。

本文实验主要选取该银行 6 个数据较完整的外包项目。

22

Page 23: 一种支持风险评估的软件外包成本估算方法

成本估算模型

估算公式

模型内部验证 MMRE 为 0.300191

7

1

6293.0 *)(*66316.16i

iEMSizeEffort

Page 24: 一种支持风险评估的软件外包成本估算方法

模型性能验证

方法:留一交叉验证 结果

Page 25: 一种支持风险评估的软件外包成本估算方法

软件外包风险评估方法

公式

评估结果

88

1i

)*(risk Prij

jiij RfRfriskproboject

y = 4. 9005x + 22. 827R2 = 0. 8464

05

101520253035404550

0 1 2 3 4 5 6实际风险

评估风险

Page 26: 一种支持风险评估的软件外包成本估算方法

结论

成本估算模型估算结果较好,还需找出项目 P6 估算偏差大的原因。

风险评估模型评估结果较好

Page 27: 一种支持风险评估的软件外包成本估算方法

提纲

研究背景与意义 国内外相关研究 软件外包成本估算方法 基于成本驱动因子的软件外包风险评估方法 案例研究与验证 支持风险评估的软件外包成本估算系统 总结与进一步工作 研究生期间的工作

27

Page 28: 一种支持风险评估的软件外包成本估算方法

系统功能模块

项目基本属性设置模块 输入项目的基本属性 ,

为软件外包项目管理工作奠定基础

成本驱动因子等级设置模块

估算人员(风险评估人员)在不同情况下(分为确定和不确定)输入 各个成本驱动因子等级成本驱动因子等级设置模块

成本驱动因子权重设置 估算模型参数设置模块 软件外包成本估算模块

基于收集到的成本驱动因子数据进行软件外包成本估算

软件外包风险评估模块 在重用成本驱动因子的

情况下进行该外包项目的风险评估

结果显示模块

28

成本驱动因子等级设置模块

成本驱动因子权重设置模块

估算模型参数设置模块

软件外包成本估算模块 软件外包风险评估设置模块

结果显示模块

支持风险评估的软件外包成本估算系统

项目基本属性设置模块

Page 29: 一种支持风险评估的软件外包成本估算方法

系统架构

数据层封装了软件外包项目的基本

属性及成本驱动因子,并根据输入将数据映射为实体层的对象实体。

实体层 将系统内的各种数据表现为

对象,包括待估算的项目、成本驱动因子权重等,并且对象均有自己的属性 。

软件外包成本估算模块和软件外包风险评估模块建立在实体层之上。

29

用户界面

公式法和蒙特卡洛仿真计算成本

软件外包成本估算模块软件外包风险评估模块

数据抽取 因子输入 成本因子与风险因子的映射

公式法和蒙特卡洛仿真评估风险

支持

用户界面

实体层

数据层

Page 30: 一种支持风险评估的软件外包成本估算方法

系统实现

软件外包成本估算 软件外包风险评估

30

Page 31: 一种支持风险评估的软件外包成本估算方法

提纲

研究背景与意义 国内外相关研究 软件外包成本估算方法 基于成本驱动因子的软件外包风险评估方法 案例研究与验证 支持风险评估的软件外包成本估算系统 总结与进一步工作 研究生期间的工作

31

Page 32: 一种支持风险评估的软件外包成本估算方法

总结与进一步工作

总结 确定了典型的软件外包成本驱动因子 提出了一种软件外包成本估算方法 在重用软件外包成本驱动因子的前提下,提出了一种软件外包风险

评估方法 实现了支持风险评估的软件外包成本估算系统

进一步工作校准估算模型的参数 提高系统的自动化程度 进行实际应用

32

Page 33: 一种支持风险评估的软件外包成本估算方法

提纲

研究背景与意义 国内外相关研究 基于用例的软件成本估算方法 案例研究与验证 基于用例的软件成本估算系统 总结与进一步工作 研究生期间的工作

33

Page 34: 一种支持风险评估的软件外包成本估算方法

研究生期间的工作

参加的科研项目 发表的论文

34

Page 35: 一种支持风险评估的软件外包成本估算方法

35

谢谢!