软件项目论文范文

时间:2023-10-03 09:38:02

软件项目论文

软件项目论文篇1

在软件项目特别是信息系统构建项目投资过程中的风险因素众多,其后果严重程度各异,要把每个风险因素都加以考虑会导致问题的复杂化,是不现实的。本文以某高校人力资源管理信息系统的构建过程中所提出的指标体系,建立了该项目风险递阶层次结构图。

1.1基于层次分析法的一致性效验结果根据图1对各风险子因素进行判断,从而得到单因素评判矩阵。咨询相关专家,对专家们的评判结果进行分析,合理取舍,得到风险子因素的评判矩阵。最终将评语集确定为:A={低风险,中等风险,高风险}。对于风险子因素的权重矩阵,则采用层次分析法,邀请十位技术专家进行调查研究和相关分析,采用不同因素两两比较的方法,构造不同层次的判断矩阵,并进行归一化处理和一致性检验。根据选定专家事先估计出项目实施人员对各个因素的侧重程度,进行一级风险因素的权重分配,加权后建立权重集,现以一级风险“技术性风险”中各组成因素的权数确定为实际评判对象,其一致性效验结果如表2。由以上一致性效验结果可得到一个模糊集:P2=(0.5015,0.4985)同样也可以估计出各专家对人员风险、经济风险、环境风险、管理风险中各因素侧重程度而加权组成因素的权重集如下:P1=(0.4238,0.5762),P3=(0.3824,0.2527,0.3649),P4=(0.4237,0.5673),P5=(0.3792,0.2284,0.3924)

1.2模糊综合风险评估分析在这个过程中,要使用专家调查法,具体操作如下,选取10名专家,让这10名专家根据各自的相关经验,给出每一个风险指标对各类风险的隶属度,然后对其进行归一化,最后得出一级评判矩阵,本文通过下面的“技术性风险”中的各风险因素的一级评判矩阵,对该种方法进行说明。该一级评判矩阵如表3所示。由此相应的可得出人员风险、经济风险、管理风险中各因素的一级评判矩阵。

1.2.1一级模糊综合评价用加权平均模型模糊评价理论,计算项目风险评估中一级模糊评价指标的模糊值BK1=PK*RK,其中BK1代表一级模糊综合评价指标值,P代表权系数,R为一级评判矩阵,仍以“技术性风险”为例来计算一级评判矩阵,将上述过程中的P2与R2代入公式。

1.2.2二级模糊综合评价由人员风险、技术性风险、经济风险、环境风险、管理风险共同组成的项目总体风险权重矩阵。从向量矩阵B的结果可以看出,三个数中0.3841最大,其隶属于风险等级为低风险,说明该校人力资源管理信息系统的构建过程和投资风险很小,是切实可行的。

2结论与展望

2.1结论①运用模糊综合评判法对某高校的人力资源管理信息系统的设计与实现项目进行综合评估,得到了该项目在未来发生较低风险的可能性最大,也就是项目的生命周期是很稳定的。项目的发展也是随着项目的目标而进行的,由此可以看到,该项目的研究和系统的构建都对某高校的人力资源现代化管理和信息化建设起到一定作用。②在实际应用模糊综合评价法建立相关软件项目的风险评价模型时,最关键的步骤是把项目中包含的方向不明、影响大小不易确定影响因素转化成可以进行相关数学处理的模糊变量,然后在通过使用相关的模糊评价模型,对上述得出的模糊变量进行统计分析,最后得到可以定量的数据结果。从实际经验来看,这种评价的数据结果和一般的常规分析结果基本保持一致,这种量化的风险分析结果,使得项目负责人可以随时根据项目风险的量化指标,合理安排项目的风险防范措施,这种使用量化数据的风险分析指标,对于动态监控风险有着良好的作用。③从本文的应用实例可以看出,层次分析法适用于风险管理比较简单方便,通过一致性效验结果进行数学建模的方式能够更好的反应风险的层级关系和权重指标。

2.2展望通过本文对项目风险的分析和评估,作为项目管理人员和项目团队成员,都应加强风险意识,更要明确风险管理的最终目的是要对风险的相关因素采取措施,能够确实规避风险或降低风险损失的影响。在今后的课题研究中,如果都能运用一定的数学理念和分析方法来评判项目的风险等级,对于我们的研究工作将会带来帮助。

软件项目论文篇2

摘要:软件项目管理的核心是全面客户满意。其管理体系包括:战略管理、范围管理、成本管理、时间管理、人力资源管理、沟通管理、风险管理和质量管理。

关键词:软件项目管理软件产品质量因素

在软件和信息科技行业,项目管理经常决定了一个产品或者企业能否成功。项目管理得到越来越多的企业和政府部门的重视,例如中国于2002年4月召开了有关项目管理的首次国际研讨会。具体操作与项目最根本的不同在于具体操作是具有连续性和重复性的,而项目则是有时限性和唯一性的。本文由中国收集整理。项目是一项为了创造某一唯一的产品或服务的时限性工作。所谓时限性是指每一个项目都具有明确的开端和明确的结束;所谓唯一是指该项产品或服务与同类产品或服务相比在某些方面具有显著的不同。各种层次的组织都可以承担项目工作。项目有时只涉及一个组织的某一部分,有时则可能需要跨越好几个组织。项目是执行组织商业战略的关键。

一、软件产品项目管理的重要性

20世纪80--90年代,许多大型企业管理信息系统MIS的开发都以失败而告终。这是为什么?一个重要原因是软件项目管理水平上不去,尤其是需求分析管理水平上不去,使得项目快要验收或交付时,却出了大问题:要么发现用户需求获取不准确,要么发现用户需求变了,致使做好的系统不能用或不好用。20世纪90年代初,上海一家公司在青岛做一个港口MIS项目,北京有一个单位在天津做一个港口MIS项目,都是因为甲乙双方软件工程基本知识不具备,使得项目管理不到位,导致2个大型项目不成功。现在软件应用领域空前广阔,深人到社会和科学研究等领域的各个方面。软件的需求也比以往更加多,软件系统设计也空前复杂。软件的项目管理问题也就因此而产生了。90年代中期,软件项目管理不善的问题仍然严重。据美国软件工程状况调查,只有10%的项目能够在预定的费用和进度下交付。于是软件项目管理成为软件项目发展中最重要的核心问题。为了使软件项目开发获得成功,必须对软件开发项目的工作范围、可能遇到的风险、需要的资源(人、硬件、软件)、要实现的任务、经历的里程碑、花费的工作量(成本),以及进度安排等做到心中有数。软件项目管理的目的就是提供这些信息,分析信息,并根据分析结果对项目做出调整。软件项目管理开始于技术工作之前,在软件开发的整个过程中持续进行,最后中止于软件过程结束。

二、软件项目管理体系

随着软、硬件技术以及通信技术的日益成熟,软件技术可以与所有的传统产业相结合,促进产品的更新换代,大幅度提高产品的附加值,提高劳动生产率,推动产业结构与产品结构的调整。因此,软件的开发以及应用不仅仅是软件开发机构的任务,更深地涉及软件使用者的切身利益,尤其像管理信息系统MIS(ManagcmentInformationSystem)、计算机集成制造系统CIMS(ComputerIntegrationManufacturingSystem)、企业资源计划ERP(EnterpriseResourcePlanning)及商业智能BI(BusinessIntelligence)等大型的复杂软件更是综合了管理科学、计算机科学、通信技术以及数学等各方面的知识,需要各类人员的协调工作才能完成。因此也就有必要从项目管理的角度去管理软件的开发和运行。从用户的角度来看,软件项目的生命周期应该包括项目前期的论证工作、项目计划、软件开发、运行、维护以及项目后评价。由此可见软件项目管理的范围不仅包括传统的软件开发过程,还应该包括开发之前的准备工作以及运行中的维护工作和对项目的总结工作。同时,在软件项目生命周期中存在着许多活动。根据活动之间的相关性,可以将软件项目的各种活动分为九大类。

