软件项目管理论文范文

时间:2023-10-11 07:47:37

软件项目管理论文

软件项目管理论文篇1

一引言

项目管理技术是软件工程专业的一门重要专业课。其教学任务是使学生了解和掌握项目管理的基本概念、基本原理和工程化方法。内容涉及项目管理知识体系(PMBOK)九大知识领域和五个标准化过程组,几乎涵盖了软件项目从立项到结束的方方面面,是一门具有相当广度的课程。然而,该课程的教学效果却不容乐观。

其一、项目管理技术的理论知识多脱胎于工程管理领域,由于国内软件工程专业建设刚刚起步,相关教材往往照搬工程管理理论,缺乏完全针对软件开发的必要整理和筛选。因此同软件开发实践结合并不十分紧密。

其二、而传统的教学方式往往重理论而轻实践,教师将理论知识“满堂灌”给学生,学生“死记硬背”理论条文,并不懂得如何将理论用于实际软件开发。这种仅以理论的多寡深浅作为对学生评价激励唯一标准的教学手段,必然导致培养的人才实用性不强,职业能力较差,工程化程度较低。达不到项目管理技术的教学要求。

因此,需要对软件项目管理技术的教学进行改革。二基于具体项目的软件项目管理教学软件工程项目相比一般工程项目具有更强的复杂性和更多的不可控因素,传统的项目管理教学所传授的知识常常不易使理论知识和实际开发吻合,给学生造成“学习无用之感”;课程本身也难以完全包括软件开发过程的全部情况。最好的方法是通过一个具体软件项目的开发过程,使学生接受项目管理的理念,而软件项目的开发设备相对单一,团队人数相对较少,相比一般工程项目更易进行实践演练。

可以看出,项目管理进行过程将根据实际情况不断进行计划变更、计划控制和计划执行的搏弈和循环。由于软件项目有以下特点:

(1)软件产品是无形的,不可捉摸的,无法感觉形状,设计也难以直观表示,很难确定产品质量或估计开发工作量。

(2)由于软件的拷贝生产轻而易举,因此,几乎全部的软件项目成本在开发过程中,而不是在制造过程。

(3)软件开发过程属于劳动密集型过程,尚未实现完全自动化,因此对软件项目开发进度的计划和控制比对一般工程项目更加复杂。

(4)软件是逻辑实体,本身很容易修改,但由于其复杂性,又很难正确地修改,在缺乏沟通的情况下,对个别模块的修改可能会带来新的错误。

(5)软件不像其他产品会因使用而磨损,和一般工程产品不同,软件产品的维护常常通过增加新模块功能完成升级。为保证新版本的稳定性,常常需要对新版本的重新设计因此,软件过程主要集中于软件项目的开发过程,而在这一过程中,相比一般工程项目,项目管理过程组的核心循环表现得更加突出。基于具体项目对软件开发过程进行阐述将更有利于学生理解软件开发过程中的项目管理。由于课程目标并不在于具体技术细节的学习,而在于体会软件开发过程中的项目管理。因此在项目选择中,不能使学生投入过多精力在技术细节上,而应更多的关注软件项目管理的沟通、计划和控制。我们选择计算机学院行政管理系统网站作为实践项目让学生组队开发,这一项目属于MIS(信息管理系统)项目类,难度不大,且能充分体现软件项目需求不明确、多变、沟通复杂等特点。作为计算机学院的学生,学生对项目的需求的理解也将更加实际。

2.1基于项目驱动的评价体系“为了解决软件问题,重要的第一步就是将整个软件开发任务看做一个可控的、可度量的以及可改进的过程。”将项目管理方法运用于具体软件项目开发的实践或在实践中改进现有方法,能够帮助学生更好的掌握项目管理技术。在实际教学中,我们将学生分成若干团队,每个团队8~13人,充分使学生体会到团队感,增加管理意识。项目经理是靠干出来的,不是靠背出来的。为使学生在具体项目实践中更加投入,必须改革原有的基于卷面成绩的评价体系。我们提出基于项目驱动的评价体系,使学生自觉将课堂所学的理论知识及时用于项目。学生的总评成绩将由团队项目评分、演练与总结评分、期末论文评分三部分组成:

(1)团队项目评分:60%其中20%由教师根据团队分阶段提交的项目资料给出;剩下40%由每个团队的“项目经理”根据团队的成员的表现给出。而项目经理的打分权限则取决于项目完成时专家对项目的评审得分。

(2)演练与总结评分:20%项目结束后各个团队成员对整个项目管理过程进行总结,评价和反思项目经理的管理过程,教师根据学生个人上课时有关项目的各种演练表现以及项目总结报告进行评分。

(3)期末论文评分:20%要求学生对项目管理九大知识领域进行一定深度的论述。为确保评价体系更加公平、公开、公正,我们规定:

(1)项目经理享有计划和分配项目团队资源,为项目组成员进行打分的权利,同时具有带领项目组完成所有课堂演练环节,完成项目开发的义务。作为奖励,项目经理可以直接获得满分的演练与总评成绩;作为制约,项目经理为自己所打分数只得在项目评审得分5%上下浮动,如果项目经理引起过团队半数以上成员不满,将被弹劾,一旦弹劾,相应权利和奖励同时消失。

(2)项目评审后,项目经理将得到“项目评审得分*团队开发人数”的可分配分数,项目经理根据项目组分数分配方法给团队成员打分,上限为40。

(3)项目评审时将邀请学院软件工程专家、需方代表不少于5人组成专家组对各团队项目进行公开评审,评审将从需方满意度、项目开发文档、项目开发过程三个角度进行打分。团队最终得分通过delphi法得到。可以看出,在以上的评价体系中,基于项目驱动的评分所占比重相当大,不仅注重项目的结果,同时注重项目开发过程。学生的分数在一定程度上模拟了现实生活的“奖金”,而项目团队则更加贴近现实生活中的软件开发公司。为了使项目成功,学生必须自觉地实践和探索科学的项目管理方法,不论成功与失败都将成为学生宝贵的经验和教训。评分中,由于个体学生所能获得的成绩与其所在团队成绩紧密相关,因此,为整个团队获得高分而努力的开发过程极大地培养了学生的团队协作精神。通过教学实践,这一评价体系调动了学生的学习主动性,起到了较好的作用。超级秘书网

2.2基于项目过程的知识传授和情景演练表1显示了项目管理九大知识领域在五个标准化过程组中的作用。可以看出在不同的过程组中,各知识领域所起的作用是不同的。配合实际项目开发的过程,为使所传授的知识能够及时用于实际项目,我们颠覆了原有教材顺序,按软件项目五个过程组所涉及的知识领域对教学顺序进行重新安排,基本做到项目进行阶段与所传授的相关知识同步。每次课程教学前后都及时安排对相关内容的情景演练。由表2所示教学实施安排表可以看出,项目管理的九大知识领域几乎都能做到安排于项目情景中进行传授,起到了理论对实践的指导或总结作用。可以看出,每次演练环节一般都是对上次所本传授知识的总结或当次所传授知识的及时操练,知识点覆盖较全面。通过设身处地去当一名项目经理或软件工程师,增加了学生对软件开发项目的感性认识和兴趣,提高了他们的管理才能。通过知识传授和情景演练的密切配合,使学生对软件项目的管理过程理解得更加深刻。

二结论

基于具体项目的项目管理教学使学生能够体会项目管理各知识领域的作用,领会各种方法、规范所适用的环境。通过实际开发后自己总结提炼的经验和教训,学生将更加接受项目管理的理念和知识,培养了团队合作精神。在学期末进行的教学效果调查中,83%的学生认为这种教学方法效果良好。学生普遍反映“项目管理枯燥的理论知识变活了,知道怎么用了,印象更加深刻了。”

项目管理是软件工程重要的专业课,在今后的教学实践中,我们将继续改进教学方法,做到量体裁衣,因地制宜,加强教学效果。

参考文献:

[1]韩万江,姜立新.软件项目管理案例教程[M].北京:机械工业出版社.2005.

[2]张海藩.软件工程[M].北京:人写作论文民邮电出版社,2002.

[3]齐治昌,谭庆平,宁洪.软件工程(原书第二版)[M].北京:高等教育出版社.2004.

软件项目管理论文篇2

