APP下载

软件工程创新教学模式探索与实践

2018-03-12郑如滨

关键词:工业界助教博客

张 敏,郑如滨

(集美大学计算机工程学院,福建 厦门 361021)

软件产业和互联网产业的迅速发展,对大学软件工程的教育提出了很大的挑战。传统的软件工程教学模式重理论、轻实践,导致理论枯燥晦涩,内容与实践结合不紧密,学生对软件工程学科缺乏兴趣。因此,软件工程教育迫切需要从工业界汲取行之有效的工程技术和方法,通过大量实践,学习领悟软件工程的知识点和技能点。“做中学”的教学模式对学生操作能力的培养、探究和解决问题能力的培养、适应实际工作能力的培养具有显著的优势[1]。本文基于邹欣在《构建之法》[2]中提倡的“做中学”的教学模式[2,3],采用学校教师、工业界导师和工业界助教校企联合方式,通过开放式博客作业、点评互动、及时反馈、校际交流等方式,探讨基于“做中学”教学理念对于软件工程教学的意义。

一 传统软件工程教学模式的现状与不足

(一)课程教材滞后于工业的迅猛发展

软件工程要求学生能够掌握现代工具和技术思想。虽然经典的软件工程理论和模式仍具有其价值,但是传统的教材可能会导致学生对于现在业界普遍流行的技术思想和工具缺乏一定的了解和应用。软件公司所需要的人才应该是不仅具备基本的分析设计的技能,还要有善于处理问题的能力。不仅需要在技术方面有扎实的基本功,还必须拥有良好的团队协作精神、实践能力和自学能力[4]。软件工程现行的教学模式已经落后于市场的实际需要,学生毕业时达不到企业的用人标准。

(二)重理论轻实践

如何将软件工程课程的理论与实践密切结合,培养学生的工程化思维和团队协作能力,一直是软件工程课程的难点。传统的软件工程教学以大量的理论、原理与概念为主,而忽视了相应的实践环节或者只是简单布置一个项目。学生在课堂上学到的知识只能是理论加理论,死记硬背,无法将其应用到实际的项目开发中,最终导致学完仅仅是对理论有个了解,达不到领悟其精髓的目的。

(三)教师与学生之间缺乏互动

传统的教学模式通常是“老师教,学生学”,教师在课堂上讲得面面俱到,但是教师与学生之间缺少有效的互动,相对封闭。因此,教师灌输的知识越多,学生理解的内容越少。对于教师布置的作业,缺少有效的评分标准和评价机制,导致学生不重视平时作业,出现抄袭、应付了事等情况。

二 软件工程教学模式的创新与探索

针对传统软件工程教学模式的不足,许多高校都在不断地探索软件工程教学模式的改革[5-9]。“做中学”的教学理念,倡导以学生为中心,提倡团队协作学习方式。软件工程是一门非常重要却易流于形式的课程,如何在课程中融入有效的实践环节是教师在教学中要解决的关键问题。因此,我们考虑采用“学校教师+工业界导师+工业界助教”的教学模式,通过课堂教师的引导,以“个人项目+结对项目+团队项目”的形式,由助教的及时批改和反馈,通过过程控制和形成性评价,更好地调动学生的学习积极性。

(一)“学校教师+工业界导师+工业界助教”的教学模式

引入工业界的导师和助教最大的好处是增长了学生的见识,传授学生实际开发的经验,在多方面引导学生入门。由于导师、助教等来自工业界,能够接触到行业的最前沿知识,并根据学生的实际情况邀请业界相关人士来给学生讲座,开拓学生视野。助教通常来自企业或者其他学校,有助于校际交流、校企交流。

学校教师完成课堂教学,将基本原理、案例、关键技术与工具等内容有机结合,完成知识的内化。每周由教师布置博客作业,工业界导师和助教根据企业的实践完善其细则,并制定评分标准和细则。学生完成并提交博客作业后,由工业界导师和助教及时跟进并做出点评,给出每位学生的成绩和汇总排名。根据学生的完成情况,工业界导师、助教、教师共同探讨作业布置的难度,分析不足,为下一次作业的改进提供基础。

以软件测试为例,在第三次作业的结对编程2——单元测试中,根据学生完成情况的反馈,企业助教发现学生在完成单元测试作业时,普遍存在“在错误的地方测试”的问题。助教将此类问题发布到课程群,企业人士对此做出探讨,认为需要在作业布置中添加新的要求:在新创建的类中,添加public String cal(String expression)方法,并对该方法做测试。通过不断地改进、完善和总结,兼顾学生的开发能力,提高学生的实践水平。

(二)教学过程控制

教学过程必须明确教师、学生和助教的角色,既不能变成 “教师讲、学生听”,也不能完全放任学生。在教学过程中,教师将引导和监督整个过程,助教和工业界导师为每个阶段作业进行点评和打分,起到辅助和促进作用,如图1所示。

图1 学生教师助教关系图

(三)“个人项目+结对项目+团队项目”

