曹 陽,李 慧,王興芳,張金區(qū)
(華南師范大學(xué)計(jì)算機(jī)學(xué)院 廣東 廣州 510631)
2017 年以來,教育部積極推進(jìn)新工科建設(shè),旨在培養(yǎng)多樣化、創(chuàng)新型的卓越工程科技人才。相對(duì)于傳統(tǒng)的工科人才,新工科需要的是實(shí)踐能力強(qiáng)、創(chuàng)新能力強(qiáng)、具備解決復(fù)雜工程問題能力的高素質(zhì)復(fù)合型人才。為了適應(yīng)新工科人才培養(yǎng)的需求,軟件開發(fā)類課程的實(shí)踐教學(xué)應(yīng)該采用與工程實(shí)踐緊密結(jié)合的教學(xué)方法,培養(yǎng)學(xué)生的動(dòng)手實(shí)踐能力和團(tuán)隊(duì)協(xié)作能力[1]。然而在傳統(tǒng)的實(shí)踐教學(xué)模式下,由于學(xué)生缺乏項(xiàng)目管理經(jīng)驗(yàn)和團(tuán)隊(duì)協(xié)作技巧,往往采用單機(jī)開發(fā)、現(xiàn)場(chǎng)審查、手工合并等原始的協(xié)作方式[2],學(xué)生團(tuán)隊(duì)內(nèi)部和團(tuán)隊(duì)之間均缺乏有效的互動(dòng)和合作,容易出現(xiàn)分工和時(shí)間安排不合理、重復(fù)勞動(dòng)或者某些任務(wù)無人問津等現(xiàn)象[3]。學(xué)生學(xué)到的技術(shù)和方法離真正解決實(shí)際問題還有較大的差距。為了提升教學(xué)效果,培養(yǎng)學(xué)生的協(xié)同實(shí)踐創(chuàng)新能力,軟件開發(fā)類課程的實(shí)踐教學(xué)模式亟須改進(jìn)和優(yōu)化。
在現(xiàn)代的軟件開發(fā)領(lǐng)域,開源社區(qū)為軟件開發(fā)提供了一個(gè)高效的合作平臺(tái)。開源本身具有的“創(chuàng)新、開放、自由、共享、協(xié)同”等特性,與教育的目標(biāo)和特征不謀而合[4]。GitHub作為一個(gè)全球最大的開源社區(qū)平臺(tái),同時(shí)也是一個(gè)以代碼托管、版本控制為基本特征的軟件項(xiàng)目遠(yuǎn)程協(xié)作開發(fā)平臺(tái)。它吸引了世界各地大量的開發(fā)人員,并承擔(dān)了數(shù)以千萬計(jì)的項(xiàng)目托管任務(wù)。GitHub 最大的優(yōu)勢(shì)在于程序員可以與他人分享各自的項(xiàng)目,彼此互相學(xué)習(xí)、協(xié)同合作[5]。GitHub的開放、社會(huì)化屬性為軟件開發(fā)類課程的實(shí)踐教學(xué)帶來了新機(jī)會(huì),有助于建立實(shí)時(shí)交流、高效協(xié)作、體驗(yàn)良好的實(shí)踐教學(xué)新模式。
本文根據(jù)軟件開發(fā)類課程的實(shí)踐教學(xué)目標(biāo),提出了基于GitHub 開源平臺(tái)的教學(xué)方案,強(qiáng)調(diào)對(duì)學(xué)生的創(chuàng)新意識(shí)、角色定位能力、協(xié)同溝通能力等創(chuàng)新要素的培養(yǎng),以提高學(xué)生動(dòng)手解決復(fù)雜工程問題的協(xié)同創(chuàng)新能力。通過在“移動(dòng)智能應(yīng)用開發(fā)”課程中的教學(xué)實(shí)踐,進(jìn)一步驗(yàn)證了該教學(xué)方案能夠有效地解決軟件開發(fā)實(shí)踐中學(xué)生團(tuán)隊(duì)的協(xié)同工作和客觀評(píng)價(jià)問題,培養(yǎng)學(xué)生的團(tuán)隊(duì)協(xié)作能力和創(chuàng)新進(jìn)取精神。
GitHub 平臺(tái)能夠有效地解決多人協(xié)作開發(fā)的問題[6],但是如何與實(shí)際教學(xué)相結(jié)合還是需要根據(jù)課程的特點(diǎn)和學(xué)生的實(shí)際情況來制訂教學(xué)方案。下面從團(tuán)隊(duì)協(xié)作、資源共享和考核評(píng)價(jià)三個(gè)方面,給出了基于GitHub 的實(shí)踐教學(xué)方案設(shè)計(jì)。
為了實(shí)現(xiàn)軟件開發(fā)實(shí)踐中學(xué)生之間高效的團(tuán)隊(duì)協(xié)作,重點(diǎn)需要解決的三個(gè)主要問題:①項(xiàng)目團(tuán)隊(duì)成員之間的分工合作;②項(xiàng)目成員與指導(dǎo)老師之間的溝通交流;③學(xué)生團(tuán)隊(duì)之間的互動(dòng)學(xué)習(xí)。使用GitHub 作為學(xué)生軟件項(xiàng)目的托管平臺(tái),借助其項(xiàng)目管理和多人協(xié)作的核心功能,可以構(gòu)建一個(gè)動(dòng)態(tài)的協(xié)作環(huán)境,提供多層次、多維度的協(xié)作方式。
在GitHub 中每個(gè)項(xiàng)目團(tuán)隊(duì)創(chuàng)建各自的項(xiàng)目倉(cāng)庫(Repository),使用分支(Branch)功能來管理團(tuán)隊(duì)成員的分工,利用合并請(qǐng)求(Pull-Request)機(jī)制實(shí)現(xiàn)各組員代碼的合并,從而保證開發(fā)過程的高效性與并行性。學(xué)生在使用GitHub的過程中可以學(xué)習(xí)到基本的協(xié)作方法與技能,促進(jìn)協(xié)作能力與自我管理能力的提高。由于學(xué)生團(tuán)隊(duì)項(xiàng)目任務(wù)進(jìn)展和各成員的貢獻(xiàn)是透明的、一目了然的,可以讓學(xué)生感受高效順暢的開源共創(chuàng)文化,增強(qiáng)學(xué)生的創(chuàng)作責(zé)任感和能動(dòng)性。指導(dǎo)老師定期檢查GitHub 中的項(xiàng)目數(shù)據(jù),可以隨時(shí)掌握項(xiàng)目的進(jìn)展?fàn)顩r,與學(xué)生通過線上線下交流提供具體的支持和指導(dǎo)。
GitHub 倡導(dǎo)社會(huì)化編程(social coding)文化,程序員以一種社交化、民主化的形式進(jìn)行代碼協(xié)作。學(xué)生可以關(guān)注和參與到其他團(tuán)隊(duì)的開源項(xiàng)目中,學(xué)習(xí)他人解決問題的方法、優(yōu)秀的設(shè)計(jì)思想和先進(jìn)的技術(shù),還可以進(jìn)行二次開發(fā),為開源項(xiàng)目做出貢獻(xiàn)。學(xué)生通過與其他團(tuán)隊(duì)的合作交流,可以快速提高個(gè)人學(xué)習(xí)能力,在協(xié)同開發(fā)和創(chuàng)作的過程中,將對(duì)知識(shí)的理解應(yīng)用到問題的解決中,促進(jìn)技術(shù)的學(xué)習(xí)和知識(shí)的轉(zhuǎn)化。
GitHub 中豐富的開源項(xiàng)目是軟件開發(fā)類課程實(shí)踐教學(xué)的寶貴資源。開放的社會(huì)化網(wǎng)絡(luò)為學(xué)生尋求問題的解決方案提供了一個(gè)很好的渠道。在軟件開發(fā)的實(shí)踐教學(xué)中,鼓勵(lì)學(xué)生從GitHub 平臺(tái)上查找具有參考價(jià)值的項(xiàng)目代碼,并在此基礎(chǔ)上繼續(xù)學(xué)習(xí)、探究和創(chuàng)新。學(xué)生還可以在GitHub上第一時(shí)間了解到最新、最前沿的IT技術(shù),了解這些軟件產(chǎn)品的初始狀態(tài)、中間狀態(tài)和發(fā)布狀態(tài),學(xué)習(xí)一個(gè)優(yōu)秀項(xiàng)目是如何一步步走向成熟,如何進(jìn)行擴(kuò)展,從而點(diǎn)燃學(xué)生追求卓越的熱情和主動(dòng)學(xué)習(xí)的積極性。
歷屆學(xué)生團(tuán)隊(duì)在GitHub 上提交的項(xiàng)目文檔,分享的學(xué)習(xí)資源、筆記和心得,也是可以利用的優(yōu)質(zhì)學(xué)習(xí)資源。不同年級(jí)的學(xué)生可以突破時(shí)空限制進(jìn)行溝通和交流,學(xué)習(xí)經(jīng)驗(yàn)和方法,獲取創(chuàng)意靈感和解決問題的思路。通過在實(shí)踐教學(xué)中引入GitHub 的開放式資源共享機(jī)制,可以實(shí)現(xiàn)從單一來源的封閉環(huán)境資源分享模式向多渠道的大范圍資源共享模式轉(zhuǎn)變,學(xué)生可以從開源社區(qū)中不斷獲取他人的智慧,完善知識(shí),擴(kuò)大視野。
在傳統(tǒng)的實(shí)踐教學(xué)模式下,由于沒有適當(dāng)?shù)姆绞接涗浐统尸F(xiàn)項(xiàng)目團(tuán)隊(duì)的分工、成員實(shí)際承擔(dān)的任務(wù)和完成的情況,因此會(huì)出現(xiàn)難以客觀評(píng)估團(tuán)隊(duì)成員貢獻(xiàn)度的問題。GitHub 平臺(tái)的優(yōu)勢(shì)在于實(shí)現(xiàn)了完善的成員管理機(jī)制,將項(xiàng)目成員的代碼提交與版本更新、注釋、文檔、審查交互均記錄在案,團(tuán)隊(duì)每個(gè)成員的貢獻(xiàn)程度公開透明、可追蹤。指導(dǎo)老師可以隨時(shí)掌握項(xiàng)目進(jìn)展和各成員的工作情況,成員之間對(duì)彼此的進(jìn)展也都有很好的了解,從而可以保證評(píng)價(jià)的公平公正。
在GitHub 數(shù)據(jù)支持的基礎(chǔ)上,教師不僅可以實(shí)現(xiàn)對(duì)學(xué)生作品的終結(jié)性評(píng)價(jià),也可以對(duì)學(xué)生的開發(fā)過程進(jìn)行過程性評(píng)價(jià)和形成性評(píng)價(jià)。通過建立多元化的評(píng)價(jià)體系,從不同維度全面反映學(xué)情,實(shí)現(xiàn)評(píng)價(jià)的全面性和激勵(lì)性。學(xué)生通過自我評(píng)價(jià)與生生互評(píng),形成反思意識(shí),找到自己在團(tuán)隊(duì)中的定位,不斷完善自己,促進(jìn)自身和團(tuán)隊(duì)的共同發(fā)展。
在計(jì)算機(jī)學(xué)院的專業(yè)選修課“移動(dòng)智能應(yīng)用開發(fā)”課程中應(yīng)用基于GitHub 平臺(tái)的實(shí)踐教學(xué)方案,取得了較好的教學(xué)效果。教學(xué)實(shí)踐和反饋表明,基于GitHub 平臺(tái)進(jìn)行學(xué)生項(xiàng)目的代碼管理和團(tuán)隊(duì)協(xié)作,能夠有效地促進(jìn)學(xué)生的理論知識(shí)學(xué)習(xí)和工程實(shí)踐能力的培養(yǎng),達(dá)到了預(yù)期的課程目標(biāo)。
“移動(dòng)智能應(yīng)用開發(fā)”課程的特點(diǎn)是知識(shí)新、內(nèi)容廣、工程性強(qiáng),強(qiáng)調(diào)學(xué)生在實(shí)踐環(huán)節(jié)中的過程性訓(xùn)練。為了有效考核學(xué)生的開發(fā)實(shí)踐能力,鼓勵(lì)團(tuán)隊(duì)合作,課程采用項(xiàng)目實(shí)踐考核方式,要求學(xué)生組成團(tuán)隊(duì)完成相對(duì)較復(fù)雜的移動(dòng)App 項(xiàng)目開發(fā)。團(tuán)隊(duì)一般由2—4 名學(xué)生組成,設(shè)置組長(zhǎng)一名,負(fù)責(zé)組內(nèi)成員的分工、進(jìn)度與協(xié)調(diào)等工作。為了更好地組織和管理學(xué)生團(tuán)隊(duì)和軟件項(xiàng)目,課程使用GitHub的“組織(Organizations)”賬號(hào)管理模式,建立了“Mobile Smart Application Development Course”組織(如圖1所示)。指導(dǎo)老師作為組織的創(chuàng)建者和管理者,使用團(tuán)隊(duì)(Team)功能對(duì)學(xué)生的項(xiàng)目團(tuán)隊(duì)進(jìn)行管理,各團(tuán)隊(duì)創(chuàng)建倉(cāng)庫(Repository)以實(shí)現(xiàn)代碼共享和協(xié)作開發(fā),團(tuán)隊(duì)完成的文檔、代碼及設(shè)計(jì)作品通過版本控制功能進(jìn)行存儲(chǔ)和保護(hù)。

