基于开源项目的项目教学法在Java教学中的应用

时间:2022-05-22 05:22:59

基于开源项目的项目教学法在Java教学中的应用

摘要:项目教学法特别适合于职业技术教育,Java开源社区产生了许多有价值的开源项目,并且培养了一大批优秀的大师级编程专家。文章提出基于开源目的项目教学法,然后给出了其在java教学中的具体应用实践,最后探讨了该教学法应该注意的问题。

关键词:开源项目;项目教学法;Java

项目教学法是指将传统的学科体系中的知识内容转化为若干个教学项目,围绕着项目组织和展开教学,学生直接参与项目全过程的一种教学方法[1]。项目教学法起源于美国,盛行于德国,尤其适合于职业技术教育。项目教学法成功与否,项目的选择和设计非常重要。所以根据课程自身的特点,研究项目的选择和设计原则非常有意义。

1基于开源项目的项目教学法的提出

实施项目教学教学法需要设计合适的项目。项目通常有3种来源:从企业引入的真实项目;教师自己设计的虚拟项目;教材上别人设计的项目。这3种方式都有不同的缺点。

(1) 与企业合作从企业引入真实项目最大的问题是依赖企业的配合,目前还没有形成气候,可行性得不到保证;再就是由于不同的软件企业针对的应用领域不同,项目不一定具有典型性;

(2) 教师自己设计的虚拟项目缺点。由于很多教师没有相关项目经验,代码质量、实现的技术和方法与企业真实情况可能有很大的差距;

(3) 教材上别人设计的项目也具有教师自己设计的虚拟项目的缺点。

开源软件是指源代码公开,并且可以自由运行、拷贝、研究、改进的软件。开源软件由于开放源代码,为学习者提供了广阔的学习和研究空间,为教育提供了极好的先决条件和素材。成功的开源软件是众多优秀程序员的智慧结晶,包含了他们的最佳实践经验,其代码质量要明显好于商业软件。所以相对前面提到的3种项目来说,对合适的开源软件项目进行改造形成教学项目用于教学,具有不可比拟的优势。Java开放性和活跃的开源社区造就了一大批优秀的大师级编程专家,使得普通的开发者通过这些社区多多受益,就是很好的证明。在高职项目教学中采用开源项目的优势更加明显,原因如下:

(1) 开源项目由于开源的性质,容易获取相关资料。

(2) 开源项目“陈述性知识”和“过程性知识”[2]并重。开源软件由软件厂商或技术组织的一线软件开发人员来完成,包含了众多优秀程序员的最佳实践经验。学生在开源软件中不只是学到相关技术(陈述性知识),还可以学到很多经验性的知识(过程性知识):编码规范、设计技巧和编程模式等。当前教育部在高职院校大力推广基于工作过程的课程改革的背景下,这个优势非常值得关注[2]。

(3) 开源项目有利于学生动手能力和合作精神的培养。开源软件采用“集体开发”、“合作创新”和“技术共享”的模式,通过来自底层志愿者的自下而上的创新体系进行软件的开发。学生通过不断深入研究开源软件的开发思想和架构、不断与社区的志愿者们交流沟通,可以提高其动手能力,增强团队合作意识,更好地实施研究式学习,培养创新能力[3]。

(4) 选择开源项目用于教学可以让学生从一开始就受到开源思想的熏陶,顺应当前软件行业开源软件将逐渐流行的趋势[4]。

2在Java教学中的应用

在Java技术相关课程中使用项目教学法,就是按照软件工程思想把某一工程项目展开并贯穿于整个教学,教学过程为师生互动过程,学生在项目研发的过程中掌握Java技术的应用,这样就使学生明白了Java技术在软件开发中“可以做什么”“应该做什么”和“如何做什么”。按照这种方法实施的教学,学生参与程度高,整体效果好,毕业生进入企业适应期短[5]。所以项目教学法非常适合Java技术相关课程的教学。

Java开源社区是最活跃的社区,这些社区产生了许多有价值的开源项目,如Apache HTTPD Server,log4j,ant,common,Eclipse,JBoss,Struts,Hibernate,Spring,PetStore, Duke Bank等,这为在Java教学中使用开源项目实施项目教学法提供了条件。下面重点介绍基于开源项目的项目教学法在Java软件项目(B/S架构)开发课程中的实践应用。