(1)战略管理。根据用户的经营目标制定软件项目的策略,以便为其他各方面的活动提供指导。在制定项目策略的时候应该充分考虑用户和其他利益相关者的实际需求和市场因素。另外创造和谐的项目环境和连续改进也是战略管理的重要任务

(2)范围管理。其目的是控制软件项目的全部活动过程都在需求范围内,以确保项目各种资源的高效利用。成功的项目管理离不开用户、软件开发队伍和项目经理的一致理解和协调配合

(3)成本管理。软件项目的成本不仅包括开发成本,也包括开发之前立项阶段以及软件在运行中的费用。操作者的培训费用和项所使用的各种硬件设施费用也都是整个项目成本的一部分。这些成本都需要很好地计划和控制。

(4)时间管理。其内容有确定各项活动之间的时间相关性;估计各项活动的持续时间,跟踪各项活动的进展情况,动态调筷各项活动之间在时间上的协调。本文由中国收集整理。

(5)人力资源管理。在软件项目中应该为软件开发人员和管理人员等各类项目人员创造一个和谐良好的工作氛围。使他们能感到项目成功的把握和积极的工作心态,确保项目队伍的稳定性和连续性。

(6)沟通管理。沟通管理是一个收集、存储、配置和项目生命周期内所形成的各种信息的过程为了让每个项目相关人员及时得到所需的信息,需要很好地解决“什么时候、向什么人礼报什么的”的问题,此外软件开发队伍和用户之间的沟通也是沟通管理中的一项重要工作。

(7)风险管理。由于软件项目中存在着很多的不确定因索,也就必然存在着各种风险而且风险有可能造成不良的结果,对风险进行分析和监控贯穿于整个软件项目生命周期。

(8)质量管理。目前软件的质量还是一个模糊的概念并且难以衡量由于软件质量主要是在开发阶段形成的,因此软件项目质量管理的重点应放在系统分析、系统设计和编码阶段,走查、评审、调试和测试是保证软件质量的重要手段软件工程能力成熟度模型CMM(CapabilityMaturityModel)较好地解决了软件开发过程中的质量管理问题。

综合管理。综合管理的任务是对前面讨论的各类管理活动进行协调和控制,使这些活动相互配合。其核心任务是对各种方案进行评价,协调各方面的利益冲突确保项目总体标的最终实现。

三、软件项目管理的核心是全面客户满意

当前,不少软件业管理人上认为,软件开发的问题主要在软件开发的工程化、规范化和软件开发管理体制。他们按照CMM(CapabilityMaturityModel),IS09002的标准来建立他们的管理体系。这里有商业竞争的因素在起作用。但是,他们忽略了商业竞争中取胜最重要的因素—客户满意。他们没有考虑到他们的管理方法能否满足客户不断变化的需求。从长远来看,软件项目真正的成功是客户的全面满意。以客户满意为中心的质量是必需的。漠视质量或只关心产品/服务是否符合需要的方法再也不足以留住和获得客户。因此,软件开发项目组织必须先确定什么产品/服务可以让顾客满意,然后再努力满足客户的需求和期望。要实现此目标,组织必须识别对软件产品的各种特性中哪些是对客户的满意起决定作用的要素。例如,服务器操作系统软件,需要长时间稳定连续工作。稳定性则是该软件产品的关键要素。因此系统的开发管理围绕着这一关键要素来展开。尽管不少的组织明白没有客户一个组织就不能生存和发展,或者说没有客户就没有组织,但在项目实施过程中,仍然存在着客户满意的障碍:

(1)项目管理组织没有发展和完善对客户不断变化的需求和期望作出快速响应的能力。

(2)项目管理组织没有听取客户意见和建议的能力。

(3)项目管理组织努力倾听客户对项目的要求,却没有确认客户的需要和期望。

(4)项目管理组织不与客户保持密切关系,也不正视客户变更需求的可能性。这样通常会导致脱离客户,其后果则是失败,甚至最后客户不接受交付的成果。

软件项目论文篇3

关键字:软件项目管理需求分析系统设计

1.项目前期以及项目准备

在进行任何一项较大的项目时,首先要进行项目的可行性分析和研究,因为这些项目中的问题并不都有明显的解决办法,这样就很难在预定的时间、费用之内解决这些问题,如果这些问题没有可以行得通的解决办法,贸然开始这些项目,就可能导致项目的失败,造成巨大的损失。

1.1可行性分析

软件项目可行性研究的目的是用最小的代价和时间,确定该项目是否能够开发值得开发,其实质是要进行一次简化的、抽象的需求分析和设计过程,主要应从以下几个方面进行分析。

1.1.1技术可行性

对要开发项目的功能,性能和限制条件进行分析,确定在现有的资源条件下技术风险有多大,项目是否能够实现,现有的资源包括硬件、软件资源,现有的技术人员和技术水平,已经有的工作基础等,判断技术上是否可行,主要需要考虑以下几个问题:

(1)开发的风险即在给定条件下能否实现目标的功能和性能;

(2)资源的有效性;

(3)技术的发展性;

由于需求未经过详细的调研,存在模糊性和可能的变化,开发人员进行技术可行性评估时,存在比较大的风险,一旦出现估计的错误,将可能导致灾难性的后果。

1.1.2经济可行性

进行软件开发项目的成本估算以及了解取得的效益估算,确定该项目是否值得开发,对于大多数项目,衡量经济可行性,应考虑一个“底线”,同时应考虑公司的长期经营策略,潜在市场前景等因素。

1.1.3社会可行性

应考虑项目是否存在任何侵权、责任等问题,考虑在现有的制度、法规下是否行得通,包括合同、责任、法律等多种因素。

1.2需求调研

在项目前期工作中,需求调研是其中最重要的一个环节,今后的许多工作都依赖于需求调研的结果,需求调研的过程是渐进的,在可行性分析阶段,主要关注的是项目规模、范围和重点的功能,在项目进入正是开发流程以后,我们需要更加全面、准确地了解系统的需求不重视需求过程的项目队伍将自食其果,需求工程中的缺陷将给项目成功带来极大风险。如:无足够用户参与导致产品无法被接受;用户需求的增加带来过度的耗费和降低产品的质量;模棱两可的需求说明可能导致时间的浪费和返工;用户增加一些不必要的特性和开发人员画蛇添足;过分简略的需求说明以致遗漏某些关键需求;忽略某类用户的需求将导致众多客户的不满;不完善的需求说明使得项目计划和跟踪无法准确进行。

1.3项目团队的组织

建立项目团队是项目开发过程的开始,一切工作都是由项目团队的成员完成的在整个项目的运行过程中,需要很多不同的角色参与到项目中,完成不同阶段的任务。所以在建立项目团队的过程中要把握好人员角色的划分、特别人员管理与激励、监督等。整个人员的管理是项目管理的关键,因为人是活的,而项目是死的,只要人员管理妥当,项目开发一般是不会出什么问题的。

1.4项目开发计划

软件项目的特征之一就是需求的不确定性和开发过程中存在的技术风险,按照通常的方法,制定一个项目的计划应该是先根据项目的需求,进行详细的任务分解找出实现的方法,估计出项目的工作量,再根据项目资源的状况,制定出项目的计划。

但是,再现实的工作中,项目的时间表往往是事先确定的,给开发留出的时间也是事先定好的。而我们能够利用的资源,主要是开发的人力资源,也被事先基本确定了,在被确定的这2个前提条件下,我们如何根据项目的需求,合理地安排人力和时间,完成项目的开发,这是现实中项目经理经常遇到的问题如果事先确定的时间表是相对比较合理的,至少应该是我们够的到的。我们制定的开发计划才是有意义的,否则,按照这个时间表制定出来的计划只能失败的在这种情况下,项目经理唯一可以做的是对用户的需求进行剪裁,去掉某些耗时长而且不太重要的功能,或是在开发中适当降低质量要求,或许可以完成项目的进度。当然这必须最终要得到用户的认可。778论文在线

