基于OBE理念的“以用促学”微信小程序课程教学模式研究
作者: 徐良 刘辉辉
关键词:OBE;微信小程序;以用促学;教学模式
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2024)28-0167-04
“无需下载、无需安装、触手可及、用完即走”的特性,使得微信小程序成为人们生活中一种重要的信息展示方式和服务获取手段。据统计,2021年微信小程序日活用户数超过4.5亿[1],微信小程序的开发能力已经成为软件工程专业学生需要具备的重要能力之一。
如何更好地进行微信小程序教学逐渐得到广大院校的重视。王勋[2]围绕学生程序开发能力培养开展微信小程序课程构建与教学实践;罗珍珍[3]对独立院校微信小程序开发与应用课程的教改进行了深入研究,提出通过课程网络资源与翻转课堂相结合的教学模式引导学生学习;赵剑冬和许智超[4]提出基于一个实用、易于理解的移动电子商务微信小程序进行项目导向的课程设计与教学;何晶和龙坡[5]探索利用生产实际将教学内容化,结合线上教职云与线下教学BOPPPS模式,以提高微信小程序课程课堂学习效率和教学目标的达成。
作为一所创新型应用大学,金陵科技学院以“培养适应江苏省及南京市软件与信息服务产业发展的高级应用型软件工程人才”为根本,以市场对微信小程序开发人才需求为驱动,结合OBE(Outcome-BasedEducation,成果导向教育)理念,开设微信小程序课程旨在培养学生的微信小程序开发能力。本课程主要完成以下课程目标:1) 掌握Web前端技术的发展历程和方向,激发自主学习热情;2) 使学生掌握微信小程序的开发规范、变量设定和页面布局,具备接口设计与调用的设计与开发能力;3) 使学生具备微信小程序的基本设计、制作、发布和管理能力;4) 使学生具备撰写符合软件工程规范系列文档的能力;5) 使学生具备复杂工程的设计方法和在未知领域自主探求的能力。
然而,微信小程序课程具有涉及知识领域跨度大、知识点繁杂等特点,导致传统教学“以教促用”的方式[2-3]与基于具体项目、案例的教学方式[4-5]很难达到理想的教学效果。例如,2021至2022学年教学2020 级软件工程1班与2班的课程目标达成度如图1所示,两班学生在课程目标4与课程目标5达成度方面明显低于其他课程目标。为此,本文在认真分析目前授课过程中存在问题的基础上,并结合微信小程序课程特点,提出“以用促学”的微信小程序教学模式,从教学措施、教学内容和考核方式等方面采取具体改革措施。这种教学模式对于更好地培养学生的微信小程序开发能力,达到既定的课程目标具有重要的指导意义。
1 微信小程序授课现状与存在的问题
微信小程序作为金陵科技学院软件工程专业的一门专业限选课,总共32学时,其中理论16学时,主要讲授微信小程序基本语法、各种组件与API 的使用;实验16学时,分为8个相对独立的实验内容。现结合笔者在应用型本科院校多年微信小程序教学实践情况,将微信小程序课程教学现状以及存在的问题总结如下:
问题1:以教材为主,忽略官方文档[6],不利于学生对新技术追踪。
随着微信小程序开发的快速发展,相关教材层出不穷,质量参差不齐。尽管本课题组在教材选择上非常谨慎,但仍存在以下不足:首先,微信小程序相关技术日新月异,许多新功能不断推出,也有一些旧功能被淘汰。教材相较于官方文档往往更新滞后;其次,指定教材使得学生在遇到问题或探索陌生领域时,第一反应往往是查找或购买相关教材,而忽视了官网文档才是最好的学习资料。这不仅限制了学生获取知识的范围,而且不利于培养良好的自主学习习惯。最后,过于依赖教材给学生造成了必须学会所有知识才能写出正确小程序的错觉,导致他们迟迟不敢动手开发。
问题2:微信小程序课程涉及的知识多而繁杂,内容零散且脱离场景,不利于学生开发能力的培养。
已有的教学方式以讲授为主,要求学生记忆、掌握微信小程序开发过程、生命周期以及不同组件、API 的使用方法,然后将自己掌握的知识用于实践。然而,微信小程序作为前端信息展示方式之一,其涉及的知识多而繁杂,主要包括以下几个方面:1) 了解JSON语法。微信小程序使用.json文件对微信小程序进行全局和页面配置,决定页面文件的路径、窗口表现、设置网络超时时间等;2) 熟悉JavaScript语言。微信小程序使用.js文件指定页面的初始数据、生命周期回调、事件处理函数等页面逻辑;3) 掌握一套专用的标签语言WXML(WeiXin Markup Language) ,用于页面结构的构建;4) 掌握一套样式语言WXSS(WeiXinStyle Sheets) ,用于描述WXML的组件样式,控制微信小程序的展示效果;5) 了解不同组件,熟知不同组件使用的方法和适用场景;6) 微信小程序各种API,包括界面、文件、位置、数据、网络等相关API的使用和作用;7) 其他内容,如微信小程序目录结构和发布流程等。
这些学习内容相对零散,跨度大,容易让学生产生需要学习多门课程的错觉,无法理解所学内容在微信开发过程中的作用,极大地考验学生的学习耐心,严重影响教学目标的达成。
问题3:实验内容侧重不同知识点,没有系统关联性,学生缺乏成就感。
微信小程序课程的实验设置为16学时,分为八组不同实验,聚焦于不同知识点和组件、API的应用。但在实验过程中发现:首先,学生专注于完成实验任务,缺乏对技术本身及其适用场景的深入思考,这与设定实验的初衷相悖;其次,完成实验后,学生得到的仍是分散在不同实验中的代码模块,各模块之间无法有机结合,形成完整的微信小程序,导致学生缺乏系统开发的参与感和完整应用开发的成就感。
问题4:缺乏课程设计,没有系统体验微信小程序的设计、开发过程。
由于时间有限,微信小程序课程未安排相关课程设计,导致学生无法全面了解从需求分析到开发、再到测试和发布、推广的全过程。同时,也无法将先修课程软件工程导论、软件需求分析等所学知识有机结合,了解软件开发中需要解决的各类问题及可用表达工具的使用。课程设计的缺失,不仅不利于撰写符合软件工程规范的系列文档能力的培养,也使学生失去开发个人微信小程序的实践机会,阻碍复杂工程的设计方法和未知领域自主探求能力的培养。这是导致课程目标达成度不高的主要原因之一。
问题5:重复造轮子,缺乏复杂工程设计方法和未知领域自主探求能力。
现有教学方式着重于让学生能够编写微信小程序,却缺乏对业界最新开发技术和框架的介绍,导致学生常常从零开始编写程序代码,形成严重的重复造轮子问题,这是导致课程目标5达成度不高的主要原因。以小程序页面开发为例,由于缺乏对其他开发框架资源的了解,学生通常选择从零开发,而不是使用WeUI等成熟组件库。这不仅占用了学生大量的学习时间和精力,而且由于缺乏美术基础,学生设计出来的页面元素通常显得不协调,最终只能自娱自乐,无法满足商用需求。
2 教学措施改革
2.1 弱化教材,突出官方文档[6]的阅读,提高学生自主获取知识能力
在后续教学中,将以官方文档为主,进一步弱化相关教材在课程学习中的作用。要求学生在阅读官方文档的同时,在理论教学过程中明确注明授课内容在官方文档上的出处。一方面,让学生尽快熟悉官方文档的组织结构,不仅能够根据官网文档描述的开放能力评估小程序设计方案的可行性,还能在后续开发过程中遇到问题时,快速查找和定位所需信息;另一方面,让学生了解阅读官方文档的重要性及其方法,培养学生自主学习和探索未知领域的能力。
2.2 以用促学,重新对知识结构进行组织,以需求促进知识学习
传统的教学方法通常采用灌输式教学,即“以学促用”模式,要求学生首先掌握所有相关知识,然后应用所学知识解决问题。然而,在实际工程实践中,更常见的是“以用促学”模式,学生需要根据项目特点和应用场景,灵活选择适当的组件,确定应用需求,然后查找相关文档进行学习开发。相较于“以学促用”,“以用促学”不仅允许学生目的明确、有针对性地收集资料学习组件应用,从而获得更好的学习效果;同时有助于培养学生学习方法,使其具备快速上手陌生领域软件开发和终身学习的能力。因此,鼓励学生根据兴趣自由选择课题,引导他们分析课程设计过程中具体场景应用的知识,制订个性化的知识学习方案。
2.3 情景模拟,充分利用课程设计的系统性,培养学生分析与设计能力
微信小程序具有快速上线、快速实验、低试错成本的特点。数据显示,一款完善的App开发平均周期为2个月,而微信小程序的开发周期约为2周。与其他编程语言的课程设计相比,微信小程序课程设计为学生提供了充足时间按照软件工程开发规范开发一个能够真正解决问题的微信小程序。
因此,增加课程设计,一方面,有利于学生将本课程学习与软件工程、软件需求分析等先修课程内容相结合,切实体验需求分析、概要设计、详细设计、系统开发、系统测试等环节,深入了解各个环节的目的、常用工具及文档逻辑规范。例如,让学生以微信小程序形式实现软件需求分析课程实验中输出的软件开发需求规格说明书内容。通过实践,学生有机会重新审视自己的需求文档,深入理解UML模型,如类图、用例图、时序图、ER图的作用,并发现存在的问题,进一步培养学生书写软件工程规范文档的能力。另一方面,通过角色扮演提高学生参与感,更加贴近实战。在以往实践中,学生通常扮演多重角色,既是开发者又是需求者。这种情况下,学生在做决策时经常在需求和开发难度之间权衡,难以站在相应角色的角度思考问题。以登录功能为例,如果一个学生兼任开发者和需求者,往往会因为担心实现难度而选择更简单的密码账号登录方式;而若是仅作为需求者时,则更可能选择更优解决方案,比如动态密码登录。在系统需求分析阶段,让两名学生配合,互相描述需求并展开需求分析输出文档。接收需求文档后,评估对方需求提取的合理性和文档规范性,以此为基础继续完善,学生之间互补完成后续的软件开发环节。
2.4 自由选题,鼓励学生遵循自己兴趣,结合创业激发学生内在学习能动力
已有的基于具体项目的课程建设方案极大地限制了学生的想象力。兴趣是最好的老师,因此,本课程设计鼓励学生自主选题,并充分利用学校对大学生创新创业的政策支持,鼓励学生通过设计开发小程序来解决生活中的实际问题。例如,有些学生经常通过朋友圈展示自己的绘画作品,可以鼓励他们开发一个个人画展的小程序。课程结束后,学生还可以继续优化该程序,并探索其潜在的商用价值,进一步发展为大学生创新和创业实践项目。
2.5 开阔思路,合理利用资源,能够解决复杂软件工程问题
合理有效地利用优质资源,避免重复造轮子,是高效解决复杂软件工程问题的关键。以页面设计开发为例,目前存在众多优秀的组件库,例如,由微信官方设计团队为微信小程序量身设计的基础样式库WeUI。这不仅可以帮助学生避免从零开发所需组件,大大提高开发效率,还能让学生集中精力于几个关键的样式控制属性,从而开发出用户体验一致的专业页面。
3 教学内容安排
在教学内容编制方面,将改变传统大而全的课程组织方式,将微信小程序开发相关知识分为基础知识和个性化知识。
基础知识指的是学习微信小程序开发所必备的知识。通过掌握基础知识,学生可以具备开发简单微信小程序完整流程的能力。在基础知识学习中,以学生选题为主线,按照实际开发过程中涉及的知识顺序,帮助学生理清小程序目录结构、组件、WXML语法、JavaScript回调、事件绑定、WXSS语法,以及网络API等关键知识之间的关联,明确各知识模块在小程序开发中的重要性,有助于学生更好地理解和掌握这些知识。
个性化知识则是那些即使不掌握也不会影响小程序开发的知识。它们通常具有一拔而长三的学习效果,主要涉及位置、媒体、文件、设备、数据缓存等API的使用,以及云开发等扩展内容。个性化知识允许同一教学班的学生根据自己的课程设计选题核心功能,确定个性化知识学习的重点。比如,考虑以失物招领为主题的学生将注重学习位置API的使用;而以音乐播放为主题的学生将着重学习媒体API的使用,甚至可能跳过或忽略位置API的学习内容。由于媒体API和地图API的语法和使用方法非常相似,学生掌握其中一个后,很容易推广到另一个领域。