一、引言 随着信息技术的飞速发展,软件产品的规模也越来越庞大,个人单打独斗的作坊式开发方式已经越来越不适应发展的需要。各软件企业都在积极将软件项目管理引入开发活动中,对开发实行有效的管理。我公司是西安一家中型软件企业,在公司中已经实行了项目管理制度,软件项目管理是整个项目管理中的一个重要组成部分。 从概念上讲,软件项目管理是为了使软件项目能够按照预定的成本、进度、质量顺利完成,而对成本、人员、进度、质量、风险等进行分析和管理的活动。实际上,软件项目管理的意义不仅仅如此,进行软件项目管理有利于将开发人员的个人开发能力转化成企业的开发能力,企业的软件开发能力越高,表明这个企业的软件生产越趋向于成熟,企业越能够稳定发展(即减小开发风险)。 软件开发不同于其他产品的制造,软件的整个过程都是设计过程(没有制造过程);另外,软件开发不需要使用大量的物质资源,而主要是人力资源;并且,软件开发的产品只是程序代码和技术文件,并没有其他的物质结果。基于上述特点,软件项目管理与其他项目管理相比,有很大的独特性。 二、软件项目管理的组织模式 软件项目可以是一个单独的开发项目,也可以与产品项目组成一个完整的软件产品项目。如果是订单开发,则成立软件项目组即可;如果是产品开发,需成立软件项目组和产品项目(负责市场调研和销售),组成软件产品项目组。 公司实行项目管理时,首先要成立项目管理委员会,项目管理委员会下设项目管理小组、项目评审小组和软件产品项目组。 1、项目管理委员会 项目管理委员会是公司项目管理的最高决策机构,一般由公司总经理、副总经理组成。主要职责如下: (1)依照项目管理相关制度,管理项目; (2)监督项目管理相关制度的执行; (3)对项目立项、项目撤消进行决策; (4)任命项目管理小组组长、项目评审委员会主任、项目组组长. 2、项目管理小组 项目管理小组对项目管理委员会负责,一般由公司管理人员组成。主要职责如下: (1)草拟项目管理的各项制度; (2)组织项目阶段评审; (3)保存项目过程中的相关文件和数据; (4)为优化项目管理提出建议。 3、项目评审小组 项目评审小组对项目管理委员会负责,可下设开发评审小组和产品评审小组,一般由公司技术专家和市场专家组成。主要职责如下: (1)对项目可行性报告进行评审; (2)对市场计划和阶段报告进行评审; (3)对开发计划和阶段报告进行评审; (4)项目结束时,对项目总结报告进行评审。 4、软件产品项目组 软件产品项目组对项目管理委员会负责,可下设软件项目组和产品项目组。软件项目组和产品项目组分别设开发经理和产品经理。成员一般由公司技术人员和市场人员构成。主要职责是:根据项目管理委员会的安排具体负责项目的软件开发和市场调研及销售工作。 三、软件项目管理的内容 从软件工程的角度讲,软件开发主要分为六个阶段:需求分析阶段、概要设计阶段、详细设计阶段、编码阶段、测试阶段、安装及维护阶段。不论是作坊式开发,还是团队协作开发,这六个阶段都是不可缺少的。 根据公司实际情况,公司在进行软件项目管理时,重点将软件配置管理、软件质量管理、软件风险管理及开发人员管理四方面内容导入软件开发的整个阶段。 在八十年代初,著名软件工程专家B.W.Boehm总结出了软件开发时需遵循的七条基本原则,同样,我们在进行软件项目管理时,也应该遵循这七条原则。它们是: (1)用分阶段的生命周期计划严格管理

软件项目管理论文篇3

关键词:Web;研究性学习;教学网站

软件行业是一个极具挑战性和创造性的行业,软件开发是一项复杂的系统工程,牵涉到各方面的因素,在实际工作中,经常会出现各种各样的问题,甚至面临失败。如何总结、分析失败的原因,得出有益的教训,对一个公司来说,是在今后的项目中取得成功的关键。

1.项目管理在软件开发中的应用的成因

目前我国大部分软件公司,无论是产品型公司还是项目型公司,都没有形成完全适合自己公司特点的软件开发管理模式,虽然有些公司根据软件工程理论建立了一些软件开发管理规范,但并没有从根本上解决软件开发的质量控制问题。这样导致软件产品质量不稳定,软件后期的维护、升级出现麻烦,同时最终也会损害用户的利益。

随着软件开发的深入、各种技术的不断创新以及软件产业的形成,人们越来越意识到软件过程管理的重要性,管理学的思想逐渐融入软件开发过程中,应用开发的项目管理日益受到重视。

2.软件项目管理常见问题及解决方案

(1)缺乏项目管理系统培训

在软件企业中,以前几乎没有专门招收项目管理专业的人员来担任项目经理,被任命的项目经理主要是因为他们能够在技术上独当一面,而管理方面特别是项目管理方面的知识比较缺乏。

解决方案:项目经理接受系统的项目管理知识培训是非常必要的,有了专业领域的知识与实践,再加上项目管理知识与实践和一般管理的知识和经验的有机结合,必能大大提高项目经理的项目管理水平。

(2)项目计划意识问题

项目经理对总体计划、阶段计划的作用认识不足,因此制定总体计划时比较随意,不少事情没有仔细考虑;阶段计划因工作忙等理由经常拖延,造成计划与控制管理脱节,无法进行有效的进度控制管理。

解决方案:计划的制定需要在一定条件的限制和假设之下采用渐近明细的方式进行不断完善。提高项目经理的计划意识,采用项目计划制定相关知识、技术、工具,加强对开发计划、阶段计划的有效性进行事前事后的评估。

(3)管理意识问题

部分项目经理不能从总体上把握整个项目,而是埋头于具体的技术工作,造成项目组成员之间忙的忙、闲的闲,计划不周、任务不均、资源浪费。有些项目经理没有很好的管理方法,不好安排的工作只好自己做,使项目任务无法有效、合理地分配给相关成员,以达到“负载均衡”。

解决方案:加强项目管理方面的培训,并通过对考核指标的合理设定和宣传引导项目经理更好地做好项目管理工作。技术骨干在担任项目经理之前,最好能经过系统的项目管理知识,特别是其中的人力资源管理、沟通管理的学习,并且在实际工作中不断提高自己的管理素质,丰富项目管理经验,提高项目管理意识。

(4)沟通意识问题

在项目中一些重要信息没有进行充分和有效的沟通。在制定计划、意见反馈、情况通报、技术问题或成果等方面与相关人员的沟通不足,造成各做各事、重复劳动,甚至造成不必要的损失;有些人没有每天定时收邮件的习惯,以至于无法及时接收最新的信息。解决方案:制定有效的沟通制度和沟通机制,提高沟通意识;采取多种沟通方式,提高沟通的有效性。通过制度规定对由于未及时收取邮件而造成损失的责任归属;对于特别重要的内容要采用多种方式进行有效沟通以确保传达到位,例如:除发送邮件外还要电话提醒、回执等,重要的内容还要通过举行各种会议进行传达。

(5)风险管理意识问题

有些项目经理没有充分意识到风险管理的重要性,对计划书中风险管理的章节简单应付了事,随便列出几个风险,随便地写一些简单的对策,对于后面的风险防范起不到什么指导作用。

解决方案:通过学习项目管理知识掌握风险识别、量化、对策研究、反应控制的工具和方法,掌握项目风险管理所必备的知识。通过加强对项目规划中风险管理计划的审核提高项目组的风险管理意识。总结本行业项目中常见的风险及其对策作为风险管理计划中必要的风险内容,并切实评估相应对策的有效性和可行性。

(6)项目干系人问题

在范围识别阶段,项目组对客户的整体组织结构、有关人员及其关系、工作职责等没有足够了解以至于无法得到完整需求或最终经权威用户代表确认的需求;或者是多个用户代表各说各话、昨是今非,但同时又要求项目尽早交付;项目后期需求变化随意,造成项目范围的蔓延,进度的拖延,成本的扩大。超级秘书网

解决方案:项目的目的就是实现项目干系人的需求和愿望。项目干系人管理应当从项目的启动开始,项目经理及其项目成员就要分清项目干系人包含哪些人和组织,通过沟通协调对他们施加影响,驱动他们对项目的支持,调查并明确他们的需求和愿望,减小其对项目的阻力,以确保项目获得成功。

(7)项目团队内分工协作问题

项目团队内部有时由于各阶段不同角色或同阶段不同角色之间的责任分工不够清晰而造成工作互相推诿、责任互相推卸的现象;有时各阶段不同角色或同阶段不同角色之间的责任分工比较清晰,但是各项目成员只顾完成自己那部分任务,不愿意与他人协作。这些现象都将造成项目组内部资源的损耗,从而影响项目进展。

解决方案:项目经理应当对项目成员的责任进行合理的分配并清楚地说明,同时应强调不同分工、不同环节的成员应当相互协作,共同完善。

3.结束语

