软件工程实训总结范例6篇

前言:中文期刊网精心挑选了软件工程实训总结范文供你参考和学习,希望我们的参考范文能激发你的文章创作灵感,欢迎阅读。

软件工程实训总结

软件工程实训总结范文1

1软件工程课程教学中存在的问题

在目前的软件工程教学中主要存在以下三个方面的问题:1)师生缺乏实际软件开发经验.这表现在两个方面,第一,学生缺乏软件开发经验,特别是团队协作的软件开发经验.因此,难于理解软件开发流程的重要性.第二,教师自身从事软件项目开发经验不足,对于软件工程理论、技术、方法的理解不足,不能深度理解软件工程的核心思想,在教学中缺乏灵活应用的能力.2)教学与实践环节脱节.在传统的软件工程教学模式中,对软件工程中基本概念、原理、方法以课堂讲解为主,教师处于教学的主导地位,学生处于被动地位,被动地接受和灌输.学生实践时间受限,无法将课堂上所学的软件工程理论应用于实际软件开发中,难以做到学以致用.据统计分析,以讲授为主的教学中,学生接收的知识仅为老师讲授内容的5%[1].3)教材内容陈旧.软件工程方法随着科技的进步和观念的更新,软件工程教材中主要集中于软件工程的方法方面.对在当前软件企业中的工程项目管理(PMP)、能力成熟度模型集成(CMMI)等,在软件工程教材中鲜有体现.这使得学生在学习实践中对于软件项目风险等缺乏认识,在一定程度上制约了课程的教学效果.

2软件工程教学改革的方法和内容

2.1CDIO理论

CDIO(Conceive(构思)、Design(设计)、Imple-ment(实现)、Operate(运作)是2001年由美国麻省理工学院联合瑞典的查尔姆斯技术大学、林克平大学以及皇家技术学院等4所高校,共同开发的一种全新工程教育理念[2,3].CDIO的方法论是“基于项目的学习”和“做中学”,是让学生以主动的、实践的、课程之间有机联系的方式学习.CDIO工程教育注重培养学生掌握扎实的工程基础理论和专业知识,提倡将教育过程放到工程领域的具体情境中.一个工程项目从立项、需求分析、设计、实施、运行到维护的每个环节,经历着构思、设计、实现、运作的过程,和CDIO理念的主旨不谋而合.基于CDIO的教学理念,它将以往以传授知识为主的传统教学理念,转变为以解决问题、完成任务为主的多维互动式的教学理念;将再现式教学转变为探究式学习,让学生通过运用所学知识和经验来完成一系列具体的任务,达到熟悉并掌握教学内容的方法.基于CDIO的教学法的核心是以学生进行主动学习,辅以老师的指导,整个过程用项目任务进行驱动.

2.2教学方法和教学内容的改进

针对软件工程课程教学中面临的问题,我们采用基于CDIO的教学模式,其关键在于“基于项目的学习”和“做中学”.在实践教学中以任务驱动老师教学,学生以完成具体项目任务为学习目的.在整个教学过程中采用构思—设计—实现—运作这四个环节来推进课程改革的进行,需要解决学生缺乏软件开发经验,课程实训和新技术新技能的缺失等三个方面的关键问题.在教学中我们针对软件工程的主要问题采用如下的措施与步骤来实施.1)缺乏软件开发经验的解决办法缺乏软件开发经验最有效的解决办法是让学生参与到软件开发过程中,从实践中体验并领悟软件开发的各种经验教训.这种软件在开发的实践中所学习到的知识与实践者在软件开发过程中所从事的角色相关.软件开发的经验在以团队合作开发的项目实训中至关重要,特别是项目经理的角色,他不仅涉及到项目资源的人员工作的协调,资源的调配,而且需要他按照推进项目开发的时间计划来实施.对于这种能力的获取,很难依靠学生以前的软件开发经验.因此,在课程教学中,我们引入软件工程教学CAI软件,通过游戏角色扮演的方式使学生获取软件开发经验.引入国外软件工程辅助教学软件SimSE[4],该软件以游戏的方式来解决学生缺乏软件开发经验.SimSE中提供了项目经理,开发人员,测试人员,文档人员等角色,每一个角色的能力不同.同时,SimSE提供了不同软件开发模型,如瀑布模型、增量模型、RUP模型等.学生在选定角色之后和任务之后,来对项目中的各个角色和任务模型的进行安排人力与物力资源的安排,确保能够按时完成任务.在实训之前,根据所选择的软件开发模型,我们要求项目经理提交CAI软件的角色扮演报告,并与项目小组的成员分享.小组的各个成员也要分享不同角色使用的体会报告.经过不同开发模型的角色体会,学生逐渐明白这些模型之间的区别,熟悉了项目团队各个角色的任务,同时懂得了成员之间的分工协调的重要性,为后续的软件项目实训教学做好了准备.2)软件工程的实训项目及评价软件工程实训项目是解决教学与实践环节脱节的有效办法.我们采用实训教学与理论教学同步开展的方式.在教学中的案例部分有来自于经典的案例,也有一部分来自于学生实训的项目开发.软件开发实训过程及实训结果的评估如下:项目任务的安排.项目任务的选择是关键的一步,将实训课程设计与个人兴趣结合起来,就能够充分调动学生动手实践的积极性.首先,在教学班级中让学生按照4—6人的规模,自由组合成项目团队,并选出项目经理,明确团队成员在项目开发中的角色.然后,以项目团队为单位进行开发题目的选择.教师提供的开发题目尽可能与当前的信息技术发展相适应,如手机App,网上书城,微信应用开发等.同时,也可以让学生根据项目的兴趣爱好来自选题目.这几种实训题目的选择方式就能保证学生团队选择到感兴趣的项目.在项目选定之后,教师指定采用的开发模型,让学生按照开发模型的要求实施项目的开发.项目任务的引导与小结.在项目启动后,项目开发过程以学生为主导,按照既定的开发模型的步骤和开发时间计划进行,学生在软件工程的基本理论和规范流程指导下大胆去实践,并对照SimSE中获取的经验,这样学生在完成任务的过程中进一步熟悉、理解并掌握软件工程知识.教师的任务是监控学生的阶段任务是否按时完成,在学生遇到问题时,采用统一点评与项目团队单独研讨相结合的方式进行指导.通过这一步,学生能够了解本团队的问题如何解决,同时也能够分享到其他团队解决问题的经验教训.项目任务的总结.在项目开发任务完成验收时,严格按照在项目启动初期的客户需求来进行项目验收.项目验收小组由学生代表和教师组成,验收时同时考核项目团队和团队成员.验收团队对各个项目团队的产品进行评分,这个评分包括项目完成情况和项目过程文档输出以及项目团队沟通文档等;项目经理根据项目成员对项目贡献度的情况给出项目成员的评分.教师对各个团队的任务进行点评,对其中遇到的问题给出解决建议.通常,项目实训任务分为两轮.第一轮项目任务的目的是让学生基本熟悉和了解在软件工程思想指导下的软件开发的规范流程.学生在第一轮项目开发时会遇到各种各样的问题.经过第一轮的任务验收与总结之后,在第二轮项目开发过程中,学生就能够熟练应用软件工程的理论知识来指导软件的开发.3)教材内容不完善的解决办法在教学过程中,除了学习教材的主要内容以外,向学生介绍目前软件行业主流开发技术、管理技术以及软件开发中使用的经典工具等,这样能够开拓学生的视野,促进学生的探索与学习.在软件工程的课程教学中补充学习关于CMMI[5]的知识,CMMI是衡量一个企业软件开发管理水平的一个标准.许多软件企业都想获得CMMI认证,其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件.其所依据的想法是:只要集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件开发中的困难.CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面.在许多大型的软件开发企业中,要求项目经理取得PMP资格证,并在实际的软件开发过程中灵活应用PMP的知识来指导项目团队进行软件的开发全流程.而学生缺乏以PMP来指导补充软件开发企业中软件项目管理(PMP)方面的知识[6].我们在教学中以学生组织春游为例,将工程项目管理的整合管理、范围管理、时间管理、成本管理、质量管理、人力管理、沟通管理、风险管理和采购管理等9大知识领域结合起来分析.项目管理这方面知识正好可以用来指导软件工程实训的项目软件开发.在软件工程相关的教学案例中我们采用一些企业软件开发的实际案例来进行教学分析,分析在这其中哪些环节中使用了在课堂中学习过的知识点,哪些是补充的知识点.学生会根据自己的兴趣和特长,学习一些新知识,为自己专业方向的定位和就业选择打下很好的基础.