2.1开源项目的选择

PetStore(宠物商店) 是 SUN 公司推出的用于展示Java web应用开发技术的示范项目,后来很多开源社区又推出了它的不同轻量级版本。该系统的不同版本是世界各地优秀程序员智慧的结晶,相比来说,JpetStore设计和架构更优良,各层定义清晰,使用了很多最佳实践和模式,是学习Java web应用开发相关技术的经典案例。从2007年开始,我们在Java软件项目(B/S架构)开发课程教学中选择JpetStore用于教学。

JpetStore提供了网上商城系统所必须的功能:用户身份认证、商品信息列表、选购商品、下订单等,围绕这些功能,系统的设计分为以下4个部分。

(1) 宠物分类展现和宠物查找模块(catalog部分),供用户浏览、查找并选购宠物;

(2) 购物车管理(cart部分),供用户查看购物车的情况,并做是否购买的选择;

(3) 账户管理(account部分),为用户提供注册和登录功能;

(4) 订单管理(order部分),供用户管理自己的订单。

2.2对开源项目进行教学适用化改造

为了能够适应教学需对选取的开源项目进行教学适用化改造。

首先,通过逆向工程获得开源系统的结构、框架信息。将开源项目用于教学的前提是课程组老师必须要了解系统的结构和框架等信息。由于JpetStore是一个开源项目,只能从网上下载其源代码及一些对程序本身的辅助说明的文档,而且资料不全并且说明不充分,不便于老师和学生理解。所以我们利用逆向工程技术和工具分析JpetStore的源代码,来获取该系统的结构、框架等细节,从而可以使老师和学生充分理解软件,并可以按照需要改造这些软件。

再就是进行必要的本地化改造。很多开源软件都是英文界面,JpetStore也不例外,这给高职学生理解增加了难度,而且对于中国的学生来说,他们的最终目的还是能够开发出中文界面的系统,所以对JpetStore进行本地化改造汉化界面以适应中国学生的学习就变得很重要了。

最后需要开发循序渐进的中间版本。直接从一个系统的完成版来学习,学生难以接受,所以开发与完成版匹配的迭代的中间版本是很有必要的。如表1所示,我们对JpetStore的宠物分类展现模块(catalog)开发了5个中间版本,这样学生就可以通过从最简单的第一个版本(静态页面)开始,逐步学习新的技术,到最后可以完成编程高手实现的代码。

2.3在教学中使用开源项目

在具体教学过程中,考虑到授课时间,我们选择JPetStore前三个部分:宠物分类展现和宠物查找模块(catalog部分)、购物车管理(cart部分)和账户管理(account部分)来讲解。

具体实施教学时我们采用基于原型迭代的思路,将实现JPetstore的整个过程分为9个工作任务(表2所示),以完成工作任务为目标学习相关技术。从最简单的用HTML+CSS实现宠物分类展现模块的静态版本开始,每一个工作任务中学习的新技术和方法,都是建立在前一个任务的基础之上的,从而学生能够循序渐进地进行学习,到最后能够编写出Java高手编写的代码。

为了巩固学习效果,我们课外作业安排学生分组完成一个自选的项目。自选的项目可以是一个有真实需求的系统,或选择合作企业易思博公司提供的真实项目学生模拟实现。

2.4使用开源项目前后教学效果对比

2002级和2007级软件技术Java方向2个基础相当的班级参与对比,2002级学生没有采用开源项目,2007级学生采用了开源项目。通过学生平时课堂听课情况和课内项目完成的主动性来衡量学习兴趣;通过学习的技术类型、课内完成的项目情况和期末笔试成绩来衡量掌握技术情况;通过课外项目的完成情况来衡量软件开发能力提升,课外项目指的是课后作业布置的项目,这里主要比较项目的类型、难度和实用性。

(1)2个真实系统指的是由2007软件3-1班杨永滨开发的用于我院学生考勤的“学生考勤管理系统”和由2007软件3-1班张文敏和何景峰开发的用于深圳东门商业圈的“东门网”(Google搜索中排名第一);

(2) 企业提供的6个真实项目分别是直放站统一通讯管理系统、航班订票系统、企业资产管理系统、电子化仓储管理系统、手机客户俱乐部会员积分消费管理系统、基金会门户网站等。