软件项目管理论文篇4

关键词:软件工程;网络课程;教学实践;Jazz

中图分类号:G642 文献标识码:B 文章编号:1673-8454(2012)07-0061-04

一、引言

随着远程教育需求的日益增长和网络教育支撑技术的飞速发展,设计适用于网络上教学的高质量课程已经成为网络教育发展的一项重要课题。

“软件工程”课程的目的是使学生能够系统地掌握软件工程的基本概念和原理,以及实用的开发方法和技术,了解软件工程各领域的发展方向,学习用工程化的思想和方法开发和管理软件项目,了解软件开发过程中应遵循的流程、准则和规范,为从事软件工程研究或应用开发工作打下坚实的基础。[1-3]考虑到软件工程是一门注重工程实践能力的课程,课程的学习既要求要掌握软件工程基本理论,又要求锻炼运用这些理论知识解决实际问题的能力,做到理论与实践相结合。

当前“软件工程”网络课程的设计日益受到重视,但在实际教学中还存在着一些问题,包括:在理论课程中贯穿整个软件工程过程的系统化案例不多,以及实践课程中项目开发实践平台不完善等。[4-6]这些缺陷都影响了学生对于软件工程整体思想的理解与实践。

解决上述问题已成为当前“软件工程”网络课程设计的迫切需求。因此,本文以理论结合实践的方式将IBM公司的下一代软件开发协作平台Jazz整合到课程的设计中:使用基于Jazz平台的工具集(尤其是其中的RTC、RRC、RQM,以及ClearCase和ClearQuest),提供对软件工程生命周期各阶段任务的支持,并将Jazz平台跨地域的团队协作能力和适用于敏捷软件开发的特点充分利用到学生的工程实践中,具有一定的创新性,取得了良好的效果。

二、“软件工程”网络课程的总体教学设计

本文在“软件工程”网络课程的教学设计中注重理论知识的掌握,同时以培养工程实践能力为导向, 强调学生能力的培养。通过对该课程的学习,让学生理解工程化方法在软件开发中的应用,以理论结合实践的方式进行同步教学:理论讲授部分采用网络多媒体教学模式,辅之以课后测验和课后作业,课程实践部分采用学生分组完成一个中小规模软件项目开发的教学模式。

在课程开展的可行性方面,苏州大学计算机科学与技术学院在与IBM公司的合作框架下,能够获取学生课程培训与实践所需要的工具和相关电子资源。此外,通过校、院或系一级的教学管理系统和FTP服务器建立教师与学生的互动平台。教师可以通过网络教学课件和案例分析等电子资源,还可以布置课后测验、课后作业以及实践项目;学生则可以通过网络下载教学资源进行课程学习,也可以通过网络进行课后测验、提交课后作业以及参与实践项目的开发。

该课程的教学设计分为两个部分:授课部分和学生工程实践部分,其中授课部分又可进一步分为理论知识授课部分和工具培训授课部分。这两部分的结合能达到配合理论教学,进行工具使用能力训练,并提高学生工程实践能力的目的。

1.授课部分

(1)理论知识授课:本部分由主讲教师完成,提供网络多媒体教学课件。理论知识授课部分主要介绍软件工程的历史、现状,以及发展趋势,以软件工程发展历史上的两个主流方法学(结构化软件工程和面向对象软件工程)为基础,深入讲解软件工程的基本原理、方法和技术,并涉及软件工程的管理话题,如软件质量管理、配置管理、过程管理、项目管理等。该课程的理论知识授课内容可以划分为结构化软件工程,面向对象软件工程,软件过程管理与质量这三个主要部分。在课程教学中,注重提供贯穿整个软件工程过程的系统化案例,使得学生能够对于软件工程的理论知识有一个全面、直观、感性的认识。

(2)工具培训授课:本部分由辅讲教师和工具提供商工程师完成授课和辅导,与理论授课部分同步进行,采用专题讲座方式进行相关工具的使用培训。工具培训授课部分主要针对IBM公司新一代的软件开发协作平台Jazz,采用IBM公司Jazz平台系列集成工具的培训教材和教学资源,对学生进行Jazz平台及相关工具体系的使用方面的培训,并对工具使用的实验进行指导,该实验也可通过网络完成。

2.学生工程实践部分

本部分由辅讲教师和助教完成,指导学生分组完成软件项目的开发。学生工程实践部分主要参考IBM公司的Jazz平台实验方案,选用一组典型的中小规模软件项目,由学生分组并选择适当的项目进行开发。在软件开发过程的不同阶段中,学生项目组需要展示对理论课程内容的掌握程度和工具使用的熟练程度,每周就项目进行进展报告,并提交各阶段相应的成果。教师需要对学生项目组进行过程管理和技术辅导,并对集中的问题进一步进行辅导。

三、IBM-Jazz平台简介

Jazz平台是IBM推出的面向跨地域团队的下一代团队协作平台,也是一个整合软件工程生命周期各阶段任务的软件开发平台。[7]

1.Jazz平台的特点

Jazz平台的主要特点包括下述三项,这些特点使得Jazz平台能够提供对于“软件工程”网络课程工程实践的支持:

(1)跨地域的开发团队实时协作能力。Jazz平台支持Web2.0技术,能帮助分散的软件开发团队克服地域障碍,搭建实时协作的平台。Web2.0技术支持实时的信息和信息反馈,通过网络,分布在各地的开发团队成员都可以在Jazz上了解最新的开发进度,提交最新的开发和测试结果,找到应遵循的工作流,在该工作流的指引下循序渐进地工作,而不必担心偏离了开发目标。项目的管理者也能够在Jazz上找到需要了解的信息,包括团队的进度、每位开发者的现状,以及资源的配置等,从而帮助其配置资源,确保开发按时按目标完成。这种通过网络提供的协作能力很适合网络课程中工程实践部分的团队协作工作,包括了学生的参与和教师的管理。

(2)支持整个软件生命周期各阶段任务的无缝集成。Jazz平台提供了对于软件开发和管理流程的定义和执行能力,在这些自定义流程的基础上,能够跨越包括需求、设计、编码、测试、配置与交付等软件生命周期的各个阶段,对各阶段的任务进行无缝集成。Jazz平台对软件工程生命周期各阶段任务的支持,符合“软件工程”课程的工程实践要求,使得学生能够对于软件工程过程有一个全面和系统的理解和实践。

(3)支持敏捷软件开发。Jazz平台还预定义了一些适用于敏捷软件开发的流程,对RUP的支持使得最新的需求能及时交付给软件开发项目的提出者,并且能很快得到最新的反馈意见。Jazz平台对于敏捷软件开发提供了支持,符合“软件工程”网络课程的工程实践部分中“开发中小规模软件项目”的要求。

2.Jazz平台工具集

从2008年开始,IBM陆续推出了基于Jazz平台的工具集,这些工具都是以与Jazz平台集成的插件或连接器的形式的。主要的工具包括:

(1)Rational Team Concert(简称RTC):RTC是IBM推出的第一个基于Jazz平台的产品。作为一个协作软件交付平台,RTC通过提供整合的项目计划、工作管理、配置管理、团队构建、版本构建、报告能力等,为整个开发团队提供了协作的基础。RTC还能够帮助开发团队简化、自动化和监管整个软件交付过程。

(2)Rational Requirements Composer(简称RRC):RRC是基于Jazz平台的需求开发管理平台。辅以Rational DOORS Requirements Professional,RRC将各种需求定义手段和需求相关人员有机地结合在统一的集成协作平台上,实现协作化的需求定义与需求管理。RRC采用多种需求开发方法和协作技能,使需求相关人员能更好地进行需求的获取、分析、精化、管理、评审以及验证。使用RRC能够尽量确保在开发之前将需求定义清楚,减少因为需求定义不良为后续开发带来的问题。

(3)Rational Quality Manager(简称RQM):RQM是基于Jazz平台的全生命周期质量管理协作平台。RQM在整个软件工程生命周期中提供了从测试需求管理、测试计划、测试用例设计、测试执行、测试评价和缺陷管理等完整的测试生命周期管理方法,能够简化和自动化繁杂的测试任务,支持手工测试以及自动测试。通过与其扩展组件Rational Test Lab Manager的集成,RQM还能提供自动化的测试环境和测试资源的管理,从而提高测试的效率。

(4)Rational Project Conductor(简称RPC):RPC是基于Jazz平台的项目及资源管理平台。RPC可以帮助项目经理进行项目计划、制定项目进度,为项目和任务安排合适的资源。RPC还提供了对项目状态和进度进行管理监控和可视化的功能,可以作为项目开发的核心数据库。

