《软件开发项目的风险分析与控制》由会员分享,可在线阅读,更多相关《软件开发项目的风险分析与控制(11页珍藏版)》请在金锄头文库上搜索。
1、软件开发项目的风险分析与控制、软件开发项目的风险背景信息产业的发展是目前发展最快的行业之一,也是对社会影响最大的一个行业,它不但为我们创造了巨大的财富,而且从各个方面改变着我们的生活,达到一个行业,小到一项服务。我们不得不承认软件是二十一世纪最不可思议的产品。加开公加越软伴随着软件开发技术的不断更新、软件数量的增多、软件复杂程度不断 大、客户对产品的要求也在不断的提高,随之而来的是软件开发项目给软件 发企业和需求企业带来的巨大风险。软件开发项目的成功与否会直接影响到 司的生存。这对软件开发企业来讲应该是更大的难题。一方面是业务需求更 复杂。人们对软件质量和用途的期望大幅度提高,对业务系统的要求
2、也越来 挑剔。另一方面是开发成本不断缩减。在此形势下,风险管理与控制已成为 件开发项目成败的关键。软件开发项目由于其具有连续性、复杂性、少参照性,无标准规范等特点其风险程度较高。目前国内的大多数软件开发企业还缺乏对软件开发项目的 风险认识,缺少进行系统、有效的度量和评价的手段。据有调查数据显示,有1535%勺软件项目中途被取消,剩下 的项目不是超期就是超出预算或是无法达 到预期目标。另外,软件项目因风险控制和管理原因失败的约占90%,可见,软件风险控制与管理在目前的软件开发项目中的重要性。软件开发项目的风险来源及对项 目成败的影响软件开发项目风险是指在软件生命周期中所遇到的所有的预算、进度和
3、控 制等各方面的问题,以及由这些问题而产生的对软件项目的影响。软件项目风险经常会涉及许多方面,如:缺乏用户的参与,缺少高级管理层的支持,含 糊 的要求,没有计划和管理等,总体概括下来应该由五大方面。1、产品规模风险项目的风险是与产品的规模成正比的。与软件规模相关的常见风险因素有: 估算产品规模的方法(包括:代码行,文件数,功能点等),(2)产品规模 估 算的信任度,(3)产品规模与以前产品规模平均值的偏差,(4)产品的用户数, (5)复用的软件有多少,(6)产品的需求变更多少等。一般规律,产品规模 越 大, 以上的问题就越突出,尤其是估算产品规模的方法,复用软件的多少,需 求变化。2、需求风险
4、很多项目在确定需求时都面临着一些不确定性。当在项目早期容忍了这些不确定性,并且在项目进展过程当中得不到解决,这些问题就会对项目的成功造成很大威胁。如果不控制与需求相关的风险因素,那么就很有可能产生错误的产品或者拙劣地建造预期的产品。每一种情况对产品来讲都可能致命的。与客户相关的风险因素有:(1)对产品缺少清晰的认识,(2)对产品需求缺 少认同,(3)在做需求中客户参与不够,(4)没有优先需求,(5)由于不确定的需 要导致新的市场,(6)不断变化需求,(7)缺少有效的需求变化管理过程,(8)对 需求的变化缺少相关分析等。3、相关性风险许多风险都是因为项目的外部环境或因素的相关性产生的。经常我们在
5、控制外部的相关性上做的不够,因此缓解策略应该包括可能性计划,以便从第二资源或协同工作资源中取得必要的组成部分,并且觉察潜在的问题。与外部 环 境相关的因素有:(1)客户供应条目或信息,(2)交互成员或交互团体依赖性, (3)内部或外部转包商的关系,(4)经验丰富人员的可得性,(5)项目的复用性。 项目经理圈子4、技术风险软件技术的飞速发展和经验丰富员工的缺乏,意味着项目团队可能会因为技巧的原因影响项目的成功。在早期,识别风险从而采取合适的预防措施是解决风险领域问题的关键,比如:培训、聘请顾问以及为项目团队招聘合适的人才等。主要有下面这些风险因素:(1)缺乏培训,(2)对方法、工具和技术理解 的
6、不够,(3)应用领域的经验不足,(4)新的技术和开发方法应用等。5、管理风险尽管管理问题制约了很多项目的成功,但是不要因为风险管理计划中没有包括所有管理活动而感到惊奇。在大部分项目里,项目经理经常是写项目风险管理计划的人,他们有先天性的不足一一自己检查自己的错误,这是最难的。然而,像这些问题可能会使项目的成功变得更加困难。如果不正视这些棘手的问题,它们就很有可能在项目进行的某个阶段影响项目本身。当我们定义了项目追踪过程并且明晰项目角色和责任,就能处理这些风险因素:(1)计划和任务定义不够充分,(2)实际项目状态,(3)项目所有者和决策者分不清,(4)不切实 际的承诺,(5)员工之间的沟通等。项
7、目管理培训6、安全风险项目管理者联盟软件产品本身是属于创造性的产品,产品本身的核心技术保密非常重要。但一直以来,我们在软件这方面的安全意识比较淡薄,对软件产品的开发主要注重技术本身,而忽略了专利的保护。软件行业的技术人员流动是很普遍的现象,随着技术人员的流失、变更,很能会导致产品和新技术的泄密,致使我 们 的软件产品被它公司窃取,导致项目失败。而且在软件方面关于知识产权的认定目前还没有明确的一个行业规范,这也是我们软件项目潜在的风险。三、风险的分析、管理与控制1、风险分析1. 1 “流程”因素分析软件的开发流程股定义为:需求分析一可行性分析一概要设计一结构化设计一详细设计一编码一软件测试一软件
8、维护。“流程”中软件项目的风险,主要体现存 4个阶段:软件需求阶段、软 件 设计阶段、软件实现阶段和软件维护阶段 软件需求阶段软件的开发是以用户的需求开始,在大多数情况下,用户需求要靠软件 开 发方诱导,才能保证需求的完整,再以的形式形成用户需求这一重要的 文 档。需求分析更多的是开发方确认需求的可行性和一致性的过程,在此阶段 需 要和用户进行广泛的交流和确认。需求和需求分析的任何疏漏造成的损失, 会 在软件系统的后续阶段被一级级地放大,因此本阶段的风险最大。 软件设计阶段设计的主要目的在于软件功能正确地反映了需求,需求的不完整和对需 求 分析的不完整或者错误,在设计阶段将被成倍地放大。设计阶
9、段的主要任务 是 完成系统体系结构的定义,使之能够完成需求阶段的即定目标;另一方面也 是 检验需求的致性和需求分析的完整性和正确性。设计阶段的风险主要来自于系统分析人员。分析人员存设计系统结构时过于定制,系统的可扩展性较弱,会给后期维护带来巨大的负担和维护成本的激增。对用户来说系统的使用比例会有明显的折扣,甚至会造成软件寿命过短。反之,软件结构的过于灵活和通用,必然引起软件实现的难度增加,系统的 复 杂度上升,可靠性降低,给实现和测试阶段带来风险,系统的稳定性也会受到影响。从另一个角度上看,用户需求和将来软件运行环境的变化都是必然的,目前软件设计的所渭的“通用性”是否就能很好的适应将来需求和运
10、行环境的变化,都是需要认真折衷的,而这种折中也蕴涵着很大的风险。设计阶段蕴涵的另一种风险来自于设计文档。文档的不健全不仅会造成 实 现阶段的困难,更会在后期的测试和维护造成灾难性的后果,例如根本无法 对 软件系统进行版本级,甚至是发现的简单错误都无从更正。软件实现阶段软件的实现从某种意义上讲是软件代码的生产。源代码木身也是文档的 一 部分,同时它又是将来运行于计算机系统之上的实体。源代码书的规范性, 可 读性是该阶段的主要风险来源。规范的代码生产会把属于程序员自身个性风 格 的成分引入代码的比例降到最低限度,从而减小了系统整合的风险。 软件维护阶段软件维护包含两个主要的维护阶段,一个是软件生产
11、完毕到软件试运行 阶 段的维护,这个阶段是一种实环境的测试性维护,其主要目的是发现在测试 环 境中不能或末发现的问题;另一个阶段是当软件的运行不再能适应用户业务 需 求或是用户的运行环境(包括硬件平台、软件环境等)时进行的软件维护, 具 体可能是软件的版本升级或软件移植等。1.2 “技术”因素分析存软件项目开发和建设的过程中,技术因素是一个非常重要的因素。项 目 组一定要本着项目的实际要求,选用合适、成熟的技术,千万不要无视项目 的 实际情况选用一些虽然先进但并非项目所必须且自己又不熟悉的技术。如果 项 目所要求的技术项目成员不具备或掌握不够,则需要重点关注该风险因素。成加组检集需 回以上所说
12、的各类风险都是项目成败的巨大隐患,它们对软件开发项目的 败有多大影响,我们可以利用风险分析工具,对以上各类风险进行分析,并 以控制和管理,将风险将到最低。常用方法有风险条目检查表,它是利用一 提问来帮助项目风险管理者了解在项目和技术方面有哪些风险。在风险条目 查表中,列出了所有可能的与每一个风险因素有关的提问,使得风险管理者 中来识别常见的、已知的和可预测的风险,如产品规模风险、依赖性风险、 求风险、管理风险及技术风险等。风险条目检查表可以不同的方式组织,通过假设分析、成本效益分析、风险剖面分析、判定树等,给出这些提问确定的 答,就可以帮助项目管理人员估算风险的影响。另外,我们可以依据风险条目
13、检查表,制作风险控制概图 (见图1),让项 目管理和实施人员能很直观的看到在项目开发个阶段的风险存在状况和各风 险 的大小,并采取相应措施。从风险发生的概率来看,需求风险和管理风险对 项 目成败影响最大,当一个软件项目开发团队接手项目后,都是按照习惯性的 方 式来开发软件。需求风险意识比较淡薄,软件需求分析阶段的完成的不够细 致, 忽略和很多软件开发必要的内容。在整个软件开发过程中需求分析阶段的 风 险 控制尤为重要,如果控制不好,对软件开发项目影响巨大,甚至是失败。 管 理 风险实际上是项目开发管理层,对项目开发的风险的意识反映。国内的软 件 企 业大多规模较小,企业年轻,开发经验不足,软件
14、工程师较年轻,缺少开 大 型 软件项目的经验,在管理方面缺少经验,特别是风险管理,更是缺乏。依理阿金1-11dI11) : : 一一Iw _:;一二1II1|1:;二,44IjT11k1_fi|1-i 一V V-一一1*i4R*= T - L1|Z:1-*. 1111iT1=1t|* 1Att1I|:1111L 川一一一14111-: :产品理槿国彼需求及及相关性同恰技水邓立普求分析秋要没洋 洋弟设计 里码5波蜒护图(2、风险管理风险管理应是贯穿软件项目开发始末的一项重要任务,其中包括风险识别、风险评估、风险计划、风险解决和风险监控。它能让风险管理者主动“规 避” 风险,进行有效的风险管理。风
15、险管理模型有:SEI风险管理模型、Riskit风险管理模型、SoftRisk风险管理模型、IEEE风险管理过程模型、CMM风险 管 理模型、MSFM险管理模型等。在项目管理中,建立风 险管理策略,在项目 的 生命周期中不断控制风险是非常重要的,风险管理主要包括五个阶段:(1)风险识别:识别风险的方法常用的有现场观察法、座谈法、流程图法、 财务报表法、相关部门配合法和环境分析法等。(1)风险评估:对已识别的风险要进行估计和评价,风险估计的主要任务是 确定风险发生的概率与后果,风险评价则是确定该风险的经济意义及处理的费/效分析,常用的方法有:概率分布、外推法、多目标分析法等。(3)计划进度:按照评估后的风险结果,制定相应的风险管理进度表,为后续的风险管理提供参考。(