创新视角下《软件工程》课程实践能力培养的探索

2020-12-15 06:49刘坤包琼
高教学刊 2020年34期
关键词:软件工程创新思维教学法

刘坤 包琼

摘  要:从创新能力培养的角度,基于常见的“项目案例驱动法”,提出了一种“开发式案例教学法”,在软件工程的教学过程中主张以学生为中心,在系统选题、开发和解决问题的过程中发挥自主能动性,突出“打破常规思维”的思考方式。该教学法能减少学生学习过程中对于教师的依赖度,在实践中发现能够激发学生的思维活跃度,促使学生主动地将课程中所学到的理论知识应用到实际中。

关键词:软件工程;创新思维;教学法

中图分类号:G640 文献标志码:A         文章编号:2096-000X(2020)34-0037-04

Abstract: From the perspective of innovative thinking training, based on the common project case driven method, this paper puts forward an "open case teaching method". In the teaching process of software engineering, it advocates taking students as the center, playing its own initiative in the process of topic selection, development and problem solving, and highlighting breaking conventional thinking. This teaching method can reduce the dependence of students on teachers in the process of learning. In practice, it is found that it can stimulate students' thinking activeness, and make students actively apply the theoretical knowledge learned in the course to practice.

Keywords: software engineering; innovative thinking; teaching method

前言

軟件工程本身是从软件开发的实践中通过经验总结理论升华出来的一门学科,无论是“教”还是“学”,都非常注重实践[1-2],强调将所学到的理论知识与实际相结合。近年来国家提出了根据经济发展形势,提倡了“大众创业、万众创新”发展战略,创新创业教育成为了高校当今本科教学改革中的一项重要内容[3]。

在这个背景下,本文从创新思维培养的角度对《软件工程》的实践教学环节提出了一种“开放式案例教学法”。该方法对吸收了“项目案例驱动法”注重案例与实践的优点,同时将开放式的案例教学法融入其中,在开发式案例的设计中注重创新思维的培养。多轮《软件工程》课程的教学实践表明,该方法可以很好的激发学生的创新思维活跃度,学生从被动接受软件工程的理论训练到主动应用软件工程的理论知识去解决问题。

一、软件工程实践教学存在的问题

《软件工程》作为一门软件工程等专业的核心课程,学生在学习过程中普遍觉得理论抽象,而实际动手又无从下手,因此在教学中多采用“项目案例驱动式”教学法[4]。项目所采用的案例是一个成熟的解决方案,涵括了软件工程所要求的需求、设计、编码和测试等环节。这些都以文档或源码的形式提供,任课教师通过教学环节的设计引导学生学习这些内容,从而让学生获得完整的项目开发的整体训练。从实际教学效果看,“项目驱动法”很好地解决了学生在学习中感觉理论抽象的难题,通过具体可动手操作的案例,学生通过模仿案例的实施过程获得理论认知,通过案例所提供的动手练习的训练锻炼编程技能,从而在理论知识和实践能力两方面都获得了很大的提升。

但在多年的教学过程中也发现了该方法存在的一些不足:

1. 由于案例成熟,资料相对丰富完整,学生能够获得实在的专业能力训练,但思维也容易被案例所提供的方法和文档所限制,从而形成一种固化思维,一旦脱离原有案例,学生无法有效地将所学的知识迁移到其他场景,存在“生搬硬套”的情况。同时如果所设计的案例的质量还会影响到培养效果,一旦所设计的案例存在不遵守软件工程规范的情况,还会起到反作用。

2. 案例设计周期较长,教师往往花费较长的时间准备。一旦设计完成,教师缺乏足够的动力对案例进行持续改进。存在一个案例使用若干年的情况,所使用的技术与时代脱节。

3. 教学过程的实施与推进是由教师主导的,学生跟随教师的指令完成各个子任务。学生的主动性在这一过程中是受限的,自我思考空间有限。

二、创新教育的内涵

(一)提高对创新教育的认识

对于工科教育,学生不仅要学习理论知识,还需要加强动手实际操作,锻炼基于理论知识解决实际问题的能力,即常说的“实践能力”。对于《软件工程》而言,“项目案例驱动法”便是这一理念的产物。但实践能力与创新能力并不完全等同。吕薇[5]指出创新能力应该是对实践能力的进一步发展与提升。从大学本科教育看,实践能力首先来源于学校实践教学环节所要求的标准,包括实验、课程设计、实训等。当学生达到这些标准的合格水平时,可以认为便具备了本专业对学生所要求的基本实践能力。创新教育在这个基础上侧重于创新能力的培养。