(5)Rational Insight:Insight可以帮助获取关于开发团队的度量数据,客观地度量开发的状态和进度。Insight能够提供关于系统和软件交付准确的深入信息,确认高优先级的业务目标,并给出软件交付的最佳实践,从而更好地定位开发团队的目标、度量最佳实践和业务成果。

(6)Rational Build Forger(简称RBF):RBF是基于Jazz平台的过程执行框架,可以对软件工程生命周期中重复的开发任务和构建过程进行自动化的安排、管理和追踪。RBF支持主流的开发语言、工具及平台,能够在沿用现有开发资源的同时,增加有价值的自动化、加速、通知和日程安排等功能。

(7)Rational Asset Manager(简称RAM):RAM可以帮助组织了解所拥有资产的状况,资产之间的关系,以及资产所交付的业务价值,从而使组织能够基于一致的可重用资产更快地向市场交付高品质的软件解决方案,并减少解决方案实现和维护的成本。

除了上述工具外,IBM还将陆续基于Jazz平台推出相关工具,并进行众多上一代Rational工具的Jazz化过程,已完成的包括ClearCase和ClearQuest等。

在“软件工程”网络课程中,主要涉及的基于Jazz平台的工具是:Rational Team Concert、Rational Requirements Composer、Rational Quality Manager,以及ClearCase和ClearQuest。

四、“软件工程”网络课程的工程实践部分设计

“软件工程”课程具有实践性强的特点,其工程实践环节既重要又困难,需要深入研究该课程整个工程实践环节的教学内容和方法,确保相关实践平台,设计完整的实践体系,包括:实验大纲、计划、教材等。本章中对于“软件工程”网络课程,即所述“学生工程实践部分”做进一步研究。

1.工程实践部分的目的

(1)让学生在实践环节中加深对软件工程课程理论知识的理解,通过让学生参与一个中小规模软件开发的完整过程,建立对软件开发过程各阶段活动的全面、直观、感性的认识。

(2)要求参与的学生在实践环节中分成若干个项目组,并以项目组为单位完成软件系统从需求分析到测试交付的完整过程,在该过程中学习有效的沟通方法,培养团队合作精神,为将来进入软件工程行业做好准备。

(3)让学生通过实践环节掌握Jazz平台系列工具的使用方法,培养学生灵活运用所学理论知识分析和解决问题的能力。

“软件工程”网络课程的工程实践部分的总体要求包括:遵循敏捷软件开发的定义,各个学生项目组独立完成从需求获取与分析、设计与建模、编码、测试、配置与交付、过程管理等软件工程关键活动,熟练使用各种工具完成上述活动,养成规范化软件开发的习惯,并根据国标版软件开发文档模板最终提交相应的软件制品与规范化文档。

2.工程实践部分的具体要求

(1)项目管理与计划。根据实验课程的安排,各学生项目组首先进行的是基于项目管理知识使用Jazz-Rational Team Concert进行所选项目的开发过程管理,使用Jazz-ClearCase实施配置管理,基于Jazz-ClearQuest进行缺陷与变更管理。需要学生项目组制定项目计划,包括过程计划、开发计划、测试计划、配置管理计划等,在网上提交相关文档和进展报告。

(2)需求获取与分析。在该阶段中要求各学生项目组获取并分析目标软件项目的需求,采用用例模型描述系统的需求规约,使用Jazz-Rational Requirements Composer管理需求分析阶段的结果并进行需求评审。需要学生项目组给出需求规约文档,在网上提交相关文档和进展报告。

(3)设计与建模。在该阶段中要求各学生项目组以需求阶段的结果为基础,使用工具Rational Software Architect为目标软件项目进行设计和建模(注:IBM尚未为该阶段提供基于Jazz平台的工具),基于模型描述系统的设计规约。需要学生项目组给出设计规约文档,在网上提交相关文档和进展报告。

(4)软件编码。在该阶段中要求各学生项目组以设计阶段的结果为基础,完成目标软件项目的最终编码过程,并对软件产品进行评审。需要学生项目组给出源代码和可执行的系统,在网上提交相关软件制品和进展报告。

(5)软件测试。在该阶段中要求各学生项目组使用Jazz-Rational Quality Manager及其他测试工具完成测试:设计测试用例,完成测试脚本的编制,实现自动化测试执行,进行测试结果的收集和分析,进行测试评估,将确认的缺陷提交到缺陷追踪系统中。需要学生项目组给出测试文档,在网上提交相关文档和进展报告。

(6)软件部署与项目总结。在该阶段中要求各学生项目组结合实际运行环境,完成目标软件项目的部署,并对各个阶段的执行情况进行总结,必要时可录制系统演示。需要学生项目组在网上提交报告和相关资料。

五、结束语

针对当前“软件工程”网络课程的现状,本文在对该课程的设计中整合了IBM公司的下一代软件开发协作平台Jazz,利用该平台对软件工程生命周期各阶段任务的支持,及其跨地域的团队协作能力和适用于敏捷软件开发的特点,以理论结合实践的方式设计了该课程的总体教学计划:着眼于培养学生的工程实践能力,从授课部分(包括理论知识和工具培训)以及学生工程实践部分两个方面展开,在实践中取得了良好的教学效果。

参考文献:

[1]Roger S. Pressman. Software Engineering: A Practitioner's Approach, 7th edition[M]. McGraw-Hill,2009:928.

[2]Ian Sommerville. Software Engineering, 9th edition[M]. Addison Wesley,2010:792.

[3]Shari L. Pfleeger, Joanne M. Atlee. Software Engineering: Theory and Practice, 4th Edition[M]. Prentice Hall,2009:792.

[4]许家,白忠建,吴磊.软件工程――理论与实践, 第2版[M].北京:高等教育出版社,2009:399.

[5]黄河笑,杨焕宇, 陈海建等.“软件工程”网络课程的设计与开发[J].计算机教育,2009(22):93-96.

[6]罗扬, 郑昌兴.《软件工程》网络课程的设计与实现[J].电脑知识与技术,2009(20):5471-5472.

软件项目管理论文篇5

论文关键词:软件项目;软件过程;cmm;kpa

1.引言

项目管理(pm,projectmanagement)是指利用现有的知识、方法和技术手段,有效地计划、调度、控制和跟踪项目的开始、执行、直止终止的过程,是项目顺利实现的有效手段。软件项目管理则是在项目管理的基础上,结合软件产品的实际,利用工程的概念和方法来开发与维护软件,对成本、风险、时间、质量、过程、配置等进行分析、管理、控制,最终目的是为了让软件项目的整个生命周期都在管理者的控制范围内,以预定成本按期、按质完成软件的开发并交付用户使用。目前,软件产品已广泛应用于各个领域,但是很多软件项目的成功率并不高.虽然有些公司根据软件工程理论建立了一些软件开发管理规范.但并没有从根本上提高软件项目管理问题,这就导致软件产品质量不稳定甚至是项目的失败,同时也损害了用户的利益。本文结合我国软件项目管理的特点并经实践应用.以提高软件质量、降低成本、加强软件项目的可控性为目标,通过对cmm的研究和改进,给出了一个基于cmm加强软件项目管理的实践模式,在这个模式中对目前cmm中的kpa做适当的裁减,定义了6个关键过程域和3个工作组。

2.软件项目管理中目前存在的问题

影响软件项目成功率的因素主要是软件质量问题,而在整个软件项目的实施过程中需求不明确、跟踪和监督不力、缺乏客观的软件评审和软件配置以及风险管理意识不足等都阻碍着软件质量的提高。

2.1需求不明确

需求管理是软件项目管理中非常关键的一个步骤.需求分析的完整与否可以降低软件质量、延长项目周期、加大成本。由于用户对 计算 机系统认识的不足,对于系统的需求往往比较模糊,遗漏甚至是错误的问题经常出现(包括管理流程、业务流程、数据或报表的分析处理等),但这些问题往往没有暴露给开发人员,而是随着项目的进展才逐渐明确。对于开发人员来说,需求的变更意味着软件产品的部分内容必须重新开发,而对于整个软件项目管理而言,势必要重新分配资源、调整计划、估算成本等等,导致软件产品质量下降。

2.2跟踪和监督不力

跟踪和监督主要针对过程而言,也是项目管理中最容易被忽视的环节。软件项目过程由多个任务构成,大部分任务都有前置任务和后置任务,这就要求项目管理者要严格跟踪和监督每一个任务。任务的完成主要从时间进度和质量两方面来衡量,还要充分考虑因客户方引起的一些客观因素(更改需求分析等)。项目管理者虽然制定了具体的项目进度内容,但如果缺乏有效的跟踪和监督机制,对于每一个阶段所要完成的任务疏于评价,就会影响下阶段软件产品的质量,有时甚至是软件产品的重新开发,最终影响整个软件项目。