3结束语

软件工程实训总结范文2

关键词:软件工程(会计学) 复合型 会计信息化 人才培养

一、引言

会计电算化、会计信息化、云会计等概念或名称的出现适应了信息化发展的需求,已被普遍接受和认可。在管理学科下,目前设置有会计学(会计信息化)、审计学(审计电算化)等专业。与此同时,在大连交通大学、江西理工大学等院校明确设有软件工程(会计学方向),该专业方向在质疑声中走过多年,在培养复合型、应用型会计信息化人才的道路上创新出了一种新的模式。

二、“软件工程+会计学”人才培养的特点及隐含的问题

“软件工程+会计学”在实际教学中可趋向于两个方向的培养,即具有软件背景的会计学方向和具有会计学背景的软件工程方向,无论学生选择哪个方向,其人才培养都具备一些特点和不足。

(一)专业的新颖性

相比授予管理学位的会计学(会计信息化)专业而言,软件工程(会计学)是在工科背景下探寻出的一种培养会计信息化人才的创新模式,是将软件工程技术赋予会计行业背景,使其具有了专业生命力,符合时代的要求。可以说,软件工程+背景方向培养模式的新颖性决定了该专业在目前环境下还存在着诸多问题和不足,如在目前环境下还未得到社会的普遍认可,主要表现为高考报考时的“无目的填报”和就业、考研时“尴尬专业定位”。目前,软件工程(会计学)主要是授予工学学位,被认为是计算机类专业,因此报考公务员、银行、事业单位时不能填报会计岗位。但是,我们要坚信背景方向的复合培养模式具有时代先进性,适应了当前和未来信息化发展的趋势,将迎来更大的机遇。

(二)学科复合性和交叉性

软件工程(会计学)横跨工科和管理学科,是将计算机技术与会计学知识相结合的交叉性学科,融合了软件工程、计算机程序语言、财务会计、企业管理、法律、经济等多学科知识。早在2009年,财政部就提出了要打造一支熟悉国际规则、掌握企业管理、信息技术和会计业务的复合型会计信息化人才队伍的要求,而软件工程(会计学)的复合性完全符合了这个要求。

但目前在实践教学中,软件工程和会计学复合性及交叉性实际操作难度较大,主要表现为:(1)受学分限制,复合型课程数目和学时数有限,难以深入学习;(2)计算机课程和会计学课程往往是完全独立的体系,日常教学中易呈现“两张皮、无交叉”;(3)既懂计算机又懂会计的教师队伍薄弱;(4)目前大多数学生只是单纯地学完计算机和会计类课程,没有主动将两者有效进行结合的意识;(5)社会对会计信息化人才的高端有效需求还比较弱,大多数只是停留在会计软件的应用操作上。

(三)专业课程的难度性

1.课程设置的难度性。软件工程(会计学)专业课程设置主要包括计算机类课程、会计类课程和交叉类课程,其设置难度系数较高,主要表现为:(1)软件工程(会计学)专业的学分相对于其他专业较多,具体表现为课程多且很多都是高学分的课程;(2)目前在高校没有统一的课程设置标准;(3)课程设置偏重于计算机类还是会计类没有准确的定位,各分一半显然效果不佳,但过分偏重一方,另一方则会较弱,以致无专业深度;(4)软件工程专业偏重于实践应用环节,往往大四一年是在外实习,从而使在校学习的时间大大减少,课程设置难度大大提升,很多课程更处于很难取舍的状态。

2.课程学习的难度性。从学生的角度看,学好跨学科专业难度较大,特别是这种横跨工学和管理学两个大学科门类的专业,这是因为:(1)学习该专业的学生中有一部分为文科生,学习离散数学、C语言、Java语言等相关计算机课程难度较大,有的无兴趣,勉强通过考试而已;(2)软件工程(会计学)专业课程较多,很多是高学分,这也无疑加大了学生学习的难度,在一个学期内要吸收和消化平均十几门课程知识,难度较大。

3.学习思维的跨度性。计算机相关课程知识多属于显性知识,且结构化特征显著,而会计管理类知识多属于隐性知识,很多是需要经验的体会,两者之间的差异显著,势必会造成初学者无法适度地转化学科意识,从而增加学习的难度。

(四)课程学习的基础性

大学四年的课程中涉及计算机类和会计类的核心课程,课程量大,学分高,难度较大,但是并不是“难不可攀”。因为开设的是专业核心课和基础课,对基础知识的考核要求较高,考核难度性较大和专业深度较高的学科知识占较少比例,因此经过一段时间的学习,完全可以顺利通过考核和很好地掌握基础性知识。而且,未来的工作所需要的学科知识正是建立在这些基础课程之上,更深度的知识需要在实践工作中不断地学习和摸索。

(五)课程学习易出现“尴尬现象”

软件工程(会计学)目标是培养出既懂计算机又懂会计的复合型人才,最佳效果是培养出“强计算机、强会计”的人才,但没有学科思维跨度和因兴趣偏向,易造成“强会计、弱计算机”和“强计算机、弱会计”,最差效果是“弱会计、弱计算机”。因此,在学习中切忌只关注某一个方面,或眼高手低不注重基础知识的学习,更应该在课余时间自我充电,注重专业的深度,防止这种“尴尬现象”的产生。

