软件工程方向基于课程群的实践课教学改革
2014-10-27马迪芳陈旭东
马迪芳 陈旭东
摘要:针对软件工程专业3门基础课程在实践教学中存在的问题,探讨实践课程的改革方法,提出统一实践课程的课程群建设思路,同时根据具体案例详细阐述整合实践课程的实施方案。
关键词:软件工程;课程群;教学实践;课程体系
1、实践课程建设的意义及存在的问题
北京交通大学软件学院自成立以来一直贯彻以学生为主体、以培养学生主动发展为中心的教学理念,确立“面向产业需求、突出能力与素质培养、强化实训实习环节、在国际化环境中培养具有创新精神的精英型软件工程师”的人才培养目标。在成立的10年间不断尝试人才培养模式和教育教学模式的创新和变革,在双语教学和全英文教学以及以CDIO理念为指导的“做中学、用中学、练中学”实践中获得显著成绩,软件学院学生的专业英语能力和各门课程的实践动手能力都有很大提高。然而,在教学中仍然存在一些问题,目前每门课程都有自己单独的实践课程,每门实践课程只从该课程的教学内容方面进行实验内容设计,学生对教学内容的理解具有片面性和局限性,经常是学完一门课程并不知道该课程的真正用处,不能建立起知识体系的整体概念,因此笔者提出课程群建设的思路,积极探索各门课程的整合与优化,重新梳理本科4年的课程设置,制定出一套更为科学合理的课程群课程体系。
1.1 3门课程在教学体系中的地位
面向对象的编程与设计、软件工程概论和用户界面设计与评价是北京交通大学软件学院软件工程专业大学一年级第2学期的3门专业基础课。3门课程之间既相对独立,又相互关联,形成紧密相连的有机整体,构成该学期专业课的课程群。这3门专业课程在整个软件工程方向课程群的体系中占有举足轻重的地位,也是学习其他后续专业课程数据结构及算法、操作系统、数据库原理和计算机网络的基础。
1.2 3门课程的特点及面临的问题
面向对象的编程与设计课程是软件工程专业本科生必修的主干课程。通过学习这门课程,学生能够理解面向对象程序设计的核心思想,掌握面向对象程序设计的主要技术与编程思路,为今后开发复杂的大型企业项目打下良好基础,同时为后续专业课程的学习提供有力的面向对象编程支持,因此学好该课程对培养学生的编程能力非常重要。该课程面临的问题是学生过于重视编程技巧而忽视了软件开发过程的其他阶段,包括软件需求提取、分析、设计、测试、部署以及各类文档的撰写等,即缺乏系统化的工程分析与设计理念,还未能自觉地运用软件工程思想指导项目的开发。
软件工程概论是软件工程专业本科生的核心课程。该课程讲述软件工程专业的系统知识和方法论,促进学生了解软件工程的知识领域和结构,其特点是涉及内容广泛,是其他专业课程的基础,也是整个软件开发流程的基础。该课程面临的问题是理论知识较多,对于没有任何开发经验的大一学生来说比较抽象,学生会认为软件工程就是一些理论的条条框框,很难体会到软件工程的精髓,往往在学完该课程后仍然没有建立起用软件工程思想指导项目开发的意识。
用户界面设计与评价讲授如何设计友好的用户界面以及如何评价和提高这些界面的可用性。该课程面临的问题是没有相应的实践课程,只能从理论课程中安排出部分学时进行上机实践,另外实践项目较小,不能让学生体会到如何在复杂项目中设计出可用性强、用户友好的软件界面。
可以看出,学生并没有自觉地将3门课程知识融入到项目开发中,没有建立起课程之间的联系,因此如何整合3门实践课程设计内容、精炼实践项目、建立统一的实践项目,是培养高水平人才的关键。
2、实践课建设思路
2.1 整合3门课程内容,建立统一的实践课程
传统教学中面向对象的编程与设计、软件工程概论和用户界面设计与评价3门课程分别是64学时,其中包含理论讲授和实验操作两部分,理论讲解偏多,实践动手较少。
其实这3门专业基础课程本身就是实践性、应用性非常强的学科,学生必须通过不断的实践才能真正掌握课程的核心思想和多变的编程技巧。因此教师必须加强实践环节的改革,减少理论课程,加大实践教学,让学生在实际项目中体会理论课程的精髓。因此,北京交通大学软件学院将3门64学时的课程均改为32理论学时,同时为3门理论课程开设了一门64学时的实践课程,希望融合面向对象程序设计、软件工程概论和用户界面设计与评价课程的内容,由浅入深设计实践项目。项目内容应融合3门课程的知识点,当然这不是直接将3门课程的知识点堆积在一起,而是要综合应用3门课程的知识和思想,建立课程群统一的实践项目,使得学生可以从同一项目的不同角度深入理解专业课内容,认识到专业课之间的相互联系,建立起知识体系的整体概念并对每门课程在软件工程知识体系中所处的位置有一个明确的认识。
2.2 校企合作开发实践课项目
目前校内教师普遍存在实践经验不足的问题,设计的实践课项目相对简单,内容缺乏创新,与现实脱节。因此,我们采用校企合作的方式将企业中的项目引入实践教学,由校内教师和企业教师共同讨论并分析3门专业课之间的关系,明确专业课和实际项目之间的切入点、重点和难点,合理裁剪企业实际项目,使其既不过于庞大,又不失难度,同时让学生真正感受到企业项目规范化开发的整个流程。
为了保证规范开发过程,教师需要根据企业化软件开发流程设计实验指导手册,按照项目的各个阶段发布任务,完成从项目启动阶段、项目计划阶段、需求分析阶段、系统设计阶段、系统实现阶段、系统测试阶段到最后系统部署阶段的规范化项目开发指导。
2.3 建立网络实践课程平台
以往的实践课程项目管理非常简单,只有中期检查和最终考核,没有对整个项目中学生是否按软件工程的规范开发过程进行评定,同时也没有提供可以供学生自主学习的平台,因此建立一个集学习、管理和评价为一体的网络课程平台非常重要。
平台服务应分为3部分:学习指导、项目开发管理和评价管理。学习指导部分为学生提供一个成熟的公司案例样本并对整个开发流程进行详细讲解,以便学生参考和学习,这对于毫无开发经验的大一学生来说很重要。项目开发管理部分按照设计项目的各个阶段发布任务,完成从项目启动阶段、项目计划阶段、需求分析阶段、系统设计阶段、系统实现阶段、系统测试阶段到最后系统部署阶段的项目分解和发布,并监督指导学生在每个阶段的工作。评价管理部分根据学生提交的每个阶段任务完成情况给出阶段成绩和评价。通过网络实践课程平台,教师可以督促学生了解并掌握企业化软件开发流程。endprint
3、具体案例实施方案
新的实践课程改革特别注重3门课程知识点的融合,使学生可以从同一项目的不同角度深入理解专业课内容,了解各专业课之间相辅相成的关系,建立起知识体系的整体概念。我们在2012级学生的实践课中按难易程度由浅入深总共设计了3个项目,以RSS阅读器项目为例详细阐述实践课程的改革措施。
3.1 RSS阅读器项目介绍
RSS是在线共享内容的一种简易方式(也叫聚合内容,Really Simple Syndication)。随着网络的普及,越来越多的人习惯通过网络获取信息和查询资料,而通过RSS技术可以把订阅的最新资讯接收到电脑桌面上。要接收RSS信息,使用RSS阅读器是最好的方法。当网站内容更新时,RSS阅读器就会自动接收,把最新的信息接收到本地电脑桌面上,同时阅读者可以看到最新信息的标题与摘要,点击标题就能够查看全文内容。实践课中要求学生实现的RSS阅读器功能如图1所示。
3.2 RSS阅读器项目与3门课程的关系
RSS阅读器项目涵盖了3门课程的知识要点,将3门课程内容有机地融合在一起,使学生从整体项目中了解各专业课之间相辅相成的关系。RSS阅读器项目始终将软件工程思想运用于整个项目的开发过程中,使学生在软件工程理论指导下完成软件需求分析、软件分析设计、软件测试、软件的部署等各个阶段的工作以及各个阶段标准文档的撰写。RSS阅读器的实现采用面向对象的编程技术,涉及Java技术中从基础到高级应用的所有编程技术,学生可以在项目中运用用户界面设计与评价课程中的界面设计思想设计出更加美观、易用的用户交互界面。RSS阅读器项目与3门课程之间的关系如图2所示。
3.3 项目的实施过程
在新实践课中,整个项目的开展和实施都依托于与公司合作开发的网络实践平台。教师需要在平台上定期发布项目各个阶段的任务,学生需要定期将各阶段任务实现的代码和相关文档提交到平台上。实践课程完全采用企业的运作机制,要求学生严格按照规定的时间完成任务,教师则以考勤和项目阶段检查的形式对学生的学习情况进行跟踪。教师在平台上可以看到每个学生的学习过程,如学生登录次数、是否阅读过相关文档、讨论的问题等。教师通过平台可以动态了解每个学生的学习状态,从而更有针对性地帮助一些学生。
实践课堂的指导由两部分组成,一方面主讲教师和助教对学生进行现场指导,另一方面合作公司会有专门负责项目的员工在后台通过QQ软件进行远程指导,因此学生在遇到问题时可以得到及时有效的帮助。公司员工和主讲教师也会根据学生遇到的问题在网上展开定期讨论,以找到更好的解决方案。
3.4 教师在实际课程中扮演的角色
整合3门课程内容的实践教学对指导教师也是一种考验与挑战,教师不仅要熟悉自己所教课程,还要熟知课程群中的其他课程,这对教师也起到督促作用。首先教师要完成教学观念的转变,在教学过程中不再以教师为主体,而要树立以学生为主体的教学模式,鼓励学生自主学习。教师扮演的角色更像是项目经理,负责将项目分解,发布各个阶段的任务要求,检查学生的开发进度,督促学生完成开发过程,遇到共性的问题展开讨论,评定各阶段任务完成的质量,最后组织学生结题答辩,点评学生的作品。
新的实践课程为学生开辟了更广阔的思考空间,激发了学生的学习兴趣和潜能,很多学生都在作品中融入了自己的创意,给教师带来意想不到的惊喜,可以看出学生的潜力巨大,学生也在阶段性任务的完成过程中一次又一次地体验成功的喜悦,大大增强了自信心。同时,学生的创意和灵感也给予教师一定的启发,这对于教师同样也是一种挑战。
3.5 基于过程的考核管理
考核评价体系改革是实践教学改革的重要环节,实践课考核更加重视对学生学习过程的评价,对发布的每个阶段任务完成情况打分,而不是只对最终结果进行考核。学生在64学时的实践课中要做3个项目,由于难易程度不同,各个项目所占的成绩比例也不相同,同时每个项目的成绩又由各个阶段任务成绩汇总得出,教师也会同步公布项目各个阶段的成绩,因此学生在整个学期都不敢有丝毫懈怠,不会出现传统教学中突击完成作业的情况。
考虑到大一学生还没有独立完成一个项目的经验,因此在实践课中不采用团队开发形式。在后续课程中,随着学生项目经验的丰富,教师可以采用团队开发的形式,锻炼学生团队协作能力和管理能力。
4、结语
基于课程群的实践课建设在北京交通大学软件学院刚刚开展两年,我们从2012级学生的作品中发现已经取得了可喜的成绩,参赛学生的作品获得了校级优秀学生作品奖,更重要的是学生的学习兴趣和综合能力得到提高,学生更加注重整个学习过程中自我能力的提升。
新的实践课程对指导教师也提出了更高要求,教师不仅要熟悉3门课程,还要转变教学理念,按照企业化运作机制开发项目,以软件工程思想为指导,严格按照规范进行质量把关,分任务、阶段进行监控和评审。在此我们也非常感谢合作公司给予的大力支持,其为学生带来优秀的项目案例以及先进的项目开发和管理理念,为实践教学注入了新的活力。目前,我们也在针对软件学院高年级的课程逐步开展课程群实践课改革与建设,相信在未来的几年中会探索出更加完备、科学和有效的课程群体系。endprint