2.3缺乏客观的软件评审

客观的软件评审是软件产品质量的直接保障,软件评审一直贯穿于整个软件项目的过程中,对软件产品的评审应有客户使用人员和软件业中的同行来进行。客户使用人员对软件产品做阶段性的评审可以及时发现软件产品功能方面的不足,同行评审可以从软件业的规范及标准去发现问题.软件评审可以降低软件开发的成本提高软件产品的质量。大多情况下项目管理者没有做任何阶段性的评审,通常只是在软件产品开发基本完成之后来组织评审,果发现了很多问题,但要修改已经非常困难.要花费很长的时间甚至从头再来。

2.4软件配置混乱

软件配置是指软件产品在各个阶段各种版本的文档、程序及数据的集合,贯穿于整个软件项目的始终。随着软件产品开发的进行,由于各种客观原因,其中的预算、设计方案、进度等内容都有可能需要大大小小的更改(这些改动可能是合理的),整个改变的过程对软件项目的参与人员来说必须是可视的,以便提高软件的可靠性和质量,而这一切都应该有正确的软件配置来控制如果失去正确的软件配置管理,那么针对软件产品发生的任何更改或者是维护都会给软件项目带来混乱甚至是失败。

2.5风险管理意识不足

风险管理是软件项目中防止失败的一种重要手段,软件项目不同的阶段存在着不同的风险,并且风险会随着项目的进展而变化,目前国内的软件 企业 大都不注意软件项目的风险管理。除了社会环境风险、商业风险等这些客观风险之外.可控的软件项目风险主要指技术风险。技术风险主要是指与软件项目本身相关的的技术因素变化带来的风险,如果在一定的条件下达不到技术条件能够实现的目标,不但延缓项目的进度而且会增加项目的成本.继而使整个项目受到影响。

3.通过过程管理加强软件项目管理的实践模式

利用cmm fcapabilitymaturitymodeforsoftware)的核心思想把软件项目管理看作一个软件过程,并根据这一原则对整个软件项目的开发和管理进行过程监控,监督发现过程中影响项目的关键问题并予以解决。软件过程是指软件开发人员开发和维护软件及相关产品的一套行为、方法、实践及变换过程,包括软件开发过程和软件管理过程。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.实践模式效率评估

4.1开发时间

软件开发由需求分析、概要设计、详细设计、编码、软件测试、项目维护和软件集成几部分内容组成,在需求分析和设计阶段采用cmm框架实施过程管理所花费的时间要多于没有实施过程管理花费的时间。首先对项目做大量分析,论证项目的可行性。然后在和用户做良好沟通、反复论证的基础上做需求分析,形成文档资料。这种模式下花费在需求分析和设计上的时间大约占项目总开发时间的40%,但这两个阶段完成了数据流程、算法描述、详细的规格说明等内容,为代码编写、软件测试、软件维护等后续内容的工作节省了时间,软件项目的开发周期大大缩短。经过评估,采用该实践模式实施软件过程管理的软件项目开发周期比没有实施软件过程管理的软件项目开发周期缩短20%。

4.2开发质量

采用cmm标准通过软件过程管理加强软件项目管理的实践模式使软件质量明显提高、需求分析周密、代码错误率明显降低、软件产品完整性好、功能齐全、维护量下降,软件项目最终得以顺利实现。

5.结语

软件项目管理论文篇6

关键词:软件开发;质量管理;CMMI

1. 前言

质量管理是指对组织的活动在质量方面进行指挥和控制,其管理职能主要包括质量方针的制定、质量目标的确定、质量控制、质量改进以及质量保证。软件质量管理就是指在软件开发过程中在质量方面进行指挥和控制。软件质量管理应该贯穿于软件开发的全过程,在软件开发实践中,可以依靠流程管理来进行软件质量控制,严格按软件工程执行,从而使得软件质量得以保证。在电信某重点运营支撑项目中,使用CMMI标准对开发流程进行了严格的控制和审核,在一定程度上使得项目软件质量得到了保证。过程管理是质量管理的一个重要环节,本文主要通过阐述电信某重点运营支撑项目软件中的几个重要过程的改进,来探讨过程管理是如何提高该项目软件质量的。

2. 软件能力成熟度模型集成

CMMI(Capability Maturity Model Integration,即能力成熟度模型集成)是SEI组织(美国卡耐基-梅隆大学软件工程研究所)推出的衡量软件开发管理水平的重要参考模型,代表着国际上最先进的软件工程方法,是衡量软件企业能力成熟度和项目管理水平的权威标准,被公认为软件企业走向国际市场的通行证。CMMI包含了产品的开发、维护及服务方面最好的实践做法,覆盖了从项目立项到交付和维护整个产品生命周期。其认证范围从1级到5级,如图1所示,其中3级认证为已定义级(Defined),表明开发过程包括技术工作和管理工作,均已实现标准化和文档化。

图1 成熟度模型等级定义

成熟度等级1:初始级。在这个组织中,初始级处于最低级别,健全的软件工程管理制度基本上没有。过程的实践通常是待定的,也有的时候是混乱的。在这个级别中,由于当前的人员配备决定软件过程,因此,其具有不可预测性,而人员的变化是最快的也是最常见的,因此导致过程随时具有变化的风险。因此导致不可能精确地预测产品的开发时间和费用。

成熟度等级2:可重复级。在这个级别中,有些基本的软件项目的管理行为、设计和管理技术是基于相似产品中的经验。在这个级别中,需求、过程、工作产品和服务都处于被动地位。

成熟度等级3:已定义级。在这个级别中,完整的文档已经编制好,并明确地定义了软件过程的管理方面和技术方面,并且过程按照需要做了不断地改进,同时为了进一步保证软件的质量采用了评审的办法。在这一级别中,组织标准过程集按照裁剪指南来进行剪裁,并且对建立自己的已定义过程项目是可以实现的。

成熟度等级4:已管理级。处于这个等级中的所有公司对每个项目都设定质量和生产目标。将不断地测量这两个量,当偏离目标较远时,对其应该进行修正并采用相应的行动。

成熟度等级5:优化级。此级的主要目标就是连续地改进软件过程。这样的组织通过统计质量和过程控制技术的使用获得了不同方面的知识,这些知识将会被用在今后的项目中,从而软件过程也进入到正反馈循环,进一步改进了质量。

3. 软件开发过程中的质量管理

3.1量化管理

3.1.1量化管理的实施要求

量化是建立在量化元素之上的一种数学表征,在项目管理过程中,通过对这些量化元素的控制来实现对项目的量化管理,这些量化元素主要是项目开发中的最小功能模块,或者是基本功能模块,这些模块包括(业务模块、人员培养模块、系统开发平台搭建、以及项目开发以外的不可控因素等)。在项目开发计划中,一般计划的是业务功能模块以及人员的分配,计量单位一般是人日。因为量化的过程涉及到以上诸多因素,项目涉及的相关人员在各自的职位上必须经过必要的学习和培养,比如项目管理、项目跟踪监控以及测试规范等。

CMMI量化管理涉及以下几个方面:(1)能够通过客观的说明进展到客观的数字定量分析和控制;(2)一切可控因素都能够用相应的数字表征其质量;(3)质量控制必须深入到每一个模块,而且坚持执行(控制开始、控制进行、控制结束)。

3.1.2开发进度的量化管理

项目开发进度是项目管理的关键要素之一。对项目开发进度进行控制主要包括以下几个方面:(1)实际中的活动的起始时间与结束时间与计划产生偏差;(2)在进度监控时,项目经理按照相应的计划进度定期进行进度会议,并报告进度;(3)掌握进度状况,管理问题和风险。根据实际进度报告,项目经理通过小组实际进度数据,把此作为调整项目的依据。

3.2缺陷预防

软件中存在一些常见的问题是避免不了的,存在问题不是重点,重点是对已发现的质量问题进行消除,在此基础上必须采取切实可行的纠正和预防措施。当然,质量问题的原因不同采取的具体措施也就不同,对一种问题的消除一定要保证不会再发生此类问题。在纠正措施控制程序中,对标准的相关要求突出进行强调,在一定程度上为软件公司采取切实的纠正措施提供了有利的保证。纠正措施实施步骤如下:(1)对发生的问题进行识别和评审。识别和评审质量管理体系各过程输出的成果;(2)分析原因、制定相应措施并进行实施和验证;(3)跟踪验证是监督部门在每项纠正措施完成后必须要做的工作,该部门主要负责评审实施效果的有效性,对其能否防止类似问题的再度发生进行评审。对于预防措施而言,基本上与纠正措施相同。由此可知,预防措施的实施步骤:(1)对潜在的缺陷和原因进行确定,对记录进行及时重点的分析;(2)如果有潜在不合格的事情发生时,对轻重缓急进行确定,且此主要根据潜在问题的影响程度来进行,并且召集相关部门对原因进行分析,从而制定出有效的预防措施;(3)产品部跟踪验证实施效果。