高校实践教学环节是与理论教学紧密相连的,在各大高校都属于培养方案与课程体系的组成部分,同属教育质量的监控范围。而创新教育则一般依托第二课堂比如竞赛,企业实训等展开,各个高校在实施过程中所具备的条件如时间实习基地,经费等存在很大差异,导致实施方式也存在很大的差别。

但核心差异还是来源于对于第一课堂和第二课堂之间关系的认识。从前述调研结果可见,高校本科在校生大部分的学习时间仍然是针对第一课堂所要求的学习任务的。一者工科课程知识大多难度较大,知识体系也相对严谨,学生理解和掌握要花费大量的时间。比如软件工程专业学生要在编程语言方面做大量的编程训练才能熟悉该门语言,达到基本实践要求。再者教师对第一课堂容易掌控,管理部门也容易对第一课堂进行管理,其教学效果也易于评价。

有调研结果显示[6],本科生在第一课堂所花的学习时间占全部实际学习时间的比例平均高达91.65%。这表明,能够提高创新能力培养的第二课堂,本科生能够分配出来的时间非常有限,大部分时间仍然被繁重的学习任务所占用。因此,在不能够大幅度提高第二课堂时间占比的情况下,积极改进第一课堂的教学,并在这一主阵地融入创新教育,显得非常有必要。

(二)创新教育理念探讨

第一课堂的“实践教学环节”由于有教师的示例与示范,学生依葫芦画瓢完成任务,其学习活动本质上并不具备培养创造力的要素。AHP和ANP的发明人托马斯L.萨蒂教授就培养创造力这一话题在其关于创造性思维的著作[7]中做出了许多有益的探讨,提出了不少真知灼见。受此著作启发,本文所讨论的“开放式案例教学法”提出了如下设计理念:

1. 要引入新的问题

心理学家研究指出,新的问题提供新的场景,从而刺激人的大脑积极思考问题,提出具有创新性想法的概率也会增大。而科研活动一般也强调“用新的方法解决已有的问题”,或者“用旧的方法解决新的问题”,或者“用新的方法解决新的问题”。对于本科在校生而言,受其知识储备影响,“提出新的方法”这一要求不具备普遍性。因此引入新的问题促使学生去解决之,则更具可行性。

2. 提倡“打破常规”的思考方式

教育很容易陷入“知识复刻”的泥潭,即知识只是在不同的人之间为完成了记忆的复制[7]。人们试着去解决问题时,往往从已习得的知识和经验中寻求解决方案。因循守旧,固守成规是人类思维的惯性,而这与创造能力的培养是格格不入的。创造教育应该强调“打破常规”的思考方式,突破已有解决方案存在的一些限制,也要突破个人思维上存在的一些束缚。

3. 鼓励“试错”

已有的知识和经验给人带来安全感,新的问题或突破常规则会让人面对未知,这种境遇给人的心理上带来畏惧情绪,导致退回到已有的或现存的解决方法的思考状态中去,不敢去验证新的想法。而鼓励“试错”则是鼓励一种冒险精神,也是鼓励一种不怕麻烦,不畏困难的精神。创造力是个人智力、品格等各方面能力的综合反映。创新教育也是对人的良好品格塑造的一个过程。

三、开放式案例教学法

(一)教学法的设计

所谓“开放式案例教学法”,指在教学过程中以能力培养为导向,在强调软件工程理论原理和规范的基础上,不提供统一答案与解决方案,让学生在教师的指导下独立或分组完成软件系统的设计与开发。

将现有的实践教学环节分为两个阶段,在第一阶段仍然采用“项目案例驱动法”,配合课堂的理论教学部分。在第二个阶段采用“开发案例教学法”,侧重于创造能力的培养。

《软件工程》本身的理论知识体系已然成形,必备的软件开发过程相关知识仍然对软件开发有指导作用。而这些知识的教学要将理论知识传授与实践教学结合起来,才能摆脱抽象与枯燥的理论知识给学生带来的不适应。这个阶段的任务是要让学生对软件开发过程有一个整体上的把握,从需求分析,到系统的设计,再到编码和测试,学生通过这些练习这些步骤最后能得到一个基本可用的系统。这个阶段对于软件工程专业的学生而言是非常有必要的,而且是不能逾越的。

