在项目的建设过程中,风险几乎无处不在。如何有效地识别、控制和管理风险,对项目的成功起着至关重要的影响。本文在参考了大量的国内外文献的基础上,结合自己多年软件项目工程经验,对软件项目在实施的各个阶段详细分析了其中可能存在的风险并进行分类,其中特别针对教育软件项目中某些特定项目(同时含有软件架构和课程设计的综合解决方案类软件项目)所遇到的特殊风险进行识别。 本文第三章对在教育软件项目实施过程中经常遇到的一些风险,举例进行风险分析,并根据多年的实施经验提出了作者的观点和相应的预防措施。虽然其中涉及到的案例仅仅是整个教育软件项目实施过程中的小部分风险,但具有典型意义,期望能为教育软件项目经理制定项目风险计划和进行风险预防、控制等提供参考。
关键词:教育软件项目
风险管理
风险识别
预防措施
In the project construction’s process, the risk is nearly everywhere. How to distinguish, control and manage the risk effectively, has a very important influence on project success. Based on the massive domestic and foreign literatures and software project experience for many years, this article analyzes the risk possibly existing in each stage of software project implementation and carries on the classification. Certain specific projects in the education software project (simultaneously including the abnormal risk, specially such as software construction and curriculum project's comprehensive solution in the software project), have carried on the recognition.
The third chapter of this article gives an example to carry on the risk analysis, and proposes author's viewpoint and the corresponding preventive measure. Although, the case has small part of risks which is involved in the entire education software project implementation process, it has the typical significance, expecting that it can provide the reference to the project risk for education software project manager to plan and carry on the risk prevention, control and so on.
Key words: Education Software Project; Risk Management; Risk Recognition; Preventive Measure
前
言. I
第1章
风险管理综述. 1
1.1风险相关概念. 1
1.1.1 风险的定义. 1
1.1.2 风险的属性. 1
1.1.3 风险的特征. 1
1.1.4 风险的分类. 3
1.2 软件项目中的风险管理. 3
1.2.1 软件项目中的风险. 3
1.2.2软件项目风险管理模型. 3
第2章
教育软件项目风险识别. 4
2.1风险识别的常用技术. 4
2.2 教育软件项目风险识别. 6
2.2.1 教育软件项目定义. 6
2.2.2 确定教育软件项目主要风险因素. 6
第3章
教育软件项目风险分析及应对. 10
3.1风险分析及应对. 10
3.2合同风险分析及预防措施. 11
3.3 需求变更风险分析及预防措施. 11
3.4 沟通不良风险分析及预防措施. 12
3.5 缺乏领导支持风险分析及预防措施. 12
3.6 进度风险分析及预防措施. 13
3.7 质量风险分析及预防措施. 13
3.8 系统性能风险分析及预防措施. 14
3.9 工具风险分析及预防措施. 14
3.10 团队成员能力和素质风险分析及预防措施. 15
3.11 人员流动风险分析及预防措施. 15
结
论. 17
参考文献. 18
致
谢. 19
前
言
在进行大型的软件项目开发中,往往需要采用许多新的、复杂的技术,投入巨额的资金,组织庞大的研制队伍,以及持续相当长的研制时间。这些都会带来种种难以预见的不确定性因素,造成失败的风险。
随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性,管理学的思想逐渐融入软件开发过程中,应用开发的项目管理日益受到重视。而项目管理技术的发展与计算机技术的发展是密不可分的,随着计算机性能的迅速提高,大量的项目管理软件涌现出来。它们可以用于各种商业活动,提供便于操作的图形界面,帮助用户制定任务、管理资源、进行成本预算、跟踪项目进度等。
从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展。
软件开发不同于其他产品的制造,软件的整个过程都是设计过程;另外,软件开发不需要使用大量的物质资源,而主要是人力资源;并且软件开发的产品只是程序代码和技术文件,并没有其他的物质结果。基于上述特点,软件项目管理与其他项目管理相比,有很大的独特性。
教育教学辅助软件项目同时还存在许多教学内容开发等风险因素在其中,特别是随着教育体制的改革,新技术、新的教学方式在院校中的推广,如何使教育教学辅助软件项目能够抗拒风险走在教学机构之前,是教育软件项目成败的另一大关键因素。
在软件项目实施过程中,项目经理往往分为两类,由专业技术人员职业转型做项目管理工作或由业务人员或其他管理人员空降进行项目管理。这两类人在软件项目实施过程中各有特点。专业技术人员往往在管理技术环节或技术创新等方面游刃有余,但对项目团队管理、时间管理、资金控制等方面存在严重不足,往往出现由于追求新技术导致人员入口狭窄,培训周期拉长导致项目周期延误,购置新设备新开发工具导致资金消耗过快等不可预期的风险的发生,对整个项目产生严重后果,更有甚者项目亏损严重或项目流失。
项目经理由业务人员提升或专职充当,在软件项目特别是教育软件项目管理方面有也存在很多问题。对于大型教育软件项目,往往需要在软件项目中含入课程设计环节,项目经理不但能够对开发人员、项目实施进行管理和控制,同时要能根据项目涉及到的专业方向,选择相关专业课程设计人员并安排课程设计的实施。除此以外项目说明书的编写技术环节、业务流程、课程体系之间的关系要能够总体把握。非技术类项目管理人员操作起来就会遇到不少问题,存在潜在的风险。
当然,因为人为的因素会在项目操作过程中遇到不同的问题,但如果我们根据软件项目实施过程,将每个环节所可能发生的风险进行归类,我们会发现,无论哪种项目经理,只要项目中将每个环节可能遇到的风险做详细的分析,终究能将风险控制在最小范围,甚至在极大程度上避免导致项目失败的风险的发生。
一个项目有可以预料的风险和不可预料的风险,以下作者总结自己多年的软件项目工程经验,分析研究了软件项目风险的相关理论,并针对教育软件项目的风险分类,对经常遇到的10种可预料的风险进行研究,提出相应的预防措施,期望能为教育软件项目经理制定项目风险计划和进行风险预防、控制等提供参考。
第1章
风险管理综述
1.1风险相关概念
1.1.1
风险的定义
风险是指对目前所采取的行动,在未来没有达到预期结果(失败)的可能性。其大小可用失败的概率和失败的后果两个变量来标识。
风险是带有不确定性的,但不确定的不一定都是风险。风险是一种不希望发生的结果而产生的一种潜在可能性。有关风险的问题可以具体描述为:
(1)
风险是一种不确定性。从事某项活动既有可能获得预期的利益,也有可能蒙受意料不到的损失或损害。机会和威胁是在项目运行过程中同时存在的,承认有风险就是承认既蕴含机会又蕴含威胁;
(2)
风险是损失或损害。一方面是因为人们从事各种活动的确有可能蒙受损失或损害,告诫人们提高警惕。另一方面,这种观点强调人类活动的不利后果,关心的重点是如何处理不利后果;
(3)
风险是预期和后果之间的差异。行动和事件的后果与人们的期待预想之间总是存在着不一致和偏差。后果偏离预期越大,风险也越大,即风险是实际后果偏离预期有利结果的可能性。
1.1.2
风险的属性
做好项目分析风险可以使我们考虑更全面、决策更科学、合理。研究风险问题,我们首先有必要对风险的属性进行了解和把握。
(1)
自然属性,即自然界的不规则运动给人类和其他物质运动所带来的危害和障碍;
(2)
社会属性,即社会的运动、发展必然导致人类的生命财产受到危害,而其影响结果通常将由整个社会承担;
(3)
经济属性,即风险的存在往往体现在人员的伤亡、生产力的破坏、社会财富的损毁或者经济价值的减少等,它与人类经济利益的损失相关联。
1.1.3
风险的特征
风险的特征是由风险的属性决定的,是风险的本质及其发生规律的外在表现。
第一,客观性和普遍性。作为损失发生的不确定性,风险是不以人的意志为转移并超越人们主观意识的客观存在,而且在项目的全寿命周期内,风险是无处不在、无时不有的。长久以来人们一直在寻求了解风险和避免风险,但至今也只能在一定范围内减少风险的损失和改变风险发生的内在、外在条件,而不能完全消除风险。
第二,不确定性。不确定性是风险最本质的特征,由于客观条件的不断变化以及人们对未来环境认识的不充分性,导致人们对事件未来的结果不能完全确定。风险是各种不确定因素综合的产物。
第三,潜在性。尽管风险是一种客观存在,但它的不确定性决定了它的一种特定出现只是一种可能,这种可能要依赖于其它相关条件,这一特性就是风险的潜在性。正是风险的潜在性使人类可以利用科学的方法,正确鉴别风险,改变风险发生的环境条件,从而达到减小风险、控制风险的目的。
第四,可测性。不确定性是风险的本质,但这种不确定性并不是指对客观事物变化的全然不知,人们可以根据以往发生的一系列类似事件的统计资料,经过分析、研究,对风险发生的频率及其造成的损失程度做出统计分析和主观判断或估计,从而对可能发生的风险进行预测与衡量。
第五,双重性。风险的双重性是指由风险所引发的结果可能是损失也可能是收益。传统上都把风险作为损失来看待,因此风险的双重性也指风险与收益机会共存。风险结果的双重性应使我们认识到,对待风险不应只是消极对待其损失一面,还应将风险当作是一种机会,通过风险管理尽量获得风险收益。
第六,行为相关性。行为相关性是指决策者面临的风险与其决策行为是紧密关联的。不同的决策者对同一风险事件会有不同的决策行为,具体反映在其采取的不同策略和不同的管理方法上。因此也会面临不同的风险结果。风险的行为相关性表明,任何一种风险实质上都是由决策行为与风险状态结合而成的,是风险状态与决策行为的统一,风险状态是客观的,但其结果会因不同的风险态度和决策行为而不同。
第七,可变性。这是指在项目实施的整个过程中各种风险在质和量上会发生变化,随着项目的进行,有些风险得到控制,有些风险会发生并得到处理,同时在项目的每一阶段都可能产生新的风险。
第八,多样性和多层次性。这一特征主要体现在大型项目中,因重大项目周期长、规模大、涉及范围广、风险因素数量多且种类繁杂致使其在全寿命周期内面临的风险多种多样,而且大量风险因素之间的内在关系错综复杂、各风险因素之间并与外界交叉影响又使风险显示出多层次性。
1.1.4
风险的分类
根据风险内容,我们可以将风险分为项目风险、技术风险、商业风险、战略风险、管理风险、预算风险等。 另外,我们还可以将风险分为已知风险、可预知风险和不可预知风险。
1.2 软件项目中的风险管理
1.2.1
软件项目中的风险
软件项目的风险无非体现在以下四个方面:需求风险、技术风险、成本风险和进度风险。
1.2.2软件项目风险管理模型
针对软件项目中的风险管理问题,不少专家、组织提出了自己的风险管理模型。主要的风险管理模型有:Boehm模型,CRM模型和SERIM模型。
其中RE表示风险或者风险所造成的影响,P(UO)表示令人不满意的结果所发生的概率,L(UO)表示糟糕的结果会产生的破坏性的程度。Boehm思想的核心是10大风险因素列表。针对每个风险因素,都给出了一系列的风险管理策略。在实际操作时,Boehm以10大风险列表为依据,总结当前项目具体的风险因素,评估后进行计划和实施,在下一次定期召开的会议上再对这10大风险因素的解决情况进行总结,产生新的10大风险因素表,依此类推。
2.
SEI的CRM(Continuous Risk Management)模型
SEI CRM模型的风险管理原则是:不断地评估可能造成恶劣后果的因素;决定最迫切需要处理的风险;实现控制风险的策略;评测并确保风险策略实施的有效性。CRM模型要求在项目生命期的所有阶段都关注风险识别和管理,它将风险管理划分为五个步骤:风险识别、分析、计划、跟踪、控制。
3.
SERIM(Software Engineering Risk Model)模型
SERIM从技术和商业两个角度对软件风险管理进行剖析,考虑的问题涉及开销、进度、技术性能等。它还提供了一些指标和模型来估量和预测风险,由于这些数据来源于大量的实际经验,因此具有很强的说服力。
第2章
教育软件项目风险识别
对于教育软件项目,存在通用型软件项目的风险,同时还存在若干教育软件项目特有的风险和引发风险的条件。根据软件项目的风险的研究和分类,下面我们具体对教育软件项目的风险进行分类和识别。
2.1风险识别的常用技术
软件项目风险的多样性决定了识别风险方法的多样化。关于风险识别有许多常规的技术和工具,如风险识别专题讨论会、头脑风暴法、德尔菲法、SWOT法、检查表法、假设分析法等。
检查表是管理中用来记录和整理数据的常用工具。用它进行风险识别时,将项目可能发生的许多潜在风险列于一个表上,供识别人员进行检查核对,用来判别某项目是否存在表中所列或类似的风险。检查表中所列都是历史上类似项目曾发生过的风险,是项目风险管理经验的结晶,对项日管理人员具有开阔思路、启发联想、抛砖引玉的作用。一个成熟的项目公司或项目组织要掌握丰富的风险识别检查表工具。检查表可以包括多种内容:
头脑风暴法是通过营造一个无批评的自由的会议环境,使与会者畅所欲言,充分交流、互相启迪,产生出大量创造性意见的过程。
头脑风暴法以共同目标为中心,参会人员在他人的看法上提出自己的意见。它可以充分发挥集体的智慧,提高风险识别的正确性和效率。
头脑风暴法包括收集意见和对意见进行评价。具体过程是:
(1)人员选择。参加头脑风暴会议的人员主要由风险分析专家、风险管理专家、相关专业领域的专家以及具有较强逻辑思维能力和总结分析能力的主持人组成。主持人是一个非常重要的角色,要求具有较高的素质,反应灵敏,且具有较高的归纳力和较强的综合能力。
(2)明确中心议题,并醒目标注。议题可以请两位组员复述,以确保每个人都正确理解议题的含义。
(3)轮流发言并记录。无条件接纳任何意见,不加以评论。在轮流发言时,任何一个成员都可以先不发表意见而跳过。主持人应尽量按原话记录每条意见。
(4)发言终止。循环进行轮流发言,但当每个人都曾在发言中跳过时,发言终止。
(5)对意见进行评价。组员在发言停止后,共同评价每一条意见,最后由主持人总结出几条重要结论。
应用头脑风暴法要遵循一个原则,即在发言过程中不进行任何判断性评论。
德尔菲法又称函询调查法,是指把所要调查的问题编制成表,再将调查表和背景资料函寄给各位专家,通过多轮次的函询调查识别项目风险。这种方法的最大特点是专家与专家之间不见面,背靠背地进行,不发生任何关系,这就减少了权威、资历、口才、人数和心理等因素的影响,各位专家能大胆思考、各抒己见、畅所欲言,在整个应答过程中随时可以改变自己的意见,重新做出预判,也不至于损害自己的威望。
应答结果完全是靠专家的经验和知识做出的主观判断和分析。这种方法对那些缺乏客观资料和历史数据的情况比较适用,尤其适用于项目启动阶段的风险预测。
德尔菲法的两大关键是调查表的编制和专家的选择。调查表设计得如何会直接影响到调查结果,编制调查表要以方便专家应答为原则,再根据专家的应答意见做出预测。由于预测质量的好坏取决于专家的应答效果,所以选择合适的专家是提高预测质量的关键。
由于不同的专家从不同角度考虑,所以对问题的理解不同,应答结果也不完全相同。实践表明,一次函询调查很难形成共识,一般要通过多轮调查后,专家意见才能取得一致。用这种方法一般可预测项目的风险、造成风险的因素、风险事件的概率、风险事件后果程度的评价、风险应对措施等等。
2.2 教育软件项目风险识别
2.2.1教育软件项目定义
此处所讨论的教育软件项目不单纯指软件框架本身,而是包含教育教学软件、教学资源及教学方式的完整教育软件项目,即可以简单理解为教育解决方案项目。
2.2.2
确定教育软件项目主要风险因素
通过结合教育软件项目自身的特点、工作分解结构以及作者多年的实践经验,可以全面认识教育软件项目,识别出影响软件项目的主要风险因素:需求风险、计划编制风险、组织和管理风险、人员风险、开发环境风险、客户风险、产品风险、设计和实现风险、过程风险,这些风险因素考虑了教育软件项目的工作分解结构,通过彼此之间的联系和相互作用以及它们组成整体的方式,决定了教育软件项目整体的性质和功能,如果这些风险因素产生影响,则教育软件项目整体的性质和功能也要发生变化。所以,通过对这些风险因素的综合分析,可以识别出软件项目总体的风险水平。
(2)软件项目框架标准,但需求中涉及到的教学内容随着教学存在不确定性;
(3)需求定义欠佳,而进一步的定义会扩展项目范畴;
(4)需求中不可估计教育体系更新时间,导致可扩展项目不确定;
(1)计划、资源和产品定义不一致。此风险在教育软件项目中较突出,教育机构希望在教学内容上与现有教学素材贴近,在应用层面上能与企业需求紧密衔接,但往往从现有教学体系上,教学机构教学内容和企业需求存在较大差异,差异不仅仅在于教学机构的教学内容旧,相反,当前企业应用往往寻求更稳定的产品与技术,而有些教学机构为传授先进技术相对企业需求反而更高;
(2)计划是优化的,是最佳状态,但计划不现实,只能算是期望状态;
(3)计划基于使用特定的小组成员,而那个特定的小组成员其实指望不上,小组成员往往从软件开发、企业需求方面较为有经验,但多数成员没有教学授课经验;
(4)产品规模(代码行数、功能点、与前一产品规模的百分比)比估计的要大;
(5)完成目标日期提前,但没有相应地调整产品范围或可用资源;
(6)涉足不熟悉的产品领域,花费在设计和实现上的时间比预期的要多;
(7)计划周期过长导致已完成的教学素材落后于下年度学员持有的教学素材。
(1)仅由管理层或市场人员进行技术决策,导致计划进度缓慢,计划时间延长;
(7)非技术的第三方的工作(预算批准、设备采购批准、法律方面的审查、安全保证等)时间比预期的延长。
(1)作为先决条件的任务(如培训及其他项目)不能按时完成;
(2)开发人员和管理层之间关系不佳,导致决策缓慢,影响全局;
(4)聘请有丰富经验的教学机构讲师做项目指导,但由于教师工作的特殊性(授课、巡讲、外出深造等原因),无法达到及时沟通;
(5)课程设计人员具备系统化教学思路和经验,此类人才往往需要从教学机构聘请,人员入口狭窄;
(6)项目后期加入新的开发人员,需进行培训并逐渐与现有成员沟通,从而使现有成员的工作效率降低;
(7)由于项目组成员之间发生冲突,导致沟通不畅、设计欠佳、接口出现错误和额外的重复工作;
(2)设施虽到位,但不配套,如没有电话、网线、办公用品等;
(5)开发工具不如期望的那样有效,开发人员需要时间创建工作环境或者切换新的工具;
(1)客户对于最后交付的产品不满意,要求重新设计和重做;
(2)客户由于专业课程变更导致定制开发产品变更,需要重新设计重新开发;
(3)客户的意见未被采纳,造成产品最终无法满足用户要求,因而必须重做;
(4)多家客户存在需求差异,导致项目根据客户不同定向变更;每家教育机构课程体系不完全公开,各机构间为办出教学特色往往在课程内容上寻求新颖,导致客户内容需求的差异较大;
(5)客户对规划、原型和规格的审核决策周期比预期的要长,对于大型教育软件项目,往往需要经过多层审批,特定产品需申报到当地教育管理机构;
(6)客户答复的时间(如回答或澄清与需求相关问题的时间)比预期长;
(1)矫正质量低下的不可接受的产品,需要比预期更多的测试、设计和实现工作;
(3)由于现有系统的约束,导致开发环境与实际应用环境的不统一,需要进行比预期更多的测试、设计和实现工作;
(4)要求与其他系统或不受本项目组控制的系统相连,教学机构当前多数使用多媒体或远程教学方式,院系信息、学员信息需要与第三方开发者开发的系统共享数据,导致无法预料的设计、实现和测试工作;
(5)在不熟悉或未经检验的软件和硬件环境中运行所产生的未预料到的问题;
(7)测试周期无教学机构参与,导致无法及时发现与教学计划相关的问题。
(2)一些必要的功能无法使用现有的代码和库实现,开发人员必须使用新的库或者自行开发新的功能;
(3)教学机构第三方教学平台变更导致开发人员要对产品进行被动更新,或使用新技术开发接口;
(4)代码和库质量低下,导致需要进行额外的测试,修正错误,或重新制作;
(5)教育软件项目存在课程进化性,旧系统开发的基础类课程变化速度慢,新系统开发的技术类课程更新速度快,导致新旧系统兼容过程中需要修正大量代码和接口。
(2)前期的质量保证行为不真实,导致后期的重复工作;
(3)太不正规(缺乏对软件开发策略和标准的遵循),导致沟通不足,质量欠佳,甚至需重新开发;
(4)过于正规(教条地坚持软件开发策略和标准),导致过多耗时于无用的工作;
(5)向管理层撰写进程报告占用开发人员的时间比预期的多;
(6)与原有教学体系磨合,使开发人员消耗更多的时间;
(7)兼顾原有教学体系,同时需要引入企业应用寻求改变,两线作战导致开发和设计人员需要更长的开发周期;
第3章
教育软件项目风险分析及应对