1 引言
随着软件在各行各业的广泛应用,人们对软件的质量和可靠性要求越来越高,对软件开发组织的能力成熟度水平越来越关心。软件研发组织面对行业的发展机遇,急需提高自身软件项目的管理水平,以在日益竞争的市场环境中取得竞争优势。
虽然经过多年的发展,但是软件项目失败的比例仍然居高不下。评价软件项目成功与否,主要从以下几个方面来考虑:是否按时交付、成本是否控制在预算之内、质量是否达到客户要求。如果软件项目总是延期交付,成本总是超过当初的预算或者质量不能达到客户的要求(如产品交付后缺陷太多)则说明此软件项目是失败的。软件项目失败的原因归为两个方面:技术方面和管理方面。软件行业是业界公认技术发展最快的行业,随着各种新技术、新方法不断涌现,使软件开发的生产率不断提高,但是技术的提高并没有解决项目失败率高的现状,管理成为软件项目失败的主要原因,而软件开发通常是以项目的方式运作,因此软件项目管理的水平决定了项目成功的概率。软件项目管理发展到今天,已经形成了一些成熟的理论框架,如 PMPBOK、Prince2 等。基于这些理论框架,整个软件行业的项目管理水平已经有了非常大的改观,但是客户对软件项目的要求越来越苛刻,软件项目的复杂度也越来越高,软件项目失败率高的问题仍然困扰着我们。从项目管理的基本框架上来看,项目管理的核心是计划和监控。计划不准确、监控不及时是造成软件项目失败的主要原因,因此如果能够提高计划的准确性、能够及时的监控项目状态发现项目问题,那么项目成功率将大大提高。很多软件公司都在采用各种方法提高软件项目的计划和监控能力,业界也存在一些项目预测模型以及过程分析技术,如COCOMO 成本预测模型、统计过程控制方法,这些方法对项目计划或者监控非常有帮助。但是目前业界存在的各种模型和方法都只是在某一方面有一定的作用,而项目管理是一个复杂的问题,单靠一种模型、一种方法仍然不能很好的解决项目管理的计划和监控问题。
在软件过程改进行业目前最流行的改进模型是卡耐基梅隆大学软件工程研究院开发的 CMMI 模型。CMMI 模型强调商业目标驱动过程改进,并通过不断提高预测和监控的能力使组织的过程能力水平和成熟度不断提高,而且 CMMI 成熟度等级也得到软件行业的广泛认可。为了达到可持续发展的商业目标,许多组织追求达到 CMMI 高成熟度等级,以提高组织的过程性能、提高项目管理的水平、获得可持续发展的能力、向业界证明自己的研发水平和能力。CMMI 是一套过程改进的框架,分为五个成熟度等级,四级和五级属于高成熟等级,等级越高表明过程预测能力越高,项目的量化管理能力越强,CMMI高成熟度等级也是为了提高项目的预测和监控能力,并持续的优化过程的能力。目前业界除了一些较大的软件公司外,中小型软件公司实施CMMI高成熟度等级的并不是很多,当然并不是这些软件公司不想达到 CMMI 高成熟度,主要是实施高成熟度的案例和经验非常少。CMMI 模型仅仅告诉了我们要做什么,但是没有告诉我们如何去做,如何去做需要企业自己去定义。因此业界并没有公布一套普遍适用的、可操作的方法和技术帮助企业实施 CMMI 高成熟度。这就导致了很多软件企业不知道采用哪些方法和技术可以达到过程的可预测性和量化的项目管理。
面对软件组织所面临的项目管理的计划不准确和监控不及时的问题,我们迫切需要一种的方法能够有效的解决它。过程仿真技术是一种以过程和数据为基础,通过模拟过程的执行而能够预测过程结果的仿真预测技术。过程仿真技术在研究和学术界一直备受推崇,近几年随着计算机硬件和计算能力的不断发展,进行过程仿真的成本也在不断降低,因此这使得过程仿真技术在工程实践领域的广泛应用成为可能。过程仿真技术作为一种仿真预测技术已经在制造行业、化工行业、信息技术行业等得到了广泛的应用,但是在软件项目管理领域应用非常少。那么如何有效的应用过程仿真技术到软件项目管理领域,以提高项目的预测和监控能力,持续保证项目的成功将是一项非常有意义的课题,也是本文主要的研究方向。根据过程仿真技术以过程为基础的特点,它是完全可以应用到软件项目管理中的,因此很多研究机构和软件组织都在尝试把过程仿真技术应用到软件项目管理中。其中蒙特卡洛仿真、贝叶斯网络等仿真技术是应用最为广泛的,它们在一些方面确实提高了项目管理的能力,例如蒙特卡洛仿真已经广泛的应用到了项目风险管理和项目投资决策活动中。但是还没有某种单一的仿真技术能够同时有效解决项目管理的计划和监控问题。同时解决项目管理的计划和监控问题是一个系统工程,需要把多种过程仿真技术、过程监控技术等融合到一起,这就需要构建一个开放的过程仿真模型框架,该模型框架中要包含多种和项目目标相关的要素,随着项目的需要可以调整这些要素的内容。例如,如果项目只关注质量,那么模型要素可以只需要质量相关的参数;如果项目既关注质量又关注成本,那么模型要素就需要质量相关的参数和成本项目的参数,并且这些参数之间互相存在关系。因此我们需要尝试构建这样的一个过程仿真模型,找到基本的模型构成要素,并且按照目标驱动度量的方法来扩展模型要素的内容,并把模型实际应用到软件项目管理中解决项目的计划不准确和监控不及时的问题。
本文将重点研究在软件项目管理领域中如何应用过程仿真技术解决软件项目管理的问题,将通过选择过程仿真技术、创建过程仿真模型构成要素、基于这些要素组建过程仿真模型、在软件项目管理的计划和监控阶段应用过程仿真模型等几个内容展示过程仿真技术对软件项目管理的高价值性。
2 软件项目管理与过程仿真技术
2.1 本章概述
软件项目失败率非常高,软件项目是公认的最难管的项目之一。软件项目管理技术和方法也在不断地更新和完善以期能够更好的管理软件项目。过程仿真技术是目前比较流行的技术之一,许多软件组织也尝试在软件项目管理中应用过程仿真技术,因此本章首先对软件项目管理和过程仿真技术进行介绍。
3 软件项目管理过程仿真的技术选择和模型构建 .............................. 15
3.1 本章概述 ....................................................... 15
3.2 过程仿真技术的选择 ............................................. 16
3.3 过程仿真模型的要素 ............................................. 17
3.3.1 覆盖软件项目生命周期的过程集............................ 18
3.3.2 过程度量................................................ 18
3.4 过程仿真模型的构建 ............................................. 22
3.5 本章小结 ....................................................... 23
4 软件项目管理过程仿真模型的数据输入和结果分析........................... 24
4.1 本章概述 ....................................................... 24
4.2 计划阶段的输入 ................................................. 24
4.2.1 项目目标................................................ 25
4.2.2 过程数据的分布参数...................................... 25
4.3 监控阶段的输入 ................................................. 28
4.4 计划阶段的仿真结果分析 ......................................... 28
4.4.1 过程选择结果分析........................................ 29
4.4.2 目标预测结果分析........................................ 30
4.5 监控阶段的仿真结果分析 ......................................... 33
4.5.1 过程监控结果分析........................................ 33
4.5.2 项目进展监控结果分析.................................... 34
4.6 本章小结 ....................................................... 35
5 过程仿真的应用案例 .................................................... 36
5.1 本章概述 ....................................................... 36
5.2 案例背景介绍 ................................................... 36
5.3 过程仿真模型的建立 ............................................. 37
5.4 使用过程仿真模型快速选择过程,支持过程裁剪决策 ................. 47
5.5 使用过程仿真模型定量的支持项目监督和控制 ....................... 51
5.6 本章小结 ....................................................... 56
6 结论
通过实际案例的研究,我们发现过程仿真模型在提高软件项目管理水平方面有非常大的作用。它有效地解决了项目预测的问题,能够在项目一开始快速选择配置最佳的项目过程,并且在项目执行过程中能够及早发现项目问题,及时解决问题,使项目按照既定的计划进行,这无疑大大提高了项目成功的概率。综合来说过程仿真模型可以有效提高项目的成功率,增加干系人对项目成功的信心。
CMMI 高成熟度要求组织对过程性能进行定量的理解、建立过程性能基线和模型,并把这些基线和模型应用到项目管理中。在我们研究的案例中,过程仿真模型就是基于对组织过程性能的定量理解,利用过程性能基线和模型构建成的,因此过程仿真模型也有力支持了 CMMI 高成熟度的实施。
过程仿真模型虽然能够实现高可靠性的预测和监控,但是过程仿真模型的应用场景却受到一定的限制。我们知道应用过程仿真模型的首要问题是建立过程仿真模型,而建立过程仿真模型的前提是需要有稳定的过程以及大量的过程度量数据。这对软件企业提出了很高的稳定性要求,项目类型的稳定性、项目开发流程的稳定性、开发人员的稳定性、开发技术的稳定性等等,项目各种因素不稳定则就构建不出可靠的过程仿真模型。而软件项目众所周知人员流通率高、需求复杂多变,在这种复杂多变、稳定性低的环境中应用过程仿真模型,其预测可靠性将大打折扣,这也限制了过程仿真模型在软件项目中的应用。
除了软件项目管理领域,在软件过程改进领域,过程仿真模型也大有用武之地。如何评价过程改进、过程革新的投资回报率?在众多的过程改进建议中如何确定哪个最需要改进?是否需要应用新技术、新工具?所有这些问题都需要我们做出可靠的决策,而过程仿真模型在预测方面的优势将有助于我们做出英明的决策。这也将是我们以后的研究重点。
参考文献:
[1] 哈罗德·科兹纳(Harold Kerzner)著、杨爱华、王丽珍等译,项目管理:计划、进度和控制的系统方法(第 10 版)[M],电子工业出版社,2010-6,2~10.
[2] 王勇、张斌,项目管理知识体系指南(第 4 版)(PMBOK 指南) [M],电子工业出版社 ,2009-08,32~34.
[3] 秦天保、王岩峰,面向应用的仿真建模与分析:使用 Extend Sim(第 2 版)[M],北京,清华大学出版社,2011-05,15~25.
[4] 杜比,蒙特卡洛方法在系统工程中的应用[M],西安,西安交通大学出版社,2007-09,8~12.
[5] 肖田元、范文慧,离散事件系统建模与仿真[M],北京,电子工业出版社,2011-8,5~10.
[6] Raymond Joseph Madachy , A SOFTWARE PROJECT DYNAMICSMODELFORPROCESS COST, SCHEDULE AND RISK ASSESSMENT[J/OL] ,Industrial and Systems Engineering,1994-12,4~6.
[7] KeungSik Choi、Doo-Hwan Bae、TagGon Kim,An Approach to a HybridSoftwareProcessSimhttp://www.1daixie.com/dxpmplwulation using the DEVSFormalism[J/OL] , Software. Process Improve.Practice. 2006; 11: 373~383.
[8]Hu, Di、Mohamed, Yasser,State-Based Simulation Mechanism for Facilitating ProjectSchedule Updating,Construction Research Congress 2010[R],2010.
[9] Eric Bonabeau, Agent-based modeling: Methods and techniques for simulating humansystems[J/OL], The National Academy of Sciences,2002.
[10] Randall davis,Knowledge-Based Systems[J/OL],Science 28 February 1986: Vol. 231no. 4741 pp. 957-963.