(六)就业前景乐观

软件工程(会计学)专业面向现在和未来的国际软件市场、财会管理市场对人才的需求,培养具有较强工程实践能力和创新能力的高素质、实用型、复合型软件工程管理、高级会计人才。学生毕业后可以在IT行业从事软件系统分析、开发和维护等软件项目管理工作,也可在证券公司、银行、保险等公司和企事业单位会计专业领域从事软件开发、运用及会计、财务管理等工作。

(七)专业继续深造可扩展性强

软件工程(会计学)作为复合型专业,其毕业生在进行继续深造时可选择的专业面较大,包括:(1)工商管理学科下的会计学和企业管理二级学科,其中最适合的研究方向为会计学下的会计信息系统、企业管理下的财务管理信息化;(2)管理学科与工程学科下的管理信息系统研究方向;(3)会计专业硕士(MPACC);(4)软件工程专业下的企业信息化方向(学术和专硕皆可);(5)其他相关专业,如金融学等。

(八)应用性强

软件工程(会计学)是应用性较强的专业,通过交叉性课程进行理论上的融合是远远不够的,要想真正地培养出既懂会计又懂计算机的复合型人才,需要在软件的开发和设计实践中将所学的专业知识进行融会贯通。

三、优化“软件工程+会计学”人才培养的新思路

(一)提升专业认知

随着当前信息化建设的推进,软件工程与行业背景融合成为必然趋势,因此,政府、高校、企业等社会各界都应逐步达成共识:无论是从哪个学科复合而来的会计信息化毕业生,都应该可以和传统学科专业一样,在毕业时享受同等待遇的同时可有更多的选择空间。

作为软件工程(会计学)专业的学生应充分认识到专业的特殊性和复合性,应“韬光养晦、居安思危”,坚信一个理念,即复合型专业的明天是光明美好的,而走往美好明天的道路是曲折的,不断推进该学科领域的发展和深入。

(二)校企合作创建应用型特色班

软件工程(会计学)专业培养出的毕业生将有大部分学生从事会计软件相关工作,因此学校有必要继续深化校企合作模式,将一批有实力、有影响的商务软件企业引进学校,走向课堂,实现“校内培训、校外实习、推荐就业”全方位的互利合作模式。还可以仿照中外合作办学模式,与大型软件工程共建会计信息化特色班,在每个学期1-2门课程由软件公司的工程师进行授课,真正实现教学与实践接轨,培养复合型和应用型的会计信息化工程师。

(三)推进双学位式培养模式

鉴于本科四年制的限制,学校可采用双学位的培养模式提升学生的竞争力,对于那些有精力和能力的学生而言,可以开设会计学、财务管理等管理类专业的二学位,着重开设非会计核心类的其他相关课程,本着不重复设置课程的原则,在学生修得一定学时,获得相应学分的前提下授予管理学第二学位。毕业工作时,工学和管理学双学位证书势必会缓解软件工程(会计学)类似专业的尴尬局面。

(四)适时转换学科的思维模式

作为软件工程(会计学)专业的学生在进行专业课学习中,应学会在计算机学科和管理学科中进行思维的灵活转变,对计算机学科中的结构化知识加强记忆并总结出规律,对管理学科中的非结构化知识应加强理解并与实践案例相结合。

(五)注重交叉性课程的学习

在学习计算机课程和会计学课程时,应防止“两张皮”和单一地偏向某一个方面的学习,应注重交叉性课程的学习,将计算机的思想与会计、管理的理论与实务相融合。而且,在进行交叉性课程学习时,应淡化知识的简单叠加,强化知识的整合和交叉,应突出会计、审计、财务管理等管理知识的特色,应重视信息系统的需求分析和设计,并通过案例分析等实践环节强化知识的整合。

(六)强化专业基础知识的学习

虽然软件工程(会计学)的课程较多且难度较大,但是学科基础知识足以撑起学科的框架和满足未来工作的需要,因此在学习的过程中应加强专业基础知识的学习,不应“眼高手低”,更不应该“妄自菲薄”,认为自己什么都没有学到而失去专业的学习兴趣。

软件工程实训总结范文3

关键词:就业;教学改革;实训

中图分类号:G718 文献标识码:A 文章编号:1672-5727(2013)10-0165-02

2011年就业蓝皮书的调查结果显示,大学毕业生认为专业教学中最大的问题是实习和实践环节不够、课程内容不实用或者陈旧。如何提高学生的实践技能水平,满足企业和社会需求,使学生“就好业,好就业”成为当今高等教育亟待解决的问题。

实践是检验真理的标准

实践是检验真理的唯一标准,是验证理论的唯一途径,理论教学配合技能训练是人才培养的基本途径。

实践教学是全面提高学生素质的重要教学环节,能够培养学生运用所学基本知识进行工程设计的能力,以及创造能力、开发能力、独立分析和解决问题的能力。

通过实践训练,提高技能水平,才能够更好地实现教学培养与社会需求的对接,因此在学生培养过程中应该不断加强实践环节的教学比重,在学中做、做中学,逐步实现实践教学常态化。

在高职教育过程中,需要转变观念,加强实践教学的投入。理论教学需要以应用为目的,以“必需、够用”为度,真正做到理论教学为实践能力的培养服务,真正做到理论与实践紧密结合。通过不断加强实践教学的投入,使学生能够通过在校的理论和实践学习达到企业的用人要求。

有效的实践教学

应用型人才需要有较强的专业技能,而专业技能的培养与实践教学是紧密相连的。实践教学是培养学生的专业技能、职业素养、创新意识等能力的重要途径,最能体现人才培养的应用型特色,是高职高专教育的核心内涵之一,因此一定要给予重视。

中原工学院软件学院于2004年开始专科招生,2008年开始本科招生,目前在校学生达到一千七百多人。学院在实践教学方面经过多年探索,积累了一些有效经验,逐步形成了独具特色的实践教学办学机制。学院主要采用强制学习与自主学习相结合、集中学习与分散学习相结合、校内学习与校外学习相结合等不同方法,实现了较好的实践教学效果,学生动手能力强,普遍受到用人单位欢迎。

(一)课内上机

一方面,加大课内上机时数,为学生争取更多的集中实践机会;另一方面,尽可能采用上机考试,进一步提高学生对实践学习的重视程度。通常情况下,上机学时占该课程总学时的1/3~1/2。因为具有足够的课内上机时间,学生的实践问题通常能够及时解决,其获得的成就感也比较强。

(二)实践训练

