350 likes | 443 Views
一种支持风险评估的软件外包成本估算方法. 提纲. 研究背景与意义 国内外相关研究 软件外包成本估算方法 基于成本驱动因子的软件外包风险评估方法 案例研究与验证 支持风险评估的软件外包成本估算系统 总结与进一步工作 研究生期间的工作. 研究背景与意义. 研究背景 软件外包成本估算和风险评估是软件外包项目管理中重要的部分 软件外包成本估算与风险评估方法尚不成熟 准确的风评评估需要 用户 较为准确的判断,但这通常很困难,一方面因为经验丰富的专家不多,另一方面由于每个项目有其固有的特点 。 目的与意义
E N D
提纲 • 研究背景与意义 • 国内外相关研究 • 软件外包成本估算方法 • 基于成本驱动因子的软件外包风险评估方法 • 案例研究与验证 • 支持风险评估的软件外包成本估算系统 • 总结与进一步工作 • 研究生期间的工作
研究背景与意义 • 研究背景 • 软件外包成本估算和风险评估是软件外包项目管理中重要的部分 • 软件外包成本估算与风险评估方法尚不成熟 • 准确的风评评估需要用户较为准确的判断,但这通常很困难,一方面因为经验丰富的专家不多,另一方面由于每个项目有其固有的特点。 • 目的与意义 • 找出一种支持风险评估的软件外包成本估算方法,能够在进行成本估算的同时,支持项目的风险评估。
提纲 • 研究背景与意义 • 国内外相关研究 • 软件外包成本估算方法 • 基于成本驱动因子的软件外包风险评估方法 • 案例研究与验证 • 支持风险评估的软件外包成本估算系统 • 总结与进一步工作 • 研究生期间的工作
软件成本估算方法(2/2) • COCOMO:分析结果是客观的和可重复的,公式化的分析过程非常公正;分析结果能够在一定程度上反映预测项目的特征,特别是在进行敏感性分析的时候,能够发现对项目构成最大影响的几个参数;能够体现项目人员的经验在项目中的作用。 • 专家估算:可快速产生估算结果;几乎不花费任何时间和成本;可以和其它高成本的估算方法产生一样精确的结果。 • 类比估算:避免了知识定义和知识抽取过程,相对专家经验方法更客观;使用更灵活,根据实际情况定义项目属性数量;仅处理实际产生的问题,而参数模型法须考虑所有可能发生的问题。
软件风险评估方法(1/2) • 经典软件项目风险管理体系 • Boehm理论:关于风险损失程度和风险发生概率的计算方法,Boehm提出采用核对明细表的方式,这样可以获取它们估算值;通过使用原型建模、模拟、基准对照等方式获得精确估算值。 • CRM模型:在软件项目生命周期的各个阶段持续关注风险识别和风险管理相关工作,它将软件项目风险管理过程定义为为识别、分析、计划、跟踪和控制的循环过程,并强调在这一过程中风险交流的重要性,指出必须将风险信息传达到适当的组织层次以得到最有效的风险分析和管理。 • PMBOK知识体系:由PMI(Project Management Institute)提出[26],指出软件项目风险管理的目标在于增加正面事件的发生概率和影响,降低负面事件的发生概率和影响。 • Riskit方法:该方法提供组织的项目在早期采用系统化的风险管理过程和技术,旨在完整的管理风险的起因、触发事件及其影响等,并使用合理的步骤进行风险评估。
软件风险评估方法(2/2) • 常见软件项目风险评估方法 • 定性的工具与方法 • 核对清单:核对清单法通过历史经验、根据风险属性,总结出一个风险分类系统,提供一个列表用以核对风险。 • 头脑风暴法:采用头脑风暴法进行群体决策时,要集中有关专家组织召开专题会议,主持者以明确的方式向所有参加者阐明问题、说明会议的规则,尽量创造一种融洽轻松的会议气氛。 • Delphi法:Delphi法采用匿名方式调查专家对问卷中问题的看法,在此过程中专家不可以互相讨论,经过多次信息反馈,最后归纳出专家基本一致的意见作为比较准确的风险预测结果。 • 定量的工具与方法 • 敏感分析法:将多个风险因素中的一个因素作为输入变量,在假定其他风险因素保持正常值的情况下,变动该输入变量的值,通过分析、计算该变量的变化对风险结果产生的影响。 • Pareto分析法:80/20法则,即80%的项目风险集中在20%的关键风险因素上,所以只要识别出这20%的风险因素即可解决大部分的项目风险问题。 • 蒙特卡洛仿真法:通过多次重复的统计实验来求解具有随机特性问题的方法 • 决策树分析法、层次分析法、盈亏平衡分析法…… 8
风险评估与成本估算结合 Ray Madachy和Kari Kansala为将风险评估与成本估算相结合开创了先河。 在Ray Madachy的方法中,软件风险评估的基本单位是风险关联规则,每个风险关联规则中涉及到两个或三个COCOMO模型中的成本驱动因子。每个风险关联规则有两个属性:风险级别、工作量乘数的乘积,其中风险级别代表风险发生的可能性。 9
提纲 • 研究背景与意义 • 国内外相关研究 • 软件外包成本估算方法 • 基于成本驱动因子的软件外包风险评估方法 • 案例研究与验证 • 支持风险评估的软件外包成本估算系统 • 总结与进一步工作 • 研究生期间的工作
典型软件外包成本驱动因子的确定及度量 (1/2) 典型软件外包成本驱动因子的确定 在建立估算模型的过程中,成本驱动因子的确定是最难以解决的问题。 成本驱动因子的确定关键在于具有丰富的软件成本估算方面的专家知识。 软件外包成本驱动因子 业务流程的复杂度:包括技术复杂性和组织复杂性 。 需求的不确定性:评价了软件需求的易变性。 系统复杂度:主要包括控制操作、计算操作、I/O相关操作、数据库管理操作以及用户界面管理等方面的复杂性。 团队稳定性:用人员年流动率来评价团队的稳定性 。 人员能力:主要从开发人员能力和开发人员经验等方面考虑。 协作效率:指软件外包发包方与接包方之间的协作效率,可从沟通频率等方面考虑。 软件外包项目管理能力:指管理人员以前的软件外包项目管理经验程度。 成本驱动因子的构成 名称和描述 等级 生产率影响:为该成本驱动因子对项目成本产生最大影响与最小影响之间的倍数 。 12
典型软件外包成本驱动因子的确定及度量(2/2) 典型软件外包成本驱动因子的度量 根据文献调研度量这些成本驱动因子,避免过多的主观输入影响估算的准确性 业务流程的复杂度 技术复杂性、组织复杂性 需求的不确定性 需求的稳定性、需求质量、需求的规范性 系统复杂度 控制操作、计算操作、I/O相关操作、数据库管理操作、用户界面管理 软件外包项目管理能力 需求变更管理、进度和成本管理、终端用户期望管理、外包项目管理经验 人员能力 接包方业务技巧、接包方技术技巧 团队稳定性 人员配备情况、接包方员工的连续性、接包方团队士气 协作效率 文化差异、语言障碍、时区、团队合作的有效性、员工交流技能 13
建模数据的预处理 软件外包项目规模的收集 新增代码行数、修改代码行数、重用代码行数 调整后的代码行数 软件外包项目工作量的收集 项目实际工作量,注意单位的统一(人时、人日、人月)。 成本驱动因子的收集 根据度量指标建立了详细的数据收集依据。 14
软件外包成本估算模型的建立 • 公式法 • 所有的成本驱动因子输入都确定 • 采用回归建立估算模型 • 蒙特卡洛仿真 • 存在成本驱动因子输入不确定的情况(输入:最小值、最大值、最可能值) • 采用三角形分布取样
软件外包成本估算模型的验证 • 统计学角度 • R方:表示数据中自变量与因变量关系强弱的一个数,越大表明模型的拟合度越好。 • P-value:p-值是结果可信程度的一个递减指标,p-值越小,我们认为样本中变量的关联是总体中各变量关联的可靠指标。 • 经验软件工程角度 • MRE • MMRE • PRED
提纲 • 研究背景与意义 • 国内外相关研究 • 软件外包成本估算方法 • 基于成本驱动因子的软件外包风险评估方法 • 案例研究与验证 • 支持风险评估的软件外包成本估算系统 • 总结与进一步工作 • 研究生期间的工作 17
基于成本驱动因子的软件外包风险评估方法 • 构建流程图
成本驱动因子与风险因子的映射 如右上图所示 风险因子对的确定 如右下图所示 依据风险关联规则 IF((需求不确定性>Nominal) AND (项目规模>Nominal)) THEN <需求不确定性,项目规模>会产生一个项目风险。 数据的预处理
基于成本驱动因子的软件外包风险评估方法的建立及验证 • 公式法 • Projectrisk为项目的总风险 • 为风险因子对< Rfi ,Rfj >的发生概率 • Rfi *Rfj为风险因子对< Rfi ,Rfj >发生的情况下对项目造成的影响 • 蒙特卡洛仿真 • 同成本估算中的蒙特卡洛仿真 • 验证 • R方和p-value
提纲 • 研究背景与意义 • 国内外相关研究 • 软件外包成本估算方法 • 基于成本驱动因子的软件外包风险评估方法 • 案例研究与验证 • 支持风险评估的软件外包成本估算系统 • 总结与进一步工作 • 研究生期间的工作
案例背景 • 案例背景 • 数据来源于某银行的软件外包项目。 • 本文实验主要选取该银行6个数据较完整的外包项目。
成本估算模型 • 估算公式 • 模型内部验证 • MMRE为0.300191
模型性能验证 • 方法:留一交叉验证 • 结果
软件外包风险评估方法 • 公式 • 评估结果
结论 • 成本估算模型 • 估算结果较好,还需找出项目P6估算偏差大的原因。 • 风险评估模型 • 评估结果较好
提纲 • 研究背景与意义 • 国内外相关研究 • 软件外包成本估算方法 • 基于成本驱动因子的软件外包风险评估方法 • 案例研究与验证 • 支持风险评估的软件外包成本估算系统 • 总结与进一步工作 • 研究生期间的工作
项目基本属性设置模块 输入项目的基本属性,为软件外包项目管理工作奠定基础 成本驱动因子等级设置模块 估算人员(风险评估人员)在不同情况下(分为确定和不确定)输入 各个成本驱动因子等级成本驱动因子等级设置模块 成本驱动因子权重设置 估算模型参数设置模块 软件外包成本估算模块 基于收集到的成本驱动因子数据进行软件外包成本估算 软件外包风险评估模块 在重用成本驱动因子的情况下进行该外包项目的风险评估 结果显示模块 系统功能模块
数据层 封装了软件外包项目的基本属性及成本驱动因子,并根据输入将数据映射为实体层的对象实体。 实体层 将系统内的各种数据表现为对象,包括待估算的项目、成本驱动因子权重等,并且对象均有自己的属性 。 软件外包成本估算模块和软件外包风险评估模块建立在实体层之上。 系统架构
系统实现 • 软件外包成本估算 • 软件外包风险评估
提纲 • 研究背景与意义 • 国内外相关研究 • 软件外包成本估算方法 • 基于成本驱动因子的软件外包风险评估方法 • 案例研究与验证 • 支持风险评估的软件外包成本估算系统 • 总结与进一步工作 • 研究生期间的工作
总结与进一步工作 • 总结 • 确定了典型的软件外包成本驱动因子 • 提出了一种软件外包成本估算方法 • 在重用软件外包成本驱动因子的前提下,提出了一种软件外包风险评估方法 • 实现了支持风险评估的软件外包成本估算系统 • 进一步工作 • 校准估算模型的参数 • 提高系统的自动化程度 • 进行实际应用 32
提纲 • 研究背景与意义 • 国内外相关研究 • 基于用例的软件成本估算方法 • 案例研究与验证 • 基于用例的软件成本估算系统 • 总结与进一步工作 • 研究生期间的工作
研究生期间的工作 • 参加的科研项目 • 发表的论文 34