2.项目开发过程管理

2.1详细设计

在详细设计阶段,由于任务已经详细地分解,总体地解决方案和技术框架已经确立,详细设计地目的就主要是针对某个特定地模块或对象,根据需求,技术框架地要求和模块间接口,描述出我们实现功能的方法,主要内容包括:

(1)内部算法描述;

(2)内部数据组织;

(3)相关接口详细设计;

2.2设计评审

在设计完成后,必须安排设计评审以保证设计的质量,通常设计评审以小组内部的评审会的方式进行,参与人有项目小组内部的人员及其负责人,由开发者介绍其设计思路,其他人了解并对其设计质量进行评审。评审的内容主要包括:

(1)关键算法的可行性;

(2)接口是否符合概要设计的要求;

(3)技术清晰度是否符合设计标准;

(4)文档的完备性;

评审通过的设计,才能够开始编码工作,评审的结果应记录到开发文档当中。

2.3编码

在编码阶段,主要需要在编码工作结束后,进行代码审核,这项工作非常重要主要应该由项目小组的技术负责人完成,审核的目的并不是为了检验代码的正确性而是需要对编码是否按照规范进行审核。主要内容包括:

(1)变量、包、方法等的命名是否符合规则;

(2)注释是否填写完整,是否符合规范;

(3)代码的可读性,编写风格是否符合规范;

(4)是否有明显的造成系统运行低效率的处理方法;

(5)公共变量的定义和使用;

2.4调试

编码工作完成以后,通常需要开发人员自己进行单元测试,有些部分需要编写相应的测试程序。应该避免发生这类的情况,有些开发人员任务自己不应该进行测试工作,在编写完代码以后,只要编译成功,就直接提交成果,将测试工作完全交给测试人员去做,这样做不仅仅给测试人员增加了许多的工作量,同时增加了许多因为交流产生的时间,造成进度的延迟,管理人员应该杜绝程序员的这样的思想,同时在管理中予以考虑,可以将提交成果产生的bug数量作为考核程序员业绩的标准之一。

3.项目后期管理

3.1项目的验收

项目验收,是整个项目生命周期中最后一个环节。一般来说,软件项目的验收一般来说有2个阶段,第一个阶段是验收测试,当验收测试成功结束后,一般会有一个阶段的试运行阶段,只有当2个阶段全部结束后,整个项目才算真正结束,可以收回全部的工程款,该软件也进入其运行维护期。验收测试应按照软件的需求,质量要求进行测试验收,需要甲乙双方共同建立验收小组,或请第三方测试机构进行验收测试,在验收测试之前,开发方应提供一系列的开发设计文档供验收测试使用。

3.2软件维护

编程大师曾说“哪怕程序只有三行长,总有一天你也不得不对它维护。”,很

多软件产品不是一次性的买卖,比如在电信、金融等领域,有些软件系统要用十几年,对软件进行维护是必不可少的,软件公司的经理们没有哪一个喜欢被维护的费用吓一跳,但软件维护的代价通常是高昂的。对软件而言“维护”是个不太直观的术语,因为软件产品在重复使用时不会被磨损,并不需要进行像对车辆或电器那样的维护,软件维护是人们对既丰富多彩又会令人心酸的活动的统称,其中丰富多彩的活动是指那些反映客观世界变化,能使软件系统更加完善的修改和扩充工作,令人心酸的活动是指那些永无休止,并且改了旧错却引起新错让人欲哭无泪的工作。

参考文献:

1.邱菀华沈建明杨爱华等编著现代项目管理导论机械工业出版社

2002年10月

2.美理查德怀特黑德著领导软件开发团队电子工业出版社2002年5月

3.尼尔怀特著管理软件开发项目-通向成功的最佳实践电子工

业出版社2002年4月

4.刘积仁康晓东饶友玲主编软件开发项目管理人民邮电出版社

2002年2月

5.美JosephRaynus著CMM软件过程改进指南电子工业出版社

2002年3月

软件项目论文篇4

1.1课程培养

目标本课程开设的目标是使学生通过大型项目的开发,熟悉项目开发流程,理解项目管理的基本理念,灵活运用需求分析及系统设计方法,提高技术的使用熟练度,充分锻炼团队开发的协作能力,理解测试过程及Bug跟踪的流程,从而积累真实的项目开发经验,拉近与企业用人需求的距离。项目培养的能力体系如表1所示。根据TOPCARES-CDIO能值指标体系,本项目重点培养八项3级能力指标。

1.2项目内容和进度安排

随着软件行业的不断发展,主流应用软件的类型也在不断变化着,从最初的桌面应用到基于Web的应用,再到目前的电脑、手机客户端与Web端多客户端平台应用。本课程要求学生开发的项目来自于合作企业中最新的项目,以达到和市场接轨的目的。在课程进度安排如表2所示,包括准备阶段和增量开发阶段。课程共200学时,50次课,进度安排包括准备阶段和三个增量阶段,表2给出了一个增量的进度安排。项目准备阶段完成整个项目的构思,各个增量阶段,按照分析、设计、实施、运行和评审等步骤进行。

2项目实施(Implementationoftheproject)

项目教学实施过程主要采用情景教学的方式和分组教学的组织形式。项目实施尽可能模拟企业的开发环境,教师担当类似项目经理的角色,负责监控项目的整个进度和项目质量,将每个学生小组视为一个开发团队,让学生模拟企业中相应的工程师角色,在教师的指导下按照规范的软件开发过程进行项目开发,使得参与一级项目的学生获得更真实的项目开发体验,就业后能更快地适应企业工作。

3考核评价(Examinationandevaluation)

教师对各小组成员项目开发过程进行监控和打分,作为本课程的形成性考核,项目结束后安排统一的关于软件项目管理和软件开发等的闭卷考试,作为课程的终结性考核。各项考核的内容与本项目的能力培养目标相对应,如表3所示。这样,当学生完成了本课程的学习,可以从八个能力方面对学生情况进行全面的评价,对其今后的发展会比以往单纯的分数有更大的帮助。

4结论(Conclusion)

《计算机应用软件项目实训》是大连东软信息学院软件工程专业的一门非常重要的实践课程。本课程根据TOPCARES-CDIO能力体系提取八项三级能力作为培养目标。课程安排尽量模拟企业的实际情况课程内容和进度安排遵照软件开发的过程和模型,规定了各个阶段的目标和成果物,各成果物均提供样例或模板给开发小组;课程实施的过程采用分组的形式,小组成员根据项目开发的实际角色开展工作,使学生有最真实的项目开发体验。项目的考核与培养目标相对照,对学生的八项能力给出考核结论,帮助学生查缺补漏。

软件项目论文篇5

关键词:项目驱动法;软件测试;教学方法

作者简介:赵晓君(1979-),女,河南南阳人,郑州轻工业学院软件学院,讲师;黄艳(1976-),女,河南信阳人,郑州轻工业学院软件学院,副教授。(河南 郑州 450002)

基金项目:本文系郑州轻工业学院校级青年教师教学改革项目的研究成果。

中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)07-0101-02

随着软件产业的快速发展,软件系统的规模越来越大,功能实现也越来越复杂,导致软件中存在的缺陷数量大大增加,这些缺陷将会带来各种损失,甚至出现灾难性的后果。因此,如何保证软件质量已成为所有使用软件和开发软件的人们关注的焦点。软件测试作为软件工程的一个重要组成部分,是目前用来验证软件是否能够满足用户需求功能的唯一有效方法,是保证和提高软件质量的重要环节。为适应软件产业的发展趋势和满足软件测试人才的大量需求,目前已经有许多大学在软件工程专业添加软件测试课程或者添加软件测试专业方向。