每个学期开学初,进行为期1周到3周的实践课题,目的是对前一学期所学的知识进行整合。为提高实训质量,教师所带学生通常控制在30人以内。具体执行步骤如下:(1)申报课题:任课教师于前一学期的第13~14周通过软件应用系统申报课题,经管理员审核后的项目将提供给学生选报。(2)网上报名:前一学期第15~16周,学生使用同一系统选报课题,允许学生自带题目,但需提前告知辅导教师并由教师登记到系统中。(3)指导教师与学生见面并分配任务:指导教师安排时间,集中所带学生,通过讲解课题使学生熟悉课题需求,同组成员合作并分工,了解自己的课题任务。(4)开始实践:新学期前三周安排为实训教学时间,实训开始前首先需要为实训学生安排固定机房、机位,项目辅导教师作为项目经理对课题进行组织协调并进行辅导。(5)中间检查:学院组织相关人员随机检查,目的是进一步督促学生努力学习。(6)评价:带队教师验收学生系统后,批改报告并给出成绩(如图1所示)。

学生从一年级到三年级经历五次实践课题的锻炼,每一次实践课题紧密结合前一学期的理论学习,对前一学期的学习内容进行巩固及整合,所开展的实践课题逐层递进,且各有侧重,学生通过系统化训练,积累了大量实践经验。

(三)IT行业社会实践

IT行业社会实践的教学目的是通过社会实践,使学生了解IT行业技术发展趋势,同时培养学生的人际交往、语言表达等能力,树立自信心,提高个人综合能力和素质。

IT行业社会实践一 参观IT企业,目的是通过参观IT行业中的一些知名企业,了解行业发展及企业需求,明确学习目标。IT行业社会实践一般安排在一年级的第二学期中间,学院分批组织学生参观当地知名IT企业,要求学生参观后写总结报告,具体执行步骤如下:(1)提出方案:教学执行部门提出参观方案,包括参观时间、参观班级、带队教师、批改报告教师等。(2)联系公司:教学管理部门根据参观方案联系合适的IT公司。(3)进行参观:相关部门联系好车辆、确定好路线,组织学生分批参观企业。(4)提交报告:参观结束后,相关教师督促学生提交总结报告并给出成绩。

IT行业社会实践二 二年级第二学期的暑假,学生将被分散到全国各地,进行为期2~3周的项目锻炼,目的是提高学生专业技能,积累实践经验。具体执行步骤如下:(1)提出教学目标:教学执行部门根据学生学习程度,提出关于实践项目的基本要求等。(2)提交教学方案:教学管理部门根据实践要求,联系有关IT公司,并要求对方提出执行方案。(3)学生报名:采用自愿的方式,综合考虑公司情况、个人需求,选择合适的单位。(4)实践:根据公司要求,学生在培训地点开展实践学习。(5)评价:实践单位要提交实践报告,并根据学生表现给出合理成绩及评价。

学生从一年级到二年级经历两次IT行业社会实践,对软件行业有一定认识,个人职业规划逐渐清晰。

(四)软件工程实训、毕业设计

通过三年的在校专业学习,软件工程专业的学生已经积累了一定的软件开发经验,在第四学年将继续进行系统的实践学习。作为实践教学年的第四年,主要安排软件工程实训、毕业设计等实践教学工作。

软件工程实训安排在四年级的第一个学期进行,主要目的是整合前三年的理论知识,进一步提高团队合作能力及个人学习能力。考研的学生一般选择在学院进行软件工程实训,其余大部分学生会选择合适的企业进行实习或者选择软件实训单位进行实训,为顺利就业做准备,部分学生在此期间亦顺利就业。

毕业设计是四年级的第二学期的主要实践课程,也是大学期间最后一门实践课程。部分学生会自行联系在实习单位进行毕业设计,毕业后正式工作;部分考研学生选择校内毕业设计,一方面可以方便复习,另一方面在学校可以尝试一些有研究性质的课题,为另一阶段的学习做准备。应该说绝大部分学生都已经为毕业后的去向做好了准备。

经过五次实践课题、两次IT行业社会实践、软件工程实训及毕业设计的磨炼,软件工程专业的学生已经完全胜任工作需要,因此软件工程专业学生的就业不仅顺利,而且满意。

(五)其他实践活动

为提高学生实践动手能力,拓展学生视野,激发学习兴趣,学院在不同学期安排有软件知识大赛、软件技能大赛、软件设计大赛、软件工程师讲座等活动,同时采取要求所有学生每个学期必须完成90个学时的免费上机时数等措施,进一步强化提升学生的实践技能。部分已毕业的学生表示,软件学院实施的强制学生免费上机等措施是具有积极意义的。

存在的问题

(一)部门之间的沟通协调

实践环节执行过程中不可避免会涉及多个部门,因此部门之间的沟通非常重要。一个阶段的工作结束必须以顺利交接给后一个部门为结束标志,任何一个部门如果不能顺利交接都将直接影响整个实训教学工作的进展,如校外实训教师的联系、报告及成绩的提交、课酬结算等环节同时涉及教学管理和教学执行等多部门,因此各个部门之间需要及时联系,互通信息,保证过程畅通。

(二)实训费用

一般来说,通过学院联系的实训单位具有一定实力,实训题目、学习环境相比高校更接近企业,而且在企业学习,学生的就业压力感通常会比较明显。各种因素都造成校外实训单位的实训效果比校内更好,因此大部分学生更愿意选择企业实训。

但是由于学院不可能全部负担校外实训学生的实训费用,这直接影响了学生对于实训单位的选择;对于不以盈利为目的的实训单位,则更需要考虑如何才能吸引更优秀的学生;政府亦有责任出面引导或者给予政策倾斜。如何有效降低实训费用,应是企业、政府、学校共同思考的问题。

(三)师资

高校教师一般具有丰富的理论知识和较好的口头表达能力,但是因为长期脱离生产一线而表现出实践经验不足;企业工程师一般具有丰富的实际开发经验,但是理论知识不足,而且表达能力稍有欠缺。同时具备理论知识和实践经验且表达清晰的教师如凤毛麟角,成为影响实训效果的“瓶颈”。

师资、设备、监督、沟通等任何一个环节都会影响到实践教学效果,因此一定从各个方面抓教学、抓管理,在教学过程中深入内涵建设,以提高教学质量为目的,为学生提供好的学习和生活环境,为学生就业做足工作。

结语

作为校级软件工程特色专业实验点的软件学院,得到了中原工学院大力资助,在实践教学过程中取得了一些成绩,但也不可避免地存在不尽如人意的地方。

正视存在的问题,不断改进,在已有成绩的基础上不断努力,软件学院将继续为学院,为河南省,为打造中原经济区而努力做出更大贡献。

参考文献:

[1]贾晓辉,韩玉民.加强校企合作,推进实践教学[J].计算机教育,2011(7):92-94.

[2]贾晓辉,刘凤华,郭清宇. 软件工程专业实训基地的建设与实践[J].计算机教育,2009(8):116-117,109.

[3]王永贵,等.软件工程专业工程化实践教学研究与实践[J].辽宁工程技术大学学报(社会科学版),2010(6).

作者简介:

软件工程实训总结范文4