而在第二阶段则以学生自选题目开始,围绕软件系统的设计与实现,教师可以将该阶段的任务划分为若干个小阶段。教师对每个小阶段布置阶段性任务,对学生做出的结果做出评价与改进意见。整个教学过程以最后得到软件系统为结果导向,对结果验收标准做出明确要求,其他都如开发进度,技术选型,开发工具等等都不做具体要求,每个小阶段也不预设标准答案,给予学生充分的自主权,促使学生通过探究式学习完成任务。

(二)设计要点

1. 选题要针对实际问题,不能采用陈旧或脱离生活经验的题目

选题是“开放式案例教学法”的第一步,也是很重要的一步。它决定了后续学生学习的关注点。但学生对于选题要么企求教师给定参考题目,自己做选择,或是缺乏调研,想当然的选择题目。

比如根据学生现有的生活经验,选择类似“机票销售”“酒店管理”的题目都是不太合适的。这样选题就明显不符合学生既有的生活体验。这样的选题,教师在选题之初就应该直接否定。

从创新角度看,教师要鼓励或半强制性的要求学生自己去发现问题,从以往的解决方案中寻找能改进的地方,并通过与教师商量,自己拟定项目的题目。在这个过程中,学生的思维得到充分的释放,教师只是给出指导意见,评价学生选取的角度是否合适,问题的难度是否在学生所具备的解决能力范围内。

2. 遇到问题时,要扔掉“老师”这根拐杖,强调自主性

学生要学会自己去网络查找解决方案,尤其是一些技术问题。而教师在遇到学生提问题时,也要注意一定引导性,指出查找解决方案的方向。在这个交互过程中,既要杜絕直接把答案告诉学生,也要防止对学生的提问不管不问,完全放手。

在解决问题的过程中,要鼓励学生敢于试验自己的想法,这是创新能力中难能可贵的个性品质。高校学生正值人生思维活跃,精力旺盛的黄金时期,但面对挫折与困难时容易打退堂鼓,此时外界的鼓励会激发学生战胜困难的斗志。因此教师要适时了解学生的学习进展情况,帮助分析所遇到的问题,更重要的是从精神源头予以鼓励。

3. 注重思考方式的引导

学生在解决问题的过程中,很容易受到现有软件中的已有方案的影响。比如一遇系统中有支付需求,就想用接入支付宝或微信;一遇到系统内用户之间有沟通或聊天的需求,就想到创建聊天室等等。借用现有的解决方案能快速地应用于问题的解决,但同时也会固化思维,这对于未来从事软件开发的学生而言是不利的。在评价学生的这些解决方案时要合理地否定学生所做出的选择,引导学生以发散性思维去寻找其他方案。

这是本教学法中很重要的一环。软件系统设计与开发是依赖解决方案的不断完善逐步往前推进的。对学生提出的解决方案予以一定程度的否定,实际上是在学习上给予一定的极限施压,在一定的压力下让学生充分调用所学习的知识去思考问题,甚至于主动去学习一些新知。

(三)案例探讨

下面以教学改革过程中所产生的几个案例为例来阐述这一方法。

案例1:在系统选题阶段,学生设想了一个名为“听曲识歌”的题目,想法是当人们听到一段曲子时,如果很感兴趣,就可以利用这个系统找到对应的歌曲。这个想法很明显来源于生活,当听到了某段音乐特别喜欢时非常倾向于知道跟这段音乐相关的东西,如歌名、歌手等信息。这应该说是一个比较有创意的一个想法。但经过教师的评估后,觉得根据学生在音频处理方面所具备的技术水平还不足以支持完成这个项目,建议学生予以更换。

案例2:学生提出了设计与开发一个“树洞”快应用的想法,开始之初学生的想法是想为那些心理抑郁的患者提供一个社交应用,在上面能够吐露自己的一些话语,也能够用漂流瓶的方式交友。人们还可以在上面发表跟心理相关的文章,帮助人们解决心理的一些问题。应该说学生选择这一题目的角度还是很有应用价值的,当今社会发展迅速,压力倍增,却鲜有从心理辅导的角度来进行社交的,这一想法有创新性。