软件测试专业包含多门专业课程,有“软件测试理论”、“软件测试技术”和“软件缺陷管理”等,其中,“软件测试理论”课程重点为初学测试的同学讲解测试的基础理论知识,主要包括软件测试基本理论、软件测试方法和技术等,在多门专业课程中占有举足轻重的地位。

一、“软件测试理论”教学现状

“软件测试理论”课程重点介绍软件测试的基本理论,因此整个课程主要以教师讲授为主,在教学的过程中存在以下问题:

1.教学内容理论性较强,难以调动学生学习的主动性

对于初学软件测试的学生,首先要向其讲授相关测试理论,使其建立系统的测试理念。

但是学测试的学生大都是理科生,喜欢操作性强的课程,“软件测试理论”课程的理论性太强,需要背诵很多概念性的知识,这对于他们来说是比较困难,不能激发学习的主动性,教学效果不理想。

2.测试方法和技术案例实际应用价值不足,学生很迷茫

测试方法和技术是“软件测试理论”课程学习的重点和难点,这部分内容仅靠老师的讲解和书本上的案例很难让学生深入理解掌握测试技术的内涵,学生在学习这部分知识时会产生迷茫:学习这些知识有什么用处,在具体的项目测试中,应该怎样应用这些知识?没有实际的项目案例做支撑,学生会失去继续学习下去的兴趣。

针对上面的问题,本文提出将项目驱动法应用于“软件测试理论”课程的教学中,学生在进行项目实践的同时,根据需要学习软件测试相关理论知识,这样有助于提高学生的学习主动性,有助于理论知识的牢固掌握,有助于提高学生的实践技术能力,改善该课程的教学效果。

二、项目驱动法

项目驱动法是目前中国教育领域中一种比较新的教育教学方法。

所谓项目驱动法,是师生通过共同实施一个完整的项目工作而进行的教学活动,它既是一种课程模式,又是一种教学方法。[1]这里的项目根据课程教学内容的不同所包含的涵义也不同。在“软件测试理论”课程教学中,项目即指一个已经开发完成的软件测试工作。通常,项目教学都是实践导向的和任务驱动式的教学。

在项目驱动模式的教学活动中,教师根据学生现有的知识水平和项目经验选择一个合适的项目,以项目实施为主线展开教学活动,把课程相关的知识点的讲解融入项目操作的每个步骤中。在项目实施的过程中,以学生为中心,教师主要做组织和指导工作,学生在整个项目的实施过程中处于探索知识的情景中,充分发挥主动性、积极性和创新精神,综合运用所学的知识和技能解决实际问题,最终达到有效地将所学知识系统化深入化的目的。

这种模式从根本上将传统课堂中老师满堂灌转变为“学生为主体,教师为主导”的教学模式。同时,学生通过一个具体项目的实践,感受到了真实项目管理的思想和团队协作的必要性,提高了学生的创新能力和项目实践能力。拥有真实项目的实践经验使得学生在择业时拥有很大竞争优势。

将项目驱动法应用于“软件测试理论”课程教学中,在课程理论教学中加入一个完整的项目测试实践环节,通过项目实践能够很好地激发学生的学习主动性,使学生经历了一个“先做,遇到问题,再学,解决问题,再做,获得经验”的学习过程,最终完成一个完整的软件测试实践,同时也学到了“软件测试理论”课程应该掌握的理论知识。这样,既解决了软件测试理论课程理论性太强的问题,又解决了测试方法和技术案例实际应用价值不足的问题;而且丰富了学生的实践经验,提高了软件测试理论课程的教学效果。

三、“软件测试理论”课程教学目标和教学内容

1.教学目标

通过本门课程的学习和实践,理解软件测试理论与原则;掌握主流测试技术和方法,熟悉测试用例的编制、熟悉软件测试的基本流程,熟悉软件测试过程中各类技术文档的编制规范,并能灵活运用测试技术解决实际问题。

对于一个具体项目软件,每一个学生都能够顺利完成如下手工测试流程:根据软件需求规格说明书撰写测试计划,设计测试用例、进行测试环境配置和测试数据准备工作、执行各种测试,撰写缺陷报告、跟踪并修复缺陷、进行测试评测,最后提交测试总结报告,达到软件企业对测试专业人才的要求。

2.教学内容

“软件测试理论”课程的教学内容主要包括软件测试基本理论、软件测试基本技术、软件测试过程和软件测试工具。[2]

软件测试基本理论包括软件测试、软件缺陷和测试用例的基本概念,测试的目的、测试模型、测试分类和测试流程。

软件测试基本技术包括白盒测试和黑盒测试;其中白盒测试包括静态测试和动态测试,动态测试又包括程序插桩、逻辑覆盖、基本路径测试等;黑盒测试包括等价类划分、边界值分析、因果图法、判定表法、场景法等。这些基本技术都是在进行测试用例设计时使用的。

软件测试过程是指执行测试的过程,通常分为四个阶段:单元测试、集成测试、系统测试和验收测试。

软件测试工具有多种:功能测试工具、性能测试工具和测试管理工具等。

四、项目驱动法的应用方案

1.项目的设计

实施项目驱动法,首先需要设计项目。项目的设计与选取直接影响到该教学模式的教学效果及学生的学习兴趣。“软件测试理论”课程项目的选取与其他课程又有所不同,学生要进行的操作是对现有的或者已经开发完成的软件的测试工作,因此在设计项目时应遵循以下几条原则:

第一,项目是现有的软件或已经开发完成的软件,软件中有部分明显错误,有部分隐藏错误;明显错误有助于提高学生的测试积极性,隐藏错误有助于启发学生进行更深入的测试。

第二,项目具有典型性,代表大部分软件的共性。通过该项目的测试,学生可以掌握大多数软件的测试流程和测试方法。

第三,项目中有多种情景元素,符合使用多种测试技术和方法,有助于学生在进行项目测试的同时,学习使用多种测试技术设计测试用例的方法。

第四,项目大小和难易适中。每个项目组的人数控制在3~5个人,设计的项目能使学生通过努力在一定的时间内完成。

根据以上原则,本课程目前选择的项目是《企业薪酬管理系统》。

2.项目驱动法的实施

本课程通过让学生进行企业薪酬管理系统完整的测试流程实践的同时,讲解测试需求编写、测试计划编写、测试用例设计、测试环境配置、测试执行、缺陷跟踪和管理、测试报告撰写等内容。课程授课方式主要是分阶段讲解测试过程和测试要求,每一个阶段开始,老师先讲原理,选择部分内容做例子进行讲解,然后学生比照例子跟着做;阶段内容完成时,学生提交完成的文档,老师选择典型的问题进行讲评,然后进行下一个阶段的内容,如此类推直至测试结束。

企业薪酬管理系统测试流程设计如图1所示。

本课程课时为60学时,根据图1系统测试流程图安排,基于项目驱动法的“软件测试理论”课程安排如表1所示。

在课程进行的过程中,必须严格按照项目的测试流程进行,测试流程为:先获取项目测试需求,撰写测试计划,设计测试用例,执行测试,提交缺陷报告并跟踪修复缺陷,最后提交测试总结报告。课程结束,要求学生提交项目测试报告,测试报告包括多个文档,整个流程中每个阶段的工作必须有撰写规范的文档提交,如:测试计划、测试用例、测试执行报告、缺陷报告和测试总结报告等等。

测试报告既体现了教师项目教学的结果,也体现了学生对测试知识技能的掌握水平。通过评价学生作品,找出学生在学习过程中的薄弱环节,进一步改进项目驱动教学的教学安排,使其能够发挥最大的教学效果。

