面向软件工程能力培养的Web技术与应用课程教学实践
2019-04-20陆声链李帼
陆声链 李帼
摘 要 Web技术相关课程是高校计算机专业的主要课程。在“互联网+”时代,培养合格且有创新能力的互联网专业人才不仅仅需要与时俱进地更新该类课程中Web技术的知识体系,同时也需要在课堂教学和实践中融入软件系统分析、项目文档撰写、编码测试、团队合作等软件工程实施关键能力的训练,提高学生的软件项目开发综合能力。
关键词 软件工程能力培养 Web技术 教学改革 项目化教学
中图分类号:G424 文献标识码:A DOI:10.16400/j.cnki.kjdkz.2019.01.046
Abstract Web technology related-courses are the main major courses in colleges and universities. Internet plus era not only need to update the Web technology courses for cultivating innovative Internet professionals, but also needs more integrated the software system analysis, code testing, project documentation and team software engineering implementation ability into classroom teaching and practice, to improve the comprehensive occupation ability of computer major students.
Keywords training of software engineering ability; Web technology; teaching reform; project oriented teaching
0 引言
軟件项目的开发是一项十分复杂的工作。一个软件项目的成功,除了编写代码,需求调研、系统设计、系统测试、项目文档编写和归档等工作必不可少。近年来,尽管国内高校计算机专业的教学实践中,往往包括编程语言课程和软件工程课程。但现实情况是,这两方面的课程培养一般都是相对独立的,没有结合起来。编程语言课程以讲解编程语言本身为主,而软件工程课程则侧重于介绍软件工程各种概念。结果是学生往往只是了解了编程语言的基本知识,而缺乏软件项目实施过程的系统训练。导致我们高校的本科毕业生普遍存在系统分析能力欠佳、文档撰写水平低、团队协作意识薄弱等问题。[1]本文针对当前我国Web技术与应用相关课程的教学现状,从提升计算机相关专业学生的综合职业能力出发,采用项目化教学法对该课程开展了初步的教学实践探索。
1 教学改革的思路和目标
1.1 现有教学方式存在的主要问题
近年来,随着互联网技术的不断发展及其在日常生活中的应用日趋广泛,Web技术相关课程在高校中受到了学生的普遍欢迎。大部分高校都相继开设了“Web前端开发技术”、“Java Web应用开发”、“C#与Web应用开发”、“PHP Web开发”等课程,授课内容不仅涉及HTML、CSS、JavaScript等Web前端开发技术,还包括JSP、PHP 、ASP.NET等动态网页编程语言。但是,虽然很多高校在Web技术与应用类课程的教学内容能随着互联网技术的发展而不断更新调整,但教学过程主要还是采用传统的教学组织方式,授课过程中主要采用理论讲解结合操作演示、分组实践等的方式开展,其中前两个环节一般占课程的绝大部分教学时间,主要由教师实施完成,最后留给学生进行分组实践的时间往往只有2-3周。这种教学模式存在的主要缺点是:(1)以编程语言的语法教学为主线,教学内容侧重于语言的某个概念、函数或组件的简单编码,而忽略了语言本身在实际应用中的问题分析、算法设计和程序测试与调试等重要过程。(2)教学过程以教师讲解为主、学生练习为辅,难以调动学生的主动性和学习兴趣。(3)实践过程不够系统化,平时课堂中的实践往往是针对某个知识点的孤立实践,难以把重点放在解决问题的方法和思路上。即老师“教”和学生“学”之间孤立进行的现象十分突出。[2]
在这种教学模式下,学习编程语言的理论知识和技术占用了学生的大部分时间,很多学生学完课程后,往往只是了解该编程语言的基本知识点,缺乏将这些知识应用到具体项目的开发中的能力。[3]更糟糕的是,这种教学模式培养出来的学生往往只会简单地使用编程工具,而缺乏创新和创造力。
1.2 教学改革的目标
项目化教学法是一种理论与实践相结合的教学方式,[4]通过在教学中以一个完整、真实的软件工程项目为主导,在传授专业知识的同时,也训练软件工程实施的各方面能力;此外也强调以学生的自发学习为导向,改变传统教学中学生处于被动学习的地位。在计算机类课程中,项目化教学法以完成真实的软件项目的设计和开发为目标,将项目分解为明确具体的小阶段任务,每个任务都融入了若干课程所要讲授的知识点。这样,学生在学习过程中就不觉得是在枯燥地学习编程语言,而是在解决现实问题 。[5]
Web技术与应用类课程不仅仅涉及到HTML、CSS、JavaScript等常规网页设计技术,还包括PHP、JSP、ASP.NET等动态网页技术,涉及到容器、会话、过滤器、数据库连接池、框架、多层开发模型等新的、抽象的概念,以及与具体编程语言相关的各种组件、对象。通过采用项目化教学,就可以通过在真实的软件项目的功能实现中展示这些难以理解与抽象的概念与组件是如何应用的,学生也就可以更直观的理解与掌握它们。同时,项目化开发也使得学生的学习能力、动手实践能力和研究分析与解决问题的能力、团队协作能力、交流能力、职业素养与创新能力等得到了锻炼和提高。学生对软件开发的流程与步骤也有了更加直观的体会,为将来的就业创业打下必要的技能和实践基础。同时,由于真实的软件项目开发是一项复杂的系统工程,本课程传统上以程序设计语言学习和编程工具使用为主的教学理念远远不能使学生适应软件项目开发的需要。
2 教学内容设计
为了达到以项目任务引导学生学习、以项目实践学生学习效果的目的,在课程的项目化教学中,我们设计了课堂训练和课程设计两个项目。课堂锻炼项目是课程教学的主体,该项目有具体的功能需求和系统模块,事先由任课教师设计和开发完成,学生在授课教师的引导下完成整个系统预定功能的开发,学生通过该项目的锻炼,掌握动态网站开发的基础知识和基本流程。而课程设计项目仅由授课教师给出基本的要求,具体选题由学生选定,学生通过分组的方式进行项目的需求调研、系统分析和设计,最终实现项目的开发和试运行,使学生切身体验到一个软件项目开发的整个流程。
2.1 课堂训练项目
课堂训练项目的选取十分关键,也是课程改革取得成功的主要前提。训练项目需要由任课教师事先根据所授课程的特点选择合适的选题,并进行详细的系统设计,将项目划分为功能和实现难度适中的小模块,然后采用所授课程的编程语言进行编码实施。课堂训练项目的选取十分关键,需要将本课程主要的知识点进行分解并融入项目的各个模块中。以“C#与Web应用开发”课程为例,该课程选定“校园二手品交易网”作为课堂训练项目,该项目的模块划分和对应的知识点如表1所示。课程学习中,学生在授课教师的引导和帮助下逐步实现软件的各个功能模块。通过这种鲜活的例子,学生就容易理解并掌握该门编程语言中各个函数、组件、对象等知识点是如何使用的。
2.2 课程设计项目
课程设计项目安排在课程学习的后期,用于检验和增强学生对课程知识的水平,同时锻炼学生主动解决问题的能力,以及培养团队合作意识。因此,课程设计项目通过分组,学生以小组为单位完成整个软件项目的实施。课程设计项目的题目和具体功能由学生根据自己的兴趣自行拟定,或者选择任课老师推荐的题目。本实践环节中,要求学生从“项目需求调研和系统分析”、 “系统编码”、 “系统部署”等各个方面进行开展,并对每个方面的工作成果制定相应的要求。比如,在需求调研和系统设计阶段,需要学生开展需求调研和分析,撰写项目需求说明书、系统详细设计报告等项目开发文档;在系统部署阶段,需要撰写用户操作说明书,等等。
3 教学过程组织
一般地,一门课程的授课时间大约为18周。考虑到大部分学生前期对于本门课程基本知识的掌握程度不高,因此在时间安排上,课堂训练项目的时间约为12周,课程设计项目的开发实践时间4周,课程考核和总结用时1-2周。
课堂训练项目的实施是本课程是否取得成效的关键。任课教师首先将整个项目的开发任务进行分解,对每个任务模块进行编程实现,并将主要的编程操作录制成小视频;更重要的是,需要总结每个任务模块中的关键知识点以及需要注意的事项。在课堂教学中,老师首先给学生明确本项目的总体目标,以及每个阶段的任務分解和时间进度要求。同时,为了给予学生更好的引导,每个任务开始前,老师都首先对实现该任务需要用到主要知识点和工具进行讲解,以及需要用到哪些学习资料等等。这样,学生就在老师的引导下,围绕任务目标,一步步进行课堂训练项目的开发。同时,为了配合学生更好地自主学习,每门课程最好构建专门的课程学习网站,将前期每个项目任务模块录制的编程操作小视频,以及老师认为有用的网络学习资源分类放在该网站上,方便学生随时获得。在实际工作中,我们还会要求学生在每完成一个阶段任务后,提交将完成的项目源代码。任课教师通过查阅学生的任务完成情况,发现学生实践中普遍存在的问题,在下次课统一讲解、更正。总之,课堂训练项目的目的就是使学生达到通过模仿制作、理解和领会知识点的具体作用的要求,实现任务驱动和案例教学的有机结合,更好地激发学生的学习兴趣,锻炼学生的自学能力。
课程设计项目的组织则通过学生自由分组进行实施,每个小组4-5名学生,其中1人任组长。分组后,任课教师首先对项目的实施要求做出具体说明,并提供必要的资料,包括提供软件项目需求说明书、系统详细设计报告等文档的示范案例,讲解软件编码中需要注意哪些规范,等等。在分组实施中,如果小组觉得有必要,可随时请求任课老师的帮助。任课老师也需要全程跟踪各个小组,随时参与小组的讨论,或在发现小组的实践中遇到困难或突发情况时及时给予支持。
4 考核评价
本课程的考核主要通过平时成绩和课程设计项目成绩两部分构成。平时成绩根据学生平时提交的课堂训练项目中各个阶段任务的完成结果进行评定,占30%。课程设计项目成绩的评定通过小组答辩来进行,评委由3-5位相关课程的老师承担;答辩时间约为10分钟,答辩前要求各个小组提交项目需求分析报告、系统设计报告、用户手册等必要的文档资料。评委根据小组的软件完成效果和文档资料对各个小组进行评分。最后任课老师根据小组成员的具体分工评定每个成员的成绩。课程设计项目小组评分的考核依据如表2所示。
5 结束语
两年来,我们在本校“Java Web应用开发”、“C#与Web应用开发”、“PHP Web开发”等Web技术与应用相关课程的教学中采用了项目化教学法,通过对选课学生课后进行不同形式的访问和调查,结果表明这种将知识点教学分解到具体的项目实践中、通过任务驱动引导学生掌握编程技能的教学改革思路正确,学生的学习主动性、积极性有了较大的提高,改变了普遍以老师讲授为主、学生听做为辅的常规教学方式,不仅使学生的动手编程能力得到了锻炼,同时也培养了其独立思考、积极探索的习惯。此外,在课程中引入需求分析、系统设计等计算机专业综合能力的锻炼,也适应当前我国大力发展“新工科”教育的新形势,[6]希望在以后的教学中进一步推广和完善。
参考文献
[1] 伍春香,刘斌,李小红.基于能力培养的软件工程教学实践[J].计算机教育,2017.8:38-41.
[2] 肖卓宇,黎妍,叶嘉笑. 以计算思维为导向的大学生程序设计能力培养研究[J].计算机时代,2017.1:79-81.
[3] 王蓝婧.基于项目和任务的教学模式在Web技术及应用课程中的探索[J].电脑知识与技术,2016.12(34):184-185.
[4] 钱存阳.项目化教学培养大学生系统实践能力[J].高等工程教育研究,2015.2:187-192.
[5] 李晓明.企业项目化教学法在基于Java技术的Web应用开发课程教学中的应用与实践[J].软件导刊,2012.11(2):182-183.
[6] 傅雷扬,饶元.新工科背景下软件课程教学模式研究[J].重庆科技学院学报(社会科学版),2017.10:116-117.