APP下载

开放模式的软件工程实践教学探索

2016-11-10张栋苏晓强

计算机教育 2016年7期
关键词:教学改革

张栋 苏晓强

摘要:针对目前部分高校软件工程实践授课方式的现状与不足,介绍开放模式的软件工程实践教学的开展方式,提出开放模式下的实践教学模式,并阐述探索过程,最后通过学生的产出评价分析说明教学效果。

关键词:软件工程实践;软件过程;教学改革;开放模式;构建之法

0.引言

软件工程与实践课程,是计算机科学与技术和软件工程两个专业的核心课程,与偏计算机理论的其他核心课程不同,软件工程对于实践应用有着很高的要求。传统软件的工程实践教学模式重理论轻实践。由于课程教材与行业发展脱节等原因,导致了学生对软件工程实践感到乏味空洞、难以理解。本文借鉴邹欣在《构建之法》中提倡的“Learning by doing”的教学模式,引入企业助教、开设博客、作业开放点评互动、校际间学生网上交流等方式,在分析面向产出的学生评价基础上,讨论开放模式对于软件工程专业实践课程探索的意义。

1.软件工程传统教学模式现状与不足

1)课程教材与业界快速发展实际的脱节。

部分高校采用传统的软件工程课程教材,偏向瀑布模式的软件工程理论教学。虽然任课教师对瀑布模式的应用具有丰富的任课经验,但软件工程专业又要求学生能够掌握现代工具和技术思想。脱节的教材可能会导致学生了解业界现在普遍应用或流行的工具和技术思想时缺少相应的指引,毕业时达不到企业期望。

2)教师缺乏丰富的项目实践经验。

部分任课教师由于长期从事教学工作缺乏相关项目的实践经验。因此部分教师在授课时,不能提供相应的实践指导,在验收学生作品时也无法给出工程实际建议。而学生的项目也大多只是虚拟项目、模拟作品,只能够用于课程验收,作品本身却没有真实价值。

3)重理论轻实践。

常规的教学模式更偏重理论,教师会在理论课上详细讲解软件工程思想,但在实践课上却更多的是布置相应任务,无法促进实践教学相融合。学生往往在理论课上一知半解,在实践课上又体会不到软件工程的思想,多数学生对于软件工程理论课的印象就是一堆需要背诵的概念,而对于实践课则是赶工完成应付验收的代码。.

4)师生单向交流,作业封闭评价。

传统的软件工程实践的学生作业提交和老师验收点评是封闭的单向传递。学生只和教师在有限的机会内互动,这往往会消减学生对于实践作业的持续热情。在作业评价方面,传统教学模式更为封闭,缺少开放的点评及建议,导致学生不重视作业的过程,出现抄袭、应付等情况。

2.开放模式的软件工程实践教学

针对传统软件工程实践教学模式的不足,许多高校都在不断地探索软件工程教学模式的改革,倡导以学生为中心的“Lea|ming by doing”教学理念,提倡合作式学习团队方式。在软件工程中,“Learnjng by doing”教学的—个重要特点是学生以项目为驱动组成团队进行软件工程的全过程实践,并通过团队的合作式学习提高能力、培养学生的素质。在软件工程教学改革中,不能在某个点或面上进行,应根据软件工程用于解决软件开发项目这一目的出发,通过对具体的项目开发进行讲解和实践,使软件工程中抽象的概念、原理、技术和方法能具体、生动地呈现给学生。

开放模式的软件工程实践教学模式,是借鉴邹欣在《构建之法》一书中提倡的理念,通过以下方式展开:

1)引入企业助教,协助任课教师开展软件工程实践。

企业助教的项目经验应结合教师的授课经验,保证理论与实践都重视的情况下,能够给予学生所需的帮助,并且能够引起多数学生对于企业项目的关注度。企业助教带来的IT行业的新思想、多元观念、规范编码、技术分享等,.都对软件工程实践带来助益。同时,开放式平台的教学模式,有利于企业助教不受时空限制,远程协助教学,通过在博客中的互动作业点评、Github代码查验、即时通讯软件交流等方式完成。

2)开设博客,作业开放点评。