五、结束语

本文针对软件学院软件工程专业的培养对象和教学特点,把真实项目引入“软件测试理论”课程课堂教学中,采用项目驱动教学法,从项目的需求评审、测试计划、测试用例设计、测试执行、缺陷报告、测试评测到测试总结一个完整的测试流程,交给学生组建测试团队,按照流程进行任务分配和管理,最终完成整个项目的测试工作。通过一个完整项目测试流程的完成,有效提高学生的学习和实践能力、解决问题的能力、团队协作能力等,使学生在掌握软件测试的各种测试技术和基本流程的同时,积累了一定的项目测试经验,为他们今后的就业打下了良好的基础。

参考文献:

[1]廖陈兴.项目教学在职业教育教学中的实践与研究[J].南昌高专学报,2010,25(1).

软件项目论文篇6

关键词:软件项目;风险管理;理论分析;方法探究

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)05-1198-02

1 概述

随着软件项目发展速度的不断加快,软件项目风险性表现的越来越明显,特别是对于大型的软件项目开发,应用先进理论、复杂技术、投入人力、资金等,并且新型软件开发要经过漫长时间,这些不确定性因素势必会埋藏更大的风险性,最终引起失败的风险。通过合理运用项目风险理论和方法,能够有效降低软件项目开发的风险,从而保证软件项目健康发展。基于此软件项目风险管理理论和方法受到越来越多人关注,掀起了软件工程领域内研究的热潮。作者通过归纳现代软件项目风险理论和方法的研究资料,分析了各种理论与方法的特点。

2 软件项目管理概念

在软件工程领域,研究者始终探索如何实现软件开发活动工程化,且合理利用工程项目的管理手段来挖掘软件工程项目中潜在的风险隐患。对软件项目风险管理概念简析的关键就是掌握其他工程项目风险管理,并且加以科学的改进和实际的运用。现代对软件项目管理概念最新的理解为:它类似于其他工程项目,在整个开发过程中隐藏不同可能发生的风险,某些风险可能摧毁整个工程计划。正确运用风险识别方法,尽可能降低风险对软件项目开发造成的危害,将此项活动称为软件风险管理。随着人们对软件风险管理概念不断深化,为软件项目风险管理理论和方法研究提供了有利条件。

3 软件项目风险管理的理论探究

3.1 基于Boehm的风险管理模型

Boehm通过公式RE=P(UO)*L(UO)来表达风险影响因素间量的关系。RE代表风险或风险带来的影响,P(UO)代表实现预期结果出现的概率,L(UO)代表不理想、结果造成危害性的程度。从风险管理步骤看,Boehm倾向于传统的项目风险管理理论,认为风险管理包括风险评估及风险控制两方面,风险评估是指识别、研究、等级设定,风险控制是指确定管理计划、处理、监督风险。

Boehm核心是指十大风险因素列表,主要是指人员缺少、进度安排不科学、预算不准确、需求随意改变等。根据各种风险因素的特点,Boehm制定给了针对性强的风险管理措施。在实际操作中,用十大风险列表为评判标准,归纳眼前项目相应的风险因素,评估完成后再实行对策,当召开讨论会上针对十大风险因素的处理进展进行归纳,改进原有的十大风险因素表,依此类推。

3.2 基于SEI的CRM风险管理模型

SEI的风险管理目标为:对所有引发不良后果的因素进行持续的评估;发现亟待需要解决的风险;实施控制风险的措施;评测并保证风险措施使用的合理性。SIE模型需要对项目生命期的各阶段均进行风险评定与管理,其风险管理包括五个环节:风险识别、分析、计划、跟踪、控制。图1给出的框架说明了采用CRM的基础活动量间的内在关联,强调项目开发过程实质是一系列不断反复进行的活动过程。各风险因素通常都要求遵照顺序完成所有活动,然而对有差异的风险因素所对应的活动既能是并发的用能是分离的。

上图箭头表明信息的逻辑流,而沟通就是信息流的核心与方法。其中风险识别是采用调查问卷完成的,问卷问题的要求是信息含量足够大,所涉及到领域要全面。风险分析侧重点是掌握所有风险在此项目中的出现概率以及后果危害性,从而产生上述的最十大风险问题。

3.3 基于CMM/CMMI的风险管理模型

CMM是指能力成熟度模型是基于SEI管理模型上的,其优点是能够对软件能力与成熟度的标准进行准确评定。其标准是经过知名专家论证后得出的,侧重点是开发过程的管理,是现代软件项目风险管理中应用最广的模型。能力成熟度模型依靠五个逐层递进的层次进行表示,具体是指起始级、可重复级、已定义级、已管理级、优化级,项目风险管理主要聚集于第三级水平。SEI将CMM进化成能力成熟度模型集成,这是对原有能力成熟度模型的改进。

在集成成熟度模型中,风险管理是第三级殊的过程域,是软件风险管理的关键构成部分,展现了风险管理的过程特性,进而将过程中各项风险管理原则呈现的淋漓尽致。基于CMM∕CMMI的风险管理模型的发展,起到了促进风险管理理论和软件过程研究为主导的软件工程的有机结合,为软件项目风险管理发展指明了方向。

4 软件项目风险管理的方法探究

4.1 软件项目风险识别方法

第一,风险清单法。Boehm已经对风险序列进行了界定,并编制了10大风险源清单。它已经明确了在软件开发生命期内,针对各个关键时期可根据10大风险源清单来调整,而且把风险管理纳入软件项目开发生命周期模型。第二,风险辨别法。此方法是从项目分类学层面划分风险,对其类型进行划分,从简单的清单列表转化为类数和问卷辨别过程融合,保证软件项目是完整结构。第三,问卷调查表法。此方法是建立专家设计风险管理问卷调查表前提下,对所有软件项目开发人员展开问卷调查,并对所获取数据做出处理。

4.2 网络分析技术方法

第一,计划评审技术。主要是根据项目进展情况做风险评估,一般需要所有时间都遵循三点分布原则,实际上这只是一种理想状态,在实际应用中不能达到,因此经常和蒙特洛仿真共同运用。第二,关键技术。此技术起源于Goldratt的制约理论,利用关键链替换关键路径的思想,即关键链项目管理。第三,Petri网技术。此技术主要用于研究离散动态事件,其特点是并行、共发、同步,多用于软件工程项目描述阶段,属于软件工程领域的基础技术。

4.3 基于Riskit的风险管理方法

此方法主要是说明项目中的风险因素及其关联,它被认为是风险管理的定性依据,因而存在于软件项目开发的全过程。Riskit的优点包括灵敏度高、操作简单、实用性强、结果可靠等,它建议有差异的结构与项目在运用它过程中要结合运行情况及时调整。并且将组织原有的风险管理实践、可利用的资源、项目的真实状况等均纳入考虑范围,以此明确项软件目风险管理的层次级别以及准确程度。

5 结束语

综上所述,随着软件开发规模的不断扩大,其风险因素会越来越多,实施风险管理能保证软件项目开发过程的安全性。然而,软件项目风险管理属于综合性学科,要想对其做到完全理解,必须从软件项目风险管理理论和方法研究着手,善于发现原有项目管理存在的不足,并能结合现代软件发展情况创新风险管理方法,从而为软件开发健康发展打下基础。

参考文献:

[1] 潘春光,陈英武,汪浩.软件项目风险管理理论与方法研究综述[J]. 控制与决策,2007(5).

[2] 赵蔷,解争龙,田俊华,郭新明.软件项目风险管理研究[J].计算机工程与设计,2007(7).

软件项目论文篇7

关键词:软件工程;案例教学;教学方法

中图分类:G642文献标识码:A文章编号:1009-3044(2011)13-3230-03

Teaching Reform and Research for Course Software Engineering

