时间:2023-03-30 11:39:33
导言:作为写作爱好者,不可错过为您精心挑选的10篇软件项目论文,它们将为您的写作提供全新的视角,我们衷心期待您的阅读,并希望这些内容能为您提供灵感和参考。
2项目管理在软件开发中的应用现状
在二十世纪六十年代中期,人们发现了在开发软件过程中存在着很多问题,具体的问题表现在以下两个方面:一方面,不规范的生产过程;另一方面,不重视管理工作。为了能够有效解决软件开发过程中存在的问题,人们开始尝试利用过程管理方法。但是到了二十世纪八十年代,还是没有制定管理软件开发过程相关标准。近几年来,在信息技术快速发展的背景下,人们采取项目管理来控制软件开发的质量、软件开发的成本等,以此确保软件开发的质量和成本等因素,符合当时的既定标准。在软件开发过程中,每一个项目组的不同成员都应该承担不同的任务,并且企业管理者应该要求他们要在规定的时间内完成自身的任务,这种明确分工制度,有助于提高员工的工作效率。
3项目管理在软件开发中的应用
每一个软件开发项目都要经过以下几个阶段:提出问题、研究可行性、分析需求、测试等。因此项目管理工作应该贯穿于软件开发的整个过程。
3.1可行性研究
无法开发哪一个项目,都需要进行可行性分析与研究。通过利用项目管理来研究软件开发项目可行性的目的在于:在最短的时间内确定软件开发项目是否具有开发的价值。其中可行性研究的内容包括:
1)、研究技术的可行性。其主要是指:要合理地分析开发项目的功能与性能,分析其中所隐藏的技术风险。
2)、研究经济的可行性。其主要是指:估计所开发的项目给企业带来的经济效益,然后依据所估算的经济效益,确定该项目是否具有投资的价值。
3)、研究社会的可行性。其主要是指:分析此项目的运行方式是否正确,分析当前的人员技术水平以及管理制度是否具有可行性。
3.2软件项目估算
在软件开发过程中,首先要规划软件开发项目,如此便于项目管理人员制定切合实际的估算方案。规划软件开发项目的内容主要包括:明确软件开发的目标、明确软件开发过程中需要用到的各种资源、明确软件开发的进度等。在软件开发过程中,估算起着非常重要的作用。通过估算可以保证软件项目在规定的时间内完成,也可以确保软件项目的成本未超出预算。在估算资源、成本以及进度的时候,要依据自身丰富的经验以及相关的数据。但是当前所使用的估算方法较为单一,此种估算方法容易增加估算风险。对此,研究人员应该努力研究出更多科学、有效的估算方法。
3.3软件项目开发人员的管理
在开展软件项目开发人员管理工作的时候,首先要合理安排人员。通常情况下,是由多个小组成员共同完成软件开发项目。在具体安排人员任务的时候,要依据每位人员的优势进行,并且要明确小组内每一位成员的工作任务以及工作目标。在软件开发过程中,要确定不同的责任人,比如:项目经理、开发经理,并且为每一个小组安排一名组长,如此有助于确保软件开发项目的顺利完成,同时保证所开发出来的软件属于高质量产品。
需求管理对软件项目能否最终实现产生至关重要的影响。任何的软件项目都必须进行合理的、细致的、一致的需求管理,只有这样才能制定正确合理的软件开发计划,软件项目才能顺利地开发完成。
2、沟通与协作
软件项目管理中的沟通与协作是指信息的交流,是使信息发挥积极作用和达到目标的手段;协作是指和谐地在一起工作的活动。沟通技术可分分四类:(1)正式书面沟通,包括项目文档和备忘录、项目里程碑和交货时间表、需求变更和错误跟踪规程、数据字典、系统分析模型(用例图等);(2)正式口头沟通,包括状态审查会、需求评审会、设计评审会、代码评审会、用户测试,项目定期例会等;(3)非正式口头沟通,包括小组碰头会、同行讨论、与直属业务领导讨论等;(4)电子沟通,包括电子邮件、内部BBS等。协作技术包括资源合理配置、开发步骤有序化、工作目标一致化、提高关心程度、信息共享等。
3、风险管理
软件项目风险管理是指对在软件开发过程中所遇到的预算和进度等方面的问题进行分析,寻求风险应对方法,做好风险管理计划。
针对软件项目中的风险管理问题,不少专家、组织提出了自己的风险管理模型。常见的主要风险管理模型如下。
1.SEI的连续风险管理模型(CRM)。SEICRM模型的风险管理原则是不断地评估可能造成恶劣后果的因素;决定最迫切需要处理的风险;实现控制风险的策略;评测并确保风险策略实施的有效性。CRM模型要求在项目生命期的所有阶段都关注风险识别和管理,它将风险管理划分为五个步骤:风险识别、分析、计划、跟踪、控制。
2.BarryBoehm模型。Boehm模型的思想核心是:10大风险因素列表。针对每个风险因素,都给出了一系列的风险管理策略。在实际操作时,Boehm以10大风险列表为依据,总结当前项目具体的风险因素,评估后进行计划和实施,在下一次定期召开的会议上再对这10大风险因素的解决情况进行总结,产生新的10大风险因素表,依此类推。Boehm模型的基本形式可描述为:RE=P(UO)3L(UO),其中RE表示风险或者风险所造成的影响;P(UO)表示令人不满意的结果所发生的概率;L(UO)表示糟糕的结果会产生的破坏性的程度。
3.软件工程风险模型(SERIM).SERIM模型要求从技术和商业两个角度对软件风险管理进行剖析,考虑的问题涉及开销、进度、技术性能等。它还提供了一些指标和模型来估量和预测风险,由于这些数据来源于大量的实际经验,因此具有很强的说服力。
五、软件项目管理技术
1.CMM。CMM是美国卡纳基梅隆大学软件工程研究所(CMU/SEI)提出的软件研发项目管理的一系列方法,它基于组织对关键过程域的支持,定义了软件过程成熟度的五个级别。级别1(初始级)描述了不成熟,或者说是未定义过程的组织。级别2(可重复级),级别3(已定义级),级别4(已管理级)和级别5(优化级)分别描述了软件过程成熟度级别递增的组织。和这些级别相关的KPA是:级别2:需求管理,软件项目计划,软件项目跟踪和监控,软件子合同管理,软件质量保证,软件配置管理。级别3:组织级过程焦点,组织级过程定义,培训大纲,集成软件管理,软件产品工程,组间协调,同行评审。级别4:定量过程管理,软件质量管理。级别5:缺陷预防,技术更新管理,过程更改管理。
2.CMMI。CMMI被看作是把各种CMM集成为一个系列的模型中。CMMI的基础源模型包括:软件CMM2.0版(草稿C),EIA-731系统工程,以及IPDCMM(IPD)0.98a版。CMMI也描述了5个不同的成熟度级别:级别1(初始级)代表了以不可预测结果为特征的过程成熟度。过程包括了一些特别的方法、符号、工作和反应管理,成功主要取决于团队的技能。级别2(已管理级)代表了以可重复项目执行为特征的过程成熟度。组织使用基本纪律进行需求管理、项目计划、项目监督和控制、供应商协议管理、产品和过程质量保证、配置管理、以及度量和分析。
3.PSP。PSP(PersonalSoftwareProcess,个体软件过程)是由CMU/SEI开发出来的,它的推出在软件工程界引起了极大的轰动,可以说是由定向软件工程走向定量软件工程的一个标志。PSP为基于个体和小型群组软件过程的优化提供了具体而有效的途径,例如如何制订计划,如何控制质量,如何与其他人相互协作等等。在软件设计阶段,PSP的着眼点在于软件缺陷的预防,其具体办法是强化设计约束准则,而不是设计方法的选择。因此,PSP保障软件产品质量的一个重要途径是提高设计质量。
4、小结
本文分析研究了软件项目管理中的需求管理、员工之间的沟通与协作、软件项目风险管理。最后结合实践,提出并分析了软件项目管理技术。我们相信随着软件工程的发展和进一步成熟,软件项目管理技术的发展会取得更大的进步。在实际项目中,我们要坚持改善软件工程的管理,并在实践中总结适合自身的经验,这样才有利于管理技术的进步和软件项目的顺利完成,创造出更高的品质、更大的效益。
参考文献:
[1]PhpMetzger,JohnBoddie.软件项目管理-过程控制与人员管理[M].北京:电子工业出版社,2002.
[2]RajeevTShandilya.王克仁译.软件项目管理[M].北京:科学技术出版社,2002.
[3]杨根兴,金荣得,宗宇伟.软件需求的不确定性与解决途径.计算机应用与软件.
2、工程项目管理软件
2.1概念的界定
工程项目管理软件(以下简称为项目管理软件)是指以项目的施工环节为核心,以时间进度控制为出发点,利用计划技术,对施工过程中的进度、费用、资源等进行综合管理的一类应用软件。它包括五个主要功能模块:进度计划管理功能、资源管理功能、费用管理功能、报告生成与输出功能、辅助功能(主要指与其他软件的接口、二次开发、数据保密等)。这种概念源于对国外类似产品的概括,如P3(PrimaveraProjectPlanner)、MicrosoftProject、HarvardTotalProjectManagement、HarvardProjectManager.从广义上看,项目管理软件包括了与项目管理工作相关的各种应用软件,可以涉及进度、费用、资源、质量、风险、组织等各个方面,是项目管理相关软件的总称。
2.2发展概述
国内项目管理软件的研究开发始于20世纪70年代,至今经历了两次重大转变(见图1)。
第一次,90年代初,标志是研发主体由用户本身转变为专业化的软件。在70、80年代多是各用户单位自行研制的单项功能的初级产品,即自己提出需求、自己研究、自己开发、自己使用,是一种完全的小生产方式,在近二十年中发展缓慢。90年代初,市场带动出几十家专门从事建筑管理软件开发的高民营企业,软件开始走上化、专业化、商业化的快速发展道路。
90年代是国内建筑管理软件迅猛发展的十年,工程造价、工程量、钢筋配料、平面图制作、标书制作软件等新产品大量涌现,价格逐渐降低、功能不断完善,界面友好、操作方便,通用性、实用性增强。
第二次,90年代末,标志是产品由单机版转向系统集成。如将项目施工方案的设计、概预算、工程量计算、进度计划、资源计划、费用管理、事务性管理等综合起来形成一个有机的整体。运行环境由单机用户拓展到网络多用户,一定程度上实现了企业内部的数据共享。
进入2000年来,项目管理软件的研发出现了滞缓现象。究其原因是多方面的,既有市场因素又有技术因素,既有外部环境的又有自身条件的制约,如加入WTO的影响、用户需求的变化,网络技术、数据库技术、通讯技术的进步等。项目管理软件发展的方向在哪里?必然趋势如何?怎样应对?这些摆在众多业内人士面前。
3、国内项目管理软件的现状
3.1外部环境分析
3.1.1机遇
(1)积极的政策环境。2000年7月国务院了《鼓励软件产业和集成电路产业发展的若干政策》在投资融资、税收、产业技术、出口、收入分配、人才吸引与培养、知识产权保护等方面,给予优惠政策。建设部正在领导制定《建设企业管理信息系统软件通用标准》和《建设信息平台数据通用标准等通用标准,以规范建设领域信息市场行为。各省市地方的建委、定额站以及高新技术开发区,积极贯彻党和国家方针政策,制定一系列的优惠办法,培育扶植当地软件企业的发展。
(2)巨大的市场需求。项目管理软件作为一种行业专用软件,其发展与建筑行业自身的兴衰息息相关。据统计,我国现有各类施工企业10多万家,项目经理部几十万个,除此之外工程监理、审计、建行、甲方等单位也都是管理软件的用户,远期软件需要量应在100万套,但现在软件总的销量不足2万套。加入WTO以后,受各方面因素的影响,经济将呈现快速增长的态势,国内总体建设投资规模扩大,这将会为建筑业创造一个良好的发展机遇,也必将拉动行业软件市场需求的增长。
(3)信息技术在建筑业的广泛应用。20世纪90年代以后,我国建筑业应用信息技术取得了突飞猛进的发展,为项目管理软件的普及推广提供了必要的条件。主要表现在:1.网站建设从无到有,形成了政府网站、行业网站、企业网站三个层次。2.广泛应用计算软件和工具软件。3.在施工中推广应用以信息技术为特征的自动化控制技术,取得了较好的效果。
3.1.2挑战
(1)项目管理的基础工作薄弱。软件的应用要有一定的条件,目前我国项目管理中影响软件应用和开发的主要问题有:1.管理工作尚未标准化。例如各种报告、信息、数据及各种费用项目的划分,各种文本等的标准化程度不高。2.工作过程中的随意性,非程序化工作和干扰,使先进的计划、控制方法和程序难以使用,难以显示出它们的效果。3.整体管理水平低,各层次的管理人员尚不能掌握的管理手段和方法。管理的基础工作薄弱不仅限制了对软件应用的需求,而且进一步拉大了国内项目管理与国际水平的差距。
(2)国外竞争者的挑战。目前,打进中国建筑市场的国外软件有MS-Project、P3等。这些软件功能强大、专业性强、知名度高、营销方式灵活。如P3软件在国际上具有极高的知名度,逐渐成为工程项目管理行业的标准软件。世行也在大型项目上推荐使用P3软件。加入WTO后,外国软件企业将享受国民待遇,出口补贴政策、政府采购将受到限制,我国的产品市场不仅要开放,服务市场也相应开放,软件市场从而将完全开放,国内软件市场竞争日趋激烈。而且,加入WTO后,外资建设项目增多、建筑市场逐步放开,国外工程设计、承包、咨询单位的大量涌入会加大MS-Project、P3等的市场份额。
国产软件一般在功能设置和运行机制上更符合国内用户的需求和习惯,如有双代号网络图、前锋线功能等。但在用户界面、报告生成与输出、数据交换、二次开发等方面还存在着较大的差距,而且这些软件目前还不可能用于国际工程项目。
3.2内部条件分析
3.2.1优势
(1)技术成熟。国内项目管理软件经过近30年的发展,已经研制出适用于公司和项目两个层次的产品,而且部分软件的技术水平达到新的高度,令外国同行刮目相看,为发展适合国情的信息产品奠定了技术基础。如北京梦龙公司的智能管理系统Pert、大连同洲公司的项目计划管理系统TZ-Project.
(2)市场占有率高。初步估算,国产软件的市场占有率在三分之二以上。此外,用户购买软件后,需要经过培训,才能掌握运用。一旦熟练使用后,就倾向于继续购买后续产品,而不愿转购其他公司的同类产品。这一消费特征有利于率先占有市场的软件。多种原因造成国内软件企业已抢先一步占领市场,建立起销售渠道和用户对它们的信任。
(3)服务本土化。软件的价值归根结底表现在对传统行业的服务上,软件行业竞争的核心是服务的竞争。国内的软件企业经过十多年的市场开拓,已在全国的数十万用户中建立起较为完善的服务体系,深入到公路、港口、建筑、市政、铁路、水利、电力等各个领域,能够快速响户要求,提供全面的咨询培训维护服务,这是外国公司在短期内无法做到的。
(4)人才优势。国内软件开发人员的薪酬平均低于国际水平,是美国的1/30~1/20,可大大降低软件研发成本。此外,国内建筑市场运作不规范,用户需求差异大,而国内研发人员熟悉行情,与用户容易沟通,开发的产品更符合“国情”。
3.2.2劣势
(1)品牌与质量。国产项目管理软件数量不少,但没有一个能够像P3那样知名的品牌。几十家软件研发单位“各占一个山头”,国内市场呈现小而散、四分五裂的格局。在研发过程中普遍缺乏严格的测试环节,软件的改动和版本的升级频繁,造成成本的增加和维护上的难度,带给用户许多不必要的麻烦。而且,由于缺乏行之有效的软件开发管理体制,一个关键性设计人员的变动往往会严重软件产品的整个生产过程。在功能模块上,国产软件偏重进度计划管理,在资源管理、费用管理方面远远落后与国外软件。此外,国产软件都无法实现环境下异质数据库的互连、没有对用户开放二次开发的接口。
(2)规模小、开发资金不足。国内软件企业的资金来源主要以企业自主投资、风险投资和政府投资三种为主。大部分企业缺乏正常的融资手段,只是依靠经营利润的积累。企业规模小、缺乏“重量级”企业,、设计、开发和市场开拓能力有限。据统计,50人以下的企业占40%左右,50~100人的企业占50%左右,100~200人的企业仅2家,200人以上的为零。
(3)缺乏统筹规划。由于没有明确的行业标准和方向引导,软件开发只能根据客户要求,由软件技术人员,凭自己的理解和能力进行设计、编程,造成软件开发选题雷同,而且多属低水平重复开发。企业在技术、研究、开发等方面存在很大的盲目性,力量分散,造成大量资源浪费,也延误了发展的时机。
(4)人才流失。由于缺少合理的收入分配激励机制,大量软件开发人员流向高收入的电信、、商业领域,国内从事工程管理软件开发的人员不足千名,其中懂工程、懂机、懂管理的复合性高级人才更是少之又少。
4、国外项目管理软件的发展及启示
4.1发展概述
国外项目管理中的计算机应用可以追溯到50年代中后期网络计划技术的出现,到了60年代中后期网络程序已经十分成熟。整个70年研究的重点是完善和扩展网络模型分析软件的应用功能,如成本和资源的平衡优化;同时提出并研究了项目管理信息系统。进入80年代以后,PC机的普及和项目管理工作的化、标准化,使一般中小型企业、中小型项目也可用计算机进行管理,网络技术才真正普及。90年代后,项目管理软件发展迅速,不断有功能强大、使用方便的软件推出,在项目管理中发挥了重要作用,计算机的应用已经成为项目管理必不可少的一个组成部分。
项目管理软件的功能层次不断提高,对应着三个显著阶段:
第一层次,也称基本功能,如进度控制、质量管理、资源管理、费用控制、采购管理等,是对基层工作流程的模拟,在一定程度上实现数据共享,减轻了基层项目管理人员的工作强度。在80年代已基本完成这方面的功能开发并在基层项目管理中广泛应用。
第二功能层次有两个特点:一是分析和预测功能,包括工期变动分析、不可预见事件分析(如恶劣气候、汇率变动、市场物价变动、分包商情况变动等)。在分析基础上产生预测功能,主要包括进度预测、投资预测、资金需求预测等,并有相应的数学模型。二是计算机网络的使用和通讯功能,主要是局域网上的多用户操作和多项目管理,以及借助Internet、Intranet,邮件、电子信箱等先进的通讯工具和手段,减少项目管理班子的工作所受的地域限制。P3及MS-Project都是这一层次的产品。
第三层次是基于因特网的项目管理,使整个项目管理业务与因特网结合,具有跨平台兼容、交互性和实时性,项目成员可以协同工作,实现在线文档管理、在线讨论、视频会议等。到目前为止尚无完善的产品出现,但有两个软件Mesa/Vista,WebProject已初具雏形。
4.2发展启示
目前国内项目管理软件的发展还处在第一阶段。某些软件具备或正向第二功能层次发展,没有基于因特网的第三阶段软件。国外同类软件的发展历程可以得到启示:数据通讯、多项目管理、多用户环境、多系统兼容和与Web技术集成、增强用户自定义功能,这代表着项目管理软件的新发展。客户机(Client)/服务器(Server)模式向浏览器(Browser)/服务器(Server)模式转变将是必然趋势。
5、对策
5.1我国项目管理软件SWOT分析
基于上述分析,可归纳出我国项目管理软件SWOT矩阵。
5.2政府和行业协会
(1)规范项目管理,实现与国际接轨。推进《施工项目管理规程》、《工程网络计划技术规程》、《建设工程质量管理条例》、《建筑工程施工合同(示范文本)》等的制订和落实,严格按规程、规范和标准进行项目管理。在项目管理中推广使用WBS(项目结构分解)等,保证数据采集的完整与统一。加强信息技术标准研究,积极参与国际标准的制订,利用标准来占领市场。
(2)统筹规划,抓大放小,分类指导。制定建筑业信息化发展规划和技术政策,确定产业升级目标,合理选择主导产业、战略产业。对各省市地方的造价、钢筋、工程量等单机软件鼓励自由竞争,让市场来决定优胜劣汰,同时强化行业管理,维持公平、有序的竞争环境。对项目管理软件的研发加强扶植力度,增强国产软件自主发展的能力,重点扶植、推广一批具有自主知识产权的产品。
(3)发挥行业组织的作用。行业协会加强与政府和企业的联系,为企业在技术、管理、市场信息、人才培训等方面提供指导和帮助。
5.3软件企业
(1)利用政策,把握机遇。认真研究、充分利用国家为产业发展提供的政策环境,要充分利用加入世贸组织的过渡期,力争在三、五年内完善项目管理软件并实现产业化。
(2)调整产品结构,培育自主品牌。推进产品创新和产品重组。拥有自主知识产权的,要强化知识产权管理,积极实施信息技术专利战略,按国际项目管理要求进一步完善产品,争取在国际市场占有一席之地。正在研发之中的,要多研究国内外同类软件,合理选择细分市场,采取产品差异化战略或市场跟随战略。
(3)规范企业管理。积极参与ISO9000,CMM,ISO14000等国际质量保证体系认证和国际安全认证,加强软件企业的规范化管理。建立有效的激励和约束机制,充分调动员工积极性,吸引并留住各类优秀人才。
(4)服务创新。推动软件售后服务的化,建立专业的咨询服务机构。不具备持续开发能力的公司应向增值服务的专业服务公司转变。从目前发展趋势看,软件的升级、维护、咨询活动的利润比销售的更可观。
6、结论
我国工程项目管理软件研发的整体水平较低,实际应用情况不容乐观。要改变这一局面,政府和企业都要付诸努力。政府和行业协会要规范项目管理,实现与国际接轨;统筹规划,抓大放小,分类指导。软件企业调整产品结构,培育自主品牌,规范企业管理及建立服务创新的体制。
参考
[1]MatthewJ.Liberatore.ProjectManagementInConstruction:SoftwareUseAndResearchDirections[J].JournalOfConstructionEngineeringAndManagement,2001,(March/April)。
[2]成虎。工程项目管理[M].中国建筑出版社,2001.
[3]陈昌柏。WTO-ITA与中国IT产业发展[M].北京邮电大学出版社,2001.
目前,风险管理被认为是IT软件项目中减少失败的一种重要手段。当不能很确定地预测将来事情的时候,可以采用结构化风险管理来发现计划中的缺陷,并且采取行动来减少潜在问题发生的可能性和影响。风险管理意味着危机还没有发生之前就对它进行处理。这就提高了项目成功的机会和减少了不可避免风险所产生的后果。
2什么是风险
所谓“风险”,归纳起来主要有两种意见,主观说认为,风险是损失的不确定性;客观学认为,风险是给定情况下一定时期可能发生的各种结果间的差异。它的两个基本特征是不确定性和损失。IT行业中的软件项目开发是一项可能损失的活动,不管开发过程如何进行都有可能超出预算或时间延迟。项目开发的方式很少能保证开发工作一定成功,都要冒一定的风险,也就需要进行项目风险分析。在进行项目风险分析时,重要的是要量化不确定的程度和每个风险相当的损失程度,为实现这一点就必须要考虑以下问题:
要考虑未来,什么样的风险会导致软件项目失败?
要考虑变化,在用户需求、开发技术、目标、机制及其它与项目有关的因素的改变将会对按时交付和系统成功产生什么影响?
必须解决选择问题,应采用什么方法和工具,应配备多少人力,在质量上强调到什么程度才满足要求?
要考虑风险类型,是属于项目风险、技术风险、商业风险、管理风险还是预算风险等?
这些潜在的问题可能会对软件项目的计划、成本、技术、产品的质量及团队的士气都有负面的影响。风险管理就是在这些潜在的问题对项目造成破坏之前识别、处理和排除。
3风险管理
项目风险管理实际上就是贯穿在项目开发过程中的一系列管理步骤,其中包括风险识别、风险估计、风险管理策略、风险解决和风险监控。它能让风险管理者主动“攻击”风险,进行有效的风险管理。
在项目管理中,建立风险管理策略和在项目的生命周期中不断控制风险是非常重要的,风险管理包括四个相关阶段:
风险识别识别风险的方法常用的有风险识别问询法(座谈法、专家法)、财务报表法、流程图法、现场观察法、相关部门配合法和环境分析法等。
风险评估对已识别的风险要进行估计和评价,风险估计的主要任务是确定风险发生的概率与后果,风险评价则是确定该风险的经济意义及处理的费/效分析,常用的方法有:概率分布、外推法、多目标分析法等。
风险处理一般而言,风险处理有三种方法,①风险控制法,即主动采取措施避免风险,消灭风险,中和风险或采用紧急方案降低风险。②风险自留,当风险量不大时可以余留风险。③风险转移。
风险监控包括对风险发生的监督和对风险管理的监督,前者是对已识别的风险源进行监视和控制,后者是在项目实施过程中监督人们认真执行风险管理的组织和技术措施。
在IT软件项目管理中,应该任命一名风险管理者,该管理者的主要职责是在制订与评估规划时,从风险管理的角度对项目规划或计划进行审核并发表意见,不断寻找可能出现的任何意外情况,试着指出各个风险的管理策略及常用的管理方法,以随时处理出现的风险,风险管理者最好是由项目主管以外的人担任。
险识别
风险识别就是企图采用系统化的方法,识别某特定项目已知的和可预测的风险。常用方法是建立“风险条目检查表”,利用一组提问来帮助项目风险管理者了解在项目和技术方面有些风险。在“风险条目检查表”中,列出了所有可能的与每一个风险因素有关的提问,使得风险管理者集中来识别常见的、已知的和可预测的风险,如产品规模风险、依赖性风险、需求风险、管理风险及技术风险等。“风险条目检查表”可以以不同的方式组织,通过判定分析或假设分析,给出这些提问确定的回答,就可以帮助管理或计划人员估算风险的影响。软件项目一般有如下五类风险:
4.1产品规模风险
有经验的项目经理都知道:项目的风险是直接与产品的规模成正比的。与软件规模相关的常见风险因素有:
估算产品的规模的方法(LOC或代码行,FP或功能点,程序或文件的数目)。
产品规模估算的信任度
产品规模与以前产品规模平均值的偏差
产品的用户数
复用的软件有多少
产品的需求改变多少
4.2需求风险
很多项目在确定需求时都面临着一些不确定性和混乱。当在项目早期容忍了这些不确定性,并且在项目进展过程当中得不到解决,这些问题就会对项目的成功造成很大威胁。如果不控制与需求相关的风险因素,那么就很有可能产生错误的产品或者拙劣地建造正确的产品。每一种情况都会导致使人不愉快。
与客户相关的风险因素有:
对产品缺少清晰的认识
对产品需求缺少认同
在做需求中客户参与不够
没有优先需求
由于不确定的需要导致新的市场
不断变化需求
缺少有效的需求变化管理过程
对需求的变化缺少相关分析
4.3相关性风险
许多风险都是因为项目的外部环境或因素的相关性产生的。经常我们不能很好地控制外部的相关性,因此缓解策略应该包括可能性计划,以便从第二资源或协同工作资源中取得必要的组成部分,并且觉察潜在的问题。与外部环境相关的因素有:
客户供应条目或信息
内部或外部转包商的关系
交互成员或交互团体依赖性
经验丰富人员的可得性
项目的复用性
4.4管理风险
尽管管理问题制约了很多项目的成功,但是不要因为风险管理计划中没有包括所有管理活动而感到惊奇。在大部分项目里,项目经理经常是写项目风险管理计划的人,并且大部分人都不希望在公共场合暴露自己的弱点。然而,像这些问题可能会使项目的成功变得更加困难。如果不正视这些棘手的问题,它们就很有可能在项目进行的某个阶段影响项目。当我们定义了项目追踪过程并且明晰项目角色和责任,就能处理这些风险因素:
计划和任务定义不够充分
实际项目状态
项目所有者和决策者分不清
不切实际的承诺
员工之间的冲突
4.5技术风险
软件技术的飞速发展和经历丰富员工的缺乏,意味着项目团队可能会因为技巧的原因影响项目的成功。在早期,识别风险从而采取合适的预防措施是解决风险领域问题的关键,比如:培训、雇佣顾问以及为项目团队招聘合适的人才等。主要有下面这些风险因素:
缺乏培训
对方法、工具和技术理解的不够
应用领域的经验不够
新的技术和开发方法
不能正确工作的方法
5风险估计
风险估计,又称风险预测,常采用两种方法估价每种风险。一种是估计风险发生的可能性或概率,另一种是估计如果风险发生时所产生的后果。一般来讲,风险管理者要与项目计划人员、技术人员及其他管理人员一起执行四种风险活动:
(1)建立一个标准(尺度),以反映风险发生的可能性。
(2)描述风险的后果。
(3)估计风险对项目和产品的影响。
(4)确定风险的精确度,以免产生误解。
另外,要对每个风险的表现、范围、时间做出尽量准确的判断。对不同类型的风险采取不同的分析办法。
1.确定型风险估计
(a)盈亏平衡分析
盈亏平衡分析(Break-EvenAnalysis)通常又称为量本利分析或损益平衡分析。它是根据软件项目在正常生产年份的产品产量或销售量、成本费用、产品销售单价和销售税金等数据,计算和分析产量、成本和盈利这三者之间的关系,从中找出它们的规律,并确定项目成本和收益相等时的盈亏平衡点的一种分析方法。在盈亏平衡点上,软件项目既无盈利,也无亏损。通过盈亏平衡分析可以看出软件项目对市场需求变化的适应能力。
(b)敏感性分析
敏感性分析(SensitivityAnalysis)的目的,是考察与软件项目有关的一个或多个主要因素发生变化时对该项目投资价值指标的影响程度。通过敏感性分析,使我们可以了解和掌握在软件项目经济分析中由于某些参数估算的错误或是使用的数据不太可靠而可能造成的对投资价值指标的影响程度,有助于我们确定在项目投资决策过程中需要重点调查研究和分析测算的因素。
(c)概率分析
它是运用概率论及数理统计方法,来预测和研究各种不确定因素对软件项目投资价值指标影响的一种定量分析。通过概率分析可以对项目的风险情况做出比较准确的判断。主要包括解析法和模拟法(蒙特卡罗MonteCarlo技术)两种。
2.不确定型风险估计
主要有小中取大原则、大中取小原则、遗憾原则、最大数学期望原则、最大可能原则。
3.随机型风险估计
主要有最大可能原则、最大数学期望原则、最大效用数学期望原则、贝叶斯后验概率法等。
5.1建立风险清单
风险清单是关键的风险预测管理工具,清单上列出了在任何时候碰到的风险名称、类别、概率及该风险所产生的影响。其中整体影响值可对四个风险因素(性能、支持、成本及进度)的影响类别求平均值(有时也采用加权平均值)。
一旦完成了风险表的内容,就可以根据概率及影响来进行综合考虑,风险影响和出现概率从风险管理的角度来看,它们各自起着不同的作用(见图1)。一个具有高影响但低概率的风险因素不应当占用太多的风险管理时间,而具有中到高概率、高影响的风险和具有高概率及低影响的风险,就应该进行风险分析。
5.2风险评估
在风险分析过程中,我们对风险进行评估时可以建立一个如下的四元数组:
[ri,li,xi,yi]
其中,ri是风险,li为风险出现的概率,xi则表示风险损失大小,yi则表示期望风险。
一种对风险评估的常用技术是定义风险的参照水准,对绝大多数软件项目来讲,风险因素——成本、性能、支持和进度就是典型的风险参照系。也就是说对成本超支、性能下降、支持困难、进度延迟都有一个导致项目终止的水平值。如果风险的组合所产生的问题超出了一个或多个参照水平值时,就终止该项目的工作,在项目分析中,风险水平参考值是由一系列的点构成的,每一个单独的点常称为参照点或临界点。如果某风险落在临界点上,可以利用性能分析、成本分析、质量分析等来判断该项目是否继续工作。图2表示了这种情况。
但在实际工作中,参照点很少能构成一条光滑的曲线,大多数情况下,它是一个区域,而且是个易变的区域。因而在做风险评估时,尽量按以下步骤执行:
(1)定义项目的水平参照值
(2)找出每组[ri,li,xi,yi]与每个水平参照值间的关系
(3)估计一组临界点以定义项目的终止区域
(4)估计风险组合将如何影响风险水平参照值
5.3估计损失的大小
表1是风险分析表的一个例子,可以建立一个用风险、损失概率、损失大小和期望风险这样的风险评估表。
在表1所示的风险估价的例子中,一个理论项目已经识别了从1到20周期间的潜在的几个风险,风险发生的概率范围在5%到50%之间。在现实的项目中,可能会识别出比此表要多得多的风险。
损失的大小常常比概率更容易受到控制。在以上的例子中,可以很精确地估计出完全支持自动从主机更新数据的时间是20个月。根据管理层将在何时讨论项目建议书,可以知道项目不是在2月1日就是3月1日会被批准。如果假定会在2月1日批准,项目被批准的风险大小会比期望的长一些,也就是1个月时间。
如果损失的大小不容易直接估计出来,可以将损失分解为更小的部分,再对其进行评估,然后将各部分评估结果累加,形成一个合计评估值。例如,如果使用3种新编程工具,可以单独评估每种工具未达到预期效果的损失,然后再把损失加到一起,这要比总体评估容易多了。
5.4评估损失的概率
评估损失的概率要比评估损失大小更具有主观性。这里有许多实践方法可以提高主观评估的准确度。有以下方法:
由最熟悉系统的人评估每个风险的发生概率,然后保留一份风险评估审核文件。
使用Delphi法或少数服从多数的方法。使用Delphi法,必须要求每个人对每个风险进行独立地评估,然后讨论(口头或纸上)每个评估的合理性,特别是最高和最低的那个。一轮轮讨论,直到达成共识。?使用“形容词标准”。首先让每个人用表示可能性的形容词短语选择风险的级别,如非常可能、很可能、可能、或许、不太可能、不可能、和根本不可能。然后把可能性的评估转换为数量化的评估(Boehm1989)。
5.5整个项目超限和缓冲
实际上,表1中表示的期望风险的计算数值来源于一个被称为“期望值”的统计术语。设计欠佳引起的风险如果真正发生将花费15周的时间。既然它不是100%地会发生,当然不能预计损失15周时间。但它也不是没有可能发生,所以也不应指望不会发生损失。统计学认为,预计损失的数量是概率乘以损失大小,即15%乘以15周。因此,在这个例子中,预计的是损失2.25周。由于只是谈论计划风险,可以累加所有的风险暴露量来得到项目的全部可预料超标值。这个项目可预料的超标值是12.8到13.2周,这就是如果不做任何风险管理的话有可能超过计划的周数。
超出预期值的大小为整个项目风险控制级别的确定提供了依据。如果例子中的项目是个25周的项目,超出预期值的12.8到13.2周就很明显需要进行风险管理了。
6风险管理策略
风险管理策略就是辅助项目组建立处理项目风险的策略。项目开发是一个高风险的活动,如果项目采取积极的风险管理策略,就可以避免或降低许多风险,反之,就有可能使项目处于瘫痪状态。一般来讲,一个较好的风险管理策略应满足以下要求:
(1)在项目开发中规划风险管理,尽量避免风险
(2)指定风险管理者,监控风险因素
(3)建立风险清单及风险管理计划
(4)建立风险反馈渠道
7风险驾驭和监控
风险的驾驭与监控主要靠管理者的经验来实施,它是利用项目管理方法及其它某些技术,如原型法、软件心理学、可靠性等来设法避免或转移风险。风险的驾驭和监控活动可用图3来表示。
7.1建立风险驾驭与监控计划
从图3中可以看出,风险的驾驭与监控活动要写入RMMP(RiskMonitoringandManagementPlan风险驾驭与监控计划)。RMMP记述了风险分析的全部工作,并且作为整个项目计划的一部分为项目管理人员所使用。
风险管理策略可以包含在软件项目计划中,也可以组织成一个独立的风险缓解、监控和管理计划(RMMP计划)。RMMP计划将所有风险分析工作文档化,并由项目管理者作为整个项目计划中的一部分来使用。一旦建立了RMMP计划,且项目开始启动,则风险缓解及驾驭及监控步骤也开始了。正如前面讨论的,风险缓解是一种问题避免活动。风险驾驭及监控则是一种项目跟踪活动,它有三个主要目标:?判断一个预测的风险是否事实、是否发生。
进行风险再估计,确保针对某个风险而制定的风险消除活动正在使用。
收集可用于将来进行风险分析的信息。
风险驾驭及监控的策略如下:
与在职人员协商,确定人员流动原因。
在项目开始前,把缓解这些流动原因的工作列入风险驾驭计划。
项目开始时,要作好人员流动的思想准备,并采取一些措施确保人员一旦离开时,项目仍能继续。
制定文档标准,并建立一种机制,保证文档及时产生。
对所有工作进行细微详审,使更多人能够按计划进度完成自己的工作。
对每个关键性技术人员培养后备人员。
在考虑风险成本之后,决定是否采用上述策略。
7.2软件项目风险追踪工具
ispaidattentiontodaybyday.Thistexthasbeenanalyzedanddescribed
throughtheorigincauseofformation,existingproblemandcorresponding
solutionofapplicationtotheprojectmanagementinsoftwaredevelopment
mainly.
关键词:项目管理,软件开发
Keywords:Projectmanagement,Softwaredevelopment
如果用两个字概括当前社会的特点,那就是“变化”,而这种变化在信息产业中体现得尤为突出,技术创新速度越来越快,用户需求与市场不断变化,人员流动也大大加快。在这种环境下,企业需要应对的变化以及由此带来的挑战大大增加,也给管理带来了很多问题和挑战。软件行业是一个极具挑战性和创造性的新行业,管理上没有成熟的经验可供借鉴。而项目管理应该说对于软件企业,尤其是那些以应用开发为主的软件企业,是行之有效的管理方法。因此,项目管理在软件开发中的应用日益受到重视。
项目管理的两个问题
1、什么是项目管理?
项目管理是在一定的约束条件下,以高效率地实现项目业主的目标为目
的,以项目经理个人负责制为基础和以项目为独立实体进行经济核算,并按照项目内在的逻辑规律进行有效的计划、组织、协调、控制的系统管理活动。
2、为什么要有项目管理?
没有项目管理,项目也有可能成功。但没有管理的项目,很难保证项目
的利润空间,对公司来说,亏损的风险就大。所以我们要有项目管理,以保证公司在总体上是盈利的,注意不是每一个项目都要盈利。
另外,有了项目管理,就有了管理改进的基础,无论刚开始的项目管理多么糟糕,只要有管理,就有了改进的可能性,至于能不能得到改进,以及改进的快慢,则取决于两个因素:一个是人,特别是各级管理者;另一个是利益。关键是“利益”,准确的说是“利益的分配”,在权责利明确的前提下,人才能充分的发挥作用。还需要指出的是“利益”是多元的,这里的多元不仅指利益的具体形式,而且指利益的受众是多元的,包括客户方相关人员个人的利益。
3、项目管理的发展与现状。
今天,项目管理作为一种现代化管理方式在国际上已获得了广泛的应用,从最初的国防、航天、建设工程领域,迅速发展到电子、通信、计算机、软件开发、金融等行业以及政府机关的项目管理工作。随着计算机、网络系统的迅速发展,项目管理技术的不断进步,项目管理软件产品层出不穷,其功能、特点、应用对象也各不相同。当前,越来越多的企业和组织在内部推广项目管理的理论方法及管理模式,如果都采用项目管理软件进行管理,效果就更加明显,可以节省大量的资源和财富。国外90%以上的项目管理都采用软件进行,但我国在这方面的应用还不到10%。新世纪项目管理在中国的迅速兴起,给软件企业的发展带来了前所未有的发展机遇。
项目管理在软件开发中的应用的成因
随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险)。同时,随着软件开发规模及开发队伍的逐渐增大,软件开发不再是向过去那样一二个开发人员即可解决的事情。迫切需要一种开发规范来规范每个开发人员、测试人员与支持人员的工作,每个项目组成员按约定的规则准时完成自己的工作。同时采用规范化管理,专业分工也可以降低对开发人员的要求,从而降低产品研发成本。
软件开发是一项复杂的系统工程,牵涉到各方面的因素,实际工作中,经常会出现各种各样的问题,甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。
早在20世纪60年代中期,人们就发现软件的生产出现了“问题”,主要表现在生产过程不规范,缺乏管理。后来,人们在软件工程方法学中引入了工程的概念、原理、技术和方法,这种思想在一定程度上解决了软件生产过程中遇到的问题。但是直至80年代还是没有提出一套管理软件开发的通用原则,软件管理不善的问题依旧在大范围内存在。
目前的软件开发正逐步趋向于复杂化、多元化,大多数开发团队中都会出现同时开发多个版本、开发/维护工作并存、多地点同时开发等情况,给软件开发管理带来了前所未有的困难。如果管理不善,必将造成版本混乱,各个开发人员的工作相互交叉、干扰,整个开发团队的工作在一种无秩序的不良状况下运行,严重影响软件产品开发的进度和质量。
因此,随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性,管理学的思想逐渐融入软件开发过程中,应用开发的项目管理日益受到重视。而项目管理技术的发展与计算机技术的发展是密不可分的,随着计算机性能的迅速提高,大量的项目管理软件涌现出来。它们可以用于各种商业活动,提供便于操作的图形界面,帮助用户制定任务、管理资源、进行成本预算、跟踪项目进度等。
软件项目管理常见问题及解决方案
对于软件开发项目中,经常出现两种极端情况,一种是创造了新的生产率和质量的纪录;一种则完全是一场灾难,不是被取消就是拖延很长时间。前者如在很短的时间内,为了赶进度,在几乎不可能的时间内开发出一套软件产品,创造了软件开发的记录,满足了上级所要求的上机日期,由于开发时间太短,过于仓促,上机时,问题百出,试运行时间长达几个月或一年半载的,而且程序一改再改,维护工作量大。
后者,如某套系统未弄清楚需求,或因设计问题,开发失败。通过提炼这些成功和失败的例子,软件项目成功或失败的根本原因可能会更清晰一些。
目前我国大部分软件公司,无论是产品型公司还是项目型公司,都没有形成适合自己公司特点的软件开发管理模式,虽然有些公司根据软件工程理论建立了一些软件开发管理规范,但并没有从根本上解决软件开发的质量控制问题。这样导致软件产品质量不稳定,软件后期的维护、升级出现麻烦,同时最终也会损害用户的利益。
分析目前项目管理需要改进的问题可以从几种相关角色的角度去考虑:项目经理、项目组成员、公司管理人员、市场人员、客户等。
问题一:缺乏项目管理系统培训(相关对象:项目经理、管理人员)
项目经理在项目管理方面的培训较少或不够系统。项目经理或管理人员不了解项目管理的知识体系和一些常用工具和方法,所以在实际工作中没有项目管理知识的指导,完全依靠个人现有的知识技能,管理工作的随意性、盲目性比较大。在软件企业中,以前几乎没有专门招收项目管理专业的人员来担任项目经理(甚至很少是管理专业的),被任命的项目经理主要是因为他们能够在技术上独当一面,而管理方面特别是项目管理方面的知识比较缺乏。
解决方案:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。应实行项目经理知识技能资格考核制度,让项目经理自觉补充学习项目管理的知识和一些常用工具和方法。
问题二:项目计划意识问题(相关对象:项目经理)
项目经理对总体计划、阶段计划的作用认识不足。项目经理认为计划不如变化快,项目中也有很多不确定的因素,做计划是走过场,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。没有计划或者是随意的不负责任的计划的项目是一种无法控制的项目。
解决方案:在高技术行业,日新月异是主要特点,因此计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关各种知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。
问题三、管理意识问题(相关对象:项目经理)
部分项目经理没有意识到自己项目经理的角色,从总体上去把握管理整个项目,而是埋头于具体的技术工作,造成项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。在软件企业中,项目经理大多是技术骨干,技术方面的知识比较深厚,但无论是项目管理知识,还是项目管理必备的技能、项目管理必备的素质都有待补充和提高,项目管理经验也有待丰富。有些项目经理对于一些不服管理的技术人员,没有较好的管理方法,工作不好安排的工作只好自己做。另外由于工作分解结构设计的合理性,项目任务无法有效、合理地分配给相关成员,以达到“负载均衡”。
解决方案:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。
问题四:沟通意识问题(相关人员:项目经理、项目组成员)
在项目中一些重要信息没有进行充分和有效的沟通。在制定计划、意见反馈、情况通报、技术问题或成果等方面与相关人员的沟通不足,造成各做各事、重复劳动,甚至造成不必要的损失;有些人没有每天定时收邮件的习惯,以至于无法及时接收最新的信息。
解决方案:制定有效的沟通制度和沟通机制,对由于缺乏沟通而造成的事件进行通报作为教训提醒,以提高沟通意识;沟通方式应根据内容而多样化,讲究有效率的沟通;通过制度规定对由于未及时收取邮件而造成损失的责任归属;对于特别重要的内容要采用多种方式进行有效沟通以确保传达到位,例如除发送邮件外还要电话提醒、回执等,重要的内容还要通过举行各种会议进行传达。
问题五:风险管理意识问题(相关人员:项目经理)
项目经理没有充分分析可能的风险,对付风险的策略考虑比较简单。项目经理在做项目规划时常常没有做专门的风险管理计划文档,而是合并在项目计划书中。有些项目经理没有充分意识到风险管理的重要性,对计划书中风险管理的章节简单应付了事,随便列出几个风险,随便地写一些简单的对策,对于后面的风险防范起不到什么指导作用。
解决方案:通过学习项目管理知识掌握风险识别、量化、对策研究、反应控制的工具和方法掌握项目风险管理所必备的知识。通过加强对项目规划中风险管理计划的审核提高项目组的风险管理意识。总结本行业项目中常见的风险及其对策作为风险管理计划中必要的风险内容,并切实评估相应对策的有效性和可行性。
问题六:不重视项目经验的总结(相关人员:项目经理、管理人员)
项目经理在项目结束时有些是因为自身对写文档工作的兴趣或意识,或
者是因为紧接着要参加下一个项目,总体对项目总结的重视程度不够。有些是项目总结报告一再拖延,有些是交上来的报告质量较低,敷衍了事。
解决方案:在制度上鼓励和加强项目经验总结工作,使得项目总结及时并且具有指导意义而不是走过场。
问题七:项目干系人相关问题(相关人员:项目经理、项目成员、客户)
在范围识别阶段,项目组对客户的整体组织结构、有关人员及其关系、
工作职责等没有足够了解以致于无法得到完整需求或最终经权威用户代表确认的需求。由于项目经理的工作问题,客户参与程度部不高,客户方相关责任人不明确或对范围和要求责任心不强,提出的要求具有随意性,项目前期对需求的确认不够积极;或者是多个用户代表各说各话、昨是今非但同时又要求项目尽早交付;项目后期需求变化随意,造成项目范围的蔓延,进度的拖延,成本的扩大。
解决方案:项目的目的就是实现项目干系人的需求和愿望。项目干系人管理应当从项目的启动开始,项目经理及其项目成员就要分清项目干系人包含哪些人和组织,通过沟通协调对他们施加影响,驱动他们对项目的支持,调查并明确他们的需求和愿望,减小其对项目的阻力,以确保项目获得成功。
问题八:项目团队内分工协作问题(相关人员:项目经理、项目成员)
项目团队内部有时由于各阶段不同角色或同阶段不同角色之间的责任
分工不够清晰而造成工作互相推诿、责任互相推卸的现象,有时各阶段不同角色或同阶段不同角色之间的责任分工比较清晰但是各项目成员只顾完成自己那部分任务、不愿意与他人协作。这些现象或多或少地造成了项目团队内部资源的损耗,从而影响了项目的进展。
解决方案:项目经理应当对项目成员的责任进行合理的分配并清楚地说明,同时应强调不同分工、不同环节的成员应当相互协作,共同完善。
以上对软件开发项目管理中出现的问题的分析还不够深入,也无法列举所有遇到或将遇到的问题,解决方案也要根据实际情况进行调整,希望引起对这些问题更多的思考和改进。
结束语:项目管理虽然没有非常高深的理论,但要真正实施起来,也绝非易事。对于软件开发企业而言,这不是一个小的改变,而是一种变革,企业需要为此付出艰苦的努力,宣传并树立公司范围内的项目管理文化十分重要。从而在实践中锻炼提高,解决各种各样的问题,使项目管理工作越做越好。
参考文献:
吴照云《管理学原理》经济管理出版社
StanleyE.Portny(宁俊等译)《如何做好项目管理》新经济工商实务丛书
一、引言
项目管理(PM,projectmanagement)是指利用现有的知识、方法和技术手段,有效地计划、调度、控制和跟踪项目的开始、执行、直止终止的过程,是项目顺利实现的有效手段。软件项目管理则是在项目管理的基础上,结合软件产品的实际,利用工程的概念和方法来开发与维护软件,对成本、风险、时间、质量、过程、配置等进行分析、管理、控制,最终目的是为了让软件项目的整个生命周期都在管理者的控制范围内,以预定成本按期、按质完成软件的开发并交付用户使用。目前,软件产品已广泛应用于各个领域,但是很多软件项目的成功率并不高.虽然有些公司根据软件工程理论建立了一些软件开发管理规范.但并没有从根本上提高软件项目管理问题,这就导致软件产品质量不稳定甚至是项目的失败,同时也损害了用户的利益。本文结合我国软件项目管理的特点并经实践应用.以提高软件质量、降低成本、加强软件项目的可控性为目标,通过对CMM的研究和改进,给出了一个基于CMM加强软件项目管理的实践模式,在这个模式中对目前CMM中的KPA做适当的裁减,定义了6个关键过程域和3个工作组。
二、软件项目管理中目前存在的问题
影响软件项目成功率的因素主要是软件质量问题,而在整个软件项目的实施过程中需求不明确、跟踪和监督不力、缺乏客观的软件评审和软件配置以及风险管理意识不足等都阻碍着软件质量的提高。
2.1需求不明确
需求管理是软件项目管理中非常关键的一个步骤.需求分析的完整与否可以降低软件质量、延长项目周期、加大成本。由于用户对计算机系统认识的不足,对于系统的需求往往比较模糊,遗漏甚至是错误的问题经常出现(包括管理流程、业务流程、数据或报表的分析处理等),但这些问题往往没有暴露给开发人员,而是随着项目的进展才逐渐明确。对于开发人员来说,需求的变更意味着软件产品的部分内容必须重新开发,而对于整个软件项目管理而言,势必要重新分配资源、调整计划、估算成本等等,导致软件产品质量下降。
2.2跟踪和监督不力
跟踪和监督主要针对过程而言,也是项目管理中最容易被忽视的环节。软件项目过程由多个任务构成,大部分任务都有前置任务和后置任务,这就要求项目管理者要严格跟踪和监督每一个任务。任务的完成主要从时间进度和质量两方面来衡量,还要充分考虑因客户方引起的一些客观因素(更改需求分析等)。项目管理者虽然制定了具体的项目进度内容,但如果缺乏有效的跟踪和监督机制,对于每一个阶段所要完成的任务疏于评价,就会影响下阶段软件产品的质量,有时甚至是软件产品的重新开发,最终影响整个软件项目。
2.3缺乏客观的软件评审
客观的软件评审是软件产品质量的直接保障,软件评审一直贯穿于整个软件项目的过程中,对软件产品的评审应有客户使用人员和软件业中的同行来进行。客户使用人员对软件产品做阶段性的评审可以及时发现软件产品功能方面的不足,同行评审可以从软件业的规范及标准去发现问题.软件评审可以降低软件开发的成本提高软件产品的质量。大多情况下项目管理者没有做任何阶段性的评审,通常只是在软件产品开发基本完成之后来组织评审,果发现了很多问题,但要修改已经非常困难.要花费很长的时间甚至从头再来。
2.4软件配置混乱
软件配置是指软件产品在各个阶段各种版本的文档、程序及数据的集合,贯穿于整个软件项目的始终。随着软件产品开发的进行,由于各种客观原因,其中的预算、设计方案、进度等内容都有可能需要大大小小的更改(这些改动可能是合理的),整个改变的过程对软件项目的参与人员来说必须是可视的,以便提高软件的可靠性和质量,而这一切都应该有正确的软件配置来控制如果失去正确的软件配置管理,那么针对软件产品发生的任何更改或者是维护都会给软件项目带来混乱甚至是失败。
2.5风险管理意识不足
风险管理是软件项目中防止失败的一种重要手段,软件项目不同的阶段存在着不同的风险,并且风险会随着项目的进展而变化,目前国内的软件企业大都不注意软件项目的风险管理。除了社会环境风险、商业风险等这些客观风险之外.可控的软件项目风险主要指技术风险。技术风险主要是指与软件项目本身相关的的技术因素变化带来的风险,如果在一定的条件下达不到技术条件能够实现的目标,不但延缓项目的进度而且会增加项目的成本.继而使整个项目受到影响。
三、通过过程管理加强软件项目管理的实践模式
利用cMMfCapabilityMaturityModeforSoftware)的核心思想把软件项目管理看作一个软件过程,并根据这一原则对整个软件项目的开发和管理进行过程监控,监督发现过程中影响项目的关键问题并予以解决。软件过程是指软件开发人员开发和维护软件及相关产品的一套行为、方法、实践及变换过程,包括软件开发过程和软件管理过程。CMM把软件开发机构按照不同开发水平划分为5个级别。每个等级被分解为几个KPA(关键过程域),KPA是指在某个成熟度等级应重点关注的区域,也是达到此成熟度等级必须解决的关键点。①初始级,无过程意义。软件过程是无序的、随机的、缺乏总计划,无预见性,大多数活动是应付危机,经常超期超支,成功取决于个人。②可重复级,具备基本的项目管理。KPA分别是:需求管理、软件项目计划、软件跟踪与监督、软件子合同管理、软件质量保证、软件配置管理;③已定义级,已定义软件过程。已将软件管理和软件工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。KPA分别是:组织过程焦点、组织过程定义、培训大纲、集成软件管理、软件产品工程、组间协调、同行评审;④可管理级,过程可度量。已收集了软件过程和产品质量的详细度量方法,软件过程和产品均可被定量地理解和控制。KPA分别是:定量过程管理、软件质量管理;⑤优化级,过程控制。通过过程的量化反馈以及新技术、新方法促使过程不断改进。KPA分别是:缺陷预防、技术更新预防、过程更改管理。
CMM只是一个过程改进的框架.并没有给出具体实施的办法。在该模式中对目前CMM中的KPA做适当裁减.定义了6个关键过程域:软件项目计划(SPP)、需求管理(RM)、软件项目跟踪和监督(SPTO)、软件质量保证(SQA)、软件配置(SCM)、同行评审(PR),设置了三个工作组:软件项目过程组(SPPG)、软件工程组(SEG)、软件质量保证组(SQAG)。通过工作组对关键过程域的操作来加强软件项目的管理。
3.1定义KPA
3.1.1软件项目计划(SPP)
软件项目计划是为要实施的软件项目编制软件过程活动的安排,包括进度控制、成本控制、质量控制、风险控制等,也是实施CMM2的核心此阶段在安排过程活动的同时开展项目设计的前期工作,设计和界定在整个项目中各阶段所需的开发、质量、跟踪、评审、风险、成本等工作。项目计划是指导项目过程的具体措施,要在有软件项目实施经验的人员领导下投人大量的时间和人力资源来完成。制定项目计划应注意7个问题。①在科学论证的基础上制定过程,充分调动人员积极性合理地确定项目组的参加人员;②对软件项目各程中的任务进行分解,明确项目的里程碑和检查点;③正确估计软件项目中的软件资源、硬件资源、人力资源及其它费用;④正确估计各方面因素带来的风险并制定应对措施;⑤制定项目实施过程中的跟踪和监督措施;⑥确定软件的评审和测试方法;⑦详细的文档资料。
3.1.2需求管理(RM)
需求分析主要包括面向用户的用户需求和面向开发人员的系统需求.是整个软件工程的第一步.也是非常关键的一个环节。需求分析主要针对用户的业务流程、系统功能、性能、数据分析进行严格的定义.是设计一个软件应用系统的起点与基本依据,通过它来评判软件产品是否能够解决用户问题,也是项目成功与否的标准。就目前国内现状来讲,一般签定软件项目合同的用户是主管信息技术的负责人,它所关心的可能是整个系统的目标需求,用户方中层管理人员关心的是业务流程需求.终端操作人员则注重软件本身的易操作性和功能特性,因此.面向用户的需求一定要和用户多方人员多沟通、交流.最终通过双方有关部门人员的论证以文档资料的形式确定下来。任何一个需求分析因客观原因可能存在着需求更改的现象,对于这种情况一定要注意需求更改的可控性.要建立需求的基准版本和更改版本控制文档资料.使受需求变化影响的产品与需求变更一致。但要注意在更改需求的同时要衡量需求的稳定性,如果一个需求的变更比较频繁,意味着本项目并没有真正了解用户想要解决的实际问题。可以说需求分析的完整性和变更可控性直接影响到软件过程的改进,它可以降低软件质量、加大软件开发的成本、甚至是导致项目的失败。软件工程组(SEG)中要明确定义一个需求管理员。
3.1.3软件项目跟踪和监督(SPTO)
软件项目的跟踪和监督始终贯穿于整个软件项目的过程中,是项目得以控制的前提和条件、是软件质量的根本保障,其目的是增加软件过程中进度、成本、工作量、质量、风险等内容的可视性,也是实施CMM2的核心。除去市场、法律等不可控制因素外,根据项目计划对项目进展的有关情况及影响项目实施的相关因素进行及时、客观、准确的信息采集,将采集到的需求、成本、进度、风险等内容形成文档并建立一个项目跟踪信息平台。项目负责人定期召集软件过程人员、开发人员、质量保证人员、用户方有关人员召开开放式的例会,例会的主要内容是检查项目进展、数据的分析、认识的偏差、资源的搭配、相关的风险等问题并讨论确切的解决办法,通过跟踪和监督使项目始终处于可视化的受控状态。
3.1.4软件质量保证(SQA)
软件质量保证是与软件产品满足规定的和隐含的需要能力有关的特征或特性的组合。对用户来讲主要体现在软件产品的有效性、一致性、完整性、可靠性和可操作性等方面,对于软件产品本身来讲体现在软件产品的可移植性、易维护性、健壮性、可重用性等方面。具体实践中.软件质量保证应在软件项目计划、需求分析、跟踪和监督、软件配置和软件评审的相互配合下完成.软件质量保证要做到以事先预防和跟踪为主,事后纠偏为辅。
3.1.5软件配置(SCM)
软件配置是针对软件产品的跟踪和控制活动.贯穿于整个软件项目的过程中.目的是建立和维护在整个生命周期内软件产品的完整性和一致性,使整个软件产品的演进过程处于可控的状态,继而提高软件的可靠性和质量。在实践应用中主要做到五个子项的配置①配置项的标识。标识做到唯一性。便于跟踪和管理。②版本管理。对整个软件过程中的文件和目录提供有效的跟踪手段。③变更控制。保持并传递修改信息。④配置审计。确定整个项目生产周期中产品在技术和管理上的完整性。⑤系统整合。把系统的不同部分集成后完成一组特定的功能。
3.1.6同行评审(PR)
同行评审是根据预定的规范和标准对软件产品进行评审。评审的结果是衡量软件产品质量的依据。在整个软件过程中对详细设计和软件综合测试作为两个关键评审点来进行评审,评审的过程中注意要结合本软件项目的具体要求和标准。
3.2组的定义
在具体的实践应用中设置了三个组,在降低了人员成本的同时提高了软件过程改进能力和软件质量。
软件项目过程组(SPPG)组织具体的项目实施活动,管理并协调整个软件项目的过程,主要完成SPP和SPTO。
软件工程组(SEG)负责软件工程的需求分析、概要设计、详细设计、编码、测试、维护工作。
软件质量保证组(SQAG)主要完成SPTO、SCM、PR、SQA等工作。
四、实践模式效率评估
4.1开发时间
软件开发由需求分析、概要设计、详细设计、编码、软件测试、项目维护和软件集成几部分内容组成,在需求分析和设计阶段采用CMM框架实施过程管理所花费的时间要多于没有实施过程管理花费的时间。首先对项目做大量分析,论证项目的可行性。然后在和用户做良好沟通、反复论证的基础上做需求分析,形成文档资料。这种模式下花费在需求分析和设计上的时间大约占项目总开发时间的40%,但这两个阶段完成了数据流程、算法描述、详细的规格说明等内容,为代码编写、软件测试、软件维护等后续内容的工作节省了时间,软件项目的开发周期大大缩短。经过评估,采用该实践模式实施软件过程管理的软件项目开发周期比没有实施软件过程管理的软件项目开发周期缩短20%。:
4.2开发质量
2)组织:如何引导和组织学生建立项目小组以更好地实现教学目标?由于项目组的建立必须在开课之初,这时学生还未接触软件工程的体系内容,因此需要教师妥善引导建立。建议的步骤是:①提前根据授课班级人数确定好合适的小组规模,将小组数量限制在可控范围内。②在第一节课上,布置学生按照规定的小组规模自行分组,每人选好自己在小组中的角色,如项目经理、程序员、需求分析人员等,这涉及个人在小组活动中可能要完成的任务。③分好小组及各自角色后,“项目经理”以电子邮件(各小组的联络信箱)的形式将小组成员及对应角色的名单提交给教师,同时需要提交的还有各虚拟项目小组确定的虚拟开发项目。针对少数学生在项目小组的组合及活动上可能存在偷懒行为,我们建议在布置分组时,提前分组规则。例如,项目小组原则上是班级学生自由组合;布置的实践作业及小组活动阶段答辩要算成绩,成绩的计算方式是以小组为单位,小组成员成绩均等;平时成绩在考试中的占比较大。当意识到项目组成员构成以及成员合作的重要性后,学生会更慎重地选择分组,而且当组内成员偷懒时,为了不影响小组成绩,其他成员也会督促。另外,经验表明,很多小组的成员会在角色上各尽所能,善于言辞的去答辩,善于设计归纳的做PPT,还有的进行资料收集工作。当然,也不排除有的小组有能者多劳现象,但这是学生自己的选择。
3)内容:在有限时间内项目小组围绕自己的虚拟项目该做些什么?要明确在现有条件下需要学生重点体验项目开发实践活动中的哪些内容。我们认为除代码开发外,让学生感受经典软件工程项目开发的主要阶段和其中的一些重要角色,是该课程的重点。因此,项目小组以工程文档编制为主要内容,根据各自指定的虚拟开发项目,定期提交阶段项目文档并针对文档答辩。这在一定程度上加深了学生对最容易忽视的开发文档的认识和理解。当然,教师也要定期发放给学生一些软件工程的标准文档作为参照。
2教学设计
2.1课堂部分目前学院软件工程课程设置48个理论授课学时,每学期16个教学周,每次课包含两小节,即2学时。课程安排为单双周课时方式,即逢单周为一次课,正常进行软件工程基础理论授课;逢双周为两次课,小部分时间进行软件工程基础理论授课,大部分时间进行虚拟项目小组汇报答辩活动。课程选用国外教材[6],教材内容贴近于实践,甚至可以在实践中当作工作指南来使用,非常适于配合笔者提出的教学模式。
2.2实践部分学生按照教师定期布置的实践内容,在课下围绕所在小组的虚拟开发项目自主完成。教师可以通过汇报答辩环节进行评估检查,同时在期末试题中也可以体现相关内容。在教学实践中,为了规范及督促项目小组的活动,对小组组成及任务给出如下规则:①全班分成若干个项目组,每个项目组5~6个人;②每人都要参与项目组,否则无平时成绩;③各项目组自主制订合适的模拟开发项目(充分发挥想象力);④项目组的活动围绕软件工程文档进行;⑤项目组安排各阶段任务;⑥项目组内要分工明确;⑦阶段报告及答辩活动需要做PPT配合。
2.3任务布置依据正规、全面的经典软件工程开发模型,要求每个项目小组完成项目开发阶段文档,包括编写项目计划书、可行性分析报告、需求分析报告、项目进度计划、体系结构及总体设计、SQA计划、详细设计、测试计划及测试报告、SQA评审等各种项目文档。在每次阶段汇报活动中,各小组要将所有文档提交给教师。
3考核方式
3.1分值配比及要求按照学校的规定,科目总成绩由平时成绩与期末考试成绩两部分组成。由于软件工程课程实践部分占有较大权重,故设定平时成绩占30%,均以小组为单位,包括出勤、答辩表现及项目文档(代码);期末成绩占总成绩的70%,以个人为单位,偏重于课程的理论内容。具体要求是:①每人只允许累计缺勤2次,否则没有成绩;②个人缺勤将影响小组成绩;③答辩表现部分按小组整体给分,答辩人由小组自主确定;④作业以小组形式给出,故按小组给分;⑤最终成绩与所在项目组的表现有较大关联。
3.2计分细则(1)出勤。每人每缺勤一次所属小组扣3分,迟到扣1分,从平时成绩里扣除。(2)文档。2分×7次+1分×1次=15分(组内按角色自行安排撰写人)。(3)答辩。2分×7次+1分×1次=15分(组内按角色自行安排答辩人)。(4)与考试关联10分(根据答题情况浮动)。最后一项与答辩情况关联,即隐性的平时成绩,形式是主观论述题,与每个角色的答辩内容有关,评分标准是答辩与答题情况的综合。在实际制订的试题中,除了上述主观题,还有一道题与学生在所属小组里承担的角色有关,涉及角色职能描述,需要学生谈看法和感受,并阐述某项目模拟角色的工作等。
在软件工程项目投标风险识别过程中,头脑风暴法主要是通过发挥集体智慧来对软件工程项目中存在的风险进行分析与谈谈。在此过程中要求风险识别工作的参与者对自身观点做出明确的阐述,其目的是为了通过让参与者在自由提出多种方案的基础上更加科学且全面的认识到软件工程项目投标工作中的风险。在此过程中并不提倡对其他成员提出的问题和方案进行批评,并且要求能够将所有成员所提出的问题与方案进行记录。
(二)德尔菲法
在软件工程项目投标风险识别过程中,德尔菲法是Q•赫尔穆与N•达尔克在20世纪40年提出,这种风险识别方法的基础在于对专家能力的利用。当然这种方法已经在社会经济、工程等多个领域的工作中得到了广泛的应用,德尔菲法主要是通过组建专家队伍来对项目投标中的风险做出分析。专家队伍主要是由项目风险小组来进行选定,通过专家意见和整理专家意见并反馈给专家队伍来获得意见。最后将统一的专家意见当做软件工程项目投标风险管控策略选取的依据。
(三)情景分析法
在软件工程项目投标过程中,情境分析法主要是以多样化的发展趋势为依据,对系统内外问题开展系统的分析,并设计得出多种可能发生的前景,随后对这些画面以及情景做出描述。在此过程中,社会因素、经济因素以及技术因素是必须要重点考虑的内容。一般情况下,情景分析法可以在以下情况下产生十分有效的作用:一是提醒软件工程项目投资的决策者需要注意一些政策和措施所引发的风险;二是对一些影响未来工程项目投标的关键因素做出研究,尤其是技术发展在软件工程项目投标中所产生的风险。由于情景分析法建立在假设以及可能性的基础上,所以在软件工程项目投标中,可以得出多种不同的情境,从而为软件工程项目投标风险的防控工作提供更多依据。然而由于这种方法具有一定的操作难度和复杂性,所以在我国的软件工程项目投标风险识别过程中,这种方法并没有得到广泛的应用。
(四)核对表法
在软件工程项目投标过程中,软件工程项目投标企业可以将曾经出现过的风险以及其他企业曾经出现过的风险进行总结、整理与罗列并形成核对表。通过对核对表的查阅,工作人员可以了解到软件工程项目投标过程中可能出现的风险,并可以通过总结各类风险应用中的经验和教训来确定使用何种风险管控策略来对风险发生几率以及风险损失进行控制。在核对表的制定中,主要内容包括其他软件工程项目投标成败原因、项目管理成员能力以及相应软件工程项目的合同、进度、质量、成本、范围以及各类资源等。虽然这种风险识别方法与其他方法相比并不能发现较多的绝对量,但是却具有着一定的针对性,所以在这种识别方法的使用中,也可以发现一些其他风险识别方法所不能识别的潜在风险。
二、软件工程项目投标过程中的风险管控
(一)软件工程项目投标过程中风险的规避
在软件工程项目投标过程中,风险的规避主要是通过变更计划来制约风险产生条件的生成,从而保护软件工程项目投标主体能够避免受到风险所带来的过度影响。与其他风险管控策略不同的是,风险的规避主要是对风险产生的损失作出控制,而不是对风险进行消除。因此,风险的规避主要体现出了两点特征:一是通过使用事前控制策略对风险所造成的损失产生的几率进行降低;二是通过事前控制与事后补救的结合来实现损失程度的降低。风险规避作为软件工程项目投标过程中能够最有效降低风险所产生的损失的方法,是软件工程项目投标阶段开展风险管控工作的重要手段,具体而言,风险规避的方法包括程序法、教育法以及终止法。其中程序阿发主要是通过提高软件工程项目投标过程中个性工作的规范化、制度化以及标准化程度来避免风险造成过大损失;教育法主要是通过对参与软件工程项目投标工作的工作人员开展教育来让工作人员认识到软件工程项目投标过程中存在的潜在风险因素,从而在提高工作人员风险防控意识以及防控能力的基础上降低风险所造成的损失;终止法则主要针对较大的风险或者过大的损失,这主要是因为终止法是通过终止软件工程项目投标行为来规避风险造成过大的损失。由于这种风险防控策略在避免风险以及风险损失的同时也放弃了让企业获得效益的机会,所以即便这种方法能够最有效的对软件工程项目投标中的风险做出防控,也并不是软件工程企业在投标风险管控中经常考虑的方法之一。
(二)软件工程项目投标过程中风险的降低
在软件工程项目投标过程中,风险降低可以理解为对风险的缓解而并非完全的消除与避免。这种风险管控策略体现在降低投标过程中风险产生的概率以及降低风险所造成的损失两个方面。实现风险降低的手段主要是对风险做出有效的监控与环节,在构建风险预警机制的基础上确保风险的及早发现与及早解决,从而降低风险产生几率。在使用风险降低策略对软件工程项目投标风险进行管控的过程中,首先要承认软件工程项目投标过程中风险的不可完全避免性,并以积极的态度来最大化的避免风险对投标主体造成过大损失。
(三)软件工程项目投标过程中风险的转移
在软件工程项目投标过程中,风险的转移主要是将管控风险的责任和权利以及风险可能造成的损失转移个其他主体承担。很明显,在风险转移策略中,并不能对风险进行完全消除,而是与其他主体来对风险进行承担。在软件工程项目投标过程中,由于要做到完全的规避风险需要付出较高的成本和较大的管理难度,所以将风险转移给其他主体承担则更为方便。在软件工程设计内容复杂以及分工逐渐细化的背景下,参与投标的软件工程企业也并不一定能够独立完成业主所要求完成的任务,所以投标主体可以利用分包形式来对投标过程中的风险进行转移,这种策略的意义主要体现在两个方面:一是不会让投标主体面临过大的风险;二是能够在工程质量以及工程进度等多个方面做出更为良好的管控。
该课程相关教材理论知识抽象、知识体系庞杂,加大了学生的学习难度。另一方面,过度偏重理论知识的传授,让学生觉得课程所学知识离实践很远,不能很好地保证教学质量和效果。
2)教材案例不完整。
传统教材难以容纳完整的案例,所选皆为虚拟案例,缺乏实际可操作性,使案例分析没有起到应有的作用。
3)教师缺少项目管理实战经验。
该课程要求主讲教师既具备较强的理论知识,又有丰富的实战经验,而高校教师往往理论基础较好、工程项目经验积累不足,授课常常照本宣科,很难对学生进行理论联系实际的有效指导。
4)学生没有项目开发经验。
在校大学生很少有机会参与实际项目的开发,多数没有参与过完整的课堂模拟项目开发,不易理解课程中的工程概念。
5)实践教学学时不足。
软件项目管理是一门实践性非常强的课程,由此决定了该课程不能完全通过书本和课堂掌握知识。实践教学一般安排18个学时,在如此短的时间内,需要完成项目管理工具,还要求学生选择一个新项目,既要从事项目分析设计工作,又要从事项目管理工作,还要学习项目管理工具的使用,难度非常大。
2理论加案例的课堂教学设计
在软件项目管理课程的教学中,教师应结合当前社会需要,利用多媒体授课的优势,以案例充实教学,增加知识面和信息量,使理论具有鲜明的应用特色,激发学生学习的兴趣和积极性;同时,以理论武装案例,彰显案例的科学性,令学生在应用中能够举一反三,活学活用。
2.1以项目管理知识体系组织课堂讲授的理论内容
软件项目管理的知识体系、内容框架及管理流程有多种版本,如美国项目管理学会推出的项目管理知识体系(projectmanagementbodyofknowledge,简称PMBOK)、英国商务部推出的受控环境下的项目管理(projectsincontrolledenvironments2,简称PRINCE2)、IBM提出的全球项目管理方法(worldwideprojectmanagementmethod,简称WWPMM)。该课程采用国内外最流行的PMBOK(第5版)组织授课内容,把软件项目管理的内容分为10个知识领域、5个过程组和47个过程。10个知识领域分别为集成管理、范围管理、时间管理、成本管理、质量管理、人力资源管理、沟通管理、风险管理、采购管理、干系人管理;5个过程组包括启动、计划、实施、监控和收尾;授课时以4个核心知识领域(范围管理、时间管理、成本管理、质量管理)作为重点内容。以PMBOK指导授课内容既保证了授课内容的权威性,又能够与时俱进地适应项目管理内容的新变化。
2.2组织开篇案例
每章开始,教师都会安排一个与该章内容相关的开篇案例,激发学生学习的兴趣。这些案例经过精心选取,尽量贴近实际。案例部分来源于教材,部分来自项目管理认证中的案例分析,每个案例都包括案例描述和问题两部分。在讲解项目管理的概念和技术时,学生可结合案例问题进行分析,学以致用,提高运用所学知识解决实际问题的能力。
2.3结合CMMI认证展示实际项目资料
当以实际项目资料展示项目管理的实践成果时,课程对学生的影响将是实际的、深刻的。在软件全生命周期的工程化管理和持续过程改进领域,软件能力成熟度集成模型CMMI(capabilitymaturitymodelintegration)是无可争议的主流模型,在专业研究认可度和软件业界接受度方面都处于绝对的领导地位。作为软件工程特色专业建设,计算机学院软件工程系教师与学院软件开发团队成员一起准备进行CMMI3级认证,认证过程中积累的项目资料为本课程的项目展示提供了优质教学资源。
2.4认证考试试题操练
计算机技术与软件专业技术资格(水平)考试(简称软考)由于不设报考条件,很受学生欢迎。它可用于以后职称的评审或者作为工作的敲门砖和晋级的阶梯,部分学生会考虑在学校报考软考认证。与本课相关的认证有信息系统项目管理师、系统集成项目管理工程师、信息系统管理工程师。步入工作岗位,学生能报考的与实际项目管理经验相关的认证还有美国项目协会PMP(projectmanagementprofessional)、国际项目管理协会的IPMP(internationalprojectmanagementprofessional)及中国的CPMP(Chinaprojectmanagementprofessional)认证等。教师在每个知识点讲授完毕时,辅以这些考试中的相关试题,可以加深学生对知识的理解。
3承接工程项目训练成果的实践教学设计
以现代工程教育理念CDIO(conceive-design-implement-operate)为指导,河南大学计算机与信息工程学院为各专业在第六、七学期开设工程项目训练课程,一个导师负责带几个学生,完成从选题、分析、设计到实现的整个项目过程。学生通过分工合作在大四找工作之前有了完整的项目实践训练。针对本课程实践学时少及学生缺乏项目开发经验这一突出问题,笔者尝试用承接工程项目训练课程来,组织实践教学。
3.1保留工程项目训练课程中的实践成果
软件项目管理开设在第七学期,学生在学习本门课程之前,已经在工程项目训练课程中完成了项目的选题、分析及设计工作,可以把实践重点放在以前所选项目的管理工作中去,这样既节省了时间,又让学生有了自己的实际项目,对项目工程训练课程的学习也是一种有效促进。
3.2课外作业围绕所选项目设置
由于在课堂上有大量的案例分析和习题操练,学生不需要再花过多的时间去巩固理论知识,因此教师布置的课外作业可以围绕项目设置。比如,在项目集成章节,教师让学生准备项目章程(或模拟的项目合同)和团队契约;在范围管理章节创建项目的工作分解结构;在时间管理章节利用Project提交项目进度计划;在成本管理章节对项目利用Excel进行成本估计与预算等;最终,学生能够提交所选项目的必要管理文件。
目标本课程开设的目标是使学生通过大型项目的开发,熟悉项目开发流程,理解项目管理的基本理念,灵活运用需求分析及系统设计方法,提高技术的使用熟练度,充分锻炼团队开发的协作能力,理解测试过程及Bug跟踪的流程,从而积累真实的项目开发经验,拉近与企业用人需求的距离。项目培养的能力体系如表1所示。根据TOPCARES-CDIO能值指标体系,本项目重点培养八项3级能力指标。
1.2项目内容和进度安排
随着软件行业的不断发展,主流应用软件的类型也在不断变化着,从最初的桌面应用到基于Web的应用,再到目前的电脑、手机客户端与Web端多客户端平台应用。本课程要求学生开发的项目来自于合作企业中最新的项目,以达到和市场接轨的目的。在课程进度安排如表2所示,包括准备阶段和增量开发阶段。课程共200学时,50次课,进度安排包括准备阶段和三个增量阶段,表2给出了一个增量的进度安排。项目准备阶段完成整个项目的构思,各个增量阶段,按照分析、设计、实施、运行和评审等步骤进行。
2项目实施(Implementationoftheproject)
项目教学实施过程主要采用情景教学的方式和分组教学的组织形式。项目实施尽可能模拟企业的开发环境,教师担当类似项目经理的角色,负责监控项目的整个进度和项目质量,将每个学生小组视为一个开发团队,让学生模拟企业中相应的工程师角色,在教师的指导下按照规范的软件开发过程进行项目开发,使得参与一级项目的学生获得更真实的项目开发体验,就业后能更快地适应企业工作。
3考核评价(Examinationandevaluation)
教师对各小组成员项目开发过程进行监控和打分,作为本课程的形成性考核,项目结束后安排统一的关于软件项目管理和软件开发等的闭卷考试,作为课程的终结性考核。各项考核的内容与本项目的能力培养目标相对应,如表3所示。这样,当学生完成了本课程的学习,可以从八个能力方面对学生情况进行全面的评价,对其今后的发展会比以往单纯的分数有更大的帮助。