摘 要:本文提出了一种全新的软件项目开发综合实训模式,该模式以实际项目贯穿始终,以软件工程思想贯穿全线,围绕学生完成一系列递进的典型工作任务来组织实训内容,覆盖不同课程串联不同知识。该模式是工作过程导向在软件技术实训教学上的运用,对当今高职院校进行课程改革具有重要的参考价值。

关键词:工作过程导向;学习情境;典型工作任务;项目开发;综合实训

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

1 实训教学的现状和对策

我院的软件技术Java开发方向主干课程的设置包括:“Java程序设计”、“数据库基础及应用”、“JSP程序设计”、“UML基础与Rose建模”、“软件工程”、“软件测试”、“J2EE技术”。在每门课程的最后阶段都安排了课程实训,在此过程中,学生以个体或小组形式完成一个相对真实的工作任务。课程实训可以训练学生将该课程中不同的知识和技能串联起来,加以综合应用解决实际问题。由于各门课程相对独立,即使完成以上所有课程的课程实训,学生还是难以参与软件开发的全过程,难以获得对开发过程的整体把握。即使进入专业学习结束后的毕业设计阶段,由于毕业设计教学环节与大学生毕业就业成为近年来我国高校的一个非常突出的矛盾,尤其是高职高专院校的毕业生面临着严峻的就业形势,许多学生在最后一个学期几乎都在外出找工作,提前就业上岗。高职高专院校本来就学制短,毕业设计教学环节形同虚设,严重影响了正常毕业设计教学环节的实施和毕业生的水平。

在近几年的专业建设和课程改革中,我们越来越认识到培养学生的软件开发能力、团队合作能力、工程应用能力的重要性。为此,我们专门针对高年级学生设计和开发了工作过程导向的、具有专业总结和综合性质的项目开发综合实训,通过项目实践开阔学生视野,锻炼学生的团队意识和工程意识,全面培养学生的职业素养和工程应用能力。

2 基于工作过程的高职软件项目开发综合实训设计思路

基于工作过程的高职软件项目开发综合实训设计思路包含“两个贯穿一个分解一个覆盖”:即“工程项目贯穿”、“软件工程思想贯穿”、“典型工作任务分解”和“不同课程覆盖”。

2.1 工程项目贯穿

“工程项目贯穿”,即以一个工程项目全线贯穿于整个实训过程,学生从步入实训基地开始接受项目,到最后提交一个按照操作程序、操作规范完成的,满足一定质量标准的开发成果。在确定项目时,应该把握好以下两个原则:

第一,实训项目应具有一定的应用价值和实际意义。实训项目最好以实际项目为背景,或者直接就是从实际项目提炼而来,与企业实际生产过程或现实商业经营活动有直接的关系。这样的项目能培养学生的实战经验,极大地激发学生的积极性。但是要注意,业务流程太专业太复杂的项目不适于拿来作为全程的实训项目,因为这类项目在前期的业务分析和理解上将耗费太多的时间和精力,不利于后续工作的展开。

第二,要根据教学内容和专业培养目标确定项目内容与项目难度。高职软件技术Java开发方向旨在为社会输送合格的熟练的Java程序员,而J2EE编程是Java程序员追求的最高目标,所以我们确定的实训项目具有总结性和综合性,并具有一定的挑战性。经过前导课程“J2EE技术”的学习和实践,学生已经具备了用Servlet+JSP+JaveBean (EJB)或struts框架来实现MVC架构的能力,在实训项目中我们鼓励学生整合Struts、Hibernate和Spring三个框架,综合运用J2EE的组件、框架开发技术,开发一个满足J2EE架构的多层的企业应用。

2.2 软件工程思想贯穿

在传统的“软件工程”教学中,软件工程是一门独立的理论性较强的课程,学生们缺乏实战经验,难以在参与软件开发的全过程中获得感性体会,理解软件工程的精髓。

为了培养软件工程意识,使工程化思想成为学生从事软件开发工作的行动指南,我们将软件工程思想贯穿于整个综合实训的始终。综合实训以成熟的软件开发模型为基础,以具有一定应用价值和实际意义的项目为背景,学生以开发团队的形式,按照软件开发流程,在规定的时间点完成指定的任务,经历需求分析、建模、设计、编码、测试、部署的软件工程全过程。综合实训模拟企业运作机制,模拟企业中实际存在的项目压力和工作压力,模拟真实企业开发环境,以项目的进度检查作为监控,以项目开发成果作为最后的考评。学生在实训过程中,都有机会承担项目经理、设计人员、编码人员、测试人员等全部或部分岗位角色的职责,学生的综合能力得到极大的提高。

2.3 典型工作任务分解

典型工作任务是“基于工作过程”实训课程开发的精髓。所谓“任务”就是要求学生做一件事,重要的是,这件事是按实际工作的要求来操作的,包括操作程序、操作规范、质量标准等。学生在完成各项“任务”后,会呈现出不同的“结果”。这个结果是非标准答案的,即每个学生或每个团队的作品可以不一样,对作品的评价不是简单的对与错,而很可能是好与差。而“典型工作任务”能呈现出职业的典型的工作内容和形式,在整个企业的工作大环境里具有重要的功能和意义。

在工作过程导向设计原则的指导下,结合软件行业的岗位需求,通过分析完成软件开发需要完成哪些典型工作任务,我们设计了基于工作过程的实训流程。该流程以一个软件项目贯穿始终,将整个软件开发过程分解为一系列递进的实训情境,在每个实训情境要求学生完成一个独立的工作任务,完成所有的实训情境就完成了整个软件项目的开发。

基于工作过程的项目开发综合实训流程如图1所示,整个实训由递进的6个实训情境构成(水平方向),它们对应的工作任务依次为“需求分析”、“搭建开发环境”、“设计”、“编码”、“集成和测试”、“项目部署”。垂直方向则反映了为完成某项工作任务所采取的步骤和要提交的工作成果。

图1 基于工作过程的软件项目开发综合实训流程

2.4 不同课程覆盖

按照工作过程导向设计原则,将整个软件开发过程分解为递进的6个实训情境,每个实训情境覆盖了不同的课程内容。表1列出了每个实训情境对七门主干课程的覆盖情况,可以看到,它彻底地克服了传统的课程体系只重视每门课程自身的实验,缺乏覆盖不同课程,串联不同知识和技能的综合性实验的重大缺陷,它使得相对独立的各门课程整合在一起,使整个实训成为一个有机的整体。这样的训练能使学生将以前的所学融会贯通,能有效地培养学生的综合应用能力和创新能力。

3 基于工作过程的高职软件项目开发综合实训的实施

3.1 实训项目举例

依照确定项目的两个原则,我们把为我院开发“教学资源管理系统”定为综合实训的第一个项目,要求运用Struts、Hibernate和Spring三个框架,开发一个满足J2EE架构的多层的企业应用。

