


關鍵詞: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的語法和使用方法非常相似,學生掌握其中一個后,很容易推廣到另一個領域。
4 考核方式改革
在考核方式方面,首先,刪除了實驗考核方式,并對期末考試進行了改革。期末考試不再只測試學生的記憶力,而是更加側重展示他們的實際應用能力。例如,在考查學生對輪播圖組件的使用時,給出可能用到的屬性集合(如“indicator-dots、vertical、interval、autoplay、play、circular”等),學生只須正確選擇并運用相關屬性,而無須死記硬背屬性的書寫方式,這樣更能體現學生的能力培養。其次,增加了課程設計考核方式,針對課程目標4,強調微信小程序開發過程文檔的完整性和規范性,要求學生形成包括需求文檔、概要設計、詳細設計、用戶手冊等軟件開發過程文檔;針對課程目標5,通過學生在課程設計過程中提出問題、進行代碼調試、使用第三方框架的情況,綜合評價他們的復雜工程設計方法和在未知領域自主探索的能力。要求學生開發的小程序功能劃分合理、技術選型準確、代碼格式規范、注釋準確清晰。通過課程答辯,讓學生深入展示微信小程序的實現效果、設計思路以及潛在的商用價值。
最終形成了符合工程教育認證理念的多維度評價考核體系,課程成績由平時成績(10%) 、作業成績(10%) 、期末考試成績(30%) 、課程設計成績(40%) 和課程答辯成績(10%) 五部分組成。
5 教學效果
通過2022至2023學年的教學實踐,筆者發現讓學生從自身興趣和學習需求出發選擇課程設計內容,并將相關知識融入整個微信小程序開發周期中,相較于傳統的以授課為主和基于具體項目的教學方式,更能激發學生學習的熱情和培養能力。例如,2021級軟件工程1班和2班的課程目標達成度如圖2所示,與上一次教學效果(圖1) 相比,學生在課程目標4和課程目標5的達成度分別提升了7%至18%。此外,采用這種有針對性的學習方式,學生更愿意在課后投入時間將自己的想法付諸實踐,往往讓他們走在課程的前沿。教師負責指導學生解決實踐中遇到的問題,這有利于培養學生學習方法,使他們具備快速上手陌生領域軟件開發和終身學習的能力。
6 結束語
微信小程序開發能力已經成為軟件工程專業學生需要具備的重要能力之一,如何有效培養當代軟件工程專業大學生開發微信小程序的能力變得越來越重要。本文提出了“以學促用”的微信小程序課程教學模式,即將微信小程序開發知識融入具體應用開發過程中,以實際開發需求形成驅動學生學習相關知識的內在動力,不僅促進了本課程教學質量的提升,也為其他課程的改革創新提供了新的思路和方法,同時體現了堅持能力為本位、學生為主體的OBE 教育理念。