3.3评审

3.3.1评审的目的

评审主要是检查项目的约束、成本、进度和技术等问题。

3.3.2评审的流程

(1)评审策划

PSM(平台相关模型 Platform-specific models)根据项目的进展确定评审的时间、评审的主要内容和通过评审希望达到的目的,确定评审的负责人。将策划的结果一一记录在软件开发计划中。

(2) 评审前沟通

在评审正式进行之前,负责 人应该与参加评审的人员进行沟通并通知SQAL(Software Quality Assurance Leader软件质量保证负责人),确定评审的时间、地点、内容、目标和议程,沟通的方式既可以举行一个会议,也可以通过电子邮件或电话等方式来进行,同时将评审相关的材料提前分发给参加评审的人员,建议参加评审人员在评审前要通过这些材料了解评审的内容,必要时可以向负责人索要进一步的材料。

(3)评审

评审开始后,必要时负责人介绍背景和目标,然后根据议程使用适当的检查表进行评审。当所有的议程都得到了评审,有了明确的结论后,评审负责人向参加评审的全体人员重申对每项议程做出的结论,确保没有歧义后可以结束本次评审。必要时可以安排再次的评审。

(4)评审记录

记录员记录评审的问题和做出的决定,评审结束后,将评审记录和评审问题管理表整理送评审负责人确认后分发给参加评审的所有人员,同时将评审记录归档。

4. CMMI的具体实施

为了适应CMMI的开发规范要求,电信某重点运营支撑项目在开始时组成了电信某重点运营支撑项目开发小组,其中包括CMMI指导小组人员、质量保证人员、配置管理员、测试人员、开发人员。根据实际项目的需要,在CMMI指导小组人员的指导下,参考统一软件开发过程对软件开发流程的内容,针对电信某重点运营支撑项目相关流程管理要求、文档管理要求等过程管理内容进行裁剪,以获取最适合电信某重点运营支撑项目开发管理的过程管理要求。同时根据实际情况,对项目组成员进行过程管理方面的培训,以便于相关规范和流程的准确执行。

科学的体制管理规范,标准的开发流程是项目能够顺利完成的基石。电信某重点运营支撑项目在管理和开发的工作中根据项目本身的实际情况,在项目管理过程中主要计划并落实了以下事务:

(1)体制建设是项目开始的前提,在项目开设初期,我们根据项目特点,结合CMMI进行了开发以及项目管理的体制建设,组织中包括开发工程师组、培训组、质量控制组、项目管理组、业务组等组织结构,各个组织结构由专人负责,成员按其工作特点进行分配。

(2) 公司的培训组在整个开发前期到中期,主要落实组员的CMMI培训,其核心就是项目的标准化培训,使其在项目进行的过程中统一思想,其中包括开发流程标准化,组织分配标准化、文档标准化培训,以及开发代码标准化、QA(Quality Assurance质量保证)标准化等培训工作。

(3)项目在开始阶段进行系统分析,并做出系统开发计划,根据项目特点制定项目里程碑,通过开会讨论,制定出科学的项目开发计划书,其中包括项目进度管理计划,质量管理计划,成本管理计划等。

(4)在项目前期做好文档标准化管理,其中包括工作文档模板以及开发代码文档,开发规约等,尽量在提高工作效率的前提下,保证项目风格的统一。

(5)建立知识库以及硬件管理平台,为开发过程中遇到的技术难题提供技术资源,也为今后的项目开发建立技术共享资源。

在公司领导的领导下,电信某重点运营支撑项目能按照计划有条不紊的进行,并且项目的风险在日渐降低,而且开发过程已经达到CMMI三级水平以上。项目中的其他环节,比如说质量控制管理、风险控制管理、需求分析管理等都已经走向标准化,达到了CMMI标准水平。

在电信某重点运营支撑项目的开发落实过程中,软件的开发过程已经走向了标准化,并且在开发过程中建立了可二次利用的资源库,包括技术库、代码库以及标准文档。

整个过程中虽然遇见些难题,但是都迎刃而解,并且形成了一个可复制的开发流程与管理过程。

5. 结语

软件开发过程中质量与技术和管理有着密切关系。本文主要讨论利用能力成熟度模型CMMI提高软件质量管理的过程和实践。无论是利用哪种技术,在进行软件质量管理时必须从“量化管理”、“缺陷预防”、“评审”这三个方面进行加强。

参考文献:

[1] 李军. 软件项目的质量管理[J]. 项目管理技术, 2009, (S1) .

[2] 金兰. 基于CMMI的软件配置管理研究[J]. 软件导刊, 2009, (11) .

[3] 毕莹, 赵雨濛. 软件项目质量控制过程中工具及方法的研究[J]. 甘肃科技纵横, 2006, (03).

[4] 沈玉宏. 基于CMM软件项目质量管理的研究[D]. 中国优秀博硕士学位论文全文数据库 (硕士), 2006,(08) .

软件项目管理论文篇7

关键词:整体项目模式;项目Bus;软件工程;教学

0 引言

文献1论述什么是整体项目模式以及整体项目模式的优缺点,文献2论述整体项目模式下软件工程专业的教学体系结构,同时也提到软件工程专业教学方面的要求,主要是针对教师的要求。在实际过程中,整体项目模式下软件工程专业的课程教学较为复杂。首先,需要理清专业课程之间的相互关系;其次,需要明确专业课程和项目过程之间的关系;第三,需要掌握专业课程教学和实际项目之间的切入点、重点和难点;最后,学生要能切实根据自己所做的项目,从不同的侧面或教学内容方面书写项目文档,并认识到同一项目可以从不同的角度进行分析、设计和编程。

传统的专业课程项目教学和整体项目模式下的专业课程教学存在很大区别。传统的专业课程项目教学主要是没有从整体项目模式考虑教学问题,割裂了专业课程之间的相互联系,只从该课程的教学内容方面列举案例,学生对教学内容的认识具有片面性和局限性,不能建立起对知识体系的整体观念。在实践教学过程中,学生曾经提出过很多问题:软件工程和结构化设计、面向对象设计有什么不同?它们之间有什么联系?为什么要学习面向对象?不学习可以吗?作为一个专业课任教师,如何进行解释?如果学生有足够的项目经验,前期是否一定要有详细的分析和设计文档?针对最后一个问题,若是不具备丰富项目经验的教师回答,那答案是一定要有详细的分析和设计文档;但是实践经验丰富的教师则认为这个问题的答案是不一定的。小型或者微型项目的前期不一定要有详细的分析和设计文档,可以直接在编程过程中进行分析和设计,那么这是否违反了软件工程呢?当然,答案也是否定的。如教师在讲授面向对象的软件开发方法课程时,必须强调某一开发方法的优缺点,可以综合运用其他开发方法如结构化分析方法、形式化编程,甚至弱化分析过程,强化设计和编码过程,主要目的是明确整体项目开发过程。

1 软件开发流程和系列课程之间的关系

1.1整体项目模式下软件工程专业教学体系结构

任何课程的设置不能脱离教学体系结构。一个好的教学体系结构能够帮助学生在头脑中树立完整的知识结构,让学生主动获取相关知识。在教学过程中,教师首先要明确该课程在整个教学体系结构中的位置,建立项目开发过程的全局观。文献2中建立的整体项目驱动模式下软件工程专业教学体系结构如图1所示。

从图1中可以看出,项目Bus横贯整个专业课程,教师和学生各自只使用同一个项目案例贯穿于系列课程中,从而从不同的角度让教师讲授、学生学习同一个项目的相关内容。

1.2软件开发过程流程

图2所示是笔者在软件开发过程中总结出来的一套软件工程专业软件开发过程流程,包括软件开发过程、软件工程文档、软件标准规范、实际软件开发规程等方面的内容。在每一门课程的开始和结束阶段,笔者都要将该图展示出来,让学生明确自己已经学到了哪些内容,还存在哪些欠缺。

1.3软件开发过程对应的专业课程设置