该项目的业务需求是“主要完成对多媒体课件和各种多媒体素材资源的管理,方便对各种电子教学资源进行分类维护,包括浏览,查询,下载;为教师提供一个方便快捷的课件渠道,把制作的课件或搜集的素材上载到该系统,实现资源共享。本系统分三级用户:系统管理员,教师用户、普通用户(包括学生);包括以下四个方面的功能:普通用户资源浏览和下载;普通用户资源检索;教师用户资源上载;管理员系统维护”。

项目开始时,教师只给出较为粗略的业务需求,给学生留有足够的发挥空间。因为“教学资源管理系统”就是为学生和教师服务,非常贴近学生的学习生活,理解起来没有任何障碍。至于界面做到什么样子,功能做到何种程度,留给学生在撰写详细的需求分析报告时去确定,教师需要把关的是工作量和技术难度,不能太简单而达不到实训的效果,也不能太难无法实现而挫伤学生的积极性。

3.2 实训组织方式

实训采用4个人一组,每人负责一个方面的功能开发,每组设一个项目组长,项目组长除负责一个方面的功能模块开发外,还负责各模块集成。由项目组共同提交一份需求分析报告。个人一旦选择某方面的功能开发,就要全权负责该部分的设计、编码和单元测试。此外,在测试情境中,开发小组进行角色转换,变成测试小组,选择别的小组开发的软件进行测试。

3.3 实训进度安排和任务要求

本综合实训历时一个月,共72学时(4周*18课时),进度安排如表2所示,各院校可根据自己的情况作适当调整或根据需要增加学时。下面是每个情境的具体步骤、任务要求的详细描述。

3.3.1 情境1:需求分析

本情境的典型工作任务是撰写详细的需求分析报告。

(1) 首先老师对实训项目提出业务需求,讲解应用的环境、功能要求、技术要求以及实训组织方式。

(2) 实训小组组成,组合出每个小组的成员,选出项目小组长。

(3) 每个小组对功能模块分工分配,确定每个人所承担的功能模块。

(4) 各小组讨论需求分析,每个人撰写模块的详细需求分析报告。

本情境结束后,要完成以下任务:

老师要汇总出小组划分、成员分工;

项目小组提交一份详细的需求分析报告。

3.3.2 情境2:搭建开发环境

本情境的典型工作任务是搭建J2EE开发环境。我们选择的开发环境为:

操作系统:Windows NT /Windows XP

Java 平台:JDK1.6 以上

服务器:JBOSS 4.0.4

数据库服务器:MySQL 5.0

开发平台:MyEclipse 5.5

建模工具: Rational Rose

单元测试:Junit

功能测试:手工测试

(1) 首先老师对开发环境进行讲解;

(2) 学生在自己的机器上完成以下任务:安装JDK环境、安装JBOSS服务器、安装MySQL服务器、安装MyEclipse集成开发工具、安装Rational Rose建模工具、安装Junit。

本情境结束后,要完成以下任务:

1) 学生在自己的机器上完成环境的搭建和测试。

3.3.3 情境3:设计

本情境的典型工作任务是撰写详细设计文档。

(1) 老师对需求分析进行点评,指出其中的问题和修改意见。

(2) 老师以其中某个模块为例,讲解所使用技术和技术线路。

(3) 进行模块设计和数据库库表设计,模块之间接口的定义,数据库中测试数据的准备。

本情境结束后,学生要完成的任务:

对需求分析报告进行修改和完善。

撰写详细设计文档,包括类图和时序图。

详细设计包括以下组件的设计:模型实现类和DAO组件;业务逻辑组件;MVC层组件;表现层组件

撰写数据库表的设计以及测试数据,数据库表设计包括库表名称、字段定义,测试数据以表格的方式形成。

3.3.4 情境4:编码

本情境的典型工作任务是依照设计进行代码编写,以及单元测试。

老师对学生的模块设计和库表设计进行点评,指出其中的问题和修改意见。

在编码过程中,老师要对学生进行指导,帮助解决问题。学生之间应互相配合,及时修正模块设计中的错误。

本情境学生要完成的任务包括:

修订详细模块设计和数据库库表设计;

用测试数据填充数据库;

制定编码进度;

模型实现类和DAO组件的编码和测试;

业务逻辑组件的编码和测试;

MVC层组件的编码和测试;

表现层组件的编码和测试。

3.3.5 情境5:系统集成和测试

本情境的典型工作任务是小组模块集成和功能测试。

(1) 小组成员之间相互配合,完成整个系统的集成。

(2) 选择另一个小组开发的系统,根据他们的需求分析报告,撰写测试用例。

(3) 进行功能测试并提交测试报告。

本情境完成,学生要完成以下任务:

将小组内各成员开发的模块进行系统集成;

选择另一个小组开发的系统撰写测试用例,进行功能测试,并提交测试报告。

3.3.6 情境6:项目

本情境的典型工作任务是部署项目、提交成果。

(1) 学生将实训成果进行演示

(2) 学生提交可以部署的包和按工程组织的源代码

(3) 老师对各个项目小组的成果进行考评。

(4) 老师对整个实训进行点评。

本情境完成,学生要提交以下程序和文档:

源代码和可以部署的包

实训报告

4 新的综合实训模式对教师提出了更高的要求

基于工作过程的高职项目开发综合实训,覆盖面广,综合性和工程实践性强,要求按照软件工程的要求,指导学生进行软件项目开发实训,因而对指导教师的教学素养、主导作用、工程实践经历提出了更高的要求。为此我们组建了一支以具有工程实践经验的核心教师为首,由各科任课教师组成的教师团队。进入实训项目的教师必须首先对项目本身有足够的认识和理解,并且亲自做过,才能在其参与指导的实训情境中指导学生完成该情境所指定的典型工作任务。而核心教师经历过企业软件开发项目的全过程,熟悉软件开发项目的管理过程,熟悉软件开发程序的设计规范、调试过程、软件质量测试方法,以“项目经理”的身份指导学生进行软件开发实训,其关键作用是不可置疑的。

同时,新的综合实训模式必须有新的教学观念、讲授模式和管理模式。在实训过程中绝对不能再是“教师讲授学生听”,而是以学生为主体,以任务为驱动,教师重点放在讲解每个任务的需求,完成该任务所要采用的知识、方法、工具和步骤,然后由学生自己进行分析、建立问题模型,自己掌握开发的进程。教师则更象一位项目经理,控制项目进度,评定软件质量。

5 结束语

基于工作过程的高职项目开发综合实训,是一种全新的软件项目开发综合实训模式。该模式以工程项目贯穿始终,以软件工程思想贯穿全线,围绕学生完成一系列递进的典型工作任务来组织实训内容,覆盖不同课程串联不同知识。该模式是工作过程导向在软件技术实训教学上的运用,对当今高职院校进行课程改革具有重要的参考价值,同时对指导教师提出了更高的要求。

参考文献

软件工程实训总结范文5

