课程思政在软件工程中的教学实践探究
2022-11-24孙文玲张继山余久久吴宁梅莹莹
孙文玲,张继山,余久久,吴宁,梅莹莹
(安徽三联学院计算机工程学院,安徽 合肥 230601)
1 引言
软件工程是计算机以及软件工程专业的一门工程性基础课程,在软件工程学科人才培养体系中占有重要的地位。软件开发是建立计算机应用系统的重要环节,人们通过软件工程学把软件开发纳入工程化的轨道,用以指导软件人员进行软件的开发、维护和管理。软件工程已成为高等学校计算机软件教学体系中的一门核心课程。
为深入贯彻落实习近平总书记关于教育的重要论述和全国教育大会精神,贯彻落实中共中央办公厅、国务院办公厅《关于深化新时代学校思想政治理论课改革创新的若干意见》,把思想政治教育贯穿人才培养体系,全面推进高校课程思政建设,发挥好每门课程的育人作用,提高高校人才培养质量,依据《高等学校课程思政建设指导纲要》在软件工程教学实践中不断挖掘课程思政元素,结合课程的特点,将课程思政融入教学内容全过程中,围绕知识传授与价值引领相结合的课程思政目标,巧妙植入思政元素[1],在情感、态度与价值观上达到更好的育人效果。以下内容是在教学过程中对软件工程课程思政的教学实践与探索。
2 软件工程课程思政的融入
课程思政并不是简单的课程内容加上思政教育,在实际教学中,结合学生的日常生活,通过对问题的讨论,引导学生自主融入课程思政中,形成学中有思,思中有学,不断提高学生个人思政意识,引导在知识获取的基础上提高一定的深度,让学生从思政教育中有所收获。
第一章软件工程概述:先讲解软件的定义,通过课堂讨论方式让学生结合生活谈谈见过的、用过的软件,来讲解软件的定义,通过反问的方式“软件就是程序吗?”引出软件的定义。之后,让学生将软件和硬件在一起对比,使用自己的语言表述软件的特点,针对学生未能分析出来的特点着重讲解。在此基础上,让学生思考“大家用的软件中哪些是国产软件?在国产软件和国外软件的功能差不多的情况下,是否会选择国产软件?为什么?”在学生讨论完甚至有的学生辩论起来后,简单介绍国家软件发展战略,引导学生在学习之始树立正确的价值观,立志为软件行业发展做出更大的贡献。针对使用国内外软件的选择上,引导学生要有开放的态度,在软件开发与维护过程中要学习借鉴他人做得好的地方,用开放的态度对待,保持初心。在此基础上,分析软件危机的根本原因以及如何解决改善?顺其自然地讲解到软件工程的概念,将软件与工程学的方法结合起来以优化软件开发与维护过程。引导学生在学习生活和以后的工作中注意寻找更好的方法,借鉴软件工程中的方法,加以应用,与其他的学科方法结合,融会贯通,找到适合自己的方法,激发学生学习方法论并应用起来。通过思维导图介绍课程的总体结构来让学生看到好的方法的价值,引导学生使用思维导图(如图1、图2)提高效率。
图1 软件思维导图
图2 软件工程思维导图
软件工程的概念中通过三要素过程、方法、工具以及目标来全局把握这门课程,以思维导图(图2)总体结构认识课程的框架结构,提出课后实践的要求,实践是检验真理的唯一标准,是认识的基础,通过动手实践能够加深对知识的理解,将理论与实践相结合,自主学习并树立正确的学习观。引导学生认识实践的重要性,落实实践来提高自我发展。
第二章软件过程:从软件工程三要素的过程来讲解软件生命周期以及主要的软件过程模型,在介绍瀑布模型时反问大家“需要返工怎么办?是不是要罢工?”强调并告知在以后的工作中遇到问题时请保持优先解决问题的态度而不是过分惩罚责任人,不要有过多的负面情绪。人非圣贤,孰能无过,软件行业发展至今,应该看到各个过程模型的优点和缺点,学会扬长避短,不断提高自己的能力,提高团队合作能力,提高国内软件实力,让行业整体素质水平得到提高。重点结合项目案例讲解敏捷开发的过程,让学生体会敏捷的社会主义核心价值观“沟通、简单、反馈、勇气”,强调以积极的心态拥抱变化。强调通过实践不断优化自我。
第三章可行性分析阶段:按照软件过程的各个阶段开始,先讲解可行性分析阶段。针对法律性这个方面,结合学生生活中可能面临的问题,提问“刷单能不能做?为什么不能做?”,引导学生认清刷单的危害,从以下几个方面让学生理解:
1)潜在的法律风险,不从事刷单等类似软件工作;
2)潜在的资金风险,大额刷单的风险;
3)数据的泄漏带来诸如垃圾短信、垃圾邮件、骚扰电话等;
4)对互联网真实数据的影响,不利于数据的价值与大数据发展,不利于认识、分析或者预测,不利于数据的生态发展;
5)一时的佣金利益助长了行业的不良发展,作为用户最终会买到次品,引导学生学会正确地衡量金钱的价值,不局限于眼前的利益诱惑。
类似的网络诈骗等需要提高自身的思想觉悟,认真分析问题,多想想再决定,三思而后行。
第四章需求分析阶段:先明确需求分析的必要性,是做什么的问题,然后从方法、过程与工具方面讲述重点内容。在讲解需求说明书中,让全班讨论“为什么要有文档?”以后到企业中会不会吐槽说“作为一名软件开发工程师还要写文档,太浪费时间?”在讨论后,给大家分析文档化的必要性:
1)传承的价值,大到国家的文化传承,引导学生关注学校、国家的文化,形成把有价值的东西保留发扬光大的意识;
2)自我提升的价值,做好个人总结与反思,强化实践后的总结的价值。
除此之外,讲解结构化分析方法的应用案例,让学生在课后实践中参考并应用结构化分析的方法,体会结构化分析方法的好处与不足。在课堂结合项目案例介绍了需求管理工具,引导合理地使用工具做到更方便文档化管理与追溯。
第五章软件设计阶段:先让学生谈谈“不做设计可不可以?设计的价值是什么?”引导学生说出自己的理解,讲解到国家知识产权(Intellectual Property,简称IP),引导学生提高IP意识,告知设计思想作为劳动成果要有维护意识。在说到面向对象设计中的信息隐藏的作用时,讲到在大数据时代的数据保护价值,引申到黑客与白帽子的选择,引导学生找到正确的方法寻求正规的渠道获取数据和资源,不可以不知者不罪来开脱,或者存在侥幸心理,要有规则与相关的法律意识。
第六章面向对象的方法与UML:基于学生反馈的课程比较抽象,结合学生点菜吃饭,提出问题“想吃西红柿炒鸡蛋怎么办?”让全班同学参与讨论提出解决方案,同学们有的说买菜按照菜谱做,有的说点外卖。由此分析,一种是面向过程的方案,一种是面向对象的方案,通过面向过程与面向过程的对比,加深以前知识的总结,突出在什么场景下使用什么样的方案需要通过分析具体问题具体来确定方案。从发展历史上正确地看待方法选择与多种方法的融合,引导学生取其精华,去其糟粕,找到适合自己的方法,促进自身发展。通过项目实践演示成果,结合实践体会团队合作过程中问题的优化过程,学会创新,突破局限,学会接受不一样的思维或者有意识改变并尝试不一样的方式和方法。紧接着,对于面向对象的方法如何表示,引出UML来表示面向对象的概念,提问讨论“为什么要用UML?为什么要标准化?”引入标准化的价值,让学生理解标准化推动行业发展的价值。在现有的基础上有所突破,让更多人参与发展,需要参照一定的标准来更好地交流,加强标准化意识并推广学会开源共享,海纳百川,更快进步,提升核心竞争力!最后通过引导学生总结UML图与面向对象概念的对应关系,如表1,引导学生时刻注意通过一定的学习方法来更好地掌握知识。
表1 面向对象基本概念与UML表示
第七章面向对象的分析:基于之前学习的面向对象的概念,让学生自己讨论如何去做分析,对学生理解不到位的地方加以补充强调,引导学生对比结构化分析来提高分析能力。接着提问学生“怎么将理论加以应用?”对学生回答给予鼓励,让学生体会到软件工程的指导作用,并积极落实项目实践。
第八章软件体系结构:讨论“盖草房和盖高楼大厦有什么不一样?”引出软件体系结构。对不同的需求要分析更加合理的方法,软件行业发展越来越好,小作坊形式不会长久,大型软件系统需要有一定的结构作为指导,软件危机的解决需要工程化指导,对于面向对象的方法,在分析设计与实现中需要一定的抽象能力,对于可以公用化的模块需要复用,重复造轮不会带来快速发展,通过抽象类、接口、构件、服务等一层一层的抽象,不断细化那些需要变化修改的内容,提炼可复用的程序,形成一定的框架。在体系结构框架讲解后,简单讲解软件设计模式,强调解决某一类相似问题的方法论的重要性,引导学生要学习别人的方法,并实践调整形成更好的方法,在以后的工作中遇到问题可以先看看设计模式中是不是已经有了解决方案,那么完全可以通过应用来更快完成项目开发。最后总结对比软件体系结构、风格与设计模式,引导学生更好地通过差异加深理解。
第九章面向对象的设计:回顾软件设计的相关知识,提问“是不是面向对象分析完成后再做面向对象的设计呢?”强调面向对象的设计经历从依赖结构化分析结果到与面向对象分析并行不断迭代优化,而不只是单纯地做完分析就不需要再做分析,通过提问“适合用什么软件过程模型?”来强调知识的关联性,引导学生不断地对所学的知识加以反复回看,践行迭代的思想,去体会量变到质变的成就,引导学生在发现问题中不断优化完善自我。
第十章编码实现:软件工程并不讲解怎么写代码,通过具体学习过的编程语言对比,提出通用的软件编程风格,为了让学生理解价值,通过反问“在一个项目团队中,自己写的方法只有自己用,别人不会用,别人写的方法自己也不用,因为没有一定规范,理解不了、需要花更多的时间去读懂等原因,团队的价值何在?”引导学生团队合作价值发挥好需要一定的规范,需要大家能主动沟通学习来更好地融入团队。
第十一章软件测试:提问“不测试直接上线可以吗?什么时候测试?”引出软件测试相关概念。通过讨论让学生找到为什么不能在开发完成后才测试,引导生活中也需要做好计划,挖掘生活中的哲学,尽早发现问题,尽早解决问题[2],不能到最后一刻才发现问题而导致付出惨痛代价。引导学生使用对比的方法,对比软件测试与软件调试,对比白盒测试与黑盒测试来更好地学习。在讲解边界值分析法时,引入社会上典型的“59岁现象”[3],以软件更容易在边界值上出现错误,引导工作中引以为戒,引导学生坚守住职业道德底线。结合学生的学习生活,提醒学生在考试中要警惕不舞弊,不要存有侥幸心理,合理计划学习,查缺补漏,正确地看待考核与测试。
第十二章软件维护:维护作为最后一个阶段,学生可能兴趣不大,恰恰相反,维护是软件生命周期中时间最长的阶段,为了让学生理解,结合学生日常使用的支付宝、手机银行软件来提问“有没有注意到支付宝什么时候更新版本?或者注意到某些软件有提示需要更新升级?”“代码写完了就不管了?”软件开发完成后,要满足不断变化的需求,维护以及如何维护非常重要,引导学生不要觉得代码写完了就不需要做了,要提高责任意识与服务意识,不断完善系统,更好地服务用户。针对学生熬夜现象,提问“是不是年轻就可以放肆熬夜?”来引导学生加强体育锻炼,合理规划日常安排,维护好自己的身体[4]。
3 总结
通过在各个章节内容中,发掘和学生学习生活相关的刷单、如何学习、法律意识、工作创业等方面,在课堂中以提问讨论的方式,让学生顺其自然地接受,认为这就是课堂的一部分[5],实现课程与思政融合,引导学生通过正确的方法找到适合自己发展的方法,引导学生培养思政意识,不断创新,逐步实现个人全面的发展。在课程考核中,通过开放式简答题来了解思政教育的效果,在256人中仅有13人未能表达出在课程学习中所吸收的思政内容,分析可见学生对软件工程中的方法元素掌握较好,在项目实践中也能在原有的基础上有所突破,在今后的教学中将结合提问讨论方式与故事分享方式结合,进一步挖掘更多与学生息息相关的思政元素,对“知识点—思政元素—职业技能”课程思政教学模式[6]加以融合实践与探索,坚持合目的性、合规律性与合必然性的统一[7]来发挥课程思政的价值,设计参考协同创新评价[8]等更好的思政教育评价方法来提高思政教育能力。