笔者有幸为中南民族大学软件工程专业以及本校与美国威斯康星大学合办的3+2软件工程国际合作试点班的学生讲授部分专业课程,包括软件工程、软件测试、用户界面设计、软件项目管理、面向对象的软件开发方法5门课程。对于相关的其他专业课程,我们将不做说明,如CMMI、软件过程、软件质量保证等。

这些课程与软件开发过程流程是一一对应的关系。软件工程课程是专业核心课程,涉及内容广泛,是其他专业课程的基础,也是整个软件开发过程流程的基础,主要内容包括软件需求提取、分析、设计、测试、维护变更管理以及软件质量控制、软件项目管理、软件开发配置变更管理、软件开发标准以及软件开发方法。软件测试贯穿软件开发过程的始终,包括用户需求的确认、用户界面的确认以及单元测试、集成测试、系统测试、Alpha/Bete诅测试、评审、验收等内容。用户界面设计主要包括软件界面设计理论、原则和规范,在实际软件开发过程中,是图2中的系统概要设计/用户界面驱动分析部分,通过与用户反复沟通确认需求,是测试的基础,同时也是软件编码阶段、评审、验收阶段的依据。软件项目管理主要对软件的质量、成本和进度进行管理和控制,同时考虑如何在软件开发过程中避免不必要的风险或者降低风险的影响。面向对象的软件开发方法着重于软件开发过程中面向对象的需求分析和设计,包括用户分析、界面设计、类模型、动态模型、状态模型等一系列的分析和设计。

这5门专业课程从不同的侧面讲解软件项目的开发过程和方法,各有特点。但是对于为什么要学习这几门课程,以及它们在软件开发过程中处于什么样的位置,起到什么样的作用,是教师在教学之初就应该明确的。

2 整体项目模式下系列课程的教学

根据整体项目模式原理,实践项目应贯穿到各专业课程之中,系列课程最好使用同一项目,这样更能加强学生理解软件开发过程的不同方面。该项目在专业课程开始之前就必须存在,即已经完成或正在进行中的实践项目,因此,系列课程必须是相互联系并且能基于同一项目案例,这和传统的项目教学方式虽然模式一致,但是效果却有本质的不同。图3为系列专业课程的项目案例、课程和学生实践案例示意图,5门课程都基于同一实际项目案例,学生根据自己所做的项目,按照不同专业课程要求的格式和内容书写相关文档。

2.1先案例后理论的案例驱动教学模式

软件工程专业的特点是实践性非常强,软件工程的很多理论都来源于对实践的总结和归纳。因此,教师在教学过程中采用先案例后理论的案例驱动教学模式,符合软件工程专业的授课特点。

首先,教师要讲解实际项目案例的文档,该文档是一套完整的、从不同侧面反映软件开发过程的实际文档。对于每一门专业课,教师首先讲解需求提取、需求分析过程、功能提取、系统功能结构框图等,让学生明确该系统的背景和要解决的问题,以及需要具备什么样的功能以实现目标。

其次,教师要联系实际项目案例,讲解课本上的理论,将每个理论知识点与实际的项目案例相结合,让学生充分理解理论。在实际讲解过程中,对于新开课,新教师若碰到教学学时偏少的状况,可以言简意赅地讲解重点知识;实践经验丰富的教师,碰到学时偏少的情况可以精简案例功能,讲解1~2个功能即可。

最后,教师必须强调实践的重要性并给出标准的文档规范,要求学生按照自己的实际项目书写标准的文档。在每一门课程讲解完毕后,教师再一次帮助学生回顾该课程在软件开发过程中的位置。

以软件项目管理为例,在正式进入课程教学之前,教师需要做大量的工作,首先需要准备的文档有项目需求、项目需求分析报告、可行性分析报告、项目开发计划书、项目Demo程序演示、软件项目投标书、软件项目开发合同。然后,开始进人软件开发项目管理过程教学,软件项目主要内容有成本管理、进度管理、人员管理、风险控制等理论内容。实际的软件项目管理主要分为4个阶段:IT项目的启动阶段、IT项目的计划阶段、IT项目的执行控制阶段、IT项目的收尾阶段,这在一般的教材中很少提及,但是教师在内容讲解中要明确阶段任务。IT项目的计划阶段涉及48个文档;IT项目的执行控制阶段涉及45个文档;IT项目的收尾阶段涉及14个文档。

教师在讲解合同的内容时,可以直接参照“软件项目开发合同”进行讲解。对于必不可少的合同内容,教师就必须跟学生讲清为什么必须要包含这些内容;讲解成本计算的时候,根据文档“工作包、进度和预算”进行项目的WBS分解以及基本的估算方法。

总之,由于教材先理论后案例的局限性,在听课之初,学生觉得枯燥乏味。而教师通过先案例的方式能有效调动学生在课堂上的学习积极性,为后面的项目实践奠定基础。

2.2学生项目实践环节

每一门专业课都有上机实践部分,学生在实践课上主要是书写文档。每门专业课都有各自不同的文档,软件工程课程要求学生必须完成标准的13个文档;软件测试课程需要软件测试报告文档;软件项目管理课程有127个文档;面向对象的软件分析方法课程有包含9大部分内容的软件项目分析与设计文档。每一门课程的文档内容非常多,要求每个学生最好独立完成,主要训练每一个学生的文档书写和理解能力。

需要强调的是,学生书写的项目文档一定要给出标准的、规范的文档格式,包括目录、段落、标题、字体等排版之类的要求。项目模板可以采用软件工程国标文档或者相关的其他标准文档,最好和某一软件公司的案例文档格式相一致。笔者在软件公司任职过程中,很多刚参加工作的大学生书写文档的水平非常差,主要是文档格式、结构和内容混乱,往往给人留下非常不好的印象。整体项目驱动模式下的课程教学,首先强调的就是文档格式和正确的文档排版,其次才是内容的正确性与完整性。

在学生项目实践中,任课教师最好跟踪指导。学生每次在实验课上必须完成相应的实验,并把实验的电子文档通过教学资源管理系统或以电子邮件的方式提交给教师。电子文档的批改能快速纠正学生文档格式不规范以及内容方面的错误,但这个工作量往往很大,每一次电子作业批改的工作量往往是学生数量的3~4倍。这是因为学生按照批改意见进行修改后又会返回给教师,最终达到合格标准的电子文档往往会被修改2~4次。

2.3考核方式

完成每门课程的项目文档是学生对文档书写熟练程度以及课程内容理解的直接反映,也是培养软件开发过程中需要具备的素养和习惯的有效途径,克服学生疏于或懒于书写文档的缺陷。因此,教师需要对学生书写的项目文档进行考核并将其反映在学生成绩上。项目文档的成绩占学生总成绩比例的30%~50%较为合理。

2.4教学效果

笔者经过近2年的教学实践,取得了良好教学效果。以中南民族大学软件工程专业2008级学生为例,首先,学生很顺利地完成了各自的软件项目,包括中南民族大学学生基金项目;其次,学生能很好地书写申请软件项目著作权系列文档以及毕业论文,书写的文档格式规范,只需稍加修改就能将文档立即转化成学术论文并发表。这表明学生无论是在文档格式还是在内容编排上都取得了进步,进一步提高了在软件开发过程中应有的素质。这也是软件工程专业学生和计算机其他专业学生之间非常明显的差别。

就前2届学生的就业情况,笔者回访了2家用人单位,他们对中南民族大学软件工程专业毕业的学生刮目相看,称赞学生书写的项目文档很规范。

3 结语

软件项目管理论文篇8

[论文关键词]任务驱动 项目导向 案例教学 多元整合

一、引言

软件工程课程是高职软件专业类学生的专业核心课,是理论和实践紧密结合的典型课程,主要培养学生软件开发能力和项目管理能力。但在实际教学过程中,因为缺乏明确工作任务并涵盖课程理论知识的综合项目,学生对软件工程理论感到十分抽象,对实践操作也只是囫囵吞枣,根本体会不到软件工程在企业项目开发中的宝贵作用。

针对软件工程课程,国内职业教育课程在借鉴外来职业教育课程开发理论的基础上,也有自己的创新。有一部分学校已经在这方面进行了改革和探索,但大多是单一的、松散地进行,这一状况的形成,一部分是因为现实客观条件的制约,另一部分还在于职业教育课程理论研究的不全面、不深入所致,因此重视和加强高等职业教育课程多元整合是提高高职职教课程开发质量的一个中心环节。

本文将以高职软件工程课程为例,将“任务驱动、项目导向、案例教学”多元整合的创新教学理念引领教学过程,强调动手能力,将工作过程的职业环境融入学习过程中,将学生对知识、职业能力的掌握程度提高到了实践这一层面,使得学生能真正进入到“在学中做,在做中学”的理想学习环境中。