ZHANG You-wei1, MA fei2, MA Deng-wei1, HOU Yi-fan1, QI Xu-yan1

(1.Surveying and Mapping Institute, Information Engineering University, Zhengzhou 450052, China; 2.Nanyang Vadio and Television University, Nanyang 473000, China)

Abstract: Software Engineering is an important course to foster the students' capability of software development and software engineering qualities, which is significant for students to improve the ability of engaging in software development and step into project practice as soon as possible. In this paper, by proceeding from the practical experiences of teaching, the teaching actualities and difficulties of software engineering have been analyzed. Furthermore, several issues on the course have been discussed, namely, system of teaching contents, teaching methods, teaching mode with practice and way of check.

Key words: software engineering; case-based teaching; teaching method

目前,软件工程作为我院各专业的一门选修课,课程教学内容主要包括:软件危机、软件工程、软件过程、结构化分析与设计、面向对象的分析与设计、软件测试、软件项目管理、软件维护与软件质量保证等。本课程对培养研究生在掌握软件工程基础理论,传统的软件方法学、面向对象的软件方法学,以及软件项目管理等方面具有重要作用。通过本课程的学习,使得研究生掌握软件工程的理论知识及基本的研究方法,了解传统的软件方法学、面向对象的软件方法学的区别和优势,增强软件项目开发的能力,及时了解本学科的最新发展状况及前沿研究领域,从而使其具备在实践中能够正确、熟练地运用软件工程中技术、方法和工具的能力。

由于软件工程是一门综合性和实践性很强的课程,现行的教学内容,教学模式、教学实践等环节上都存在很大不足,且直接影响了课程教学效果和人才培养质量,因此,开展本课程教学内容和教学方法改革研究具有重要的现实意义和实践价值。

1 教学现状与困难

目前本课程的教学现状主要有如下两个特点:

一是传统的内容多,新技术新方法少。在目前的教学中,基本是按照软件生命周期各阶段的顺序来进行内容组织和讲授,对于UML语言、面向对象的软件工程、XP极限编程、RUP、Rational Rose、CVS等这些新的方法、技术和工具涉及很少。随着这些新技术、新方法的应用日益广泛,有的甚至成为主流,如果不及时引入到课堂教学中,容易造成教学和实际运用的脱节,不利于学生很快融入到导师的项目研发工作中;二是理论教学内容多,实践教学内容少。本课程教学时数为40学时,大部时间都在进行理论教学,仅仅安排了6学时进行试验,由学生独立完成,最后提交项目源程序和开发过程中各阶段的文档、报告等。在教学过程中我们发现过多的理论内容,只能使学生被动地听课,学生感到讲课内容抽象枯燥,常常是似懂非懂,有的学生甚至觉得本课程没什么实用价值,不太喜欢学,所以教学效果也不好。软件工程是一门工程性的科学,学生不可能靠听讲软件工程基本原理、方法和技术就学会开发一个实际的软件,而是要在实际的“动手做”和“真正练”中去体会软件工程思想,掌握软件开发方法和技术,最终才能熟练运用到真实的软件项目开发中。

目前本课程的教学难题主要有三点:

一是软件工程理论发展日新月异,教学内容更新速度跟不上发展。尤其是近10年来,随着IT技术日益深入到现实社会的方方面面,软件工程的新概念、新技术和新方法不断涌现,教学没能及时跟上软件工程理论、技术的发展。因此,如何实现学生所学知识与未来实际工作的无缝衔接,教学与实际需求紧密结合是本课程的一个教学难题。

二是教学缺乏实际项目背景,过多的理论教学容易陷入说教。完成本科阶段学习的学生,一般只学习过一些编程语言,编写单个程序的代码很少能够超过5000行,编写程序的数量和时间很是有限,大部分学生缺乏实际的项目开发经历和较正规的开发训练。然而软件工程课程教学内容是针对较大规模的软件开发而设计的、是全世界优秀软件工程师的经验教训总结,如果照本宣科,只进行书本理论知识的灌输,学生很难理解该课程的精髓,很容易对该课程产生虚无缥缈的感觉,使得教学流于形式,该课程变成了需要背诵记忆的课程,学生学无所获。因此,如何将教学内容变抽象为具体、变枯燥为生动,从而调动学生积极性与热情,是软件工程课程教学中的一个难题。

三是培养的学生缺乏团队开发意识,难以满足导师对研究生软件开发能力的需求。随着计算机硬件技术飞速发展,软件开发技术不断提高,软件复杂程度和代码行数呈指数级别增长。因此,一般工程项目或软件开发都必须以团队形式进行,个人英雄主义和黑客独来独往的思想对工程化的软件开发是很不利的。然而,目前本课程的实验和实践教学环节主要还是以学生个体为主,即使有一些团队训练项目,从检查验收结果看,往往还是由那些开发能力强的学生独立完成,最后进行成果分享。缺少对学生团队开发能力和职业素养行之有效的训练方式,培养的学生与实际需求存在较大脱节。因此,如何培养学生软件团队开发能力和软件开发职业素养,缩小教学与导师对研究生软件开发能力需求之间的差距,是软件工程教学中的又一难题。

2 教学改革与措施

2.1 构建先进的教学内容体系

结合学院各专业理论需求和测绘软件开发特点,我们构建在理论、应用、实践三个层次上的软件工程教学内容体系。理论部分主要讲解软件需求、软件设计、软件实现、软件测试、软件演化、软件过程、软件质量、软件配置管理和软件项目管理等软件工程课程核心内容。应用部分以当前流行的统一开发过程、面向对象技术和UML语言为核心,融入实践教学案例,覆盖RUP、Rational Rose、CVS、Junit等软件工程工具和环境,使学生掌握当前先进的软件工程方法与技术。实践部分要求学生以团队的方式协作开发一个具有一定规模的软件系统,建立支持小组开发的支持环境,让学生从“可实践”软件工程角度学习和运用先进的软件工程思想、技术解决软件开发中遇到的问题。

2.2 采用多样化的教学手段

1) 激发学习兴趣。兴趣是最好的老师,通过构建先进的教学内容体系以及课程内容精心组织,突出各知识点之间内在联系,建立软件工程知识体系的系统性和实践性,激发学生学习积极性;通过梳理软件工程的历史发展脉络、揭示隐藏在知识点背后的思想深度,激励学生主动探索、积极实践的学习热情。以学生为主体,采用启发式、讨论式等多种教学手段,让学生走上讲台――学生讲解、教师总结,从而活跃课堂气氛、增加学习热情。对遇到的问题,教师组织学生集体讨论、启发、引导学生解决问题,目的是培养学生合作学习和探究性学习的能力与热情。

2) 采用案例式教学。目前在软件工程教学过程中存在较多的理论内容讲授,这使得学生缺乏对软件工程知识的感性认识。为了解决这个问题,我们将近年来主持研发的一些专业软件项目和开发经验进行总结、抽取,梳理相关设计方案、技术文档和源代码等内容,形成一个个独立工程项目案例;同时也收集国内外经典软件工程教学案例(比如微软公司和IBM的),进行消化吸收。将这些案例(包括成功与失败的)提供给学生作为素材,实施案例教学。部分案例由教师在课堂上讲解,部分案例由学生分析、讨论、讲解。学生对项目成功与否,哪些地方符合软件工程思想,哪些地方违背了软件工程理论,怎样改进等问题进行讨论并提出自己的解决方案。这样,既培养了学生的实践能力,又丰富了教学手段。