具体对比情况如表3所示。

从表3可以看出,采用开源项目同以前采用的项目相比,学生在学习兴趣、技术的掌握、软件开发能力的提升方面都有明显改善。最重要的是,通过该项目学习,学生可获得顶尖Java程序员的编程和项目开发经验,学得好的学生可编写出非常规范和专业的程序代码,甚至做出了有实用价值的软件产品。

3需要注意的问题

3.1注意选取项目的技术示范性

只有典型的项目才能真正体现“实用为主、够用为度”。“实用为主、够用为度”是过去十几年来我国

高职高专教学改革的主要方向。如果把“以‘够用’为度”的教学要求仅当作一个口号,那是人们所熟悉的。但如果论其怎样算“够用”?何谓“够用”的“度”?就不是人们所容易回答的问题了[6]。技术示范项目是软件厂商或技术组织推广其技术的示范项目,软件厂商或技术组织会精心挑选优秀的一线软件开发人员来完成,并且会精心展示其技术,所以样品式的技术示范项目是绝对具有示范作用的,它不是一个普通的案例,而是一个具有代表性的最能相关技术的优秀的范例,最能体现实用为主、够用为度。所以技术示范项目,如JpetStore就是比较理想的选择。

3.2把握教学内容的深度和广度

在教学过程中,老师应根据企业对软件人才能力的需求和专业人才培养目标,确定教学大纲,把握好教学内容的深度和广度,兼顾项目的完整性和教学时间与学生的接受能力的限制。在具体教学时可以选择其中最关键和最具有技术代表性的模块,其他模块用于学生自己研究或拓展学习,这样做的另一个好处是可以实现分层次教学,将优秀的学生引入开源社区,让他们得到更好的锻炼。

3.3对项目进行教学适用化改造

开源项目通常只提供最终的源代码,用于教学需要做大量教学适用化工作。课程组老师可以与开源项

目的项目组人员联系,甚至可以通过参加到这个开源项目,进行教学适用化的改造。这种改造还可以起到提高教师的双师型素质,教学研相结合的效果。

4结语

Java技术是如此普及,大多数高职软件技术专业都会开设相应课程(或设置相应学习领域),传授Java技术。在当前高职积极进行基于工作过程的课程改革的背景下,选取合适的项目作为载体用于教学是教学质量和教学效果的保证。Java技术具有很多开源的示范项目,这些示范项目最能展示相关技术,是世界各地优秀程序员实践的经验和智慧的结晶,对这些项目进行教学实用化改造,可以很好地用于Java技术相关课程的教学,提高教师的双师型素质。

参考文献:

[1] 李啬. 项目教学法在Visual FoxPro 教学中的应用[J]. 计算机教育,2007(9):53-54.

[2] 袁江. 基于工作过程的课程观[J]. 中国职业技术教育,2005(4):1.

[3] 刘进. 开源软件在教育中的应用[J]. 信息技术教育,2007(5):65-69.

[4] 顾宏军. 开源软件渐成主流[J]. 软件世界,2007(16):46-47.

[5] 张哲,陈桂生. 在Java语言教学中实施“项目驱动”教学法的实践探索[J]. 教育与职业,2007(18):160-161.

[6] 张国勇. 试论高职教育“以‘够用’为度”的教学要求[J]. 交通职业教,2002(1):29-31.

Application Research of Project Teaching Method in

Java Teaching Based on Open Source Project

QIN Guo-rong1, ZHANG Xi2 , LI Hua-zhong1

(1. Department of Software Engineering, Shenzhen Institute of Information Technology, Shenzhen 518029, China;

2. Faculty of Information Engineering, Shenzhen University, Shenzhen 518060, China)

Abstract: Project teaching method is particularly suitable for vocational . Technical education and the active Java open-source community produced a lot of valuable open-source projects, and trained a large number of excellent programming experts, this paper proposed the poject teaching method based on open-source projects. Then,it gave the practice in Java teaching. Finally, it discusses the issues on the teaching method.

Key words: open source project; project teaching method; Java

上一篇:在实训中开展职业素质养成教育的成功尝试 下一篇:UML系统分析与设计课程整体设计方案