新的教学模式遵循软件工程师的成长规律,引入“做中学”的教学理念,以实际项目的生命周期为主线,重视及时的反馈和总结。让在校学生深度体验软件工程实践中碰到的真实问题,并在教师与助教的指导下尝试使用有效的工程方法去解决,掌握软件工程的理论和工具,从而体验软件工程从需求分析到软件发布的全过程。

图2 个人结对团队项目关系图

个人项目锻炼了学生的个人编程能力,结对项目主要培养学生的合作编程能力,团队项目用于充分锻炼学生的软件工程技能和团队协作能力。团队项目包括Alpha版本和Beta版本,都为可交付的软件产品,同时邀请真实用户参与体验反馈。在开发过程中,通过需求分析、原型设计、Coding源代码项目管理,连续七天的敏捷冲刺,在最大程度上让学生体验企业实际项目的开发过程。

三 软件工程创新教学模式实践与分析

在这次的探索实践中,借鉴邹欣在《构建之法》中关于课程安排[2]的建议,主要包含以下几个特点:

(一)利用博客提交作业

通过博客提交作业,目的在于以开放的模式带动学生开展实践学习。教师按照课程教学大纲的要求,结合教学内容,每周布置博客作业,在班级博客中发布作业,每次作业提交制定有详细的截止时间。博客作业 “让学习成果看得见”,不仅同学、助教、教师可随意浏览、点评,而且校外人士也可随时访问。比如在必应词典的案例分析中,邀请必应词典的产品经理对学生的案例分析作业进行点评,并评选出优秀的学生作业。这种公开性带来几个好处:1.示范效应:优秀的博客作业所有学生都可访问,这就会在学生之间产生一种示范及带头作用,他人通过浏览博客就可学习到对方的优秀之处,而不仅仅只是通过教师的课堂讲授才能习得有用的知识。2.责任感:因为作业要公开,这就促使部分同学会对自己书写内容负责,更好地组织语言与整理自己所做的内容,这实际上提高了学生的组织与表达能力。这些好处可以有效带动同学进行实践性学习。

采用阶段作业,个人、结对、团队项目循序渐进,很好地将软件人才的培养融入到面向实战的项目实践过程中,实现理论与实践的密切结合。以团队项目为例,以真实的项目驱动,采用敏捷开发方式,分为Alpha阶段和Beta阶段。在需求分析阶段,要求必须有真实的用户调查和面对面访谈。例如,部分项目的目标用户为教师,通过安排学生与教师面对面交流,获取真实需求,并通过原型设计,让目标用户有直观的认识。部分为其他学校提供的项目,要求学生在现有项目的基础上进行迭代开发。

(二)形成性评价

学习中非常重要的一点是反馈。教师与助教的点评,每周的成绩汇总形成了基于学生学习全过程的持续观察、记录、反思而做出的发展性评估,强化改进学生的学习。

提倡消灭博客零回复,在学生与教师之间建立良性互动。教师在助教的协助下每周对学生完成的作业进行考核与排名。学生可以及时把握自己的学习状态。企业助教可借助博客作业的方式,以企业的标准来评判学生们的作业。

(三)过程性考核

传统的教学模式只要求学生期末上交作品,上课时汇报进展,但学生往往都会有拖延症,经常出现期末赶工的情况。“过程性考核”强调对学生学习过程中的学习状况和阶段性学习成果多方面、多形式、分阶段的考核,它不仅关注学生的学习能力发展过程,也关注学生在学习过程中的成果[11]。

教师每周发布博客作业,同时由助教及时跟进,对学生提交的博客作业进行评价打分。在评分方面由企业助教严格评分,并设立截止日期,迟交的学生不给分,未完成或者抄袭的学生则倒扣成绩,最终建立一个公正、及时、有效的评价机制[3]。

通过每周发布博客作业、学生按时完成提交和助教及时点评反馈,有助于提升学生的过程考核关注度,激发学生的学习兴趣。只有关注过程,考核才能深入学生发展的过程,及时了解学生在学习过程中遇到的问题,所付出的努力以及取得的进步,才能对学生的持续发展和提高进行有效的指导。

(四)抄袭问题

抄袭作业是大学不良学风中的典型[10]。作业布置方面,尽可能的细化并提供模板,使得学生在完成作业的过程中无法完全抄袭;提供详尽的参考链接,指导学生学会利用网络社区中的资源,面对难题有办法解决;通过班级博客提供的“关注”、“查找相似”功能,很容易发现需要重点关注的学生,采用互动点评便于开展单独的学习指导。通过这样的方式,消除了学生在学习中的困难,使学生不需要通过抄袭解决问题。

在第二次团队作业的需求分析中,助教发现有一个小组的NABCD模型[3]中的B部分与网上类似题目的内容重复,教师、助教和同学们针对这个问题在博客下进行评论和点评,探讨是否界定为抄袭,并引导负责实现作业查重项目的同学,采用的算法能否找出这样的重复例子,并将此类事件变成一个大家可以学习进步的机会。

(五)持续改进,收集反馈

在本次教学改革过程中,通过问卷调查等方式收集学生的反馈数据,例如在第一次个人作业提交后由助教及时发布调查,收集学生对作业难度的反馈,作为后续作业布置的基础。在整个教学过程结束后,收集学生对本次教学的反馈,为下一届学生教学的改进提供基础。只有通过持续的改进和反馈收集,才能及时发现教学中的不足和提升的空间。