3) 制作高质量电子课件。高质量的电子课件对学生专心听课、提高学习积极性、提升教学效果都有很大帮助。因此在制作课件时,要尽量使其具有动态性,尽量用图、表等来表现讲课内容,使整个课件具体生动。避免过多的文字堆砌,更不能将大段大段的课本内容搬上课件,否则只能使学生看着PPT就感觉“头大”,不愿意听课。能用鲜活事例、动画、图表的地方尽量不要出现过多的文字,这样既能讲清楚问题,也容易吸引学生注意力,活跃课堂气氛,对讲课内容的掌握也当然就更加牢固,对提高教学效果和授课质量也大有好处。因此,我们准备用OFFICE2007+FLASH重新制作电子课件和教案,下发给学生中文版课件和教案,而上课时采用英文版电子课件和教案。

4) 开展双语式教学。为了逐步培养学生适应英语授课和英语思考问题的意识,我们准备采用外国原版英文教材,课堂板书和作业都采用英语作为教学语言,教师进行英语提问,并鼓励学生使用英语回答。在讲课过程中,对易于理解的内容采用全英语讲解,不易掌握的部分用汉语讲解。同时给学生提供英文软件工程课外阅读资料,以使他们及时了解国际上软件工程的最新发展和动态。这样做既能活跃学生思路,开阔学生眼界,同时也能深挖掘学生想象力和创造力。

5) 使用英文原版教材。为配合双语教学,同时满足研究生课程教学要求,在众多软件工程英语教材中,我们选择了高等教育出版社出版的《软件工程――理论与实践》(第三版影印版),由Shari Lawrence Pfleeger博士主编,Pfleeger博士是世界顶级软件工程专家。该书完美体现了软件工程的两个重要方面――实践者的经验和研究者的理论,并将这两个方面进行了完美结合,而且针对软件工程中的关键问题,讨论了该如何分析并提出了解决方案。书中介绍了目前最新的软件工程技术和工具,引用大量实例研究和文献中的例子,讨论了他们如何影响我们构建和使用最终软件工程产品。

2.3 创新实践教学模式

课程实践主要内容是按照先进的项目管理和开发模式,由团队独立完成一个软件项目的开发,使学生得到较全面、系统和规范的软件工程实践训练,培养创造性的软件设计能力和综合分析、解决问题的能力。具体的设想如下:

1) 以案例为导向。大多数学生一旦进入到真实的软件开发项目中,往往不能快速下手、进入状态。因此我们结合学生专业方向进行了案例设计,案例分析过程引入“Learning by doing”的先进教学理念,引导学生通过分析,提出案例的解决方案。目前我们已经建成了一定规模的案例库,具体包括:软件演化过程支撑工具、专业人才数据支撑平台、支持软件并行开发的CASE系统、云雾剔除软件系统、科研论文平台软件系统、Linux应用软件开发工具、嵌入式GIS公共数据平台、月球表面地貌三维模拟系统、空中交通管制系统、医院病房监护系统、银行网络ATM系统和高速公路三维信息化系统等等。案例库的建成为学生项目实践打下了基础。

2) 结合兴趣选题。实践项目命题原则是:尽量结合教学、科研的实际课题,反映学院专业需求,以获得更好的工程设计训练。由于项目受到时间、开发环境、条件等限制,命题应从实际出发,确定课题的大小规模和难易程度。要求学生自愿组合开发小组,结合专业需求与兴趣选题。三十多命题为学生自主选题提供了不同应用领域空间,有利于激发学生主动参与开发实践的积极性。

3) 进行分段实施。实践过程按照真实的项目管理和开发模式进行,重点放在软件需求和软件设计两个阶段。在这两个阶段各安排1-2次项目方案讨论,小组内部交流与协作,考察方案对需求变更的适应能力,要求开发过程反复、迭代进行,从而培养学生“在实践中学习”的意识。

通过这种实践教学模式,不仅能够激发学生参与项目的积极性和主动性,引导学生去发现问题、分析问题,最后提出解决问题的方案,是培养学生进行探究性、协作性学习和团队精神的一种很好的模式。

2.4 改变考核验收方式

在考试方式上,我们准备改变以往的做法(卷面考核和项目实践考核并重),改为以项目实践考核为主,卷面考核为辅。最终课程成绩考核包括平时考核(10%)、项目考核(60%)和卷面成绩考核(30%)。平时考核包括平时作业、课堂讨论及出勤等;项目考核包括项目的完成情况、项目各阶段的文档和报告,源代码,可运行软件等;卷面考核采取闭卷笔试,主要考察学生对软件工程理论内容的掌握。同时对课堂学习表现优异的学生额外可以有一定数量的附加分,从而激发学生学习动力。项目考核成绩则由各阶段文档及其规范层度(20%)、软件功能及其是否可运行(40%)、学习态度与独立编程能力(20%)和项目设计报告(10%)组成。项目成绩由小组之间互评(40%)和任课教师评分(60%)共同确定,这样既保证了最终学生成绩的合理性,又激发了各组学生之间的竞争意识和团队意识,促进学生将理论学习与能力培养紧密结合。

3 结束语

由于软件工程一直在不断变化与发展,新的方法和技术也会不断出现,因此对软件工程的课程教学也应该不断进行改革、调整。目前,在学院相关教学部分的大力支持下,软件工程这门课程的教学改革计划与方案已经得到批准,我们准备从2011年下学期开始,对研究生的软件工程教学内容、教学方法和教学模式进行了上述一些改革和探索,从而提高课堂教学效果和教学质量,夯实学生软件工程素养和软件开发能力。

参考文献:

[1] 沈各军,顾春华.软件工程教学模式的研究和实践[J].计算机教育,2005(1).

[2] 沈各军,居德华,顾春华.探索软件工程硕士的课程教[J].计算机教育,2004(8).

[3] 文俊浩,王欣如,徐玲.软件人才培养的改革与实践[J].黑龙江高教研究,2004(4).

软件项目论文篇8

关键词:软件项目管理;软件工程;课程实践;课程考核方法

中图分类号:G642文献标识码:B

文章编号:1672-5913(2007)05-0026-03

1 引言

“软件项目管理”几乎是所有软件学院的必修课程,这门课程不同于传统的“软件工程”课程,但与PMBOK定义的项目管理也有所不同,它不是抽象的项目管理,而是软件工程项目的项目管理,必须结合软件项目的特点。

由于传统教学主要讲授概念、理论、方法,学生的实践能力较弱,在实践中也不知如何应用所学的理论方法,因此现在教改强调实践能力的培养,学生也急于实践体验,往往又忽视基本概念、理论与方法的学习。但是没有理论指导实践,实践会变得盲目、不系统,会走很多弯路。管理科学的理论是总结许多失败与成功的经验教训之后提炼抽象而来的,真正掌握了理论方法,实践才会更科学、更系统,同时也能避免走弯路。

“软件项目管理”的实践不像软件系统分析设计、数据库设计、面向对象设计等课程那样,让学生完成设计文档及编码实现就可以了。如果学生仅仅提交相关文档,根本无法体会实际的项目管理所涉及的各种问题,如计划、质量管理等,尤其是那些非文档能体现的管理问题,如沟通、人力资源管理等。

为此,我们在教学中,课堂讲授主要采取理论结合案例进行教学,学生在课程实践过程中模拟企业的项目管理,亲自体验项目管理,自己解决问题,并且参与到考核中。

2 软件项目管理案例教学

管理科学的理论大多来自于实践,但却是经过整理、抽象的理论方法。面对这些理论,学生看到的是文字、符号、图表,要将这些文字、符号、图表再用于实践、指导实践却是一件不容易的事情。

管理的课程不结合案例讲解很容易变成空洞的说教,无法引起学生的兴趣,理论方法也难以被学生理解掌握,但完全讲案例又容易变成讲故事、就事论事,曾有学生要求课上全部讲案例分析,但案例分析的基础是理论,如果不讲清楚理论无法系统、科学地分析案例。