软件工程是一门建立在计算机科学和工程学基础之上,同时涉及数学、管理学、经济学和系统工程等学科理论与方法的学科及专业。软件工程教育兼具科学教育属性与工程教育属性,前者培养的是软件工程基础研究人才,后者培养的是软件工程技术、应用、管理和服务人才。我校作为一所普通本科院校,结合区域经济发展实际,将软件工程专业的培养目标定位为培养应用型、工程型软件人才。即能够综合应用计算机科学、数学及管理科学等学科知识,以工程化的原则与方法为指导,胜任现代软件工程环境下高质量软件的开发、测试和维护等工作的软件工程技术、应用、管理和服务人才。该培养目标可进一步解读为以下三点:扎实的专业基础、良好的工程学意识、较强的动手实践能力。

2CDIO模式下实践教学体系的构建

软件工程是一门实践性很强的专业,应用型、工程型软件人才的培养定位更加强调学生动手实践能力的培养和工程方法学的训练,因此,实践教学的体系建设和教学效果对学生的培养质量起着至关重要的作用。借鉴和吸收CDIO工程教育理念和标准,我们从教学内容和教学方法两方面对软件工程专业实践教学体系进行了重新构建和实践。课程实验、课程设计、综合实训、毕业设计四个层次循序渐进、由浅入深、环环相扣;在教学方法的构建上,我们从工程教育的角度出发,形成了“案例牵引、项目驱动、团队合作、引导互动”的教学模式。

2.1教学内容的构建

在教学内容的构建上,我们按照“以CDIO培养大纲为指南、以项目设计为导向、以工程能力培养为目标”的原则,将软件工程专业的实践教学体系分为以下四层次。2.1.1课程实验课程实验是单门专业课程教学中的实践环节,也是整个实践教学体系的基础,对学生基础专业技能的培养具有重要作用。为了加强实践教学,我们在绝大部分专业课和专业基础课中都设置了课程实验,根据教学目标的不同,课程实验设计为验证性、设计性和综合性等不同的层次。对于实践性很强的专业课程,如程序设计基础、面向对象程序设计等,采用完全实验教学的方式,通过一个完整的项目将课程知识结构串联起来,并通过“分而治之”的形式来学习各个知识点,将教师讲解与演示、学生实地操作有机融合起来,最后完成整个项目,以培养学生的动手实践能力和专业兴趣;对于理论性较强的专业课程,如数据结构、操作系统等,采用理论讲解与上机实践并举的方式,加强学生对专业基础理论知识的理解与应用。2.1.2课程设计课程设计是实践教学体系的第二层次,是在课程实验的基础上,选择一些实践性强且具有代表性的课程作为单独课程开设综合性课程设计。例如,Java程序设计课程设计、软件工程课程设计等。与课程实验相比,课程设计具有综合性和实用性的特点,学生在教师的指导下综合运用相关课程的知识和技术完成一个完整的设计或实现。通过课程设计的训练,培养学生运用专业知识分析问题和解决问题的能力,使学生的专业技能得到进一步的提升和拓展。2.1.3综合实训综合实训是以课程设计为基础,综合运用多门相关课程知识完成一个工程项目的实战训练。综合实训以项目为载体构建知识结构,将学科知识、专业技能与工程实践有效结合,体现软件工程领域中的工程学和方法学的实施,实施技术与管理能力训练和职业综合素质综合的培养[4]。根据方向不同,我们在软件工程专业开设了两门综合实训课程:(1)软件开发综合实训。以软件生命周期为主线,综合运用程序设计、数据库应用、软件工程、软件项目管理等学科知识,严格按照软件开发的流程与规范,完成一个软件项目的开发,最后提交软件产品和相关技术文档。(2)软件测试综合实训。要求学生以软件开发综合实训所完成的软件产品为被测对象,综合运行软件测试与质量保证、软件测试流程与方法、测试框架与自动化测试等学科知识,使用软件测试的方法与技术,设计测试用例和测试脚本,完成被测软件的功能测试与性能测试,生成测试报告,并对测试结果进行分析。2.1.4毕业设计毕业设计是实现人才培养目标的重要手段,是实践教学体系中最后一个综合性、创造性的实践环节;是对学生基础理论、专业知识与实践成果的全面总结,是学生综合素质与工程实践能力的全面检验[5]。为了提高毕业设计的质量,我们从以下三方面层层把关。(1)在课题选题上,强调选题的可行性和实用性,忌空忌大,选题最好能与指导教师的科研方向或学生的实习工作相关联;(2)在过程控制上,实行师生定期交流与汇报制度,确保毕业设计按计划保质保量完成;(3)在毕业设计报告及相关材料的撰写上,从规范性和科学性两方面严格要求,确保质量。

2.2教学方法的构建

2.2.1案例牵引案例教学是实践教学中的常用手段,具有直观性高、互动性强的特点。按照CDIO大纲能力培养的层次要求,结合各实践课程的教学目标,我们在实践教学中精心规划和设置了不同层次、不同复杂度的教学案例,以案例实现过程为驱动来安排教学内容和方法。在教学过程中,以一个具体的案例为线索,把教学内容巧妙地融合在案例之中,学生以完成案例任务为目标,在老师的指引下对目标问题进行分析与分解,并通过动手实践解决问题,真正做到“做中学”和“学中做”。在完成任务的过程中,不仅使学生的动手实践能力得以提高,也培养了学生的创新意识、创新能力以及分析问题、解决问题的能力。2.2.2项目驱动工程实践能力是专业技能的进一步升华和提高,是从整体上对工程项目的一种实做能力,是工程类毕业生必备的核心素质。根据CDIO“做中学”和“基于项目的教育和学习”的思想,我们在实践教学中广泛采用项目驱动的教学模式。强调以一个产品或系统从构思、设计、实现到运作的完整的构建过程来培养学生的工程实践能力。以软件开发综合实训课程为例,在课程中引入“项目驱动”的教学理念,以软件生命周期为主线,以项目为载体、任务为驱动开展实践教学。通过一个软件产品从项目启动到需求分析、设计、实现、测试、运行维护的整个生产过程的实战,培养学生的工程能力和综合素质。2.2.3分组教学团队能力是CDIO大纲要求工程毕业生必备的一种能力。在实际教学过程中,我们模拟企业的真实环境,将所有学生分为若干项目小组,每组由一名组长和若干名组员构成。根据任务分工不同,每名学生都被赋予一定的角色,组员在组长的指挥协调下通力合作,共同完成实验项目。实践表明,分组教学模式能较好地激发学生的学习热情,组员之间分工协作、互学互助,学生的沟通能力、协作精神和团队意识大为提升。2.2.4革新考核方式考核是对学生学习成果的认定和评价,良好的考核机制能对学生的学习过程和学习动机产生正确的指引作用,促进教学质量的提高。在实践课程的考核上,以能力培养为导向,采取多元的考核方式。引导学生在平时项目实训过程中加强专业技能的训练、工程能力的培养以及综合素质的提高。(1)对基础性的课程实验,重点考核学生专业知识与技能的掌握情况,采取平时实验成绩与期末上机考试成绩相结合的方式。(2)对课程设计和综合实训类课程,重点考核学生的工程实践能力和团队协作能力。采取以作品演示、项目答辩为主的考核方式,同时规范化的文档资料也是重要的考评指标。(3)对于毕业设计,重点考核学生的创新能力。科研能力以及分析解决问题的能力,考核方式同综合实训。总之,以能力培养为导向,注重能力考评。2.2.5校企合作校企合作是培养学生的综合素质和实践能力的重要途径。为了增强人才培养的针对性和毕业生与工作岗位的无缝对接,我们同中创、中远等知名软件公司开展校企合作联合办学。充分利用学校和社会两种教育环境和教育资源,联合构建工程型实践教学队伍与教学平台。一方面,学校聘请企业一线的工程师作为兼职教师来校授课,不仅充实了实践教学队伍,更带来了企业的最新技术和行业资讯;另一方面,选派优秀教师到企业学习锻炼,参与企业项目,提升师资队伍的水平。此外,通过在企业建立校外实训、实习基地,使学生尽早感受企业文化和接触到真实的企业项目,也为学生就业积累了丰富的工程实践经验。