采用博客的方式来完成作业的提交和点评,让学生能通过网络平台,分享自己的成果,接受来自IT业内专业人员的检视、点评及指导建议,同时还能让学生参考优秀作业,反思自己作业的不足,锻炼和培养学生持续写作的能力。

3)采用阶段作业,个人、结队、团队项目循序渐进。

软件工程是一门强调实践能力的课程,而实践能力只能不断地通过完成实践作业来积累。软件工程实践课程的作业模式决定着学生是否具有很好的培养实践能力。传统的教学模式只要求学生期末上交作品,上课时汇报进展,但学生往往都会有拖延症经常出现期末赶工的情况。

让学生在充足作业训练量的基础上,保持每周一定量的实践工作。《构建之法》中就提供了大量的练习,在实际教学中,个人、结队、团队作业可以依次进行,也可以交叉执行,采用每周作业具体化,保证学生每周都有具体任务。

4)基于真实、有价值用户的项目驱动。

项目驱动教学法的主要特点是“以项目为主线、教师为主导、学生为主体、注重实践”。让学生通过开发实际项目来加深对软件生命周期理论及各个阶段的理解。传统的软件工程实践教学模式往往会出现学生团队既充当客户角色又充当开发者角色,自己给自己提需求,自己开发的情况。这种虚拟项目、虚拟作品大多只能提高学生编程开发的能力,达不到学生学习软件开发不同周期不同需求的学习目的。基于真实、有价值用户的项目驱动则能很好地弥补这个问题,让学生团队自主地跟客户打交道,了解如何引导需求、分析及整理客户需求以及最终得到的客户验收。客户不再是老师或者学生团队,而是真实的客户,所需要的产品不再是学生团队自己想当然的产品,这种模式能够更有效的让学生体验软件开发生命周期中的各个阶段,培养学生自主学习、分析问题、解决问题的能力。

5)基于文档的项目评价、验收。

传统的软件工程实践教学模式的验收注重学生团队最终开发出的软件产品,这往往导致学生最终提交一个可以编译运行的系统,而出现“重程序、轻文档”的现象。文档是软件产品的组成部分,是一种交流的工具,是开发与管理的依据,也是评审的内容。在软件开发前需要用相应的文档来记录以及规定软件产品的各功能定义,客户的需求整理等;在开发过程中则需要有相应文档来定义团队间的规范;在开发完成产品交付客户时需要有相应的使用说明文档等。可见,文档贯穿着软件开发的整个生命周期。

基于博客文档的项目评价、验收可以提高学生对于文档的重视程度,培养学生的文档能力。

6)结合团队分工、开发流程的分数评价体系。

传统的软件工程实践教学模式,由于课时紧张或其他原因,往往会产生“重技术、轻管理”,“重个人,轻团队”的现象。事实上,软件项目的成功开发,离不开团队协作,离不开团队负责人的管理能力。

基于开发平台的软件工程教学模式采用结合团队分工及团队开发流程进行打分,团队的开发模式,PM的管理将占据最终成绩的一部分,让学生体验团队管理的经历,培养学生规范团队、调整及安排队员的工作以及合理安排时间进行软件开发等能力。

3.开放模式的实践教学模式探索

邹欣在《构建之法》一书中倡导的软件工程实践教学模式已经在部分高校推行,并取得显著成果。福州大学于2015年在数学与计算机科学学院中首次开设以“Learning by doing”为教学理念,基于开放模式的软件工程实践教学模式的课程,实施的对象为计算机类本科生。它的目的在于探索开放模式的实践教学对软件工程实践课程的意义,并与传统教学模式作比较。

在这次的探索实践中,借鉴邹欣在《构建之法》中关于课程安排的建议,并根据实际情况进行调整,最终要求参与实践课的学生要分别经历个人、结队以及团队3次项目。其中,团队项目要求发布Alpha版本以及Beta版本产品,并邀请真实用户进行试用及反馈,同时通过要求团队使用代码Github托管、版本控制工具、持续两周的每日会议以及燃尽图等方式,最大程度上让学生体验企业实际项目的开发过程。在评分方面由企业助教严格评分,并设立截止日期,未完成的学生则倒扣成绩。最终建立一个公正、及时、有效的评价机制。