以网络14级学生作为调查对象,对采用此教学模式的教学效果做了如下调查:

1.博客作业与传统纸质作业的对比(见图1)。

博客作为软件工程课程学习成果的展示平台,为学生的专业学习注入了新鲜的气息,开拓了专业视野,促进学生将实践进行下去。

图3 博客作业与纸质作业比较

由图3比较结果可知,近60%的学生赞同采用博客作业的方式,认可这种作业提交方式。

2.花费的时间与代码实践量的统计(见表1)。

表1 实践时间与代码量

由表2的统计结果可以看到,相比传统的教学模式除了上课时间,学生花费在软件工程的课外时间显著增加,实践的代码量也有明显增加。

3.软件工程技能课前与课后的对比。通过数据调查,表2给出采用创新教学模式进行授课的学生问卷调查汇总。

表2 软工技能参加课程前与参加课程后的对比

注:表中数字范围为[1-10],其中,1:最低水平;3:基本的书面知识;5:基本的理论和实践知识, 可以通过企业的面试;6:具有经实战考验过的技能,可通过最高水平企业的面试;8:可以像专业人士一样自如地运用,能发表权威技术博客;10:全面精通理论和实践,成为公认的专家

表中数据显示,在软件工程教学中采用“做中学”教学理念,学生对软件工程整体的理解有所提高,在项目管理、代码复审以及软件工程工具的使用各方面的能力得到提升。

根据布鲁姆的教学分类法[12],基于“做中学”的开放式教学模式能更好地在教学中体现软件工程课程的复杂度与难度。在“记忆”和“理解”的层面上学习软件工程的基本概念、知识点、技能点和常用工具的使用;在“应用”层面上,以团队项目开发一个具有真实需求的软件,并在开发过程中运用软件工程知识解决所碰到的各种问题;在“分析”层面上对项目进行测试、效能分析和效能改进,并通过博客展示和项目演示进行项目复审;在“评估”层面做出个人的自我总结和分析,最后“创造”出有真实需求的软件产品。相比较传统软件工程教学,基于“做中学”的开放式教学模式在应用、分析、评估与创造层面有着更多的体现(见图4)。

图4 难度、复杂度与能力

四 总结与展望

实践表明,相对传统教学模式而言,基于“做中学”的开放式软件工程教学模式更能激发学生学习的兴趣,也能更好地改进传统教学模式中的不足之处。“做中学”的教学理念,强调理论与实践相结合,采用形成性评价,通过开放式作业起到了示范效应并提供了交流的基础,大量的代码实践,与业界紧密相关的流行技术的使用,与人的协作,与时间的较量,让学生亲身体验软件工程的理论方法,培养学生自主的学习能力。

然而在整个教学活动中仍存在不足和需要改进的地方,比如评价方式的改进,在分阶段布置作业的同时给出具体的评分标准供学生参考,考虑在团队项目复审中引入“自评+互评”,在校企合作中寻求新的合作方式,进一步促进校企联合、协同育人。

[1]丁金昌. 高职院校基于“做中学”的教学模式改革与创新[J].中国高教研究,2014(1):94-96.

[2]邹欣. 构建之法[M]. 北京: 人民邮电出版社, 2014: 17-18.

[3]边耐政, 凌小宁, 林亚平.“做中学”教学平台之合作式学习团队管理和评价[J]. 计算机教育, 2008(2): 92-94.

[4]石冬凌. 结合CDIO理念的“做中学”——软件工程课程教学方法的探讨[J].教育教学论坛, 2010(1):49-50.

[5]蔡勇, 李菁芳. 以“项目教学法”促进“软件工程”教学[J]. 计算机教育, 2007(16): 13-15.

[6]李伟波. 项目驱动式的“软件工程”教学模式研究与实践[J]. 中国电力教育, 2009(12): 45-46.

[7]刘炜. 浅析文档在软件项目开发中的作用[J]. 价值工程, 2010(26): 151-154.

[8]吴国栋, 涂立静. 软件工程一体化教学模式探讨与实践[J]. 计算机教育, 2010(16): 95-98.

[9]张栋,苏晓强. 开放模式的软件工程实践教学探索[J]. 计算机教育,2016(7):149-153.

[10]贺利坚,卢云宏. 利用博客提交作业的程序设计课程实践模式[J]. 计算机教育,2014(15):79-83.

[11]孙忠梅,陈晔,林铿.基于“过程性考核”的本科教学改革创新与实践——以深圳大学为例[J].黑龙江教育学院学报,2012,31(11):53-55.

[12]王瑞霞. 布鲁姆目标分类理论新发展及其教学意义[D]. 上海:华东师范大学,2007.

猜你喜欢

工业界助教博客
期望优秀的工业文化
期望优秀的工业文化
A study on the teaching practice of vocational English teaching connected with the working processes
专业课程中引入职业信息与科研经验的实践与探索
博客天下
两岸工业界签署交流合作备忘录
博客相册
博客相册
我为博客狂