邓泽林
(长沙理工大学 计算机与通信工程学院,湖南 长沙 410076)
摘 要:传统的Java框架技术教学受教学计划、师资水平等因素的限制,教学效果和学生就业情况不佳,针对这一现状,提出以企业需求为导向进行教学计划的优化和教学大纲的修订,以保证足够的课时用于深入地分析框架内核原理和框架项目的实践,同时探讨提升教师能力的途径以更好地进行Java框架技术的教学。
教育期刊网 http://www.jyqkw.com
关键词 :软件工程;框架技术;软件开发;教学改革
基金项目:长沙理工大学校级教改课题“软件工程专业实践教学改革研究”(JG1427)。
作者简介:邓泽林,男,讲师,研究方向为软件工程、机器学习,zl_deng@sina.com。
0 引 言
软件工程专业是一门实践要求高、与企业需求密切关联的专业,其课程的教学质量直接关系学生的专业素质和就业质量,因此,大量的教学人员从各个方面对软件工程教学进行改革探讨[1]。如提出以企业需求为导向的Java课程教学改革,着眼于提高学生实践能力[2-3];提出提升教学团队,提高系列课程的教学效果[4];提出软件工程专业实践教学改革,提高学生的实践能力[5];探讨软件工程教学改革与学生能力评估,以求更好、更客观地反映教学效果。
在软件工程专业的课程中,Java框架技术是一门实用性非常强、软件企业大量需要的软件开发技能。Java框架技术封装了一些软件开发过程常用的功能,并提供了Java对象生命周期管理,使得软件从业人员可以忽略这些基础功能的编程,而将程序开发的重点放在软件项目业务逻辑上,从而大大加快软件开发的速度和周期,降低软件开发的风险和费用,因此,当前Java企业的用人需求中几乎都要求企业员工熟悉并掌握常用框架。为了应用框架开发高质量的软件项目,软件企业不仅要求软件从业人员很好地掌握应用框架技术进行软件开发的能力,而且要求其深入理解框架技术原理,从而更好地掌控软件开发的过程,优化软件的运行性能。
虽然Java框架技术有着如此重要的地位,但当前其教学仍然存在很多问题。
1 教学中的问题
1.1 课程地位不受重视,学习效果较差
软件工程专业由于工程化的特点,要求学生不仅能编写简单的逻辑,而且要具备从事大型工程化项目的开发与管理能力。Java框架技术虽然非常适合进行大型企业级项目的开发,但在教学过程中却没有受到应有的重视,主要体现在课程开设时间晚、课时较少等,导致学生学习效果差。
1.2 教学大纲比较浅显,难以做到深入浅出
Java框架技术封装了很多技术细节与技巧,深入理解框架技术非常必要。当前的教学大纲比较注重教授学生框架的基本配置与操作,没有进行框架原理的解构与模拟,导致学生对框架技术理解不足,缺乏对框架的掌控能力。
1.3 教师水平存在差距,缺乏教师提升计划
Java框架技术的深入教学不仅要求教师具有扎实的Java语言程序设计基础,还要求其最好有软件企业工作经历和领导项目开发的成功案例,这个要求对于很多教师来说偏高,但目前很少有相应的计划对教师从不同的方面进行提升,以保障本课程的成功教学。
1.4 课程时间比较短,难以实施大型软件项目
Java框架技术的教学需要实施比较大型的项目来保障学生的学习效果,但目前来看存在困难。大型项目需要较多时间进行需求分析、组织管理、实施、评估等,由于课程时间短,难以安排足够的时间来完成企业级的软件开发。
2 教学改革措施
2.1 修订教学计划
导致本门课程开设时间晚的原因在于学生需要在本门课程之前学习doNet系列课程,如C#程序设计、ASP.NET开发技术等课程。实际上,企业并不需要员工同时熟悉J2EE和doNet,只需要熟悉其中一个方向即可。根据企业这一需求特点,可以将J2EE和doNet并行开设为专业方向选修课程,学生选择其中一个方向进行学习。这样,Java框架技术课程可以和C#程序设计同步开设,选择学习Java框架技术的学生不需要学习C#程序设计,Java框架技术的学习可以在第2学年开始;同时,由于不需要学习C#程序设计,则可以将本门课程的课时分配给Java框架技术,这几乎使Java框架技术的学习时间增加了1倍,有力地保证课程的深入学习。
此时,能够用于Java框架技术教学的时间达到80课时左右。为了进行全面深入的理论教学和实践教学,可利用这80个课时开设2门课程,一门是用于理论教学的Java框架技术(48学时),另一门是用于项目实践的Java框架技术实践(32学时)。教学计划的优化不仅强调Java框架技术的重要性,而且使学生能够花费更多的时间用于框架技术的学习和实践。
2.2 制定教学大纲的主要思路
Java框架技术的教学必须要有一定的深度和广度,这不仅要求学生能够使用框架技术进行软件项目开发,而且要进一步强化Java开发技术,并利用这些基本的开发技术来解构框架的内核,深入掌握框架的原理和工作流程。
教学大纲要求对目前流行的Struts、Spring和Hibernate等框架进行讲解,主要包括内核解析和框架应用的知识点。
1)Struts框架。
首先,利用Struts框架做简单功能实现,使学生对Struts框架的功能有简单直观的了解,分析Struts的配置文件信息,了解核心组件的功能。
然后,提出Struts框架的模拟实现。为了让框架模拟的功能与实际接近,在模拟环节中直接使用Struts的配置文件,并利用Java语言从零开始实现这一框架的主要功能。功能模拟应用到很多基础知识,这些知识在前期教学中没有一个好的大型案例来进行整合,学生的知识结构比较松散;而通过框架功能模拟,应用这些比较常用的技术来开发一个具有实用功能的框架,使得学生能够重新审视自己学过的内容,激发学生的想象力,提高其综合素质。
最后,按照常规思路讲解Struts框架的应用知识点,包括标签、国际化、输入验证等功能,通过这种深入浅出的教学方式使学生更好地使用框架进行应用开发。
2)Hibernate框架。
Hibernate框架用于数据访问,集成了JDBC、对象关系映射(Object-Relation Mapping,ORM)、查询、Lazy、缓存、事务处理等功能,学习难度较大。Hibernate的数据访问细节对用户是透明的,其ORM功能能够将数据表格中的数据行直接封装成实体对象,而无须显示使用JDBC的API。这个特点使得学生极易陷入误区,认为Hibernate是有别于JDBC的另外一种数据访问技术,Hibernate的教学首先要打破这种误区。
首先,解析Hibernate的配置文件,并使用合适的数据结构将其存储于内存中,然后根据加载的类名找到对应的配置信息,反射构建对象,并使用配置文件中的字段与类的属性之间的映射关系自动生成SQL语句,使用JDBC进行数据库查询,遍历查询得到的数据集中的每一行数据,获得每一行中每一列的数据,并通过数据库元数据(Metadata)确定字段名称,利用映射关系定位到相应的属性名称,调用与该属性对应的set方法,通过反射调用该方法进行数据封装,最后以Object的形式返回反射构建的对象,即可实现与Hibernate相同的ORM功能。通过这一功能模拟,在深入解析Hibernate的核心技术的同时,使学生深入认识到Hibernate的本质。
在深入了解Hibernate的功能之后,学生对Hibernate的工作原理不再感到神秘,此时,再按常规思路讲解Hibernate的其他功能,如关联、查询语句HQL、缓存、继承、数据库锁等技术点,通过这种教学方法使学生完全掌握Hibernate的原理和应用。
3)Spring框架。
Spring框架主要负责系统运行过程中Java对象的管理,并能与Struts、Hibernate等框架进行整合,进行系统集成开发。
Spring的核心功能主要包括控制反转(Inverse of Control,IoC)和面向切面编程(Aspect Oriented Programming,AOP)。IoC控制对象的构建,并在程序运行过程中将对象注入其他依赖的对象中。此时,程序的运行控制权将由原来程序自身控制转移到由Spring容器控制,所以称为控制反转。控制反转功能相对简单,可以在分析Spring配置文件的基础上通过应用反射等机制加以实现。而AOP则比较复杂,不宜在课堂上编程实现,但教师仍然可以讲解相关知识,特别是通过动态代理技术讲解揭示在已有流程上切入逻辑的原理与方法。
2.3 师资培养与提高
从以上教学大纲的设计思路来看,框架技术的教学不仅要求学生熟练使用框架技术,而且对框架核心技术的理解与实现也要深入理解,这些要求决定了教师需要有很强的编程能力以及一定的企业应用开发经验,这可能超过了部分教师自身的知识结构和实践经验。为此,教师须不断提升自身的实践能力和教学能力,可以从以下3个方面进行:
(1)强化Java基础编程。框架技术由于封装了核心细节,对于很多学习者来说都比较神秘,因此,教师首先要自己解构框架核心技术。核心技术的相关知识点包括常用设计模式(如模板模式、静态代理模式、动态代理模式、ThreadLocal模式等)以及框架技术常用的反射机制。学习了核心技术后,教师要学会通过反射技术结合表单属性、数据库字段等信息,实现对象的自动创建与封装,在此基础上,动手模拟实现Struts、Hibernate等框架,深入掌握框架的核心技术和主要流程原理。
(2)参与企业项目开发。软件工程专业一般与企业存在良好的交流与互动,特别是与企业存在紧密的合作关系。Java框架技术课程的教师要利用合作企业的资源,参与到企业项目中去,以此来积累软件项目开发的经验。企业项目一般都会使用框架,虽然可能是Struts、Spring、Hibernate之外的框架,但这些框架的使用具有一定的共通性。通过参与企业项目的开发,教师掌握和理解软件项目中框架的常用操作、项目管理等,有利于更好地进行课堂教学和项目实践。
(3)内部交流与外部培训。负责Java系列课程教学的教师要经常进行教学方法、相关技术的探讨与交流,实现团队教师整体能力的提升;同时,利用假期积极参与外部培训机构的软件工程相关内容培训,跟进目前本专业的技术发展,为Java框架技术的教学带来更多实用的知识。
2.4 实践教学过程控制
在对框架技术进行深入的教学之后,学生较好地理解与掌握了框架的主要工作原理和操作,接下来需要对Struts、Spring和Hibernate框架进行整合,实施大型项目的开发,以确保学生能够将框架应用至实际开发中。由于增加了Java框架技术实践课程,所以有足够的课时用于软件项目的开发,主要步骤如下:
(1)在Java框架技术课程的后期,提供若干具有实际应用背景的项目,如网上商城、固定资产管理、客户关系管理等供学生选择,同步提供项目需求供学生进行系统分析。
(2)在Java框架技术实践的第一次课,学生需要对系统进行需求分析和用例分析,在较好地掌握项目需求并进行ER分析之后,按照三范式的要求设计出数据库。
(3)学生整合Struts、Spring、Hibernate框架,按照MVC(Model-View-Control)架构设计项目代码的分层结构,用Struts进行数据显示及输入和流程控制,利用Hibernate进行数据访问,使用Spring进行业务逻辑的管理和控制。为了解耦合各层代码,学生需要设计每层代码接口并公布,上层代码通过接口调用下层代码,下层代码的实现对上层代码透明,这样,修改每层代码实现不会影响上层代码,有利于系统的后期维护和组件替换。
(4)项目代码开发和系统测试。利用30个左右课时保证项目的实施,实现系统的主要功能。系统功能测试是一个比较专业的学问,学生目前并没有掌握,因此,本阶段学生只需要检测主要流程是否符合程序预期即可。
(5)项目验收。验收采用项目答辩的形式进行,学生需要对自己的作品进行讲解,演示作品的主要功能,与验收老师进行良好的互动,讲解项目实践过程中的困难、解决方法、个人的创新与心得体会以及对框架技术的理解。项目验收不仅能很好地控制项目的过程和质量,而且对提高学生的交流能力、产品推介能力也有很大帮助。
3 结 语
通过重新设置教学大纲,学生深入理解每个框架的核心机制与原理,在理解的基础上更好地进行框架技术应用的学习;通过教师的培养与提升,授课教师强化了理论知识和应用能力,使得课程的教学能够深入浅出;通过实践过程的控制,学生不仅可以进一步加深对框架技术的理解,还可以利用框架技术进行大规模的软件开发,更好地掌握框架技术。
这一系列的措施,让学生在学完Java框架技术后对Java语言、数据库技术、设计模式、框架技术有了更好的综合应用能力,综合素质明显改善。从学生对本门课程的评价来看,他们从本门课程学习到的东西远高于其预期,显著地提升了学习Java语言的兴趣;从学生的就业质量来看,很多学生都签约了著名的软件企业,且就业待遇高。这些成绩都说明本文的改革措施具有积极效果,达到了预期要求。
教育期刊网 http://www.jyqkw.com
参考文献:
[1] 邓泽林, 谢中科, 胡宁静. 以企业需求为导向的Java程序设计教学改革探讨[J].中国电力教育, 2010(28): 114-116.
[2] 翁伟,朱顺痣, 肖蕾, 等. 应用型软件工程教学团队建设方案[J]. 计算机教育, 2011(8): 43-46.
[3] 邓泽林, 谢中科. 教学团队在软件工程系列课程教学中的改革实践[J]. 计算机教育, 2014(15): 103-106.
[4] 厉小军, 谢波. 软件工程实践课程教学改革探索[J]. 计算机教育, 2012(3): 106-110.
[5] 周波, 刘兴丽, 乔付, 等. 应用型本科院校学生软件工程能力评价研究[J]. 中国电力教育, 2013(23): 18-19.
(编辑:杨 涛)