二、多元整合创新教学理念

软件工程课程涉及软件项目计划、软件需求分析、软件设计、软件测试、软件配置管理、软件项目管理等软件开发过程中的各种问题。浙江商业职业技术学院(以下简称“我院”)所在浙江省高新中小企业众多,发展主要依靠技术进步以及科技来推动,对人才的需求也明显高移。经调查发现,目前浙江省软件行业在软件设计、软件测试和软件维护方面的人才缺口大,供不应求。因此,我们将教学重点放在了软件设计、软件测试和软件维护方面。以一个典型、完整、实用的项目“学生选课管理系统”为载体,将软件工程项目开发中用到的各项工作技能按照工作过程分布阶段任务,将项目分解成一个个案例,以任务驱动的方式完成技能的案例教学,同时也体现了工作过程的完整性,将“任务驱动、项目导向、案例教学”多元整合的创新教学理念贯穿于教学过程。

(一)明确工作岗位,分析工作任务,任务驱动学习

任务驱动学习是让学生完成教师精心设计的培养职业能力的工作任务,构建真正属于自己的知识和技能,提高分析和解决问题的能力。如何确定软件工程课程的工作岗位和工作任务是进行任务驱动学习首先要解决的课题。

为此,我们邀请软件行业专家、专业教师参照国家相关职业标准一起分析、论证软件工程工作岗位的工作过程和技能要求。在进行分析论证过程中,根据我院所在浙江省高新中小企业发展实际,结合高职学生学习特点,将软件工程课程培养的人才方向定位在软件设计、软件测试和软件维护三个岗位。我们明确了这三个岗位的典型工作过程,并详细分析了典型工作过程中的典型工作任务。

1 软件设计岗位的典型工作过程主要包括软件项目计划、软件需求分析、软件设计阶段。这些工作过程的典型工作任务有:(1)软件项目计划包括:软件项目计划内容的描述;度量项目的成本、规模、工作量和开发周期;确定项目开发过程模型;制订软件项目计划;(2)软件需求分析包括:定义需求工程过程模型;采用UML获取项目需求;采用UML分析项目需求;编写项目需求规格说明书;(3)软件设计阶段包括:策划项目的设计阶段;应用设计模式,执行系统的架构设计。

2 软件测试岗位的典型工作过程主要是软件测试阶段。其典型工作任务包括:软件项目单元测试用例设计;执行软件项目单元测试;软件项目功能测试用例设计;执行软件项目功能测试;软件项目性能测试用例设计;执行软件项目性能测试;软件项目压力测试用例设计;执行软件项目压力测试。

3 软件维护岗位的典型工作过程主要包括软件配置阶段和软件项目管理阶段。这些工作过程的典型工作任务有:(1)软件配置阶段包括:创建软件项目配置管理计划;对软件项目实施版本控制;(2)软件项目管理阶段包括:对软件项目进行项目估算;对软件项目进行风险管理;对软件项目进行质量管理。

(二)设计教学项目,培养职业能力,项目导向教学

项目导向教学是指通过一项完整的项目工作而进行教学活动的教学方法,它以项目导向、任务驱动,引领教学过程,强调实训环节,将工作过程的职业环境融入学习过程中,将学生对知识的掌握程度提高到了实践这一层面,使得学生能真正进入到“在学中做,在做中学”的理想学习环境中,使学生在学习过程中培养工作岗位职业能力。

我院软件工程课程定位的软件设计、软件测试和软件维护三个岗位有不同的职业能力要求,通过与专家分析论证,我们明确了三个岗位要培养的职业能力:

1 软件设计岗位。要求要培养的职业能力有:理解、实施软件项目计划的能力,编写、制定软件项目计划文档的能力;获取、分析软件项目需求的能力,编写软件项目需求分析文档的能力:理解项目数据模型、项目的架构设计的能力;编写软件项目设计规格说明书的能力。

2 软件测试岗位。要求要培养的职业能力有:设计和实施单元测试用例、功能测试用例、性能测试用例、压力测试用例的能力;撰写测试计划、报告的能力。

3 软件维护岗位。要求要培养的职业能力有:实施软件项目配置计划、管理的能力;实施软件版本控制的能力;估算项目成本、规模、进度的能力;预测、监控、计划、管理软件风险,实施软件质量保证计划的能力。

为了与岗位工作过程相适应,能够在项目教学过程中培养学生的职业能力,在设计教学项目的选择上我们从以下几个方面进行了探索:第一,项目必须包含上述岗位的基本工作过程,能够培养学生职业技能;第二,项目难度适中,符合高职学生的知识、技能结构特点;第三,项目开发周期相对较短,能够在教学时间内完成;第四,项目内容容易理解,贴近学生经验,以便学生集中精力完成软件工程工作过程的学习。

为此,我们精心设计了“学生选课管理系统”来进行项目教学,引入企业真实项目“网上书城”系统来进行模拟训练。这两个项目背景高职学生易理解、掌握和操作,并且包含了上述三个工作岗位职业能力。通过几个学年的教学实践发现,学生基本能掌握三个工作岗位的职业能力,并根据自己的兴趣有所侧重,完全达到了我们项目导向教学的目的。

(三)分解教学项目,激发学习兴趣,典型案例教学

案例教学实际上是一种“做中学”的形式,在经验和活动中获取知识和技能,增进才干。软件工程案例教学的实践反映出,案例选择是否合适、案例运用是否科学将直接影响到案例教学作用的发挥。

对于软件工程这样一门理论和实践都比较注重的课程来说,案例教学就显得特别重要。我们在案例教学中进行了以下探索和实践:第一,案例贴近学生生活,删繁就简,能适应课程教学时限要求;第二,案例有代表性和针对性,能基本涵盖基本的工作任务;第三,案例能让学生参与并易于模仿实践。如讲解软件项目计划时,针对学生选课管理系统这个项目,由老师描述项目计划应该要确定的内容,并引导学生分组讨论确定项目中角色一人员责任矩阵,利用甘特图等工具制订初步软件项目计划。这样学生不仅仅是去强记那些固定的原理、规则。学生通过案例更深刻地理解了工作过程中需要掌握的技能。

三、多元整合教学的探索与实践

任务驱动、项目导向、案例教学的教学方法各有特色,如何将这些教学方法整合在一个具体的教学项目中并让各种教学方法发挥其优点是我们要重点解决的问题。按照软件工程项目开发中典型的工作过程,我们将“学生选课管理系统”项目分解成一个个的小项目,每一个小项目对应着一个具体工作过程。对每一个小项目我们分成六个步骤进行项目教学:

第一步,确定每一个小项目的工作任务。不同的小项目对应的工作任务不同,有的工作任务比较独立、花费时间少,可以在—个教学单元中完成,我们称之为小任务;有的工作任务需要多个教学单元的综合实践才能完成,我们称之为大任务;在教学过程中,对大任务我们又将其分为若干小任务,并在各个小任务完成后进行分析总结,以便学生系统全面地掌握相应的职业能力。

第二步,教师进行案例场景描述,并通过典型案例演示项目中的具体任务。教师先对案例进行场景描述,让学生明白真实工作过程中这个小项目要做什么。然后通过典型案例的演示让学生体会到这个小项目要怎么做。

第三步,学生分组讨论,明确项目分工。软件的开发过程是一个团队合作的过程,将学生从成绩、性格、表达能力等方面进行分组,让不同的学生组合成一个团队进行项目的开发,既培养学生团队合作的精神,又让学生能发挥各自特长,调动学生积极性。在此步骤中,教师可以根据实际教学班组从整体上对团队的组合进行优化调整,对于一些比较难分工的项目,教师可以对团队进行指导,帮助团队进行分工。

第四步,学生根据不同分工完成典型案例的工作任务。通过项目分工,团队中每个学生有了明确的任务,可以根据教师典型案例的演示进行工作任务的模拟练习。通过这一步,让学生对工作过程和工作任务有真正的感性认识,有利于培养学生的职业能力。

第五步,总结工作任务成果,分析评价工作质量。通过一个或多个教学单元的学生项目实践,每个团队都完成了自己的工作任务,有了局部的成果。在此步骤中,教师可以将不同团队的工作成果之间进行横向比较,将团队中各位学生的工作成果和典型案例演示中的工作成果进行纵向比较。通过横向和纵向的比较,让团队中每一位学生知道整个团队做了什么,做得如何,自己发挥了什么作用,自己需要提高和注意的地方在哪里,这对学生职业能力的培养至关重要。

上一篇:机关精神文明建设总结范文 下一篇:企业精神文明建设汇报范文