圖1 “移動(dòng)智能應(yīng)用開發(fā)”課程組織
課題完成之后,除了團(tuán)隊(duì)在GitHub 上提交項(xiàng)目文檔,每個(gè)學(xué)生還需要提交總結(jié)性的個(gè)人報(bào)告。指導(dǎo)老師從團(tuán)隊(duì)評(píng)價(jià)和個(gè)人評(píng)價(jià)兩個(gè)角度給出一個(gè)綜合評(píng)分,其中團(tuán)隊(duì)評(píng)價(jià)包括項(xiàng)目創(chuàng)意、完成效果、技術(shù)難度等指標(biāo),個(gè)人評(píng)價(jià)包括工作表現(xiàn)、完成的工作量和任務(wù)難度等指標(biāo)。GitHub中記錄了每位團(tuán)隊(duì)成員提交的代碼及提交時(shí)間,如圖2(p115)所示。通過分析這些統(tǒng)計(jì)數(shù)據(jù),教師可以有效區(qū)分學(xué)生的團(tuán)隊(duì)表現(xiàn)和個(gè)人貢獻(xiàn),形成客觀、公正的評(píng)價(jià)。
各團(tuán)隊(duì)的項(xiàng)目文檔托管在GitHub 平臺(tái)上可以永久保存,供感興趣的學(xué)生學(xué)習(xí),進(jìn)而建立一個(gè)積極活躍的開源課程社區(qū),使得課程資源可以不斷迭代,自我完善。經(jīng)過多年的實(shí)踐,目前“Mobile Smart Application Development Course”組織內(nèi)包含了212 個(gè)學(xué)生團(tuán)隊(duì)、234 個(gè)項(xiàng)目倉(cāng)庫以及相應(yīng)的課程資源,實(shí)現(xiàn)了教學(xué)質(zhì)量的提升與教學(xué)效果的輻射。
從學(xué)生的課后反饋來看,大多數(shù)學(xué)生表示收獲了豐富的學(xué)習(xí)資源,掌握了實(shí)際的項(xiàng)目開發(fā)方法和團(tuán)隊(duì)協(xié)作方式,鍛煉了解決復(fù)雜工程問題的能力。有部分學(xué)生表示未來有意愿從事移動(dòng)應(yīng)用軟件的開發(fā)工作,希望繼續(xù)深入學(xué)習(xí)和探索相應(yīng)領(lǐng)域的知識(shí)。
在近幾年的課程教學(xué)實(shí)踐中,教學(xué)產(chǎn)出逐年提高,多個(gè)學(xué)生項(xiàng)目在課外科研課題中立項(xiàng)或參加學(xué)科競(jìng)賽,并取得了一系列的成績(jī)。這些實(shí)踐經(jīng)歷對(duì)學(xué)生自信心的培養(yǎng)和成就感的取得起到了積極作用。部分學(xué)生在課程結(jié)束后,選擇移動(dòng)應(yīng)用相關(guān)的崗位實(shí)習(xí),或以移動(dòng)智能應(yīng)用開發(fā)為主題撰寫畢業(yè)論文,大大促進(jìn)了學(xué)生對(duì)專業(yè)的認(rèn)可程度,對(duì)未來學(xué)生在專業(yè)領(lǐng)域的發(fā)展有一定的導(dǎo)向性作用。
軟件開發(fā)類課程實(shí)踐教學(xué)的重點(diǎn)在于培養(yǎng)學(xué)生的動(dòng)手實(shí)踐能力和解決軟件開發(fā)中復(fù)雜工程問題的能力。基于GitHub 開源平臺(tái)的軟件開發(fā)實(shí)踐,讓學(xué)生體驗(yàn)到行業(yè)中實(shí)際的開發(fā)環(huán)境。通過全方位沉浸式的團(tuán)隊(duì)合作,學(xué)生鞏固了所學(xué)的軟件開發(fā)知識(shí),掌握了今后實(shí)際工作中所需的技能和經(jīng)驗(yàn)。通過在“移動(dòng)智能應(yīng)用開發(fā)”課程中的實(shí)踐探索,進(jìn)一步驗(yàn)證了基于GitHub 的實(shí)踐教學(xué)方案能夠有效地解決學(xué)生團(tuán)隊(duì)的協(xié)同工作和客觀評(píng)價(jià)問題,提高學(xué)生學(xué)習(xí)的積極性和工程創(chuàng)新能力。該方案還可以進(jìn)一步改造升級(jí),應(yīng)用到本科生的畢業(yè)設(shè)計(jì)、學(xué)科競(jìng)賽和課外科研課題的實(shí)踐管理工作中,實(shí)現(xiàn)管理效率的提升和人才培養(yǎng)機(jī)制的優(yōu)化。