软件项目风险管理的过程与意义
在现实生活中,无论我们从事什么活动,时刻都面临着各种各样的风险。风险是无形的,但却是客观存在的谁也不能回避的一个生产生活中的重要组成部分。首先,我们应该对风险有一个概念上的理解,那么什么是风险呢?根据美国软件
研究所的定义,风险是一种损失的可能性,其两大基本属性为可能性与损失。基于以上概念,我们不难发现,风险其实无法避免,因此,我们要做的就是尽可能地在做一件事或一个项目的过程中,将风险意识贯穿始终,运用一定的科学的
将风险影响降低到最小的程度。这就要求我们要重视风险的存在、主动地认识风险、积极管理风险、做好风险防范措施来控制风险的发生,以使各项工作的进度与质量按期保质完成。
1.1 首先,我们应对软件项目风险管理的意义有一个充分的认识。我们都知道,如今,人类正在信息化的道路上突飞猛进,我们已经步入了信息与知识经济的时代。而一个项目成为了组织通过创新而创造利润财富的主要手段,因此,项目管理成为了实现这样一个目标的重要手段。随着科学技术与生产力的不断发展,项目的规模也也愈来愈庞大,同时也加剧组织和技术的管理上的复杂性与成本。这都显示出了项目管理在当今组织和项目运作中的地位将会越来越重要,项目风险管理也成为了一个项目管理的不可分割的部分。是项目得以顺利完成的重要保障。对软件项目实施风险管理的意义可以归纳如下:
1、通过风险分析,可加深对项目和风险的认识和理解,澄清各个
的利弊,了解风险对项目的影响,以减少或分散风险;
2、为以后的规划与设计工作提供反馈,以便采取措施防止与避免风险损失;
3、通过风险管理可以使决策更科学,从总体上减少项目风险,保证项目的实现;
4、推动项目管理层和项目组织积累风险资料,以便改进将来的项目风险;
1.2 项目风险管理的发展状况:
风险管理起源于美国。在20世纪50年代早期和中期,由于美国的几家大公司发生了严重的损失,使其高层决策者认识到了风险管理的重要性,而且由于二战以来,在人们利用新的科学技术和研发新产品实施项目时,也面临着诸多不确定的因素。在20世纪50年代初开始了项目风险管理术语的使用,50年代中期开始,风险管理被学术界关注。20世纪60年代起,风险管理的研究逐步趋向于系统化、专门化发展,其也成为企业管理中的一门独立学科。
1.3 本文内容:
本文将从讨论项目、风险、项目管理入手,对相关的概念作进一步的深入阐述,并着重探讨项目风险管理在小规模软件企业中的应用与研究。
1.3.1 项目
项目是人类社会特有的一类经济、社会活动形式,是创造特定的产品或服务而开展的一次性活动。
1.3.2 目的性
项目的目的性是指任何项目都是为了实现特定的组织目标服务的,因此,任何一个项目都必须根据组织目标确定出项目的目标,这些目标主要分为两个方面:一是有关项目本身的目标(如软件开发项目中的软件开发期、开发成本、质量、软件开发的文档化程度等方面;一是有关项目产出物的目标(如软件开发项目的软件产品的功能、可靠性、可扩展性等)。
1.3.3 风险性
项目的风险性是指项目的最终结果与最初设计产生背离的可能性,由项目的独特性、制约性、一次性等特性造成。
(1)、制约性:指每个项目都在一定程度上受客观条件和资源的制约。最主要的制约是资源的制约。资源制约包括:人力资源、财力资源、物力资源、时间资源、技术资源、信息资源等各个方面的资源制约。
1.3.4 风险
当今社会,任何组织甚至是个人都面临着各式各样的风险。如企业面临着信用风险、财务风险、生产风险、市场营销风险、人力资源风险等。由本文开始所阐述的,我们进一步不难得出风险的如下性质:
(1)、客观性与普遍性:风险是由于环境的不确定性而无法得到准确的预期结果的信息,是不以人的意志为转移的,是不可避免的。人类的一切活动都面临着各种各样的风险;
(2)、偶然性与必然性:风险是客观存在的,在一定条件下还带有某些规律性。突发性风险事故的发生是无规律可循的,具有一定的偶然性。都是通过对大量风险事故资料的业统计分析可以归纳出一些有预警信息的风险规律性,这就使人们有可能用科学的方法计算风险发生的概率和损失程度。
(3)、风险的动态性:风险的成因是客观条件的变化,人们对客观状态的不可控使得风险随时可能发生并随着环境的改变而不断地改变其状态(消失、减弱、增加、变性等)。
(4)、风险后果的双面性:风险事件的发生产生的后果可能带来损失,也可能产生收益。
1.3.5 项目风险
由项目的含义分析可知,任何一个项目都存在许多不确定的因素,而这些不确定度额因素有可能导致项目结果与预期目标产生偏离,这些不确定因素就是项目的风险因素,又称作风险源,它们可促使风险事故的发生,从而引起项目的遭受损失。
项目风险的特征:正如项目具有一次性、独特性和创新等特性,项目风险也具有自己的特性,其主要特征如下:
(1)客观性:项目风险是由项目的不确定因素引起的,而任何项目都存在许多不确定的因素,都存在不同的风险。所以项目风险是客观存在的,关键是人们能否认识风险、应对风险、有效地控制风险。
(2)、随机性:因为风险是由那些不可预测的因素引起的,所以风险的发生也是难以预测的,具有偶然性或随机性(如交通事故的发生),谁也无法预测出准确的时间、地点、什么样的交通事故。
(3)、阶段性:是指项目风险的发生是分阶段的,而且这些阶段都有明确的界限,里程碑和风险征兆。通常项目风险的发生分为三个阶段:潜在风险阶段、征兆与发生阶段、造成后果阶段。
(4)突变性:项目内外部环境的发展是无法预料的,当发生突时,项目风险的性质和后果也会随之发生突变。也许原来被认为是项目风险的事件会突然消失,而原来被认为没有风险的事件却会突然发生。
(5)、可控性:形成项目风险的根本原因是人们对于项目未来发展与变化的认识和应对等方面出现了问题。而人们对事物的认知可分为:拥有完备信息的状态、拥有不完备信息状态和完全没有信息的状态,分别对应的是“确定事件”、“不确定事件或风险事件”、“完全不确定性事件”。三种事件的比列中风险事件所占的比重是最大的。风险性事件中风险的发生是有征兆的,它的概率和各种可能的后果是可以预测的,这就为有效地控制风险提供了依据。
1.3.6 项目风险管理过程
针对项目风险有无预警信息来说,项目风险管理形成了两种理论:一种是无任何预警信息的突发性的项目风险管理理论和方法;另一种是有预警信息的项目风险管理理论和方法。对于无预警信息的突发性的项目风险,很难提前对这类风险进行识别、跟踪与控制,只能在风险发生时采取补救的方法消除或控制,减少这类风险事件产生的后果;
对于有预警信息的项目风险,可以通过收集预警信息去识别和预测,针对项目风险发生的各个阶段,采用相应的管理方法。如在项目风险的潜在阶段,一般采用规避方法,防止其发生;在风险发生阶段,一般采用化解的方法,尽量降低风险后果的发生,减少后果造成的损失;在风险后果阶段,只能采取“救火”的方法,把风险后果减到最低程度。风险的识别、识别方法、风险的评估及评估方法、风险计划等课本上都有详细的介绍,再次不再赘述。
1.4 案例分析
在本文的案例分析部分,我将结合自己的实践经历并结合课本的相关内容对一个项目中的风险管理过程进行总结与反思。由于所在的软件公司相对来说只承接银行自动取款机系统的业务,因此,将着重介绍小规模软件企业的项目风险管理。
随着网络时代的到来和信息经济的涌现,我们对信息系统的依赖越来越大,也越来越苛刻,对软件产品的质量也提出了越来越高的要求,软件行业的竞争也越来越激烈。而且,对于我国而言,软件行业虽然研发水平在不断地提高,但是我国的软件企业大多数的规模偏小,成熟度不高,没有
的软件开发过程且随意性较强,这就使得软件项目的不确定性更高了。
那么,什么是小规模软件企业?这类企业员工一般不足50人,自身研发软件必须依赖公司的技术人员参与安装调试,缺乏产品化,很少能作为单纯买卖商对外独立销售。
1.4.1 小规模软件企业风险管理的重要性
小规模软件企业是低成熟度的软件企业,软件的开发没有项目管理的概念,规范性较差,所以几乎不可能开发出含有高附加值的通用软件、支撑软件和应用软件;由于企业规模小,很难与大规模、高资质的系统集成相对抗。软件企业是人力密集型企业,技术人员是企业的基础,核心技术人员是企业的命脉。小规模企业一般仅有较少的技术骨干。这些技术骨干承担着企业承接项目的开发任务,项目的成败是依仗着他们的个人能力的,这种将项目的成败维系在一个人或少数几个人的身上也增加了项目的风险。再者,这些技术人员在担任着软件开发任务的同时也兼顾着以往项目的软件维护工作,这样也无形中对软件项目的开发产生了负面的影响。
1.4.2 银行自助取款机系统项目风险管理
1)公司概述:
南京理工速必得科技股份有限公司成立于2009年11月,是经南京理工大学批准,由原南京理工大学科技贸易公司引进战略投资组建的高新技术企业,注册资金人民币5000万元。公司专业研制“速必得”牌金融机具,是集研发、生产、销售、服务于一体的现代化高科技进出口企业。公司位于国家级南京经济技术开发区,占地面积近40亩,建筑面积25000平米,现有员工近200人,生产各类金融设备达10万余台。
2)银行自助取款机系统软件的介绍
软件控制着整个人机对话和交易流程,从欢迎用户的广告画面、用户插卡、选择交易到自动柜员机向主机提交和接收主机指令,吐钞模块出钞等一系列动作;软件还提供管理员菜单保证金融机构职员管理自动柜员机。好的系统软件还可以详细记录机器的故障,向维护人员提供预警信息,同时
主机。 自动柜员机与主机的对话是根据约定的通信格式来完成的。通常是双方规定好交易代码、加密方法以及故障报告等细节,近年来自动柜员机软件的发展趋势是采用iso 8583 的金融交易交换格式作为通信格式,这有助于各种自动柜员机联入网络。
国内的自动柜员机基本上采用了dos、window95、os/2、windows NT 等操作系统。从效果来看,支持多任务的操作系统能更好的缩短运行时间,提高运行效率。编程语言主要使用C、C++、Pascal等。从整体来看,软件应以稳定,高效,安全为最高原则。
3) 功能图
1.4.3 项目实施
就公司本身而言,银行自助取款机系统已经是一个相对成熟的产品了,其结构模式基本确定,软件方面只需要针对不同银行的不同需求稍作改动就可以满足客户要求了,那么项目实施的重点工作就是系统集成。系统集成是将信息技术、产品与服务结合起来实现特定功能的业务,一般具有有技术性、多项目性、多程序性、多面性、多不确定性等特点。除软件研发外还包括信息点的确认,信息点间的连接,设备的采购(本公司主要生产)、安装调试,用户培训等。由于小规模企业具有“不规范”性,故对集成项目的实施缺乏项目管理,没有专门的项目小组,没有专门的小组成员,形成人人都负责,人人都不负责,人人都参与,人人都不参与的情况。所以项目风险管理就更有必要了。
1.4.4 项目关联方
提供服务
使用
项目的承接与验收
开发维护
银行自助取款机系统主要涉及银行、银行客户、公司主要三方。
1.4.5 项目风险识别
根据项目风险识别程序,首先是收集自资料并在前面分析资料的基础上进行风险判断,通过对公司职能结构及该项目过程和环境的分析考虑采用头脑风暴法,并结合多年的实践经验,经常发生的项目风险主要有设计风险、技术风险、质量风险、工期风险和成本风险。而我在实习中体验最深的就是后面两个风险,工期风险和成本风险。
(1)、工期风险:
引发工期风险的因素多种多样,主要还有施工环境不具备、工期预测过于乐观等,其后果就是工期的不确定延长而使成本上升。在我实习期间感觉最为严重的就是会面临着违约的风险。在此期间我发现为了避免工期预期的风险,部门领导会在一周中有3—4次对项目进度进行一定的了解,并且会及时为开发人员提供咨询或相关的指导,经理则是每周四下午定期过来了解情况,通过开会,开发人员汇报前一周的工作情况与内容,以使项目经理能够准确地了解项目的进度,确保如期交货。
(2)、成本风险
引发成本风险的主要因素还有外购设备价格上涨的不确定性,人员的派出经费的不确定性,还有管理不到位造成的浪费等。比如在公司交货后,会派开发人员去进行员工使用的培训,时间长的可达半个月,而且每周基本都会有将近一半的人会有这样的任务,同时,开发人员的人数相对较少,这样势必会使新的项目的进程受到极大的影响,由此也容易引发人员缺失的风险。
1.4.6 项目风险分析
风险分析是在风险识别的基础上进行的,主要是对风险发生的概率、风险损失程度以及风险探测能力进行定性和大量定量的分析,找出其最大的值,关于定性与定量的关系可见下表:
定性与定量关系量化表
非常高(大)
非常大
高(较大)
很可能
中
可能
低(较小)
不太可能
非常低
非常小
风险损失
0.8
0.4
0.2
0.1
0.05
风险概率
0.9
0.7
0.5
0.3
0.1
风险探测力
1
3
5
7
9
1.4.7 风险估计
(1)、设计风险估计:实践表明,我们在软件开发要事先与客户经常协商,反复磨合,及时了解客户需求,必然会减少客户需求的不稳定性,这对设计影响不大,而且我们也有足够的能力与实践来应付开发过程中的这些小的变动需求,并且可以根据相关风险损失与概率参照上表得出风险评估值。
(2)、质量风险估计:在开发过程中,质量问题会经常发生,但是这些问题均可以在调试和运行阶段得到解决,就整体来说,质量风险取值为中,取值为0.5,但是其造成的损失是较大的,取值0.4;但是其探测能力为7。
(3)工期风险估计:室外施工受到天气的影响较大,施工环境和缺乏详细的施工计划会引发工期风险。比如我们公司在派出开发人员对银行的的相关工作人员进行培训时,有时会因为天气原因而取消,而且在出差的过程中也发生了一些开发人员为了躲避工作,在出差到上海的系统维护中将本来只需要两天的时间由于主观原因而无故拖延一周,给公司造成额外费用与人员上的浪费。
(4)成本风险估计:物价上涨,客户需求增加,成本预算偏低等会引发成本风险。根据公司的风险估计表可以得到其风险估计结果:
序号
风险
风险概率
风险损失
风险探测能力
1
设计风险
0.7
0.2
3
2
技术风险
0.3
0.8
7
3
质量风险
0.5
0.4
5
4
工期风险
0.5
0.2
5
5
成本风险
0.3
0.4
3
从而可以看出,设计风险发生的概率最大,所造成的损失相对较小,技术风险所造成的损失最大,但是发生的概率相对较少;这样也还是很难判断风险的大小,因此有时还需要对风险进行综合指标的分析评价,才能更清楚地判断风险严重性。
(5)项目风险评价 由于各个风险在项目的实施过程中是不同的,而且重要程度也会发生变化,所以应该考虑到各个风险分析值的贡献。
1.4.8 风险应对措施
风险管理的核心是风险应对措施,在风险识别、风险分析和评价的基础上,针对引发风险的因素和危害性,提出具体的措施进行应对,在该项目的风险应对措施可归纳如下:
序号
风险
应对措施
效果
1
设计风险
加强与客户协商,正确理解客户需求,建立备忘录日志,采用模块化设计
设计合理、更好地满足客户的需求,兼容扩张性增强
2
技术风险
成立项目临时小组,代码分开编写、加强管理与技术评审,技术培训
避免人员流失所造成的严重损失
3
质量风险
加强施工过程的质量监控、选择高水平外包团队或则请友公司协助或者咨询学校的教授
提高项目质量水平、保证外购件的性能和外包工程质量
4
工期风险
制定详细的施工计划,及时掌握进度,加强各个部分开发人员的沟通,确保进度协调,提高工作效率
按时完成交货
5
成本风险
成本预算仔细、节省开支、减少浪费、严格控制差旅费用、严格执行差旅期限,在预算内中加入不可知费用
减小多余开支,增加利润
以上即是银行自助取款机系统项目的开发过程中的项目风险分析。对于小规模的软件公司和小的项目开发具有一定的借鉴作用。
1.5 总结
通过以上的概念、过程、案例介绍,可以说项目风险管理是项目管理的核心和难点而针对案例中的相关风险分析与应对措施,我觉得我们的主要研究工作应该如下几点:
(1) 要较为全面地了解风险的概念与特点,认识项目与项目风险、项目管理与项目风险的区别;
(2) 风险管理实际上是一种经验和方法的积累,其应对风险的能力大小也主要取决于对相关经验与资料的整理与积累,并且对于过往经验的运用是否正确等。
(3) 风险的识别是风险分析和应对的基础和前提,是关系到项目成败与否的关键。
(4) 得出了对于小型软件公司的项目管理的方法和可能存在风险的最高的阶段中。要杜绝掉职责不明、权限不清、人浮于事的情况发生,应该建设一个高效,团结、配合程度高的精干的开发团队。