因此,课堂教学我们采用理论结合案例的教学方法。授课以理论教学为主,但为了使学生理解、掌握理论方法,所有的理论教学都穿插小案例,而为了使学生对完整的项目管理有一定了解,课上会有一两个大案例分析使学生将所学知识融会贯通。

课上所选案例几乎都是国内的案例,而且大多数是授课教师亲身经历过的案例。事实上,影响一个项目的因素非常多,我们从文献资料上看到的案例描述是不完整的,所以很难对这些案例有真切的体会,在分析讲解时也会牵强,只有对自身经历过的案例,讲解时才能全面、深刻、生动。

此外,我们采取开放式的互动教学。由于每次开课选课人数都在200-300人,无法实时互动,但鼓励学生在课间提问及课后通过邮件提问,这样可以过滤一些绝大多数同学都明白的非常基本的问题,对于对同学都有意义的问题,教师会在课堂上给学生进行讲解。尤其是有多年实习工作经验的同学,会提出非常实际但在许多企业解决得不好或没有解决的问题,教师在课堂上对这些问题给予解答,使其他同学在学习的过程中也能感受到来自企业的实际案例。

3 通过课程实践软件项目管理

理论在抽象的过程中必须抽取部分,落到一个点上,但是实践能够涉及到许多点,而且相互关联影响,远比理论描述复杂得多。如何将理论变成可操作的方法、有效的策略?解决某一问题有许多方法,哪种最合适呢?

亲自实践获取的感悟是最深刻的。读、听所获取的感悟、理解只在表层,必须实践,才能深刻理解所学的理论方法。为了让学生有深刻的体会,必须让学生通过课程实践体会软件项目管理中的问题,利用所学的理论与方法解决这些问题。

课程实践主要是模拟团队开发的组织与管理过程,让学生组成小组,共同协作完成课程实践。课程实践不仅要求学生完成一些文档,还要求学生提交每次任务的组织过程,包括会议记录、问题与解决方案及效果,最后还需要提交一份将整个课程实践过程作为一个实践案例的案例分析。

下面分别从几个方面介绍作业实践的内容、方式与考核。

团队组建:课程实践要求学生自愿组成项目小组,五人一组,小组成员在每次作业中轮流担任项目组长,完成不同任务。小组人员不宜太少,如果太少,组员间协调的复杂度不够;如果太多,对于松散的学生小组而言,协调的难度太大,难以完成课程实践。

团队组建完全由学生自己组队,可以采取招聘的方式。比如,在学院网站上招聘自己需要的组员。一般,有项目经验的同学喜欢组成一个小组,没有项目经验的同学往往组成一个小组,但是由于这些没有项目经验的同学非常认真、投入,反而在实践过程中收获更多,完成作业的质量也更高。

选题:团队组建完成之后,每个小组通过讨论选择一个虚拟或实际的软件项目,以此项目展开整个课程实践。课程实践中途不允许更换项目,这样,学生在选择项目时就要认真分析讨论。

作业内容:课程实践要求提交五份作业,相当于完成五次任务。五次任务分别是针对所选项目完成以下工作:

(1)立项报告:对所选项目进行技术、市场、经济等各个方面的可行性分析,重点是确定项目的目标、范围、关键技术等。立项报告是项目管理的纲要性指导文件。

(2)工作量估算:这是项目管理的的基础,项目的计划、任务的分配、成本等都依赖于工作量估算。作业要求利用课程讲授的估算方法,先对项目规模进行估算,在规模估算的基础上,利用课程讲授的估算方法进行工作量估算。

(3)项目计划:项目计划包括过程计划、资源计划、文档计划、风险计划、质量计划、人力资源计划及进度等多项计划,要求学生在工作量估算的基础上制定计划。

(4)任务分配:是在工作量估算和项目计划的基础上,将任务进行合理分解,并且在一定的时间约束下分配给每个组员。

(5)十大风险清单:每次作业分为两部分,一部分是提交上述文档,一部分是提交作业过程记录文档,包括会议记录、所遇问题及解决方法等。

轮岗:为了使每个同学都能够深切体会到项目管理中的各种问题,要求每个同学都做一次项目经理,在其他作业中担任组员。在做项目经理的过程中,每个学生体会收获都不一样,每个同学遇到的问题也都不一样。当遇到问题时,学生可以向教师咨询,但是教师不参与解决问题,完全由同学自己解决问题。

这种方式使学生真正体会了团队沟通协作。许多问题来自于沟通,而沟通带来的问题往往与人的性格有关,而非技术或能力,这使许多同学意识到沟通的重要性,也意识到自身素质在团队合作中的重要性。

通过角色的轮换,使学生体会项目经理的职责与权利,体会组织、领导一个团队协同工作的各种问题,同时也学习如何被领导,如何与他人合作共同完成一项任务,使学生从领导者与被领导者两种角度体会软件项目管理。同时,每次作业也都训练学生完成软件项目管理中的重要工作,如立项、项目计划、软件估算、风险管理等。

考核方式:教师在收到作业后,给每个小组打分,这个分数是项目组的成绩,也是项目经理的成绩。然后,将成绩发给同学,由项目经理给每个组员打分。项目经理根据组员在本次作业中的表现给组员分配成绩,遵循的原则是小组平均成绩不超过小组成绩。

为组员分配成绩作为项目经理的一种职权,不仅帮助项目经理在整个任务执行中能够有一定的管理力度,同时也让同学体会如何正确使用职权。当小组成员对项目经理的成绩分配有异议时,可以向教师提出申诉,由教师经过调查进行协调,或给予仲裁。

教师对小组作业考核的指标包括所提交文档的质量、过程文档的质量、解决问题的方法、以及提交作业的时间等。项目经理对小组成员的考核标准包括工作量、完成任务的质量等。

作业讲评:教师会对每份作业批注,明确指出哪部分完成得好,哪部分存在不足,应该如何改进。在下次课堂上,教师会讲评优秀作业和完成质量较差的作业,让学生知道差距,从实例中学习如何改进。

4 课程实践效果分析

“软件项目管理”课程经过近十轮的教学,课程实践也在不断改进中。但无论怎样改进,课程实践的效果很大程度上取决于学生的投入。一些小组为了完成作业经常一起讨论到凌晨一两点,他们在考核时也很认真,项目经理会认真根据每个小组成员的工作给予合理的成绩,这些学生反映通过课程实践真正体会了软件项目管理。而一些小组却可能每次作业委托一个同学完成,最后的成绩每个人都是平均成绩,这些学生大多数是工作繁忙的在职学生,他们由于工作繁忙难以投入大量时间与精力。

在课程结束时提交的课程实践案例分析中,学生收获最大的是对于沟通管理的理解,以及作为项目经理的问题解决能力的重要性的认识。当然,也实际训练了作业所要求掌握的知识与方法。

本课程实践没有要求学生提交项目的需求分析文档、设计文档、代码等,但要完成工作量估算,至少要完成需求分析。无论如何,没有要求学生实现软件系统,学生还不能完全体会到软件项目管理中的问题,尤其是与技术、开发相关的问题。所以,经过几次课程实践之后,本课程的课程实践与分析设计课程的作业结合起来,要求两门课程的项目小组一样,用同一个项目完成所有作业。这样,学生就可以在课程实践中完整体会软件项目管理。

参考文献:

[1] [美] 斯蒂夫・迈克康奈尔.快速软件开发[M].北京:电子工业出版社.

[2] [美] 斯蒂夫・迈克康奈尔..微软项目求生法则[M].北京:.机械工业出版社.

[3] [美] 爱德华・.尤登.死亡之旅超常规软件项目的开发实践[M].北京:电子工业出版社.

[4] [美] 罗伯特・格拉斯.软件开发的滑铁卢重大失控项目的经验与教训[M].北京:电子工业出版社.

收稿日期:2006-11-14

上一篇:儒学思想范文 下一篇:入门教学范文