时间:2023-03-16 17:42:39
引言:寻求写作上的突破?我们特意为您精选了12篇软件项目论文范文,希望这些范文能够成为您写作时的参考,帮助您的文章更加丰富和深入。
0引言
随着信息技术的飞速发展,软件产品的规模和复杂度随之增加,传统作坊式的开发方式逐步被以项目组为单位的协作式开发方式所取代,这就必然涉及到对软件项目的管理.实践表明,一个软件项目的成败,不在于其项目组的技术人员的技术水平,而在于是否采用的合适的管理:.好的管理方式不一定能使项目完全成功,但是一个不合适的管理模式往往会导致软件项目的失败.
1软件项目管理的特殊性
所谓项目,就是在特定条t"ae下,具有特定目标的一次性任务,是在一定时间内,满足一系列特定目标的多项相关工作的总称.项目具有一次性、独特性、目标的确定性、组织的临时性和开放性以及成果的不可挽回性等基本属性.
项目管理是指“在项目活动中运用专门的知识、技能、工具和方法,使项目能够实现或超过项目干系人的需要和期望.”这一定义不仅仅是强调使用专门的知识和技能,还强调项目管理中各参与人的重要性.项目经理不仅仅要努力实现项目的范围、时间、成功和质量等目标,还必须协调整个项目过程,满足项目参与者及其他利益相关者的需要和期望.
软件项目管理和其他的项目管理相比有相当的特殊性.首先,软件的整个过程都是设计过程,不需要大量的物质资源,而主要是人力资源,软件开发的产品以程序代码和技术文档为主,并没有其他的物质成果;其次,软件是纯知识产品,其开发进度和质量很难估H-和度量,生产效率也难以预测和保证.软件系统的复杂性也导致了开发过程中各种风险的难以预见和控制.因此,软件项目管理和其他项目管理相比,有很大的独特性.
2软件项目管理的内容
软件项目管理是一种科学的管理手段,它是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、~x-2,险等进行分析和管理的活动.管理的范围涉及人员的组织与管理、软件度量、项目计划、风险管理、质量保证、过程能力配置管理等几个方面,这几个方面都是贯穿、交织于整个软件开发过程中的.从软件工程的角度讲,软件开发主要分为六个阶段:需求分析阶段、概要设计阶段、详细设计阶段、编码阶段、测试阶段、安装及维护阶段.不论是作坊式开发,还是团队协作式开发,这六阶段都是不可缺少的.从用户的角度来看,软件项目的生命周期应该包括项目前期的论证工作、项目计划、软件开发、运行、维护及项目评价.由此可见,软件项目管理的范围不包括传统的软件开发过程,还应该包括开发前的准备工作以及运行中的维护工作和对项目的总结工作.根据PMBOK(项目管理知识体系ProjectManagementBodyofKnowledge,简称PMBOK)中的定义,软件项目管理可以分为以下几个方面:
2.1集成管理:项目计划制定、项目计划实施、集成变更控制等.
2.2范围管理:制定范围计划编制、范围定义核实、变更控制、任务协调等.
2.3时间管理:项目任务分解、进度计划编制、任务持续时间估算、进度计划控制等.
2.4成本管理:资源计划编制、成本估算、成本预算和控制等.
2.5质量管理:项目质量计划编制、软件质量保证、软件质量控制、软件过程改进等.
2.6人力资源管理:组织的计划编制、人员职责的分配、团队合作发展等.
2.7沟通管理:建立沟通渠道、信息交换管理等.
2.8风险管理:项目风险识别、项目风险分析、项目风险优先分析、项目风险控制等.
2.9采购管理:采购计划编制、合同管理、合同收尾等.
在面的软件项目管理中,有几个关键因素,它影响着软件项目的成败,下面就这几4-关键因素进行一下探讨.
3软件项目管理的关键因素
3.1合理配置人力资源
众所周知,人是决定组织和项目成败的关键,也是影响软件93:发质量的最关键的因素,因此软件项目管理应该以人为本,有效管理人力资源,合理配置人力资源.应该根据项目组成员的组成结构情况,合理搭配,充分发挥每位成员的技术专长,做到人尽其能;组织组建好项目团队,培养团结一致的团队精神,规范良好的职业道德;建立健全完备的奖惩制度,落实权利责任制度,做到权责明确,并在项目进程能及时化解各种人事冲突,营造良好的团队协作环境.
3.2顺畅有效的沟通管理
开发软件项目是一项知识性极强的工作,对人的依赖性比其它行业更为突出,因此加强人员之间的有效沟通,实现顺畅有效的沟通管理是软件项目成功的另一个关键因素.沟通管理是一个收集、存储、配置和项目生命周期内所形成的各种信息的过程.它把成功所必须的因素——人、想法和信息之间提供了一个关键连接.对于项目来说,要科学地组织、指挥、协调和控制项目的实施过程,就必须进行信息沟通.这里的沟通包括两个方面,一个方面是软件项目组开发人员与用户的沟通,另一方面则是软件项目组内人员的沟通.前者是做好软件需求分析所必须的;而后者则有助于组内成员的彼此交流,减少理解错位,实现信息畅通,改善人际关系,化解可能的冲突,加快项目的进度.沟通的方式是多样的,可以采用常用的项目组例会方式,可以通过面谈彼此交换意见;也可以利用方便快捷的通讯工具如电话、EMAIL、传真等方式加强信息的沟通;总之,顺畅有效的信息沟通,可以取得彼此的理解,剔除项目进度中的“BUG”,有利于项目按计划顺利开展.
3.3正确可靠的软件需求
软件需求是软件项目的根本所在,需求不明确,软件项目开发范围不确定,项目开发就会失去方向,容易造成开发的产品和用户实际的需求“南辕北辙“,最终导致项目的失败.一个可靠的需求,也是项目管理的关键因素之一.软件需求应当是项目有关的人员一致同意的、清楚的、完整的、详细的、可实现的和可测试的需求的确定,开发人员应该反复和用户进行沟通,认真听取用户的意见,及时归档记录,并适时发掘用户的潜在需求,最大限度地满足用户的目标,开发出用户最理想的产品.最后应拿出开发人员和用户一致认可的软件需求说明书,并加以确认.在项目开始以后,应该尽最大可能不更改需求,要与用户进行很好地沟通,以确保开发212作能按照需求进行,减少需求变更带来的风险!因此,正确可靠的软件需求也是项目成功的重要保障.
3.4周密可行的项目计划.
“凡事预则立,不预则废.”软件项目实施过程中,还必须有一个周密可行的项目计划.软件项目计划的目的是为完成软件工程和管理软件项目而制定的合理的计划,它包括以下步骤:估计软件产品规模及所需的资源,制定表,鉴别和评估软件风险和协商约定,而且要标志出几个阶段性的里程碑,这些都是极为关键的.软件项目开发组来说,一个可行的计划的重要性是不言而喻的.在实际发中,:计划的重视程度不够,计划过于笼统、粗糙导致可执行性差,再加上一些人为因素的影响,必然会产生一些反面的影响,或者有了周密可行的计划不严格遵守计划执行,任意变更,都将产生严重的负面影响,有时甚至是灾难性的影响.因此,要想成功进行项目管理,就要对高度重视、周密制定、严格执行.只有严格进行计划才能使成功项目管理得以实施.
3.5健全完备的文档资料
软件项目的文档作为软件产品的主要形式之一,集中体现了软件人员的劳动成果,在整个软件生存周期中占据重要位置.特别是在开发过程中需求发生了变更的情况下,健全完备的文档资料的重要作用就充yJ-~:现出来,开发人员可以及时在文档中回溯,快速锁定问题所在,及时解决问题避免软件项目延期,减少项目.此外,健全完备的档资料在项目接近尾声时也便于软件的测试与后期的维护工作,在项目结尾时,健全完备的文档资料也为人员的培训和项目的再开发发挥重要作用,因健全完备的文档资料也是软件项目成功的重要因素,在项目管理过程中应该高度重视.
3.6严格的风险管理
项目驱动教学中受教育者是学习主体,所以在立项过程中教育者要协助学生为其树立正确的理论依据及可行的操作步骤。不能凭借学生自身的想象而不考虑实际的可操作性及可完成性。通过项目驱动的教育模式来取得进步就要根据循序渐进的原则,遵循事物发展的普遍规律,过于困难或者没有实际意义的立项及理念都会使学生们失去兴趣,从而失去了项目驱动教学的真正意义。
2.项目设计的难易程度要适中
难度适中的项目驱动教学方案可以从正面激发学生的自主学习兴趣,过于简单的设计方案不具备实践意义,过于困难的设计方案违反了教育过程的规律性,不会达到真正的教育效果。所以不符合学生情况的设计方案不仅没有起到应有的作用,反而浪费了时间及成本,同时也容易使学生丧失积极性,这个时候教育者要根据难易适中的原则来引导学生对项目思想及步骤进行创新及重组,使得项目驱动教学模式真正深入学生内心,并在未来的学习及发展过程中运用的得心应手,项目驱动教学模式相对于传统教育的灌输模式,对软件技术这种新型课程的学习具有更大的帮助。
3.项目设计要具有实际的应用性
项目驱动教学的意义就是让学生在学习过程中培养主动、积极、创新的学习意识,如果项目的设计不具备实际的应用性,则学生在学习与工作过程中就无法与现实很好地联系,不能够将所获取的知识应用到实际中去,这一点对于项目驱动模式的教学来说失去了其本真的价值。当今计算机网络飞速发展,软件技术专业的知识更新速度更是让人望尘莫及,所以我们要掌握的是学习知识的意识、手段及流程,而不单单是知识本身。所以项目设计要摆脱应试教育的影响,充分考虑其实际的应用性。
二、项目驱动教学模式在软件技术专业中的设计研究
1.在教育者的辅助下充分发挥学生的自主意识
在以往的教学过程中,都是简单的灌输说教模式,很少考虑到学生在教学过程中真正欠缺的是什么,而项目驱动教学模式是以学生为主体,充分发挥其主体意识。在项目设计过程中,学生们可以充分发挥自身的创造力及整合力,在教育者的指导下,按照软件开发方法、开发过程和规范实现各课程小组的项目调研、分析与设计,组织项目小组自评,小组之间展示项目、交流体会、互评,进一步提升个人的实践能力。在这个过程中将软件技术专业所需掌握的知识及学生在学习过程中需要的素质培养方案设计其中,使学生在项目驱动教学模式下得到全面的发展。
2.教学要紧跟软件技术的发展方向和市场的研发动态
计算机软件技术专业更新换代的速度快,要让学生们不断适应飞速发展的软件技术,就要牢固掌握学习的方式方法,通过项目驱动教学展开的活动来紧跟软件技术的发展方向和市场的研发动态。只有在掌握行情的基础上才能不断充实自身的知识贮备及市场的发展需求。在平时的教学过程中,这种灵活的项目设计教学模式帮助学生在实践过程中自发地对市场行情及发展动态进行了解。
3.不断完善学习的资源和学习的环境
针对计算机软件技术专业的项目驱动教学模式,完善的资源及环境是顺利完成教育进程的保障,学校在这个方面应该投入相应资金来进行资源及环境的优化。为了加强学校项目驱动教育的综合实力及培养人才的效率,建立专门的软件工程校内实习基地,将项目研发、实践、实训与实习融于一体,实现教学资源及协作环境的完善,这使得学生在设计活动的过程中能够享受更加完备的资源设施,及更加专业化的教育引导。
4.需加强学生团队合作精神的培养
在项目驱动教育过程中,教师根据项目需要建立相关小组,协助学生在设计过程中按照正规流程分配及安排任务,让不同的学生在不同的设计小组内实现不同的学习任务。在各个项目小组的交流过程中不断总结与分析自身存在的缺点与项目存在的劣势,久而久之就能够让学生们在互相协作的过程中培养自身的团队合作意识。并在共同解决困难的过程中锻炼学生的思维能力、及表达能力及沟通交流能力,使其对团队合作的理解不断升华,并在实践过程中学会沟通与理解,提高了学生们适应社会发展的能力。
2软件工程的项目控制跟踪
2.1项目跟踪内容
依据软件项目计划,必须要对软件的产品规模(或更改后的规模)、软件的成本与工作量、所使用的重要计算机资源、项目软件日程、软件工程技术活动、项目费用、技术风险等内容与软件在开发前计划的相应内容进行比较。
2.2项目跟踪过程
软件项目的控制跟踪过程分为:
(1)项目跟踪人员要对软件度量的实际数据与再计划数据进行记录;
(2)负责人要根据文档里记载的程序在指定的地点审查项目成果;
(3)对软件的监控活动和项目的跟踪予以必要的检查。
2.3项目跟踪存在的问题
(1)控制与跟踪的频度,控制与跟踪在项目开发工程中的关键点有多个,这就需要我们找到一个好的频度去跟踪,若跟踪点少,就不能保证问题及时被纠正;若跟踪点多,在人力物力上的花费就会增多,对总体效率的影响很大。控制与跟踪的频度关系着软件项目的规模,大型项目设置的关键点相应较多。
(2)项目计划的修改,控制与跟踪软件开发过程以后,可能会发现软件项目有些地方会不符合实际,需要制定相应的修改计划,但其他组的活动就会受到修改后计划的影响,因此,没有得到相关组的同意,就不能对项目计划随意修改。
3软件工程的预测
3.1软件预测的意义
软件工程项目最关键的环节就是对软件进行预测,如果测试环节出现了问题或者测试不细致,那么将直接导致生产出的软件质量不过关,在应用软件的过程中也会逐渐发现软件存在的问题。问题不严重的,只是需要长期对软件进行修改,单单影响用户的应用;而问题严重的,会导致整个项目的失败,生产出的软件也无法投入使用。如果在投入使用前,没有经过测试,那就不知道用户有什么样的需求,也不知道软件存在什么隐患。尤其是有一些不经过测试就无法发现的隐患,一经投入使用,将会对用户造成巨大的损失。
3.2软件预测的内容
(1)文档审查,软件项目的验收需要提供一些文档,这些文档包括:经济分析报告、项目技术报告、用户手册、维护手册、项目总计报告、测试总结报告等,主要对文档的可理解性、正确性、完整性进行审查,还要对编写的规范程度进行审查。如果文档扫描不清晰、数量不齐全、甚至错误都将给用户造成不必要的麻烦,而且还可能导致软件无法升级。
(2)安装测试,安装测试第一个目的,是验证软件安装在最基本的配置下能否正常的运行;第二个目的,是验证软件安装在非正常的情况下,程序能否给用户足够的提示。非正常条件指内存不够、磁盘空间不足、不能自由创建目录。
做软件“大餐”的工序
软件质量保证(SoftwareQualityAssurance,以下简称SQA)的目的是验证在软件开发过程中是否遵循了合适的过程和标准。软件质量保证过程一般包含以下几项活动:
首先是建立SQA组;其次是选择和确定SQA活动,即选择SQA组所要进行的质量保证活动,这些SQA活动将作为SQA计划的输入;然后是制定和维护SQA计划,这个计划明确了SQA活动与整个软件开发生命周期中各个阶段的关系;还有执行SQA计划、对相关人员进行培训、选择与整个软件工程环境相适应的质量保证工具;最后是不断完善质量保证过程活动中存在的不足,改进项目的质量保证过程。
独立的SQA组是衡量软件开发活动优劣与否的尺度之一。SQA组的这一独立性,使其享有一项关键权利??“越级上报”。当SQA组发现产品质量出现危机时,它有权向项目组的上级机构直接报告这一危机。这无疑对项目组起到相当的“威慑”作用,也可以看成是促使项目组重视软件开发质量的一种激励。这一形式使许多问题在组内得以解决,提高了软件开发的质量和效率。
选择和确定SQA活动这一过程的目的是策划在整个项目开发过程中所需要进行的质量保证活动。质量保证活动应与整个项目的开发计划和配置管理计划相一致。一般把该活动分为以下五类:
1)评审软件产品、工具与设施
软件产品常被称为“无形”的产品。评审时难度更大。在此要注意的一点是:在评审时不能只对最终的软件代码进行评审,还要对软件开发计划、标准、过程、软件需求、软件设计、数据库、手册以及测试信息等进行评审。评估软件工具主要是为了保证项目组采用合适的技术和工具。评估项目设施的目的是保证项目组有充足设备和资源进行软件开发工作。这也为规划今后软件项目的设备购置、资源扩充、资源共享等提供依据。
2)SQA活动审查的软件开发过程
SQA活动审查的软件开发过程主要有:软件产品的评审过程、项目的计划和跟踪过程、软件需求分析过程、软件设计过程、软件实现和单元测试过程、集成和系统测试过程、项目交付过程、子承包商控制过程、配置管理过程。特别要强调的是,为保证软件质量,应赋予SQA阻止交付某些不符合项目需求和标准产品的权利。
3)参与技术和管理评审
参与技术和管理评审的目的是为了保证此类评审满足项目要求,便于监督问题的解决。
4)做SQA报告
SQA活动的一个重要内容就是报告对软件产品或软件过程评估的结果,并提出改进建议。SQA应将其评估的结果文档化
5)做SQA度量
SQA度量是记录花费在SQA活动上时间、人力等数据。通过大量数据的积累、分析,可以使企业领导对质量管理的重要性有定量的认识,利于质量管理活动的进一步开展。
要说明的是,并不是每个项目的质量保证过程都必须包含上述这些活动或仅限于这些活动,要根据项目的具体情况来定。
SQA计划中必须明确定义在软件开发的各个阶段是如何进行质量保证活动的。它通常包含以下内容:质量目标;定义每个开发阶段的开始和结束边界;详细策划要进行的质量保证活动;明确质量活动的职责;SQA组的职责和权限;SQA组的资源需求,包括人员、工具和设施;定义由SQA组执行的评估;定义由SQA组负责组织的评审;SQA组进行评审和检查时所参见的项目标准和过程;需由SQA组产生的文档。
选择合适的SQA工具并不是试图通过选择SQA工具来保证软件产品的质量,而是用以支持SQA的活动。选定SQA工具时,首先需要明确质量保证目标。根据目标制定选择SQA工具的需求并文档化,包括对平台、操作系统以及SQA工具与软件工程平台接口的要求等。
如何使白壁“无瑕”
按工序去做也不一定能得到一盘完美的“大餐”,因为火侯等因素实在很难掌握。万一掌握不好怎么办?软件质量控制主要就是发现和消除软件产品的缺陷。对于高质量的软件来讲,最终产品应该尽可能达到零缺陷。而软件开发是一个以人为中心的活动,所以出现缺陷是不可避免的。因此,要想交付一个高质量的软件,消除缺陷的活动就变得很重要。缺陷消除是通过“评审”和“测试”这类质量控制活动来实现的。
软件行业是一个极具挑战性和创造性的行业,软件开发是一项复杂的系统工程,牵涉到各方面的因素,在实际工作中,经常会出现各种各样的问题,甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。
1.项目管理在软件开发中的应用的成因
目前我国大部分软件公司,无论是产品型公司还是项目型公司,都没有形成完全适合自己公司特点的软件开发管理模式,虽然有些公司根据软件工程理论建立了一些软件开发管理规范,但并没有从根本上解决软件开发的质量控制问题。这样导致软件产品质量不稳定,软件后期的维护、升级出现麻烦,同时最终也会损害用户的利益。
随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性,管理学的思想逐渐融入软件开发过程中,应用开发的项目管理日益受到重视。
2.软件项目管理常见问题及解决方案
(1)缺乏项目管理系统培训
在软件企业中,以前几乎没有专门招收项目管理专业的人员来担任项目经理,被任命的项目经理主要是因为他们能够在技术上独当一面,而管理方面特别是项目管理方面的知识比较缺乏。
解决方案:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。
(2)项目计划意识问题
项目经理对总体计划、阶段计划的作用认识不足,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。
解决方案:计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。
(3)管理意识问题
部分项目经理不能从总体上把握整个项目,而是埋头于具体的技术工作,造成项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。有些项目经理没有很好的管理方法,不好安排的工作只好自己做,使项目任务无法有效、合理地分配给相关成员,以达到“负载均衡”。
解决方案:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。
(4)沟通意识问题
在项目中一些重要信息没有进行充分和有效的沟通。在制定计划、意见反馈、情况通报、技术问题或成果等方面与相关人员的沟通不足,造成各做各事、重复劳动,甚至造成不必要的损失;有些人没有每天定时收邮件的习惯,以至于无法及时接收最新的信息。
解决方案:制定有效的沟通制度和沟通机制,提高沟通意识;采取多种沟通方式,提高沟通的有效性。通过制度规定对由于未及时收取邮件而造成损失的责任归属;对于特别重要的内容要采用多种方式进行有效沟通以确保传达到位,例如:除发送邮件外还要电话提醒、回执等,重要的内容还要通过举行各种会议进行传达。
(5)风险管理意识问题
有些项目经理没有充分意识到风险管理的重要性,对计划书中风险管理的章节简单应付了事,随便列出几个风险,随便地写一些简单的对策,对于后面的风险防范起不到什么指导作用。
解决方案:通过学习项目管理知识掌握风险识别、量化、对策研究、反应控制的工具和方法,掌握项目风险管理所必备的知识。通过加强对项目规划中风险管理计划的审核提高项目组的风险管理意识。总结本行业项目中常见的风险及其对策作为风险管理计划中必要的风险内容,并切实评估相应对策的有效性和可行性。
(6)项目干系人问题
在范围识别阶段,项目组对客户的整体组织结构、有关人员及其关系、工作职责等没有足够了解以至于无法得到完整需求或最终经权威用户代表确认的需求;或者是多个用户代表各说各话、昨是今非,但同时又要求项目尽早交付;项目后期需求变化随意,造成项目范围的蔓延,进度的拖延,成本的扩大。
解决方案:项目的目的就是实现项目干系人的需求和愿望。项目干系人管理应当从项目的启动开始,项目经理及其项目成员就要分清项目干系人包含哪些人和组织,通过沟通协调对他们施加影响,驱动他们对项目的支持,调查并明确他们的需求和愿望,减小其对项目的阻力,以确保项目获得成功。
(7)项目团队内分工协作问题
项目团队内部有时由于各阶段不同角色或同阶段不同角色之间的责任分工不够清晰而造成工作互相推诿、责任互相推卸的现象;有时各阶段不同角色或同阶段不同角色之间的责任分工比较清晰,但是各项目成员只顾完成自己那部分任务,不愿意与他人协作。这些现象都将造成项目组内部资源的损耗,从而影响项目进展。
1软件和软件业现存问题
1.1软件项目的特点软件项目是以软件为产品的项目。软件产品的特质决定了软件项目的管理和其他领域的项目管理有着截然的不同之处。
1.1.1抽象性软件是脑力劳动的结果,是一种逻辑实体,具有抽象性。在软件项目的开发过程中没有具体的物理制造过程,因而不受物理制造过程的限制,其结束以软件产品交付用户为标志。软件一旦研制成功,就可以大量复制,因此软件产品需要进行知识产权的保护。
1.1.2缺陷检测的困难性在软件的生产过程中,检测和预防缺陷是很难的,需要进行一系列的软件测试活动以降低软件的错误率。即使如此,软件缺陷也是难以杜绝的。这就像一些试验科学中的系统误差,只能尽量避免,但不能够完全根除。
1.1.3高度的复杂性软件的复杂性可以很高。有人甚至认为,软件是目前为止人类所遇到的最为复杂的事物。软件的复杂性可能来自实际问题的复杂性,也可能来自软件自身逻辑的复杂性。
1.2我国软件行业软件项目现存问题
1.2.1项目管理人才匮乏分析我国的软件产品,可以发现我国真正生存期比较长的成功产品为数不多,很多开发人员甚至项目管理人员多年下来,也没有参与过一次真正意义上成功产品的项目运作。这种现状反过来又导致我国软件企业项目管理缺乏项目经验积累,产业项目运作长期无法规范化。造成我国虽然有大批具有优秀基础的软件工程师人才,却开发不出高质量的产品,大批软件人才外流的现实情况。
1.2.2管理制度不健全随着我国软件行业的日益发展和不断进步,企业开始陆续引进并实施了“事业部制/项目制”等专业划分,即:按照其所负责行业或业务系统的不同,成立多个事业部,各个事业部只负责其所属行业内的项目和工程。每个事业部内部按照不同的产品和项目划分产品线和项目组,并且会确定相应的产品经理、项目经理,以对其所负责的整个项目的全过程负责。但实际情况是,由于大型软件系统项目过大,开发时间过长,参与单位和人员过多,最终出现以下问题:
(1)组织构架不合理,项目管理、质量管理、职能管理划分混乱。项目经理与项目严重脱节,导致项目实施失控,项目经理、质量经理等众多头衔,职责不清甚至很多项目经理都成了虚设的行政头衔,管理协调行政事物,脱离项目。
(2)项目管理和质量保证体系使用棍乱,项目组无统一目标、方针、流程,导致项目工作效率低下。多套项目流程混杂不清,实施人员面对多种要求和多种流程疲于奔命,多个部门无法按照规范协同合作,项目经理和实施人员陷入混乱的流程漩涡,导致项目停工或工期延误等后果。(3)项目团队尤其是项目经理的责权不清,授权不合理,导致其工作无法开展。尤其是一些规模较大的企业多个项目存在耦合,项目内又划分子项目的情况下,项目经理的责权划分经常很难清晰。
2项目管理和大型软件系统项目管理
2.1主流管理体系
2.1.1项目管理所谓项目管理,就是项目的管理者在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。即从项目的决策开始到项目结束的全过程进行计划、组织、指挥、协调、控制和评价,以实现项目的目标。
2.1.2项目管理的基本内容划分(1)项目质量管理。项目质量管理包括保证项目满足其需求所需要的过程。包括确定质量方针、目标和职责并在质量体系中通过诸如质量计划、质量控制、质量保证和质量改进使其实施的全面管理职能的所有活动。(2)项目时间管理。项目时间管理包括为确保项目按时完成所必要的过程。包括工序定义、工序排序、工序工期估计、制定进度计划、进度控制等。(3)项目成本管理。项目成本管理包括确保在批准的预算内完成项目所需要的诸过程。包括成本管理主要过程:资源规划、费用估算、费用预算、费用控制等。(4)项目采购管理。项目采购管理包括需要从执行组织以外获得货物和服务的过程。包括采购计划编制、招标计划编制、招标、选择来源、合同管理等。(5)项目人力资源管理。项目人力资源管理包括需要最有效地利用涉及项目人员的过程。包括所有项目受益者、组织的计划编制、人员招聘、队伍开发等。(6)项目沟通管理。项目沟通管理包括保证及时、适当地产生、收集、、储存和最终处理项目信息所需的过程。以下为主要过程:信息计划编制,信息,执行情况汇报,行政收尾。(7)项目风险管理。项目风险管理包括对项目风险的识别、分析和应对过程。包括风险识别、风险量化、风险应对措施开发、风险应对控制。
2.1.3大型软件系统项目管理阶段划分大型软件系统项目管理阶段按照定义项目分为以下六大阶段:项目需求阶段;项目选择阶段;项目计划阶段;项目执行阶段;项目控制阶段;项目收尾阶段。
2.1.2大型软件系统项目管理
2.2.1大型软件系统项目概念大型软件系统是指基于大中型计算机、通信网络等现代化的工具和手段,收集、储存、处理和输出信息,以提供信息服务为主要目的的数据密集型、人机交互的计算机应用系统。
2.2.2大型软件系统项目的特点(1)项目持续时间较长和阶段交叉性相结(2)项目成员复杂。参与项目实施的成员虽然主要来自承包商的多个职能部门的人员,还包括来自用户不同部门或下属结构的业务人员,还有一些分包商和供货商的人员参与。参与项目的人员通常要由计算机、网络、通信、电子、管理等不同专业背景的专家、工程技术等人员共同合作,才能保证项目的实施。由于大型软件系统牵涉范围广,所以参与项目的成员全部集中在某一地区不是很现实的事情,而是往往分布在全国各地,甚至需要在国外人员的合作参与。
2.3大型软件系统项目的管理问题
2.3.1项目责任范围界定不清一是项目初期客户对自身需求不清晰;二是项目实施过程中客户需求自身发生变动;三是需求分析人员和客户对需求的理解有误;四是缺少客户业务部门参与。
2.3.2项目团队缺少有效管理一是团队沟通意识差;二是团队欠缺分工合作;三是项目成员的流动频繁。
3提高大型软件系统项目质量的具体方法
3.1真实需求的获取最终用户真实需求的获取就是需求分析的过程,它是一个项目的基石。在以往信息系统集成项目失败的案例中,大部分是由于需求分析的不明确而造成的,因此对于一个信息系统集成项目成功的关键因素之一,就是对需求分析的把握程度。只有确确实实地把握客户的需求和方向,才能做好后续的工作,这也是项目范围管理的重点。需求分析需要安排专门的人员组成项目需求分析小组,这个小组员的组成除了要有专业的需求分析人员和系统设计人员外,还必须包括用户方代表。用户方代表应为用户各项业务的代表,他们能够提出用户的一些真实需求,或者通过他们能够了解到最终用户的真实需求。需求分析小组要制定详细的需求调研计划,确定需求调研的方法。为了便于需求调研双方的充分合作理解,在需求调研开始前进行一些培训工作是必要的,这些培训包括调研方法的培训、用户业务流程的培训等。
3.2利用WBS分解项目工作分解结构(WorkBreakdownStructure,WBS),是一种面向可交付成果的项目元素分组,这个分组组织并定义了全部的项目工作范围;每下降一级都表示一个更加详细的项目工作的定义。分解是指把主要可交付成果分成较小的、便于管理的组成部分,直到可交付成果定义明晰到足以支持各项项目活动(计划、实施、控制和收尾)的制定。使用WBS的最大优点是可以监控以及预测成本、进度等不同的项目信息,并且给所有的项目参与者员提供了一个均可与之作对比的一致基准。
3.3范围的验证项目范围验证不应该仅仅发生在项目结项的时候,这样做往往会流于形式。比较理想的做法是在项目各个阶段,至少是里程碑的阶段,由项目需求分析小组的成员(特别是用户方代表)、项目经理、该阶段可交付成果的负责人组成评估小组,由阶段工作成果的负责人进行宣讲,评估小组一起进行评审和验证。
3.4项目团队管理对于大型信息系统集成项目而言,项目团队组建是由项目主要干系人采用协商方式来完成,而不是由单方指定的;而项目的管理采用的是项目管理委员会领导下的项目经理负责制,而不是项目经理个人责任制。项目管理委员会一般是由项目各主要干系方指派的项目负责人组成,项目经理由项目管理委员会成员通过充分的沟通协商指定。这样做的主要目的是平衡项目干系方的满意度,保证项目目标的实现。
3.5项目团队的成长项目团队要建立起整体形象,需要明确方向,并且试图对要完成的工作明确划分和制订计划。项目经理对于项目成员要采取预期激励、信息激励和参与激励的激励方式。项目团队成长与激励关系示意图3.6软件项目的估算在项目计划阶段或项目进度调整时,对项目的规模、工作量、进度和费用进行估算,便于掌握项目的进度,控制项目的成本。而且这些估算的数据可作为其他项目估算的参考,同时也将作为项目跟踪与监控的度量基准。估算主要包括规模和工作量的估算。首先要进行的就是规模估算,规模估算应该与项目需求一致,以便确定该项目的工作量、成本和进度。每个规模属性应附上有关的难度和复杂度,然后结合项目成员的平均生产性,进行工作量估算,进而安排任务的时间进度。超级秘书网
4结语
当今我国软件企业实施软件项目管理的许多技术还不成熟,软件项目延期、超出预算、品质低劣甚至项目失败等现象十分严重。在大型软件系统开发过程中,做好项目管理是软件开发能否成功的核心问题之一。笔者希望通过对大型软件系统项目的项目管理进行的研究,为项目管理者对项目的评估、计划、控制提供一套标准化、系统化、定量化和切实可行的方法体系,为国内软件企业的软件项目管理在实际中的应用提供参考。
参考文献
[1]美国项目管理协会.项目管理知识体系指南[M].2版.卢有杰,王永,译.北京:电子工业出版社,2005.
常熟边滩整治工程位于长江黄金水道下游段,工程拟新建围堤长度2489m,吹填区面积622509m2,约933.72亩。本工程范围:常熟市经济开发区长江干堤外侧、纵向围堤、A1A2分标线以下、东侧堤以上范围内的岸线整治工程,主要工程项目包括:围堤填筑、堤基处理、围堤护坡、抛石护脚、围堤吹填及龙口等。
1.2工程区施工条件
常熟边滩整治工程工程区所处河段位于长江口南支上段,金泾河与白茆河之间。工程区总长5km,徐六泾水文站位于工程区上游3.8km处,下距杨林潮位站26.2km。南支河段以七丫口为界,分为上、下两段。南支上段之徐六泾至七丫口,长35.5km,其中徐六泾至白茆河口为徐六泾节点段,长12.0km;白茆河口以下为白茆沙汊道段。南支下段自七丫口至吴淞口,全长35.9km。南支河段两岸为广阔的冲积平原,地势平坦,地面高程2~5m。两岸入江支流大小共有23条,入江口门处有涵闸控制。
1.3工程组织管理体系
常熟边滩整治工程组织管理体系中项目领导班子由项目经理部经理、副经理及项目总工程师组成,项目部其他人员由项目经理部聘任。项目经理部实行项目经理负责制,对工程的施工进度、质量和资金等全面负责。项目副经理分管各有关部门与施工工种,项目部工程师负责日常生产和技术管理。项目作业层人员服从项目经理及各职能部门的领导和安排,严格按照施工规范、操作规范进行作业,保质保量完成施工任务。
2P6软件中常熟边滩整治工程项目管理的编码设计
2.1企业级编码介绍
2.1.1企业项目结构EPS(EnterpriseProjectStructure)EPS即企业项目结构,是一种可以根据公司需要分解为不同的层次数的树状结构,它可以满足企业对项目执行情况的报告和工作协调的要求。EPS使组织能够评价资源在各项目上的使用情况。另外对于一些项目相对独立的企业,EPS还能够演绎出项目各阶段的情况。
2.1.2组织分解结构OBS(OrgannizationalBreakdownStructure)
OBS即企业组织分解结构,反映的是企业管理的结构的层次化排列。一个企业,它的管理是什么样的结构,就存在什么样的OBS。像EPS一样,OBS也是一种树形结构。该属性结构反应的是一种自上而下的管理,下级对上级负责,下级向上级汇报工作。OBS与EPS、WBS对应形成了严密的责任矩阵和权限控制体系。
2.1.3资源的编码过程RBS(ResourceBreakdownStructure)
在P6中,资源的建立过程称为RBS的编码过程。RBS即企业资源分解结构。RBS是树状层次结构,最大层次数是25层,它可以只有一个根节点也可以有多个根节点。但RBS只是企业内所有资源一种层次化排列的组合方式,而不是唯一方式。
2.1.4费用分解结构CBS(CostBreakdownStructure)
CBS即费用分解结构,是根据企业特定的财务流程或成本控制要求而设定的代码体系,它可以用来跟踪作业所发生费用。CBS是项目的费用管理的一种方式。因此,可以根据项目概算控制或企业财务上的要求来进行设置。根据费用的管理与控制在不同部门的统计口径与标准的不同,在P6的费用管理中,一般可以使用两种方式:一个是EPS/WBS层次;另一个是CBS层次。
2.2堤防工程项目管理的项目级编码设计
P6软件企业级编码是从企业全局的角度对企业的组织机构、资源、费用等方面进行编码设计,体现的是宏观性,而P6软件项目级的编码则主要从具体工程项目角度对工程的组织和分类情况进行编译。工作的分解结构,又称WBS,是一种按阶段逐步分解的层次化结构编码,它能够组织定义所有项目的工作范围。WBS也是在实施期间需要完成的最终细目作业,这些细目作业一同构成了整个项目的管理范围。
3P6软件在堤防工程项目管理的应用流程
常熟边滩整治工程的项目管理流程主要是对项目计划中涉及的进度、费用投入、资源等内容进行及时的追踪更新,采取动态调整的思路。
3.1制定目标计划
在堤防工程建设项目管理过程中,最优状态是进度按照原计划执行,这样的资金、进度、人员、物质等的安排是最优的。但是往往由于各种原因,并不能保证实际进展情况按计划执行,因此需要不断对当前计划进行调整,不断对比分析进度实际情况,及时纠正和控制产生的偏差,才能保证总的进度计划目标得以实现。在P6软件中,当完成项目计划的编制后,如果计划在时间、费用和资源分配等方面都符合合同的要求和工程实际,就可以将这一计划作为目标计划保存起来。目标计划就成为了当前项目计划的一个“快照”,是进行费用、资源控制、进度管理的基础。在P6中,可以为每个项目创建并保存任意多个目标项目;并且在同一时刻能将当前项目与一个项目目标计划和多个用户分配的目标项目进行比较。每个目标可以分配一种类型,在管理类别中进行定义。
3.2项目计划实施情况跟踪与记录
对于堤防工程,项目开始运行后及时地更新进度是非常重要的。因为在项目的实施过程中,可能发生工期变更的情况,项目初期所编制的计划已不能很好地指导现场进度安排和资源调配。所以必须及时对项目计划更新,通过与目标横道图对比,不断调整和优化计划,对项目进展情况进行评价,才能达到真正意义上的动态管理。
3.3项目执行状况分析
实施过程中对项目状况的评价与分析非常重要。将当前项目的进度、费用支出以及资源使用与原目标项目做对比分析,能够及时发现相关问题并合理适当地解决问题。
3.3.1项目进度分析
及时地将目标计划进展和项目实际进度进行对比,可以及早发现计划的完工节点或里程碑是否完成。P6软件中常用横道图比较法来进行进度目标的对比分析,提供了实际施工进度与目标计划进度之间的偏差,具有形象直观、容易掌握、应用方便的优点。
3.3.2项目费用产生分析
采取“作业使用直方图”对费用情况进行对比,可以得到当前实际的费用使用情况。若资金的使用与完成出现不合理的情况,可以就该问题进行分析,发现产生问题的原因,做出相应评价。
3.3.3项目资源分析
使用“资源直方图”来反映项目的资源利用情况,可以了解资源实际的投入情况和将来需要投入的情况。
3.4项目计划的动态调整
项目计划控制是一个动态过程。当产生偏差时,项目管理人员应当首先分析偏差原因,正确决策,及时采取措施,调整计划,使实际和计划重新在新的起点上重合。在新的因素干扰下,还可能产生新的偏差,这时又需要继续按上述方法进行调整,进度控制就是这样一个动态循环的过程。P6软件为项目的实际执行情况和目标计划提供了对比分析的方法,具体的调整措施还要根据工程实际情况具体分析。常熟边滩整治工程曾出现多次进度偏差,因此也进行过多次进度计划的调整。总的来讲,该工程的进度计划调整主要用到过两个方法:一个是改变相关作业间的逻辑关系;另一个是缩短一些作业的持续时间。事实证明,这两种方法均具有较好的调整效果。
4实施效果分析
P6软件在常熟边滩整治工程项目管理中应用,帮助管理人员合理地划分了项目管理层次,对项目的编制计划和进度更新流程进行了研究,对项目的企业级编码、项目级编码进行了明确,并利用P6软件也客观地编制了项目目标计划,以及根据实际情况做了及时地更新。此外,还对项目的进度、费用和资源等内容进行了分析归纳。总的来讲,P6软件在常熟边滩整治工程项目中的应用所取得的效果可概括如下:
1)基本实现了项目进度计划的实时更新和动态监控
项目施工实际进度的更新依赖于从下到上逐层反馈实际信息。在项目实施过程中,管理人员利用P6软件能够随时掌握施工详图、文件、进度以及资料等信息,以便于做出相关对策。此外当工程进度发现提前、偏差等问题时,能够马上产生相应信息,以供高层管理者决策,保证项目按原计划实施,除此之外,P6软件还可以准确地对项目整个费用进行预测。
2模型具体步骤划分
通过对模型进行深入分析和研究,并结合软件项目特征,能够确定责任范围,对整个项目进行结构分解,得到WBS集;软件项目的开发需要将用户需求作为核心,进而通过模型进行分解,获得PBS集;最后,要制定与项目开发相关的部署,确保每一个环节都能够顺利进行,保证项目进度,为工作提供依据,通过这种方式,不仅能够确保工作有条不紊进行,还能够有效提高工作质量和效率,从而促进软件开发工作进一步发展。
3模型主要应用流程
WBSR模型在软件项目管理中的应用主要涉及对项目的分解、工作目标的确认及更新。首先,建立工作小组,工作人员作为软件项目管理的核心,其成员综合素质直接影响工作能否顺利进行,基于此,小组成员一般选择项目经济、技术人员等,还可以增加用户代表等,以此来确保软件开发的合理、科学性;其次,工作、产品等结构分解,工作分解作为模式应用的基础,应结合实际情况进行合理分解,切勿盲目性,还需要结合成员经验等因素,为工作顺利开展提供支持;软件产品作为参与市场竞争的关键,分解产品开发,能够深度挖掘员工潜力,提高产品适应力,与客户达成共识;最后,还需要结合实际情况对项目范围进行及时调整,如果范围发生变化,相对应的工作流程也需要进行调整,实现统一、系统发展目标。
4模型应用情况
将软件项目管理与WBSR模式结合,将各个工作进行细致划分,能够为软件计划、预估等工作提供依据,确保工作顺利开展,在一定程度上推动了软件项目进一步发展,与此同时,在项目开展过程中,负责人加大对实际工作的监督和控制力度,能够及时发现不足之处,并采取有针对性措施,确保软件产品开发质量,该模式的应用,能够直观的反映组内成员的实际表现,为日后进行绩效考核奠定了基础,从而有效提高管理水平,促进企业可持续、健康发展。
5模式性能评价
通过对WBSR模式在软件项目管理中应用情况调查可知,模式对工作过程及产品开发从不同角度进行合理分解,提高了项目范围的精准性及有效性,避免工作失误情况的发生,并且将工作细化至每一个人受众,形成良性循环,促使员工能够认真、负责完成工作,起到了积极地促进作用。因此,面对社会发展新形势下,企业软件项目管理可以大力推广和普及WBSR模式,提高产品适应力及质量,从而实现企业经济效益最大化目标。
目标本课程开设的目标是使学生通过大型项目的开发,熟悉项目开发流程,理解项目管理的基本理念,灵活运用需求分析及系统设计方法,提高技术的使用熟练度,充分锻炼团队开发的协作能力,理解测试过程及Bug跟踪的流程,从而积累真实的项目开发经验,拉近与企业用人需求的距离。项目培养的能力体系如表1所示。根据TOPCARES-CDIO能值指标体系,本项目重点培养八项3级能力指标。
1.2项目内容和进度安排
随着软件行业的不断发展,主流应用软件的类型也在不断变化着,从最初的桌面应用到基于Web的应用,再到目前的电脑、手机客户端与Web端多客户端平台应用。本课程要求学生开发的项目来自于合作企业中最新的项目,以达到和市场接轨的目的。在课程进度安排如表2所示,包括准备阶段和增量开发阶段。课程共200学时,50次课,进度安排包括准备阶段和三个增量阶段,表2给出了一个增量的进度安排。项目准备阶段完成整个项目的构思,各个增量阶段,按照分析、设计、实施、运行和评审等步骤进行。
2项目实施(Implementationoftheproject)
项目教学实施过程主要采用情景教学的方式和分组教学的组织形式。项目实施尽可能模拟企业的开发环境,教师担当类似项目经理的角色,负责监控项目的整个进度和项目质量,将每个学生小组视为一个开发团队,让学生模拟企业中相应的工程师角色,在教师的指导下按照规范的软件开发过程进行项目开发,使得参与一级项目的学生获得更真实的项目开发体验,就业后能更快地适应企业工作。
3考核评价(Examinationandevaluation)
教师对各小组成员项目开发过程进行监控和打分,作为本课程的形成性考核,项目结束后安排统一的关于软件项目管理和软件开发等的闭卷考试,作为课程的终结性考核。各项考核的内容与本项目的能力培养目标相对应,如表3所示。这样,当学生完成了本课程的学习,可以从八个能力方面对学生情况进行全面的评价,对其今后的发展会比以往单纯的分数有更大的帮助。
2用软件工程的思想贯穿各门主干课程的教学实践,系统化培养学生软件实践能力
在现有的课程体系下,我们试图找出其中最直接影响学生软件开发能力的各门主干课程,将软件工程的思想贯穿其中,用软件开发生命周期的5个阶段(系统规划、分析、设计、实施、运行和维护)指导各门课程的教学实践,并着重研究每门课程在整个生命周期中的重要地位和作用,以及该门课程应该承担的具体培养工作。在此基础上,重点研究各门课程之间如何更好地衔接,系统化地构架学生的软件开发知识体系。
3用科研指导专业教学的具体实践
高校科研机构所承担的科研项目是一项宝贵的财富,学生也迫切希望早日加入到科研队伍中来,而承担科研项目的骨干力量与学生的教授者之间往往密不可分,甚至是同一批人。这给我们带来新的启示,现有的科研项目正是对学生进行实践教学的生动教材。然而,实际的科研项目往往都是相对复杂的大型系统,对初学者来说难以理清头绪。如何按照各门课程的特点将大型科研项目分解、简化成一个个子系统,渗透在各门主干课程的教学实践中,让学生循序渐进地参与到大型科研项目的开发中,既便于学生学习掌握,也有利于随时采用科研项目实战训练,修正课堂教学方法及方向,实现教学与科研的相互协调,最终达到以培养软件工程型人才为目标的闭环控制,这是亟待解决的问题。
3.1科研项目的开发分解成子系统渗透到各门主干课程的教学实践中,细化各门课程实验环节的开设,形成项目驱动的软件人才培养方案
实施过程中,我们选取智能工程实验室完成的石化行业大型智能建模优化软件平台作为经典案例。该平台是一个集数据预处理、过程建模、过程优化等多项功能,面向石化行业的智能集成化系统平台。教师首先从功能上对其分解,梳理出数据采集、预处理、输入解析、数据建模、优化算法、数据挖掘等模块,将这些模块渗透到各门主干课程的教学中,以子系统的形式作为各门课程实践环节中的重要训练项目。下面以数据预处理模块为例,介绍模块与课程之间的关系。对采集到的数据需要进行初步的处理,并存储到数据库中,这一工作可以放在数据库原理、算法与数据结构、程序设计等课程中作为实例讲解。由于采集来的数据是真实的工业过程数据,这些数据受到各种噪声的干扰、仪表故障或者数据传输错误等原因的影响,存在很多噪声数据、冗余数据、缺失数据和不一致数据,因此,需要采用各种算法进行预处理,如记录删除法、均值填充法、中值填充法和K最邻近距离填充法等。这些都可以渗透到算法设计课程中。处理好的数据如何进行存储这部分知识可以渗透到数据库原理课程中讲解。教师根据后续的应用需求向学生介绍选择哪种数据库工具、采用什么样的存储方式、怎样设计数据库等。在这一过程中,必然涉及程序设计的内容,如均值填充法、中值填充法等相对简单的算法,可以让学生了解基本算法原理后,进行程序设计的实现。带着这些实际的问题进行课程的学习,显然会大大提高学生的学习效率。
3.2做好子系统的集成与拼装,用大型项目的科研实践完善学生的学习过程
在软件方向的学习进程中,随着各门主干课程学习的完成,各子系统逐个开发出来,这些子系统可以作为后续软件工程系列课程的重要实践内容。例如建模优化平台项目总体上采用了三层结构,这将成为软件体系结构课程中重要的典型实例,并以此集成整个系统。软件工程等课程的开设将从理论的层面更系统地对前序课程中渗透的软件工程思想予以科学的总结归纳和提高,同时补充大量前序课程中还未涉及的工程化知识,查漏补缺,为走入工作岗位或进一步的科学研究打下坚实的基础。
4关键问题的解决
在整个方案的实施过程中,指导思想的落实是重中之重,需要学院、系部等行政机构给予必要的支持和配合,才能整合整个计算机课程体系,充分协调好教师与教师之间、课程与课程之间的关系。在学校的实践过程中,我们组织全系大大小小的相关课程研讨、集体备课多达20余次,大会确定思路,小会细化方案,真正将软件工程的思想落实到各门主干课程的教学与实践环节中,最终保证方案的有效实施。其次,学校组织专门的骨干力量对经典的大型工程项目进行合理的分解和集成。完成此项工作需要相关人员既熟悉工程项目,又宏观把握整个计算机教学体系。在此基础上,对全系相关课程教师进行培训和研讨,将正常知识点的教学与工程素养的培养相结合,从而将实际企业工程项目转化为教学资源,真正实现科技创新对教学的促进。
人类社会经历了三次经济革命从农业革命、工业革命到目前正在经历的信息革命。信息化正在日益改变人们的思维方式和生活习惯。在推动信息化过程中,计算机及其软件产品发挥着至关重要的功能。对于软件项目的管理成为项目管理领域一个令人兴奋的课题。本文将结合项目管理中的控制方法分析软件项目管理控制的相关新问题.以期提高软件项目的开发效率。
1、有关软件项目管理
1.1项目和项目管理
项目是一个旨在完成一个或一些独特产品或服务的过程.它有着一系列被具体描述的属性。由于项目的独特性和一次性特征,引伸出它的其他特征.如目标的确定性.成果的不可挽回性组织的临时性和开发性等。基于项flI的这些特征.项目运作更加注重项目决策前的计划以及对实施过程的控制,以减少项目运作的风险。项目管理是2O世纪50年代后期发展起来的一种计划管理方法,它运用先进科学的管理方式.有效解决大型组织的效率低下和小型企业面临的风险增加新问题以组织的机动灵活.面向客户和资源利用率高而被广泛应用。在工程设计.施工软件项目的开发、实麓中经常会碰到进度拖延.费用超支、质量不达要求等新问题除去极少数是因为技术原因造成,绝大部分是源于僵化的管理和不当的管理方式。
1.2软件项目管理
各软件企业都在积极将软件项目管理引入开发活动中.对开发实行有效的管理。从概念上讲.软件项目管理是为了使软件项目能够按照预定的成本.进度、质量顺利完成.而对成本、人员、进度、质量、风险等进行分析和管理的活动。同时,随着软件开发规模及开发队伍的逐渐增大,软件开发不再是向过去那样一二个开发人员即可解决的事情。迫切需要一种开发规范来规范每个开发人员、测试人员和支持人员的工作每个项目组成员按约定的规则准时完成自己的工作。同时采用规范化管理.专业分工也可以降低对开发人员的要求,从而降低产品研发成本。
2、软件项目控制
2.1软件项目控制
软件项目跟踪和监控包括对照已文档化的估计、约定和计划评审和跟踪软件完成情况和结果。基于实际的完成情况和结果调整这些计划。软件项目的已文档化的计划(即软件开发计划,正如在软件项目计划关键过程区域中所描述的)用作跟踪软件活动传送状态和修订计划的基础管理者监控软件活动.主要通过在所选出的软件工作产品完成时和在所选择的里程碑处,将实际的软件规模工作量成本和时间表和计划相比较,来确定进展情况。当确定未实现软件项目计划时,采取纠正办法。这些办法可以包括修订软件开发计划以反映实际的完成情况和重新计划遗留的工作或者采取改进性能的办法。
2.2软件项目控制的内容
软件项目控制的目的是为软件项目的过程提供足够的能见度,从而可以在执行过程中发生对计划的严重偏离时能够采取适当的更正行为。软件项目控制包括:a。追踪软件项目的进展于表现从而和所作的估计、承诺和计划做出对比:b。追踪软件项目的风险;C。在发生对计划的严重偏离时采取适当的更正行为。
2.3软件项目控制步骤
由于软件开发是处在一个开放的动态系统中,开发环境的不断变化要求不断修改项目计划,以适应新的变化。此外项目经理及其组织在完成任务的过程中不可避免的要碰到这样或那样的新问题.解决这些新的矛盾和新问题均属项目控制的范畴项目的预算和进度计划只能为项目经理提供决策的依据.假如在项目实施过程中控制不住.很难在限定的时间和预算要求下实现项目管理工作的目标。因此软件项目控制的过程包括以下四个步骤:a、猜测什么会发生——要做出开发计划并建立工作标准b、查明什么正在发生——用建立的工作标准检查当前的工作;c、正在(或已经)发生的实事同猜测的结果进行比较——分析误差产生的原因:d及时采取补救办法.以满足项目目标,预算和进度的要求。
3、软件项目控制具体操作
3.1软件项目进度控制
为了确保软件开发中的各项工作能按照计划预定的日程顺利完成.对项目的进度要进行控制。进度控制的过程是.在项目实施过程中,不断地进行实际进度值和计划值的比较、发现偏差、检查分析其产生的原因,并采取相应的办法加以解决。
3.1.1进度控制流程
(1)进度控制的输入
进度计划。项目进度基准是项目测量和报告的基础和标准。
实施报告。实施报告提供了有关项目进度发展实情。报告未来可能发生的进度新问题。
变更要求。项目变更要有严格的申请和审批手续。
进度管理的技术和工具。
(2)进度管理的技术和工具
进度控制变更系统。为有效实现进度管理和控制.进度控制系统应设立实现重新计划的全部功能。包括:文件设立.跟踪即实施报告.变更评估等。
实施情况测量。项目进度控制系统中的一个重要组成部分是决定对迟发生的进度偏差是否采取纠偏办法。而实施情况报告提供了决策的主要信息。如变更分析.趋向分析.已实现价值分析等。
纠偏计划。很少有项目能完全按计划进度进行为实现项目进度或总进度要求,在项目实施过程中.需要不断对原计划进行调整或增加新的工作内容。为此.需要不断对实施的项目进行活动时间猜测。修改活动过程.替代进度方案分析。
项目管理软件。它的功能是跟踪项目按计划日期展开实际工作的情况.对照进度计划分析进度目前状况,找出进度的偏差.分析进度偏差对项目的影响.猜测未来走势
(3)项目进度控制的输出
进度更新。包括对项目管理中任何进度信息的修改。进度调整是其中的一种.师队员进度计划中活动开始和结束时间的改变。纠偏行动。通过改变资源投入将实际进度拉回到计划的行动过程。
从中获得的教训。有关进度偏差产生的原因。纠偏方案的评估和选择以及其他方面的感受和教训都应纪录在案成为日后有用的历史资料。
3.1.2进度控制方法
一般项目进度控制采用因果分析.分析用四步完成:
(1)明确新问题。实际完成情况和项目里程碑相对照.确定是否超期.超期的部分是在哪里。
(2)查找产生该新问题的原因。位从系统角度充分熟悉各方原因.应组织具有代表性任务人员并采用头脑风暴法进行。项目主管要通过他领导的办公室或小组,以及在各职能部门的人共同分析新问题产生原因。
(3)确定个原因对新问题产生的影响程度。对影响程度的评估可以采用专家小组打分的方法,事先确定权数.而后打分得出分析结果。
(4)画出带箭头的鱼刺图。分析出原因后各部门各就其职针对新问题提出解决方案.并实施。
3.1.3软件项目进度控制具体办法
在实施进度计划过程中,会有种种故障:客户的需求进行了补充或修改;工作量估算不准,造成进度不平衡或是有人不遵从开发规范.导致产品出现缺陷;或是技术环节出现故障,这些新问题往往是在进度计划外出现的.一旦出现这些新问题,项目进度不得不进行调整。开发过程中为了有效控制类似新问题,可以采用以下辅助办法,控制进度按计划执行:
(1)政策性办法。对于不遵从开发规范,人员不按时履行职责的.给予经济或是职务上的处罚.这种办法应是建立在分配任务之前;
(2)人员布置。在各子项目接口处适当布置机动人员和机动时间。这一办法有赖于项目组织的机构设置能动性好。此处比较难解决的是人员业绩评估.奖励新问题。
(3)技术办法,要想很好地执行进度计划,需要事先有统一的规范例如开发语言的统一,文档的归类。这样便于下一阶段人员理解上一阶段人员意图,交流更加轻易。
(4)信息流办法。该办法要求建立一个信息流系统.准时汇报项目进度.便于主控人员调整进度,并且保证信息流通顺畅。避免开发期压到最后造成严重拖工。
(5)资金办法。财务部门可以定期检查各部门财务情况.控制资金流出时间.进而控制项目进度。这和后面要讲到的三者权衡有密切关系。
3.2软件项目费用控制
费用控制就是要保证各项工作要在他们各自的预算范围内进行。其基础是实现就对项目进行费用预算。整个项目费用应包括项目范围规划阶段。软件需求分析阶段.原型设计阶段开发阶段.测试阶段和项目投入使用后的使用阶段所消耗费用的总和。软件开发项目承担公司为了完成项目目标和获得更多的利润.在实施项目过程中就要控制成本.在控制过程中,首先要拟定一个标准.即计划值.然后进行实际至于计划值的比较,确定实际值和计划标准的偏差大小.以便在此基础上采取各种办法纠正偏差.常用的分析工具是偏差分析。
偏差是指实际成本对相应计划的偏离,成本偏差的数学公式为:
CV=BCWP-ACWP(负数CV表明出现超支;反之,则节资)(3—1)
其中:CV为成本偏差,BCWP为计划工作预算,ACWP为完成工作实际成本。
在进行成本偏离计划程度分析时,常用计划偏差率反应时给予计划的偏离程度。
CVP=CV/BCWP(3-2)
其中CVP为成本偏差率。
偏差值是控制分析中的一个关键参数,因而应向各级组织汇报。对于不同的项目或同一项目不同阶段或不同管理层次,对偏差的控制程度不一样,制定偏差答应值的方法也不同。由于随着时间的推移风险减少了,因而偏差答应也可降低。超级秘书网
3.3软件项目质量控制
1流程
根据项目管理的一般原理,项目管理的过程从总体上可以分为5个阶段,每个阶段包含有一个或多个管理过程。这5个阶段分别是:项目启动、项目计划编制、项目计划执行、综合管理控制和项目收尾。它们之间的联系如图1所示。
(1)项目启动:根据必要的工作(如可行性分析,技术评估等)结果,批准一个项目的运行。
(2)项目计划编制:收集和编写项目所需要的各种资料,进行各种计划活动并制订相应的计划,将各种计划的结果汇总成为连贯、一致的文档,即项目计划文档。在软件项目中,具体的活动包括需求和范围管理计划、进度计划、人力资源计划、成本计划、沟通计划、风险计划等。
(3)项目计划执行:通过进行项目计划所规定的各种活动,实施项目计划。
(4)综合管理控制:在项目计划实施的过程中,对各种活动进行监控,协调并控制整个项目期间的变更。在软件项目中,主要的活动包括范围变更控制、进度计划控制、成本控制、质量控制、风险监督和控制等。
(5)项目收尾:项目或阶段的正式接收并达到有序的结束。其中,项目的中间过程(计划、执行、控制)是一个循环反复的过程。项目计划是计划执行和计划控制的基准;计划执行的结果受到计划控制的监控;计划控制根据比较计划执行的结果和项目计划的偏差,以及各种因素引起的变化,对项目计划进行修正,从而形成下一个循环的项目基准。它们之间的流程如图2所示。
2生命周期模型
任何软件的开发都要经历一个“生命期”,生命期模型的主要功能是确定一种标准,确定项目规格、建立原型、设计、实现、检查、测试或执行一些其他活动,以此确定在软件开发过程中是否是以某种次序一个任务接着一个任务进行。作为一个项目的主要计划,软件生命期模型的选择对项目成功的影响非常重要。恰当的生命期模型可以使软件项目流程化,并帮助项目人员一步一步接近目标。假如选择了适宜的生命期模型,就可以提高开发速度、提升质量、加强项目跟踪和控制、减少成本、降低风险,或是改善用户关系。
2.1瀑布模型
最经典的软件生命周期模型是瀑布型模型,它是其他生命期模型的基础。在瀑布模型中,项目从始至终按照一定顺序的步骤从初始的软件概念进展到系统测试。项目确保在每个阶段结束时进行检查,以判定是否可以开始下一阶段工作。假如检查的结果是项目还没有预备好进人下一阶段,它就停留在当前阶段,直到当前阶段工作完成。如图3所示。
瀑布模型是文档驱动型的,主要工作成果通过文档从一个阶段传递到下一个阶段。假如有一个稳定的产品定义和很轻易被理解的技术解决方案时,瀑布模型可以帮助及早发现新问题,降低项目的阶段成本,是快速开发的一个恰当选择。但在很多实际情况中,由于需求、技术等很多不确定性,瀑布模型并不适合于进行快速开发。
2.2渐进原型
渐进原型是从开发系统概念开始的一种生命期模型,通常是从最核心的方面开始,向用户展示完成的部分,然后根据用户的反馈信息继续开发原型,并重复这一过程,直到开发者和用户都认为原型己经足够好。然后,完成结尾工作,交付作为最终产品的原型,如图4所示。
“渐进原型”模型以逐步增加的方式进行开发,以便于随时根据客户或最终用户的反馈来修正系统,在需求变化很快的时候,或者用户很难提出明确需求的时候,或者开发人员对最佳的架构或算法没有把握的时候,渐进原型非凡有用。但是,渐进原型是以牺牲项目的可控制性来换取较多的客户反馈以及较好的过程可视性的。由于原型的功能和特性会随着用户的反馈而经常发生变化,因此较难确定产品的最终形态。
2.3阶段交付
阶段交付模型是另一种生命期模型,该模型可以持续地在确定的阶段向用户展示软件。和渐进原型不同,在阶段交付的时候,开发者明确地知道下一步要完成什么工作。阶段交付的特征是在项目整个开发过程中持续不断地交付阶段性成果。如图5所示。
在“阶段交付”生命模型中,软件被分阶段进行开发。在通常情况下,首先开发最重要的功能。阶段付并不能减少软件产品研发所需要的时间,但是它能充分降低软件研发中的风险,而且能够提供切实的、客户可见的以及管理层评价项目状态时所需要的标记。
2.4渐进交付
渐进交付是一种结合了渐进原型和阶段交付两种模型的生命期模型。在这种模型下,首先开发产品的一种版本,展示给用户看,然后根据用户的反馈改善产品,如图6所示。
渐进交付模型在阶段交付的可控制性和渐进原型的灵活性之间寻找平衡。在可能的情况下,它可以把软件的某些选定的部分提前交付,从而有利于快速开发的进行;同时,在项目进行的过程中,它也具有响应用户要求并改变产品方向的能力。
3开发应用
3.1要员管理
软件项目成功的关键是有高素质的软件开发人员,然而大多数软件产品规模都很大,以至单个软件开发人员无法在给定期限内完成开发,因此,必须把多名软件开发人员组织起来,使他们分工协作共同完成开发工作。现有的软件开发项目组的组织方式有:
(1)民主制程序员组
小组成员完全平等,享有充分民主,通过协商做出技术决策。小组成员间的通信是平行的,假如小组有n个成员,则可能的通信信道有n(n-1)/2条。
(2)主程序员组
主程序员既是成功的管理人员又是经验丰富能力强的高级程序员负责体系结构设计和关键部分(或复杂部分)的具体设计,并且负责指导其他程序员完成具体设计和编码工作。
后备程序员也应该技术熟练而且富于经验,协助主程序员工作并且在必要时接替主程序员的工作。编程秘书负责完成和项目有关的全部事务性工作。
(3)现代程序员组
技术组长:只对技术工作负责。
行政组长:全权负责非技术事务。
项目开发方把软件工程中的软件项目组的组织理论文档化后,形成了自己的一套具体的、适合在实际工作中使用的要员管理理论。
3.2进度管理
软件项目的进度布置是一项活动,它通过把工作量分配给特定的软件工程任务,并规定完成各项任务的起、止日期,从而将估算的工作量分布于计划好的项目持续期内。进度计划将随着时间的流逝而不断演化。在项目计划的早期,首先制定一个宏观的进度布置表,标示出主要的软件工程活动和这些活动影响到的产品功能。随着项目的发展,把宏观进度表中的每个条目都精化成一个具体进度表。于是完成一个活动所必须实现的特定任务被标示出来,并布置好了实现这些任务的进度。超级秘书网
3.3配置管理
在开发计算机软件的过程中,变化(或称为变动)是不可避免的。假如不能适当地控制和管理变化,势必造成混乱并产生很多严重的错误。软件配置管理是在计算机软件整个生命周期内管理变化的一组活动。它不同于软件维护。软件维护是在软件交付给用户使用后才发生的,而软件配置是在软件项目启动时就开始,并且一直持续到软件退役后才终止的一组跟踪和控制活动。其主要任务有:标识、版本控制、变化控制、配置审计和报告。只要参加过软件开发的人都清楚,现在的软件项目完全由一个人来完成是难以想象而且也是不可能的,通常是有一个研发小组来共同分析、设计、编码和维护,并有专门的测试小组对己完成编码调试的软件进行全面的测试。在软件开发这个庞大而复杂的过程中,需要涉及到各个方面的人员,信息的交流反馈不仅仅是在研发小组的成员之间及各个研发小组之间,还存在于客户和研发者之间。所有的这些交流反馈意见信息都有可能导致对软件的修改,小的可能只是对某个源文件中的某个变量的定义改动,大到重新设计程序模块甚至可能是整个需求分析变动。
3.4软件测试