">
1迭代开发
按照业界流行的软件开发过程[4],软件开发以3周为一次迭代,每次迭代进行必要的需求、分析、设计、实现、测评等活动,通过多次迭代逐步完成软件功能。整个实训包括开始1周,5次迭代15周。这与原来设想[2]相比减少了1次迭代,主要是因为学期长度已改为19周,需要留出2周做期末考核,1周做成绩评定和提交。
2阶段考核和小组考核
由于实训课时间较长、学分较多,为了及时掌握学生的学习情况,也为了减少一次性考核对学生的压力,本课程采用阶段考核方式。大约每两次迭代即对实训课中融合的理论知识进行一次考核,共进行三次。此外,为了加强团队建设,让学生有集体感,有些作业、考核以小组为单位评分。每门课30%的成绩由考勤、参与度和表现决定,30%由团队表现和成果决定,40%由学生个人的书面考试或书面报告决定。
3实施过程
3.1分组与选题
课程开始,首先将学生每5人分成一组,老师根据学生所在行政班并考虑以往学习成绩给出初步分组方案,原则是确保每组有一名学习成绩相对较好的同学,尽量让同一行政班的学生在一组,如果有充分的理由学生可以提出微调。由于学生共59人,故分为12组,第12组4人。第12组由实验班中学习成绩较好或编程能力较强的学生组成,并被委托开发本实训课程急需的支撑平台系统,以备下一届学生上课使用。第1-11组学生要求参考老师提供的送花网站功能和代码,使用ASP.NET技术完成一个电子商务网站。电子商务网站类型由学生从老师提出的候选类型中选择。每个小组要求做业务不同的网站,但都应完成一个完整的购物流程,包括浏览商品、选购、下订单、网上支付、订单查询等环节。各小组选题情况见表1。
3.2开发环境搭建
课程开始,教师首先要求各小组用一台自备的笔记本电脑作为小组开发服务器,安装并配置服务器操作系统(WindowsServer或Windows7)、数据库管理系统(SQLServer)及源代码管理软件(VisualSourceSafe),而实验室电脑作为开发工作机已经预先安装了必要的软件,可直接使用。要求学生用自己的电脑做服务器主要是为了让每组学生都能实践服务器系统的安装和配置、源代码管理、远程数据库连接和读写。另外实验室电脑安装了还原卡,每次启动都会还原,数据无法保存。
3.3Web应用开发
本课程介绍给学生的是ASP.NETWebForm编程技术。因为先修课C#高级程序设计中已介绍过此技术,实训课的目标是加强以往知识并付诸实践。此外,这种编程技术入门容易,比较适合本实验班大部分同学掌握。第12组学生提出使用他们感兴趣的ASP.NETMVC技术完成项目,指导老师支持学生大胆尝试。第4组同学提出浏览器端编程使用HTML+CSS+AJAX技术,也获得同意。这体现了因材施教的思想。本课程实施的一大特色是为学生提供了完整的送花网站代码和文档示例,让学生在模仿过程中建立自己的编程经验。各小组开发活动在类似企业的分布式环境下进行。学生每日开始编程时,先从服务器上签出源代码;每日结束时,将修改后的代码签入服务器。每日集成活动要求小组测试经理负责保证每日签入的代码都是完整、可运行的。此外,每个成员开发时直接读写服务器上的数据库,确保数据结构的一致性。
3.4Web代码重构
开发过程中,要求学生在第一次迭代完成网站的原型;然后在第2、3次迭代添加功能代码实现网站要求的功能;最后在学习多层体系架构、设计模式等方面知识后,在第4、5次迭代对完成的代码进行重构,使系统优化为多层体系结构,并在有关功能实现中适当使用设计模式、Web服务、Windows服务等技术。为了便于学生模仿和体会代码重构的概念,示例代码按照迭代阶段分为初始版、多层架构版及分布技术与设计模式版,并分别在不同的时间节点提供给学生。后两个版本的示范代码中留有大量重构的痕迹供学生参考。
3.5小组活动
在开发过程中,要求小组开展每日晨会、考勤、每周例会、周计划、日志、周报、每周互评等开发活动。由于缺少支撑软件的辅助,以上某些活动未能很好监督,执行还不够到位。但考勤、周例会、周计划等活动基本坚持下来。在技术层面,小组开展的活动包括业务建模、范围识别、需求描述、原型设计、系统分析、设计、编码、测试、每日集成、源代码管理等。由于项目非真实,管理软件缺乏和准备工作不足,尚有代码走查、测试驱动的开发(TDD)、风险管理、变更控制等未很好落实。
3.6理论课教学
按照建构主义认知理论,在实践课中融合理论模块的教学主要是为学生的自我知识构建提供素材和帮助,这既能提高理论课的教学效果,也可以确保实践项目的完成。为此我们要求理论课的内容必须围绕项目开发的实际需要展开,理论课中的例子必须与项目相关,且各种不同的理论课应以同一项目为实例,这样可以从不同的角度体现各种理论知识对项目开发的作用。以上要求对理论模块教学内容的取舍和内容组织的先后顺序提出了新的标准。实际执行时,由于系统分析与设计这门传统专业课的内容不要有太大的变化,我们在设置项目需求时做了特别的考虑。例如,为了让学生了解和掌握有关多层体系架构、设计模式方面的知识,要求各小组最后完成的作品必须是多层体系架构,且要实现付款功能(为此,笔者事先实现了模拟的公共支付网站及相关编程接口供学生开发使用),付款的实现还要考虑支持多种不同的付款方式。这样,教学大纲规定的有关知识点就能在项目中体现了。在理论课内容组织顺序方面,为了与项目开发的需要配合,开始几周要安排较多的理论课教学,开发的进度则相应减慢。
3.7全程辅导
本课程要求学生在长达一个学期的时间里,每天到实训教室工作或上课。这是本课程的特色,也是模拟真实工作场景的需要。在此过程中,理论课之外的所有时间都安排老师全程辅导,一方面监督学生的工作,了解各小组的进展;另一方面可及时解答学生的问题,提高学生的学习效率及效果。
4实施结果
由于精心的组织和认真的执行,本实训课首次实施最终顺利完成,12个小组都提交了自己的作品。这些作品虽然水平参差,但都已超过往届实践课,基本达到了本校毕业设计作品要求有些小组作品甚至已达优秀毕业设计水平。为了比较新的实训课与以往同类课程的教学效果,笔者连续两年对自己所带的软件工程综合实训课学生进行了问卷调查。作为对比的201年综合实训课按照未改革的传统模式进行。调查方法是采用统一的规范化问卷,在课程结束时按照自愿和匿名的原则请已完成答辩的学生填写。2013年调查班级共42名同学,收回有效问卷38份;2014年共有59名同学,收回有效问卷48份。问卷中代表学生对实践课总体印象和评价的陈述包括以下两部分。问题1:本课程让我学到了软件开发的实战知识;问题15:总体来说,本实践课开展得很好。这两项的调查结果如图1、图2所示。从图1可知,2013年89%的同学对课程表示认可,其中强烈认可者占18%;2014年,采用新的教学模式后,对此问题表示认可者上升到92%,其中表示强烈认可者显著上升到42%。根据图2,对本课程总体上认可的学生从79%上升到了85%,其中表示强烈认可的从26%显著上升到了56%。
5结语
尽管基于课程融合和企业环境模拟的软件工程综合实训实施有一定的困难,但只要精心计划、充分准备,该实训课方案是完全可行的。尽管第一次实施尚有不少需要改进的地方,但实施的结果表明,这种实训方式有利于提高学生的软件工程实战能力,并能显著提高学生对课程的满意度。
作者:郑大鹏 张晓燕 张申勇 单位:北京理工大学珠海学院
相关专题:图学学报是核心期刊吗 长线投资股票