3结束语

软件工程实训总结范文6

关键词:敏捷软件开发;Scrum;软件工程;实践教学

中图分类号:G642文献标识码:A文章编号:1009-3044(2011)19-4762-02

The Exploration of Practical Teaching on Software Engineering Course Based on Scrum Agile Method

LIN Xiao-yu, ZHONG Yi-wen, HUANG Shi-guo, WANG Li-jin

(College of Computer and Information Science, Fujian Agriculture and Forestry University, Fuzhou 350002, China)

Abstract: Scrum-based agile software development method used in the practical teaching of software engineering course, which can overcome some shortcomings of traditional teaching methods. That allow students to experience the whole process of the implementation of software engineering, but also enhance the ability of students to project management and development capability to meet the training goal, and achieved good effects.

Key words: agile software development; Scrum; software engineering; practical teaching

软件工程课程是一门理论性和实践性都很强的学科,现在已经成为计算机科学与技术、软件工程等专业的核心课程。软件工程课程的主要内容包含软件工程过程、软件工程方法与软件工程工具等三个方面。课程的教学旨在培养学生的软件工程素质,使其具备一定软件项目管理能力、软件设计能力和项目实施能力等。一方面,这门课程的大部分内容是前人经验性的总结,对于软件工程的实施有着重要的指导作用;另一方面,几乎没有工程项目经验的学生反而感觉概念烦多,内容枯燥,不太容易理解。因此,绝大多数的高校都开设了相应的实践课程,力求让学生通过实际动手加深对课程内容的理解。

软件工程实践课程教学方式主要分为二类,一类是课程实验[1-2],另一类是课程实训或课程设计[3-5]。课程实验学时少,时间分散,只能简单地练习一些软件工具。因而,有条件的高校都将开设学时长、时间集中并且能够实施较大项目案例的课程实训作为实践教学方式。为了更好地提高教学质量,一线教师们探索出了导师制[6]、软件维护导向法[7]和多Agent方法[8]等多种实训教学方法。在课程实训教学过程中,一般指导学生按照瀑布开发模型从可行性分析开始,按照需求分析、概要设计、详细设计、编码阶段的顺序直到测试阶段结束。采用经典的瀑布开发模型虽然可以让学生体验到软件工程实施的每个阶段,但是也存在着一些缺陷。首先,在瀑布开发模型中,下一个阶段的实施严重依赖于上一个阶段的成果。而学生由于缺乏项目经验,在各个阶段都会产生错误的规划或设计,而这种错误要等到后期才能发现,进而要不断地返工,影响学生的积极性。其次,由于没有客户角色,需求分析基本都是虚拟的,凭空想像居多。第三,瀑布模型产生过多的文档,极大地增加了工作量,影响项目的进度,学生在有限的时间内很难完成完整的项目,缺陷过多。第四,学生小组内部分工不均匀,过度依赖于少数优秀学生的工作。因而,在软件工程实训教学过程,需要一种能够提高开发效率,适合小团队的并能够充分调动学生内在积极性的教学方法。我们尝试将基于敏捷开发理念的Scrum方法应用于软件工程实践教学中,取得了良好的教学效果。

1 Scrum方法分析

1.1 敏捷软件开发方法

敏捷软件开发方法是以人为本,轻文档重产品的一类软件开发方法,与传统瀑布开发模型相比,属于轻量级模型。敏捷软件开发方法强调个体和交互胜过过程和工具;可以工作的软件胜过面面俱到的文档;与客户合作胜过正式谈判;响应变化胜过遵循计划。敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。

从2001年敏捷联盟成立至今,业界已经形成了多种敏捷方法。比较知名的有极限编程(Extreme Programmming,XP)、Scrum、特性驱动开发(Feature Driven Development,FDD)等[9]。在国内外,越来越多的实际项目采用了敏捷开发方法并取得了成功。

1.2 Scrum流程

Scrum方法是一种迭代式增量软件敏捷开发过程,每个迭代周期称为Sprint,开发团队会在此期间内完成所承诺的一组任务清单(Backlog)。Scrum方法的流程如图1所示。Sprint计划会议、每日Scrum会议、Sprint评审会议和Sprint回顾会议构成了Scrum方法的检查和调整环节。

1.2.1 制定项目计划和产品清单

和传统的开发方法类似,Scrum方法需要在前期制定项目计划。但是在Scrum方法中,开发小组需要讨论产生一份产品的Backlog,并且按优先级进行排序。Backlog还需要对任务的工作量进行估算。项目实施期间,产品Backlog实际上就是一个待开发项目业务和技术特性的动态列表。

1.2.2 Sprint计划会议

每个Sprint周期从计划会议开始,由产品负责人、ScrumMaster(类似于项目经理)和团队成员参加。计划会议确定产品的哪些Backlog将要在本次Spring迭代中实现。确定Backlog之后,需要将产品Backlog细化为Sprint Backlog。团队的成员根据自己的兴趣领走工作量相当的任务,剩余的由ScrumMaster进行协调。

1.2.3 每日Scrum会议

Scrum的每日会议由所有团队成员参加,会议被限制很短的时间之内,每次会议参会者必须站立讨论,所以也称为站立会议。会议内容很精简,每个团队成员只需要解释和回答三个问题:今天你完成了那些工作?明天你打算做什么?完成你的目标存在哪些什么障碍?每日会议的时间不宜过长。

1.2.4 Sprint评审会议

在每个Sprint评审会议中,团队向产品负责人及其他感兴趣的涉众展示本次迭代中所完成的工作,并进一步确定下一步的工作内容。