表1为本次软件工程实践课程的计划安排表,但实际教学中由于法定长假、其他课程实习等原因,个人项目穿插于结队项目和团队项目期间,保证了学生每周都有一定量的作业。

同时不提倡学生提前选择组队对象,模拟企业的真实开发团队很少可以自主选择。团队人数限制在4-5人,较少规模的团队便于学生自主管理和掌控。

团队分工方面强制性要求所有成员必须参与编程,一旦发现独干现象将给予零分。传统的教学模式中常会出现学生“打酱油、抱大腿”现象,为了避免或者尽量减少该种现象发生,强制性要求学生使用Github托管团队项目,每个人的贡献日志记录,提交代码块均可以查看。

本次实践中,结合具体的一个用户“痛点”项目,给学生提供一个真实的客户需求。教师安排学生与主要用户会面,会面期间由学生与客户自主谈话,让学生体验如何引导客户需求,以及如何理解客户的需求。过后对学生表现稍作点评,之后让学生自主发挥。

最终验收时要求学生邀请客户进行试用、反馈、改进、使用,并选择完成较好的团队产品,投入实际上线使用,让学生继续体验软件维护过程。

4.学生的产出评价分析

这种“Learning by doing”的教学模式,可以激发出多数学生的兴趣与热情。许多学生反映“从没想过在学生时代还能经历一次如此正规的开发过程”。事实上,学生缺少的是一个能够发挥他们热情与兴趣的平台。在理论课上讲授相应软件工程思想时,常常也有学生表示感慨,比如讲授团队管理及分工方面的知识点时,多个项目经理忍不住在课上各抒己见。这是一种可以把理论与实践结合在一起的教学模式,能够让学生通过实践去消化、应用理论课上学习的思想。反过来,也可以通过理论课上讲授的思想去反思自己实践上的行为。

在课程结束时,对学生进行问卷调查,收集反馈信息,整理、分析学生学完软件工程课程后的收获。问卷主要内容应为调查学生评价每周花在该课程上的时间和在该项目上编写的代码量,同时让学生对自己的软件工程各种技能能力进行自我评估。

表2是参与该次“Leaning by doing”教学模式下的学生的反馈、总结。

未参与实践课的学生多数表示,对于开发软件的概念更多的是停留在敲代码上,至于其他团队管理、分工、文档等方面都不够重视。参与实践课的学生多数反映,按照实践课程要求进行的软件开发,花在代码上的时间反而比花在文档,团队开会、管理、分工上还要少。收集到的反馈数据也表明,采用新教学模式下的学生更愿意花费更多的时间在该课程上,多数学生反映这种教学模式比较有兴趣,更能让学生自主投入进去。

表3是2014年以传统教学模式进行授课的软件工程实践课程的学生问卷调查的汇总和2015年以基于开放模式的软件工程实践教学模式进行授课的学生问卷调查汇总。

传统教学模式下往往会出现“重个人,轻团队”“重技术,轻管理”“重理论,轻实践”等现象,学生们经常会以为软件开发就等同于编程,因此导致了学生在实践过程中只注重编程能力,而忽略了团队的管理、协作等方面。表中数据也显示,采用“Learing by doing”教学理念,基于开放模式的软件工程教学模式下的学生,在项目管理、代码复审以及软件工程工具的使用上的能力提升都很显著。

5.结语

实践表明,开放模式的软件工程实践教学模式相比传统教学模式更能引起学生学习的兴趣,也能更好地弥补传统教学模式中的不足之处。“Learing by doing”的教学理念,强调理论与实践的结合,培养学生快速入手,自主学习的能力。下一步,将计划在计算机专业的实践课程中运用这种教学模式,尽可能让学生从大一时就能适应以“Learing by doing”为教学理念。

猜你喜欢

教学改革
完全学分制下选课管理的思考与实践
金工实习教育对工科院校创客教育影响分析
新形势下小学语文教学方法研究
译林版英语教材的人文特点研究
当前农村学校实施“新教育实验”的研究
构建和改进现代化学校美育工作体系研究
中职学校“生本课堂”的调查研究与实践
高校三维动画课程教学方法研究
基于人才培养的技工学校德育实效性研究
现代信息技术在高职数学教学改革中的应用研究