经过与学生的多轮讨论后,做了如下修改:第一,砍掉漂流瓶功能,对比QQ中所提供的这一功能发现实际用途不大,因此QQ在新版本中已经去掉了这一功能。建议砍掉该功能以聚焦核心功能。第二,简化发文章的功能,以免形成“心灵鸡汤”之类的水文影响阅读质量。同样也是为了聚焦核心功能。第三将心理辅导不局限于“心理抑郁”患者。如果真是这样的患者,出于个人隐私考虑,也许并不会使用这款应用,同时也牵扯到一些道德伦理问题。于是建议将系统功能的切入点换作提供“心理压力发泄”的一个渠道,这样对任何心理正常的普通人都可以使用。因为普通人生活中都会有一些委屈、不满等负面情绪,需要通过一个渠道发泄出来,这样“树洞”仅是一个具有“心理疏导”功能的小应用。虽然功能单一,但面对的用户群体比较大,能发挥比较重要的作用,在技术上学生也容易实现。在实现过程中,学生还比较有创意的给所开发的功能取名为“留存”“花泥”等,很形象地表达了系统的功能,也给人耳目一新的感觉。在这个过程中,学生通过与教师的讨论、酝酿和碰撞,提出了很多想法,所呈现的思维状态非常活跃,达到了本教学法的目的。

四、反思

“开放式案例教学法”由于在软件开发的许多环节都强调学生的自立与主动,而不是按照教师规划的路径往前走,因此学生在初期是不太适应这种教学方式的,遇到问题时总希望从教师这里得到直接的答案。但在教学后期学生能主动地去网络搜寻资料,学习新的技术来解决问题,学习方式发生了很大的转变。

而这种教学法对于教师也提出了较高的要求。教师要学习一些创造教育知识,经过一些较系统的创造力训练,这样对学生的“创造能力”培养才能做出有效的指导。

“开放式案例教学法”并不是完全放任学生不管,它是在一定的框架范围内给予学生学习上的自主权。而这个框架范围就是软件系统设计与开发原理与规范。教师仅对学生是否遵守了原理与规范做出明确评判,而在该教学法的其他活动中都是“旁观者”或是“参与者”的身份,以用户的视角去看待学生开发的系统。

五、结束语

本文以《软件工程》课程教学中常见的“项目案例教学法”为参照对象,从创新思维培养的角度提出了一种“开发式案例教学法”,该方法在软件开发的各个环节中融入创新意识,逐步培养学生“打破常规”的创新思维,在实践中取得了一定的效果。在今后的教学改革中,将逐步完善该教学法的内涵,丰富相应教学手段,发掘其与“项目案例教学法”的协同作用,提高其适用范围。

参考文献:

[1]赵军霞,焦铬,张剑.新工科背景下的软件工程实践课程教学改革[J].计算机教育,2019(11):69-72.

[2]祁鑫,宋会英,崔浩.新工科背景下“软件工程”课程教学改革的研究与探索[J].中国石油大学胜利学院学报,2018(4):65-68.

[3]陈志刚,夏旭,师雷宏,等.“双创”视域下软件工程专业人才培养模式探析[J].中国大学教学,2017(11):119-22.

[4]汪克峰,梁洪峰,范洪辉.基于项目模式的软件工程专业实践教学的研究[J].江蘇理工学院学报,2017(6):89-94.

[5]吕薇,韩晴,黄波,等.大学生创新能力的培养模式及机制的浅谈[J].高教学刊, 2019(1):32-34.

[6]杨风开,李红斌,尹仕.工科专业教育融合创新创业教育的教学模式[J].高教学刊,2019(13):25-27.

[7]托马斯L.萨蒂.创造性思维(第一版)[M].北京:机械工业出版社,2018:6.

*基金项目:湖北经济学院法商学院教学研究项目“新工科背景下融入创新训练的软件工程课程教学研究”(编号:2019J18)

作者简介:刘坤(1979-),男,汉族,湖北荆州人,博士,副教授,研究方向:软件工程,深度学习等。

猜你喜欢
软件工程创新思维教学法
初中英语“三段四部式”写作教学法的实践探索
异步教学法在初中生物教学中的应用思考
高中英语单词象形教学法
高中英语单词象形教学法
依托工作室的软件工程实践教学研究
基于工程教育认证的《软件工程》课程教学质量建设研究 
在经济新常态下地方本科院校大学生创新创业教育研究
关于如何创新和完善计算机软件工程管理的探讨
巧用“错误”激活数学课堂的实践与思考
培养职校生创新思维能力的研究