基于工作过程的高职软件项目开发综合实训开发探究
文章编号:1672-5913(2008)20-0175-04
摘 要:本文提出了一种全新的软件项目开发综合实训模式,该模式以实际项目贯穿始终,以软件工程思想贯穿全线,围绕学生完成一系列递进的典型工作任务来组织实训内容,覆盖不同课程串联不同知识。该模式是工作过程导向在软件技术实训教学上的运用,对当今高职院校进行课程改革具有重要的参考价值。
关键词:工作过程导向;学习情境;典型工作任务;项目开发;综合实训
中图分类号:G642 文献标识码:B
1 实训教学的现状和对策
我院的软件技术Java开发方向主干课程的设置包括:“Java程序设计”、“数据库基础及应用”、“JSP程序设计”、“UML基础与Rose建模”、“软件工程”、“软件测试”、“J2EE技术”。在每门课程的最后阶段都安排了课程实训,在此过程中,学生以个体或小组形式完成一个相对真实的工作任务。课程实训可以训练学生将该课程中不同的知识和技能串联起来,加以综合应用解决实际问题。由于各门课程相对独立,即使完成以上所有课程的课程实训,学生还是难以参与软件开发的全过程,难以获得对开发过程的整体把握。即使进入专业学习结束后的毕业设计阶段,由于毕业设计教学环节与大学生毕业就业成为近年来我国高校的一个非常突出的矛盾,尤其是高职高专院校的毕业生面临着严峻的就业形势,许多学生在最后一个学期几乎都在外出找工作,提前就业上岗。高职高专院校本来就学制短,毕业设计教学环节形同虚设,严重影响了正常毕业设计教学环节的实施和毕业生的水平。
在近几年的专业建设和课程改革中,我们越来越认识到培养学生的软件开发能力、团队合作能力、工程应用能力的重要性。为此,我们专门针对高年级学生设计和开发了工作过程导向的、具有专业总结和综合性质的项目开发综合实训,通过项目实践开阔学生视野,锻炼学生的团队意识和工程意识,全面培养学生的职业素养和工程应用能力。
2 基于工作过程的高职软件项目开发综合实训设计思路
基于工作过程的高职软件项目开发综合实训设计思路包含“两个贯穿一个分解一个覆盖”:即“工程项目贯穿”、“软件工程思想贯穿”、“典型工作任务分解”和“不同课程覆盖”。
2.1 工程项目贯穿
“工程项目贯穿”,即以一个工程项目全线贯穿于整个实训过程,学生从步入实训基地开始接受项目,到最后提交一个按照操作程序、操作规范完成的,满足一定质量标准的开发成果。在确定项目时,应该把握好以下两个原则:
第一,实训项目应具有一定的应用价值和实际意义。实训项目最好以实际项目为背景,或者直接就是从实际项目提炼而来,与企业实际生产过程或现实商业经营活动有直接的关系。这样的项目能培养学生的实战经验,极大地激发学生的积极性。但是要注意,业务流程太专业太复杂的项目不适于拿来作为全程的实训项目,因为这类项目在前期的业务分析和理解上将耗费太多的时间和精力,不利于后续工作的展开。
第二,要根据教学内容和专业培养目标确定项目内容与项目难度。高职软件技术Java开发方向旨在为社会输送合格的熟练的Java程序员,而J2EE编程是Java程序员追求的最高目标,所以我们确定的实训项目具有总结性和综合性,并具有一定的挑战性。经过前导课程“J2EE技术”的学习和实践,学生已经具备了用Servlet+JSP+JaveBean (EJB)或struts框架来实现MVC架构的能力,在实训项目中我们鼓励学生整合Struts、Hibernate和Spring三个框架,综合运用J2EE的组件、框架开发技术,开发一个满足J2EE架构的多层的企业应用。
2.2 软件工程思想贯穿
在传统的“软件工程”教学中,软件工程是一门独立的理论性较强的课程,学生们缺乏实战经验,难以在参与软件开发的全过程中获得感性体会,理解软件工程的精髓。
为了培养软件工程意识,使工程化思想成为学生从事软件开发工作的行动指南,我们将软件工程思想贯穿于整个综合实训的始终。综合实训以成熟的软件开发模型为基础,以具有一定应用价值和实际意义的项目为背景,学生以开发团队的形式,按照软件开发流程,在规定的时间点完成指定的任务,经历需求分析、建模、设计、编码、测试、部署的软件工程全过程。综合实训模拟企业运作机制,模拟企业中实际存在的项目压力和工作压力,模拟真实企业开发环境,以项目的进度检查作为监控,以项目开发成果作为最后的考评。学生在实训过程中,都有机会承担项目经理、设计人员、编码人员、测试人员等全部或部分岗位角色的职责,学生的综合能力得到极大的提高。
2.3 典型工作任务分解
典型工作任务是“基于工作过程”实训课程开发的精髓。所谓“任务”就是要求学生做一件事,重要的是,这件事是按实际工作的要求来操作的,包括操作程序、操作规范、质量标准等。学生在完成各项“任务”后,会呈现出不同的“结果”。这个结果是非标准答案的,即每个学生或每个团队的作品可以不一样,对作品的评价不是简单的对与错,而很可能是好与差。而“典型工作任务”能呈现出职业的典型的工作内容和形式,在整个企业的工作大环境里具有重要的功能和意义。
在工作过程导向设计原则的指导下,结合软件行业的岗位需求,通过分析完成软件开发需要完成哪些典型工作任务,我们设计了基于工作过程的实训流程。该流程以一个软件项目贯穿始终,将整个软件开发过程分解为一系列递进的实训情境,在每个实训情境要求学生完成一个独立的工作任务,完成所有的实训情境就完成了整个软件项目的开发。
基于工作过程的项目开发综合实训流程如图1所示,整个实训由递进的6个实训情境构成(水平方向),它们对应的工作任务依次为“需求分析”、“搭建开发环境”、“设计”、“编码”、“集成和测试”、“项目部署”。垂直方向则反映了为完成某项工作任务所采取的步骤和要提交的工作成果。
图1 基于工作过程的软件项目开发综合实训流程
2.4 不同课程覆盖
按照工作过程导向设计原则,将整个软件开发过程分解为递进的6个实训情境,每个实训情境覆盖了不同的课程内容。表1列出了每个实训情境对七门主干课程的覆盖情况,可以看到,它彻底地克服了传统的课程体系只重视每门课程自身的实验,缺乏覆盖不同课程,串联不同知识和技能的综合性实验的重大缺陷,它使得相对独立的各门课程整合在一起,使整个实训成为一个有机的整体。这样的训练能使学生将以前的所学融会贯通,能有效地培养学生的综合应用能力和创新能力。
3 基于工作过程的高职软件项目开发综合实训的实施
3.1 实训项目举例
依照确定项目的两个原则,我们把为我院开发“教学资源管理系统”定为综合实训的第一个项目,要求运用Struts、Hibernate和Spring三个框架,开发一个满足J2EE架构的多层的企业应用。
该项目的业务需求是“主要完成对多媒体课件和各种多媒体素材资源的管理,方便对各种电子教学资源进行分类维护,包括浏览,查询,下载;为教师提供一个方便快捷的课件发布渠道,把制作的课件或搜集的素材上载到该系统,实现资源共享。本系统分三级用户:系统管理员,教师用户、普通用户(包括学生);包括以下四个方面的功能:普通用户资源浏览和下载;普通用户资源检索;教师用户资源上载;管理员系统维护”。
项目开始时,教师只给出较为粗略的业务需求,给学生留有足够的发挥空间。因为“教学资源管理系统”就是为学生和教师服务,非常贴近学生的学习生活,理解起来没有任何障碍。至于界面做到什么样子,功能做到何种程度,留给学生在撰写详细的需求分析报告时去确定,教师需要把关的是工作量和技术难度,不能太简单而达不到实训的效果,也不能太难无法实现而挫伤学生的积极性。
3.2 实训组织方式
实训采用4个人一组,每人负责一个方面的功能开发,每组设一个项目组长,项目组长除负责一个方面的功能模块开发外,还负责各模块集成。由项目组共同提交一份需求分析报告。个人一旦选择某方面的功能开发,就要全权负责该部分的设计、编码和单元测试。此外,在测试情境中,开发小组进行角色转换,变成测试小组,选择别的小组开发的软件进行测试。
3.3 实训进度安排和任务要求
本综合实训历时一个月,共72学时(4周*18课时),进度安排如表2所示,各院校可根据自己的情况作适当调整或根据需要增加学时。下面是每个情境的具体步骤、任务要求的详细描述。
3.3.1 情境1:需求分析
本情境的典型工作任务是撰写详细的需求分析报告。
(1) 首先老师对实训项目提出业务需求,讲解应用的环境、功能要求、技术要求以及实训组织方式。
(2) 实训小组组成,组合出每个小组的成员,选出项目小组长。
(3) 每个小组对功能模块分工分配,确定每个人所承担的功能模块。
(4) 各小组讨论需求分析,每个人撰写模块的详细需求分析报告。
本情境结束后,要完成以下任务:
●老师要汇总出小组划分、成员分工;
●项目小组提交一份详细的需求分析报告。
3.3.2 情境2:搭建开发环境
本情境的典型工作任务是搭建J2EE开发环境。我们选择的开发环境为:
●操作系统:Windows NT /Windows XP
●Java 平台:JDK1.6 以上
●服务器:JBOSS 4.0.4
●数据库服务器:MySQL 5.0
●开发平台:MyEclipse 5.5
●建模工具: Rational Rose
●单元测试:Junit
●功能测试:手工测试
(1) 首先老师对开发环境进行讲解;
(2) 学生在自己的机器上完成以下任务:安装JDK环境、安装JBOSS服务器、安装MySQL服务器、安装MyEclipse集成开发工具、安装Rational Rose建模工具、安装Junit。
本情境结束后,要完成以下任务:
1) 学生在自己的机器上完成环境的搭建和测试。
3.3.3 情境3:设计
本情境的典型工作任务是撰写详细设计文档。
(1) 老师对需求分析进行点评,指出其中的问题和修改意见。
(2) 老师以其中某个模块为例,讲解所使用技术和技术线路。
(3) 进行模块设计和数据库库表设计,模块之间接口的定义,数据库中测试数据的准备。
本情境结束后,学生要完成的任务:
对需求分析报告进行修改和完善。
撰写详细设计文档,包括类图和时序图。
详细设计包括以下组件的设计:模型实现类和DAO组件;业务逻辑组件;MVC层组件;表现层组件
撰写数据库表的设计以及测试数据,数据库表设计包括库表名称、字段定义,测试数据以表格的方式形成。
3.3.4 情境4:编码
本情境的典型工作任务是依照设计进行代码编写,以及单元测试。
老师对学生的模块设计和库表设计进行点评,指出其中的问题和修改意见。
在编码过程中,老师要对学生进行指导,帮助解决问题。学生之间应互相配合,及时修正模块设计中的错误。
本情境学生要完成的任务包括:
●修订详细模块设计和数据库库表设计;
●用测试数据填充数据库;
●制定编码进度;
●模型实现类和DAO组件的编码和测试;
●业务逻辑组件的编码和测试;
●MVC层组件的编码和测试;
●表现层组件的编码和测试。
3.3.5 情境5:系统集成和测试
本情境的典型工作任务是小组模块集成和功能测试。
(1) 小组成员之间相互配合,完成整个系统的集成。
(2) 选择另一个小组开发的系统,根据他们的需求分析报告,撰写测试用例。
(3) 进行功能测试并提交测试报告。
本情境完成,学生要完成以下任务:
将小组内各成员开发的模块进行系统集成;
选择另一个小组开发的系统撰写测试用例,进行功能测试,并提交测试报告。
3.3.6 情境6:项目发布
本情境的典型工作任务是部署项目、提交成果。
(1) 学生将实训成果进行演示
(2) 学生提交可以部署的包和按工程组织的源代码
(3) 老师对各个项目小组的成果进行考评。
(4) 老师对整个实训进行点评。
本情境完成,学生要提交以下程序和文档:
●源代码和可以部署的包
●实训报告
4 新的综合实训模式对教师提出了更高的要求
基于工作过程的高职项目开发综合实训,覆盖面广,综合性和工程实践性强,要求按照软件工程的要求,指导学生进行软件项目开发实训,因而对指导教师的教学素养、主导作用、工程实践经历提出了更高的要求。为此我们组建了一支以具有工程实践经验的核心教师为首,由各科任课教师组成的教师团队。进入实训项目的教师必须首先对项目本身有足够的认识和理解,并且亲自做过,才能在其参与指导的实训情境中指导学生完成该情境所指定的典型工作任务。而核心教师经历过企业软件开发项目的全过程,熟悉软件开发项目的管理过程,熟悉软件开发程序的设计规范、调试过程、软件质量测试方法,以“项目经理”的身份指导学生进行软件开发实训,其关键作用是不可置疑的。
同时,新的综合实训模式必须有新的教学观念、讲授模式和管理模式。在实训过程中绝对不能再是“教师讲授学生听”,而是以学生为主体,以任务为驱动,教师重点放在讲解每个任务的需求,完成该任务所要采用的知识、方法、工具和步骤,然后由学生自己进行分析、建立问题模型,自己掌握开发的进程。教师则更象一位项目经理,控制项目进度,评定软件质量。
5 结束语
基于工作过程的高职项目开发综合实训,是一种全新的软件项目开发综合实训模式。该模式以工程项目贯穿始终,以软件工程思想贯穿全线,围绕学生完成一系列递进的典型工作任务来组织实训内容,覆盖不同课程串联不同知识。该模式是工作过程导向在软件技术实训教学上的运用,对当今高职院校进行课程改革具有重要的参考价值,同时对指导教师提出了更高的要求。
参考文献
[1] 姜大源.当代德国职业教育主流教学思想研究—理论、实践与创新[M].北京:清华大学出版社,2007.
[2] 陈朔鹰,赵小林.建立软件实践课程体系 全面培养工程型人才[J].计算机教育,2008,(7).
下一篇:程序设计教学中如何应用软件工程学