软件工程课程教学模式探索

时间:2022-03-25 11:36:34

软件工程课程教学模式探索

软件工程是软件技术相关专业开设的一门重要的专业基础课程.软件工程的核心思想是将项目管理的思维应用于软件开发和软件维护的全流程中.软件工程课程教学的目的是工程管理和软件技术两方面相结合,使学生具有软件开发的规范流程知识,以及分析解决问题的能力,同时还要培养学生团队协作能力.软件工程课程是一门实践性很强的课程,学生在学习软件开发的过程中缺乏项目管理的基本概念,缺乏实际的开发经验都直接影响课程教学的效果.同时,学生在课程的实训中缺乏对需求分析的重要性的认识,缺乏团队分工协作意识,缺乏团队沟通的技巧和能力等也将影响课程的教学.甚至有些软件工程相关专业的学生在毕业设计的软件开发中都不能灵活应用软件工程的思想来指导软件项目的开发.因此,提高软件工程课程的教学质量涉及到如何优化教学内容和教学环境、优化实践教学,这一直是软件工程课程教学改革研究的重点与难点.

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结束语

软件工程培养既懂软件开发技术,又懂项目管理的复合型人才.在基于CDIO的教学模式指导下,通过精心设计的典型教学案例,提高学生的积极性;引入全新的教学辅助CAI软件,解决学生缺乏实践的经验.学生们通过团队协作,经过多轮实践完成一个具体软件开发任务,学习和掌握软件开发的流程,体会软件工程精髓,做到学以致用.同时,在软件开发任务中能够获得成就感,体会团队分工协作的重要性.

作者:雷方元 蔡君 刘兰 单位:广东技术师范学院 电子与信息学院

上一篇:资助教育工作中的辅导员思想教育 下一篇:高校思想教育问题的研究