劉 軍
南京厚建軟件有限責(zé)任公司
計(jì)算機(jī)學(xué)科相較于其他學(xué)科的發(fā)展和變革是比較快的,在計(jì)算機(jī)語言方面經(jīng)歷了機(jī)器語言、匯編語言、高級語言三個(gè)階段,在互聯(lián)網(wǎng)行業(yè)蓬勃發(fā)展后又延展和出現(xiàn)了很多語言(含腳 本)如:PHP、Python、GO、Objective-c、Android及Vue等前端框架。
目前高校在計(jì)算機(jī)軟件教育的模式、內(nèi)容、適用性等方面都存在課程與行業(yè)脫節(jié)的情況,很多校企合作也僅限于局部點(diǎn)狀合作,學(xué)校之間、學(xué)生之間無法真正共享共建。
綜上所述,很有必要運(yùn)用最新的互聯(lián)網(wǎng)技術(shù),基于云原生技術(shù)構(gòu)建一個(gè)混合云生態(tài)的計(jì)算機(jī)軟件教學(xué)平臺,在技術(shù)上采用云編輯器、云編譯、云發(fā)布、云托管,可以讓師生擺脫時(shí)間、地點(diǎn)、設(shè)備的局限隨時(shí)隨地進(jìn)行授課和完成編程練習(xí);在教學(xué)內(nèi)容上建設(shè)以終為始(以本門學(xué)科結(jié)束后學(xué)生需要達(dá)到的目標(biāo)作為終點(diǎn),讓課程設(shè)計(jì)有一個(gè)正確的開始及過程)的課程體系,提供不同難度的業(yè)務(wù)場景教程,因材施教確保每個(gè)同學(xué)都能圍繞目標(biāo)進(jìn)行學(xué)習(xí)和產(chǎn)出。
目前高校的計(jì)算機(jī)軟件教學(xué)模式也在不斷發(fā)展和創(chuàng)新,但是大部分的模式是依據(jù)統(tǒng)一的課本教材作為主體教學(xué)方案,依然是傳統(tǒng)的教師講、學(xué)生聽的模式,上機(jī)操作部分也是考核學(xué)生對知識點(diǎn)的掌握。
同時(shí)軟件行業(yè)的發(fā)展是日新月異,人工智能、大數(shù)據(jù)、區(qū)塊鏈、元宇宙,軟件語言越來越豐富,延展的行業(yè)場景也越來越多,toG、toB、toC每一個(gè)方向都有若干的場景需求。
而高校教師平時(shí)要面臨很多班級的教學(xué)任務(wù),各種備課、考試、批改占據(jù)了日常的大部分時(shí)間,沒有太多精力關(guān)注軟件技能和新技術(shù)的發(fā)展。
1.2.1 千人千面,以終為始
高校的計(jì)算機(jī)軟件教學(xué)完全可以構(gòu)建一個(gè)差異化的教學(xué)模式,允許每個(gè)學(xué)生提前選擇好專研的項(xiàng)目方向,再采用以項(xiàng)目結(jié)果為導(dǎo)向的教學(xué)模式,讓學(xué)生時(shí)刻知道他的學(xué)習(xí)目標(biāo)和進(jìn)展,過程中同學(xué)之間可以共享階段作品,通過互相之間的幫助和交流來提升學(xué)習(xí)的動(dòng)力。
1.2.2 共享開放,持續(xù)迭代
引入以軟件項(xiàng)目工程實(shí)戰(zhàn)經(jīng)驗(yàn)為目標(biāo)的教學(xué)內(nèi)容,提供一個(gè)開放的課程入駐系統(tǒng),允許軟件企業(yè)在校企合作時(shí)共建課程,可以吸納在各個(gè)垂直行業(yè)有影響力的企業(yè)將優(yōu)勢產(chǎn)品轉(zhuǎn)化為教學(xué)實(shí)訓(xùn)課程,這樣就可以讓教學(xué)內(nèi)容時(shí)刻保持領(lǐng)先性,讓師生接觸到最新的軟件項(xiàng)目案例,從而激發(fā)學(xué)習(xí)興趣和明確未來的學(xué)習(xí)方向。
1.2.3 項(xiàng)目實(shí)戰(zhàn),保持領(lǐng)先
可以通過加強(qiáng)校企合作的共建能力,讓教師把教學(xué)和項(xiàng)目實(shí)踐融為一體,那么教師就能跟學(xué)生一起以軟件工程項(xiàng)目案例作為每個(gè)學(xué)年的教學(xué)目標(biāo),從而可以讓教師和學(xué)生都具備實(shí)戰(zhàn)經(jīng)驗(yàn)和保持技術(shù)的領(lǐng)先性。
云原生是一種利用云計(jì)算交付模型的優(yōu)勢來構(gòu)建和運(yùn)行應(yīng)用程序的方法論。當(dāng)開發(fā)者使用云原生架構(gòu)開發(fā)和運(yùn)維應(yīng)用程序時(shí),可以更快速地響應(yīng)產(chǎn)品需求和將新想法快速落地。在使用云原生技術(shù)后,開發(fā)者無需考慮底層的技術(shù)實(shí)現(xiàn),可以充分發(fā)揮云平臺的彈性和分布式優(yōu)勢,實(shí)現(xiàn)快速部署、按需伸縮、不停機(jī)交付等,這樣可以大大降低師生的介入門檻,并實(shí)現(xiàn)可持續(xù)性發(fā)展。
(1)能夠持續(xù)導(dǎo)入最新的技術(shù)和項(xiàng)目案例,為教師提供持續(xù)的學(xué)習(xí)機(jī)會(huì);
(2)支持多語言、多平臺、多框架,為學(xué)生提供因材施教的可能性;
(3)提供軟件工程全生命周期的閉環(huán)實(shí)訓(xùn)能力,提升學(xué)生的全局性思維;
(4)支持中臺服務(wù)能力的持續(xù)迭代,讓師生可以實(shí)現(xiàn)敏捷研發(fā)能力;
(5)以學(xué)生成長就業(yè)作為基石,以實(shí)際項(xiàng)目作品無縫銜接就業(yè)創(chuàng)業(yè)。
軟件教學(xué)的重點(diǎn)在于編程實(shí)踐而非理論,雖然目前市面上有很多全科目的慕課平臺,但是這些平臺的功能性很少,互動(dòng)實(shí)操性較弱,無法滿足軟件技術(shù)的快速迭代。
所以軟件教學(xué)平臺本身應(yīng)該是采用開放式的設(shè)計(jì)目標(biāo),產(chǎn)品本身的每個(gè)版本發(fā)布流程需要非常完善,版本的建立、測試、預(yù)發(fā)布、正式發(fā)布等重要節(jié)點(diǎn)需要可管可控,才能跟上新技術(shù)的發(fā)展。
在傳統(tǒng)的項(xiàng)目實(shí)踐中,由教師布置開發(fā)任務(wù),學(xué)生需要在不同的設(shè)備安裝軟件,將在本地編寫好的代碼作業(yè),以手動(dòng)打包發(fā)郵件、交U盤等形式提交給教師。
云原生教學(xué)平臺提供云端編程、代碼托管的工具,每個(gè)學(xué)生都可以擁有自己的獨(dú)立空間,學(xué)生可通過教學(xué)平臺在線編程或本地編寫上傳至平臺,代碼自動(dòng)提交至托管平臺,代碼提交的歷史過程可以溯源,教師可以直接實(shí)時(shí)查看學(xué)生提交的代碼內(nèi)容并進(jìn)行修改備注。
目前所有學(xué)校的編程教學(xué)都是按照教材進(jìn)行的,這在很大程度上限制了學(xué)生的差異化發(fā)展,學(xué)生缺少了目標(biāo)感和興趣度從而影響到學(xué)習(xí)效果。
面向未來的教學(xué)平臺應(yīng)該是提供多種不同難度等級的軟件工程案例,學(xué)生可以選擇一個(gè)自己比較感興趣的工程方向,然后再匹配實(shí)踐教材,這樣學(xué)生從一開始就知道自己的學(xué)習(xí)目標(biāo),過程中的每一步實(shí)踐都是為了最終的目標(biāo),這樣才能把興趣愛好和教學(xué)目標(biāo)進(jìn)行融合,最終實(shí)現(xiàn)以終為始的教學(xué)模式,培育出百花齊放的學(xué)生。
完成一個(gè)軟件工程或系統(tǒng),從開發(fā)到上線基本上要經(jīng)歷“研發(fā)、集成、部署、交付”的過程。平臺應(yīng)該支持容器化集群,再將這些容器分配給學(xué)生,學(xué)生可以在容器中構(gòu)建自己的應(yīng)用與服務(wù),平臺也提供了一些基礎(chǔ)的系統(tǒng)服務(wù),加速應(yīng)用產(chǎn)品開發(fā),實(shí)現(xiàn)軟件生產(chǎn)發(fā)布的完整流程實(shí)踐。通過完整地體驗(yàn)軟件工程的全生命周期過程,才能具備更加全局的研發(fā)思維。
教師可以通過維護(hù)開發(fā)某些中臺能力,開放給需要此功能的學(xué)生,學(xué)生基于此中臺能力構(gòu)建業(yè)務(wù)應(yīng)用,一方面減少重復(fù)構(gòu)建功能,另一方面也能夠熟悉真實(shí)開發(fā)場景流程。豐富的中臺能力可以支撐業(yè)務(wù)系統(tǒng)快速落地,展示學(xué)習(xí)成果。
隨著中臺服務(wù)的補(bǔ)充和完善,也為后續(xù)的學(xué)生提供了實(shí)現(xiàn)創(chuàng)意的基礎(chǔ),可在這些中臺服務(wù)之上搭建自己的創(chuàng)意業(yè)務(wù),為學(xué)生創(chuàng)新創(chuàng)業(yè)提供了很好的條件。
云原生可以為每一位學(xué)生提供獨(dú)立的空間服務(wù),每個(gè)空間存在物理隔離,在空間下可以擁有多個(gè)容器,學(xué)生可將自己的作品進(jìn)行部署與管理。這些作品可以一直迭代更新至從高校畢業(yè),這些作品也是很好展示個(gè)人能力的一張名片。
學(xué)生在與企業(yè)交流時(shí),可以直接展示工程作品、代碼工程、作業(yè)流程,一是可以很具象地展示出自己的個(gè)人能力與學(xué)習(xí)成果,二是體現(xiàn)院校與時(shí)俱進(jìn)的教學(xué)實(shí)踐模式,讓企業(yè)與學(xué)生交流起來更順暢,為學(xué)生和院校帶來更多機(jī)會(huì)與尊重。
教學(xué)平臺提供云端仿真實(shí)訓(xùn)平臺與標(biāo)準(zhǔn)實(shí)用課程資源,可為每位教師學(xué)生生成標(biāo)準(zhǔn)化的軟件開發(fā)環(huán)境。平臺采用B/S架構(gòu)的在線使用模式,工作學(xué)習(xí)不受時(shí)間地點(diǎn)的限制,把理論教學(xué)、案例教學(xué)、軟件使用、項(xiàng)目實(shí)訓(xùn)融為一體,打造學(xué)生在線代碼訓(xùn)練、版本管理、代碼Review、代碼托管、查看運(yùn)行結(jié)果、提交作業(yè)、查看成績,教師項(xiàng)目管理、查看學(xué)生提交的源碼與運(yùn)行結(jié)果、發(fā)布成績的在線教學(xué)開放平臺。
平臺采用分層設(shè)計(jì)的思路來打造一個(gè)全面的技術(shù)中臺,通過低代碼平臺的能力調(diào)用業(yè)務(wù)中臺豐富和開放性的能力,可以快速構(gòu)建教學(xué)平臺的業(yè)務(wù)場景,并實(shí)現(xiàn)日后的低成本維護(hù)。云原生教學(xué)平臺架構(gòu)如圖1所示。
圖1 云原生教學(xué)平臺架構(gòu)圖
由平臺管理員對學(xué)校教師學(xué)生人員信息、組織架構(gòu)進(jìn)行管理,支持批量導(dǎo)入人員信息,關(guān)聯(lián)手機(jī)號密碼,人員無需注冊即可登錄,根據(jù)學(xué)校實(shí)際院系、專業(yè)、年級、班級錄入信息,將人員信息與組織架構(gòu)關(guān)聯(lián),人員根據(jù)相匹配的角色權(quán)限使用平臺功能,方便管理。
課程管理實(shí)現(xiàn)對教師所授課程信息的管理。課程整體規(guī)劃時(shí),教師可以根據(jù)實(shí)際教學(xué)需求進(jìn)行方案的設(shè)計(jì),包括該課程章節(jié)設(shè)計(jì)、作業(yè)練習(xí)布置,支持給不同班級分別布置編程作業(yè),規(guī)定起止時(shí)間;制作課件教案時(shí),平臺提供項(xiàng)目案例資源課程庫供教師選擇使用,支持瀏覽、修改課程內(nèi)容,同時(shí)支持使用markdown自定義快速制作課件,支持插入鏈接、圖片、代碼段、視頻、文檔等內(nèi)容,實(shí)時(shí)預(yù)覽,為教師教學(xué)提供便利。適用于基礎(chǔ)教學(xué)、項(xiàng)目實(shí)訓(xùn)、考試測評等場景,教師發(fā)布課程后,對應(yīng)班級學(xué)生可進(jìn)入課程學(xué)習(xí),可查看課程進(jìn)度、授課教師、課程作業(yè)等,完成作業(yè)后在線提交,教師批改完成公布參考答案,學(xué)生可查看成績與評語,下載參考答案代碼。課程管理如圖2所示。
圖2 課程管理
在軟件工程領(lǐng)域中,腳手架是幫助開發(fā)人員在開發(fā)過程中使用的開發(fā)工具、開發(fā)框架,在教師帶學(xué)生做項(xiàng)目時(shí),很多項(xiàng)目初期做的事情基本上都是一樣的,在項(xiàng)目中減少重復(fù)的代碼行、方法及模塊,避免重新造輪子,借助已有的框架或工具提高效率。教師上傳腳手架,在課程編程環(huán)境中,學(xué)生就可使用腳手架,無需從頭開始搭建或者編寫底層軟件,提升編程體驗(yàn),縮短開發(fā)時(shí)間。使用腳手架,對于一個(gè)具體問題,可以套用現(xiàn)成的解決方案加以擴(kuò)展。使用腳手架的應(yīng)用,僅需通過簡單的注解和配置就可以具備健康狀態(tài)檢查、生產(chǎn)環(huán)境就緒、可觀測等基本服務(wù)能力。對于一個(gè)業(yè)務(wù)邏輯問題,可以復(fù)用已有的邏輯,一步步迭代,敏捷開發(fā)。環(huán)境腳手架如圖3所示。
圖3 環(huán)境腳手架
教學(xué)平臺提供云端開發(fā)環(huán)境,學(xué)生教師無需安裝任何軟件,隨時(shí)隨地打開瀏覽器就能使用,平臺同時(shí)兼容PYTHON、JAVA、PHP等熱門編程語言開發(fā)環(huán)境,滿足不同計(jì)算機(jī)學(xué)科專業(yè)教師的教學(xué)需求,省去復(fù)雜的配置工作,直接進(jìn)入開發(fā)狀態(tài),包含代碼高亮、自動(dòng)補(bǔ)全、Git集成、終端等IDE的基礎(chǔ)功能。同時(shí)支持實(shí)時(shí)調(diào)試、插件擴(kuò)展等,可以幫助學(xué)生、教師快速完成各種應(yīng)用的開發(fā)、編譯與部署工作。在實(shí)際教學(xué)過程中,教師只需一鍵開啟編程環(huán)境,創(chuàng)新教學(xué)模式,邊講課邊編程,學(xué)生根據(jù)步驟查看課件,跟隨編程,開發(fā)過程中會(huì)提示錯(cuò)誤類型與錯(cuò)誤詳情,可快速復(fù)制查詢解決方法,輔助教師批改作業(yè),提高學(xué)生學(xué)習(xí)訓(xùn)練代碼的規(guī)范性,代碼完成后支持實(shí)時(shí)查看運(yùn)行結(jié)果。根據(jù)在校學(xué)生的日常學(xué)習(xí)情況,教師可隨時(shí)查看學(xué)生軟件代碼的提交情況,從研發(fā)效率、代碼質(zhì)量、執(zhí)行效率、編碼規(guī)范等維度綜合觀察考評,有效管控代碼質(zhì)量,經(jīng)過不斷的實(shí)踐練習(xí),提高學(xué)生代碼開發(fā)能力。
在遇到特殊時(shí)期或授課需要,遠(yuǎn)程直播授課對于教師和學(xué)生來說更加方便,教師可將需要分享給學(xué)員的畫面通過平臺配置好,比如教學(xué)現(xiàn)場、電腦屏幕、PPT等;學(xué)員在規(guī)定時(shí)間內(nèi)進(jìn)入直播間,即可觀看實(shí)時(shí)的直播內(nèi)容。講師與學(xué)員可進(jìn)行文字、圖片、語音的交流互動(dòng),解決學(xué)生在日常作業(yè)以及課程中留下的問題,最大化地還原線下授課的場景。教師可以很好地把控學(xué)生上課的狀態(tài),并且做到實(shí)時(shí)監(jiān)督,隨時(shí)切換到學(xué)生編輯器環(huán)境查看。支持直播回放,學(xué)生可實(shí)現(xiàn)隨時(shí)隨地學(xué)習(xí),不會(huì)因?yàn)閳龅?、時(shí)間、設(shè)備的問題導(dǎo)致學(xué)生無法參加課程,給學(xué)員提供一個(gè)低延時(shí)、高清的線上直播課堂體驗(yàn)。
教學(xué)平臺支持多人協(xié)作開發(fā),教師創(chuàng)建教學(xué)項(xiàng)目,將不同班的學(xué)生分班/分團(tuán)隊(duì)管理。教師作為項(xiàng)目的負(fù)責(zé)人,對學(xué)生的學(xué)習(xí)任務(wù)進(jìn)行及時(shí)有效督促,添加團(tuán)隊(duì)成員,指定組長。教師可對學(xué)生進(jìn)行任務(wù)分配,以便學(xué)生明確自己要做的事情。由學(xué)生分別在各自的分支中開發(fā),開發(fā)完成后將代碼合并到組長主干中,測試主干后對發(fā)布的版本標(biāo)注一個(gè)版本號,教師可隨時(shí)查看學(xué)生提交的項(xiàng)目代碼,完成項(xiàng)目需求管理、項(xiàng)目計(jì)劃管理、成員管理、代碼托管,實(shí)現(xiàn)項(xiàng)目持續(xù)集成、持續(xù)交付、持續(xù)部署。教師可以將優(yōu)秀學(xué)生項(xiàng)目發(fā)布到平臺展示,有利于相互交流學(xué)習(xí)。
基于云原生技術(shù)設(shè)計(jì)的軟件教學(xué)平臺具備如下特點(diǎn)及優(yōu)勢:(1)平臺是標(biāo)準(zhǔn)的DevOps交付模式,過程透明開放,服務(wù)之間的耦合關(guān)聯(lián)清晰可見(傳統(tǒng)軟件封裝加密好的項(xiàng)目包不可管控);(2)平臺采用微服務(wù)化,師生可以同步迭代完善平臺,實(shí)現(xiàn)平臺的自成長性;(3)平臺上開發(fā)的項(xiàng)目具備實(shí)戰(zhàn)性,基于容器化可以一鍵安裝部署到一個(gè)新的環(huán)境,獨(dú)立上線運(yùn)行;(4)平臺支持自建開發(fā)語言腳手架,可以支持很多常見開發(fā)語言,從而真正實(shí)現(xiàn)學(xué)校教師統(tǒng)一共建服務(wù)和課程。
南京財(cái)經(jīng)高等職業(yè)技術(shù)學(xué)校已經(jīng)將云原生軟件教學(xué)平臺引入課程實(shí)踐教學(xué),基于PHP、JAVA、PYTHON等主流工具語言開設(shè)了Java開發(fā)入門、WEB高級開發(fā)、微信小程序開發(fā)、Python網(wǎng)絡(luò)爬蟲、CSS初級課程、Bootstrap基礎(chǔ)入門等課程。在教學(xué)過程中,全校3個(gè)校區(qū)十幾名教師統(tǒng)一通過平臺備課,制作課件,引導(dǎo)學(xué)生們在教學(xué)平臺中完成課程預(yù)習(xí)、課中練習(xí)、課后作業(yè)、考試,引導(dǎo)學(xué)生們學(xué)會(huì)使用平臺協(xié)同開發(fā),增強(qiáng)學(xué)生的創(chuàng)新意識與編程能力,對每個(gè)同學(xué)的編程完成情況,教師也積極使用教學(xué)平臺實(shí)時(shí)跟蹤,與學(xué)生展開討論,并認(rèn)真解答學(xué)生遇到的各種問題,并順利開展了兩次編程考試,在近一年的教學(xué)實(shí)踐過程中,逐步形成了較為完善的課程資源及教學(xué)方案,為日后的教學(xué)復(fù)用提供參考。
教育部《2019年教育信息化和網(wǎng)絡(luò)安全工作要點(diǎn)》通知中提出,推動(dòng)在中小學(xué)階段設(shè)置人工智能相關(guān)課程,逐步推廣編程教育。由此可見軟件編程教育將從高等教育的專業(yè)階段往低齡的普及階段拓展,軟件研發(fā)教學(xué)變得更加任重道遠(yuǎn),目前市面上的編程課程良莠不齊,教學(xué)工具的專業(yè)性和持續(xù)性非常欠缺,本軟件教學(xué)平臺的設(shè)計(jì)初衷是希望在垂直領(lǐng)域進(jìn)行探索,本著拋磚引玉的精神為國家教育事業(yè)獻(xiàn)上綿薄之力。