新工科背景下的軟體工程課程實踐教學建設:思考與探索
1 背 景
軟體工程是軟體工程人才培養的一門核心專業課,其目標是培養學生藉助於工程化的手段,並綜合運用多方面的知識來解決複雜問題和開展創新實踐的能力。實踐教學無疑是達成這一建設要求的重要環節,只有通過針對軟體系統的工程化開發實踐,才能讓學生深入理解和掌握抽象的軟體工程知識,運用所學到方法和技術來開發軟體系統,並在克服困難、解決問題的過程中獲得感悟,積累經驗,提升能力。
新工科建設[1-2]給軟體工程課程實踐教學提出了明確和清晰的要求,即從新工科人才培養的角度出發,為提升學生的工程實踐和創新能力、提高工程素養做出貢獻。
首先,課程實踐的內容要充分體現「工程」特點,為工程實踐和創新能力培養奠定基礎。例如,課程實踐中待開發的軟體系統要有一定規模、需求,問題要有創意,涉及的知識和技能要有多樣性、綜合性、交叉性、集成性等特點。
其次,課程實踐的實施要充分體現「工程」特點,通過實訓來培養工程實踐和創新能力。例如,課程實踐要充分藉助工具和平台,儘可能採用與業界主流相一致的方法和技術手段。
最後,課程實踐的考評要充分體現「工程」特點,為工程實踐和創新能力培養提供準繩。例如,要關注和重視工程實施及其產品的質量,要通過考評來推動工程實踐,加強能力培養。
因此,必須在新工程建設的背景下重新審視軟體工程課程實踐教學的建設,分析新工科建設對其提出的要求,審視當前實踐教學在達成這一要求方面存在的問題和不足,並思考和尋求解決問題的有效方法。
自2012年以來,國防科技大學計算機學院針對新工科建設中對軟體工程課程實踐教學的要求,對其課程建設開展了系統性、深層次的教學改革,試圖解決我們在落實人才培養方案、加強能力培養、適應專業和產業發展、滿足崗位需求等方面存在的問題和面臨的挑戰。這次教學改革涉及面廣、幅度大、要求高,包括知識結構的重組和優化、課程群的建設、教學方法的改進、教學平台的開發和應用、考核方法的調整等。
2 軟體工程課程實踐教學的現行方法及其局限性
當前軟體工程實踐教學通常採用團隊方式組織學生參與實踐,以項目形式開展實踐,以老師或者TA作為指導學生完成課程實踐的主要幫助對象,以老師給定的任務和要求(如時間、進度、評標和考核標準等)驅動學生開展實踐。在課程實踐過程中,學生主要藉助於物理空間(如教室或校園),或者區域網絡空間(如某些教學平台),通過與教師和TA的交互,獲得所需的資源,解決存在的問題。
概括起來,這種實踐教學方法存在以下不足:①參與對象的封閉性,課程實踐的參與對象僅僅局限於參加實踐教學的學生、老師和TA,其他對象難以加入到實踐教學中並做出貢獻,因此老師的作用很關鍵;②資源渠道的有限性,學生大多情況下只能從老師或者TA那裡獲得支撐課程實踐所需的資源,難以從其他的渠道來獲得幫助,因此老師的輔導很關鍵;③實施空間的局部性,課程實踐通常受限於局部的物理空間和信息空間,學生難以與實施空間之外的個體或者群體進行交互和協作,因此與老師的交互很關鍵。
現行的實踐教學方法的本質是以教師、教室和教材為中心開展課程實踐,成效高度依賴於任課教師的專業水平、工程經驗和教學投入,今年的成功並不意味著明年的成功。這種實踐教學方法極大限制了學生開展實踐的視野,限制了實踐教學的實施空間,制約了獲取指導和幫助的範圍,影響了對學生工程實踐能力和素養等方面的訓練和培養。
從教師的角度看,軟體工程課程實踐教學面臨的最大挑戰在於老師缺乏足夠的知識、經驗、資源、時間和精力來指導學生完成課程實踐。基於傳統教學方法,單純靠教師和TA來輔導學生開展軟體工程的課程實踐,高標準地完成各項實踐任務將會非常困難,即使老師有美好的意願,也會遇到心有餘而力不足的尷尬局面,從而導致課程實踐虎頭蛇尾,草草收場。
從學生的角度看,軟體工程課程實踐教學面臨的最大挑戰在於在課程實踐過程中會遇到種種的問題,迫切地需要尋求解答、給出建議、提供指導。基於傳統教學方法,學生只能從教師和TA處尋求有限的幫助,難以超越老師和TA獲得其他的幫助渠道,一些問題難以做到及時解決,從而極大影響了學生開展課程實踐的積極性和熱情,以及課程實踐的效果和質量。
3 軟體工程課程實踐教學改革的建設思想
3.1 互聯網和群體化方法帶來的啟發和思考
當前的教育改革深受互聯網和信息技術的影響,一個典型的例子就是MOOC。互聯網不僅是一個技術平台,更是一種理念和思想,藉助連接的手段,採用開放的思維,實現信息、資源、服務、知識等的充分共享,從而為諸多問題的求解提供了基於互聯網的新模式。在此背景下,群體化實踐和應用不斷產生,從大眾點評到軟體開發等諸多領域。
在軟體工程領域,以開源軟體、開源社區為代表的一類群體化方法取得了成功。它們為軟體工程課程實踐教學的開展以及克服其局限提供了新的思路和理念。開源軟體不僅改變了傳統意義上的軟體開發模式,允許人們自由地獲取、使用、修改和分發由互聯網群體開發的程序代碼,而且極大激發了互聯網群體的創新意識,代表了軟體工程領域一種先進的開發技術。以SourceForge、GitHub等為代表的開源社區不僅匯聚了大量不同水平和層次、不同專業和領域知識背景的軟體開發人員,而且提供了來自互聯網大眾的各種智慧,如互聯網的連接、開放和共享思想以及以開源軟體和開源社區為代表的群體化方法的成功實踐給了我們諸多的啟發,充分發揮互聯網的優勢和群體智慧的力量,加強軟體工程課程實踐建設、改革實踐教學方法、提升課程實踐效果,達成人才培養目標。
(1)互聯網匯聚了海量、多樣、高質量的資源(如開源軟體),我們可以將這些資源引入到實踐教學環節,讓它們成為指導課程實踐的學習資源,從而來解決軟體工程實踐教學中普遍存在的資源數量不足、質量不高、難以獲取等方面的突出問題。
(2)互聯網聚集了大量、經驗豐富、高水平的開發人員,我們可以將這些群體引入到課程實踐教學環節,讓他們成為課程實踐的指導者和貢獻者,從而來解決實踐教學中普遍存在的有問題找不到幫助、難以獲得高水平指點等方面的突出問題。
3.2 軟體工程課程實踐教學的改革思路
互聯網上匯聚了大量值得我們學習的「老師」,也不乏「高手」,他們提供的資源和作品值得我們學習和利用,他們的智慧、經驗、心得等值得我們借鑒和參考。軟體工程課程實踐教學應充分藉助互聯網群體的力量,利用互聯網群體提供的資源、智慧和作品來開展學習、指導實踐。
近年來無論是教育界還是工業界都充分認識到群體化學習方法的重要性,並在高等教育中開展了積極的探索和實踐[3-5]。基於群體化思想的課程實踐教學不僅可以利用互聯網群體所提供的資源(如開源軟體)來支持實踐,讓高質量資源及其蘊含的豐富經驗和成功經驗來提升學習者的實踐水平和工程素養;而且它還超越傳統意義上的物理空間(如教室和課堂),讓學習者基於互聯網與互聯網上的「高手」進行交流,及時獲得幫助和指導,從而來解決實踐過程中遇到的各類問題(見圖1)。
群體化方法使得實踐教學的理念發生了根本性的變化(見表1),它基於群智、開放、海量、高質量等新穎的理念,可以有效克服以教師、教室和教材為核心的實踐教學模式存在的諸多不足,是對傳統實踐教學方法的有效補充。
與傳統的實踐教學方法相比較,基於群體化方法的實踐教學具有以下特點:①實施空間,基於互聯網空間而非物理或者局域信息空間;②協同對象,基於開放的互聯網群體,而非任課教師或TA;③實踐資源,來自於互聯網群體的作品、問題解答、經驗分享等,而非來自老師和TA的有限資源;④實踐協同,基於互聯網平台(如社區)、採用分散式協同(Issue、Pull/Request)機制,而非面對面交流和指導。
4 軟體工程課程實踐教學改革的整體框架及實施方法
為了加強軟體工程課程實踐教學的建設,強化工程實踐和創新能力的培養,踐行基於群體化的實踐教學方法,在過去3年我們圍繞軟體工程課程實踐教學的實踐內容、實施方法、考評方式、支撐平台等方面開展了積極的探索,整個實踐教學改革的框架如圖2所示,主要包括兩個相互關聯的實踐。
(1)閱讀和維護高質量的開源軟體。該實踐要求學生閱讀高質量、具有一定規模的開源軟體,根據對開源軟體的理解來對代碼進行標註,對代碼的質量進行分析,在此基礎上對開源軟體進行維護,完善其功能,糾正其缺陷。該實踐的目的旨在讓學生掌握高質量程序代碼的基本風格和要求,學習如何編寫高質量的程序代碼,感受程序代碼質量的重要性,領會軟體需求變化和規模增長對代碼質量產生的影響。實踐的結果包括開源代碼標註和注釋、開源代碼質量分析報告、經過維護後的開源代碼、可運行和可演示的軟體系統、軟體系統的產品介紹、演示和報告材料。
(2)開發有創意、上規模和高質量的軟體系統。要求學生構想和創意軟體需求,對待開發軟體系統的規模性、集成性、綜合性、質量等提出明確要求,採用迭代的方法進行需求分析、軟體設計、編寫代碼、測試驗證等,鼓勵學生重用開源代碼和互聯網服務,通過基於互聯網的分散式協同、持續集成和檢查、基於開源社區的交流和討論等手段來開發軟體,解決開發中遇到的問題。實踐的結果包括軟體需求創意文檔、軟體設計模型、程序代碼、測試報告、可運行和可演示的軟體系統、軟體系統的產品介紹、演示視頻和報告材料。
為了實施實踐教學,我們採取了以下的方法和手段。①採用群體化的方法來解決傳統實踐教學面臨的問題,包括學習互聯網群體所開發的開源代碼,通過加入開源社區並進行交互和協同來獲得互聯網群體幫助,分享他們的經驗和智慧;②藉助於基於互聯網工具和平台來開展實踐,如分散式系統開發平台Trustie-Forge、開源軟體連接與檢索平台Trustie-OSSEAN、開源代碼學習標註工具Trustie-Codepedia;③迭代開發和持續講評,兩個實踐均採用迭代的方式來完成,在此過程中老師須對學生的實踐過程和提交的實踐成果持續進行講評,發現問題、給出建議、提供思路、糾正方法、總結經驗等。
經過3年的建設以及2屆學生的實踐探索,基於群體化的軟體工程課程實踐教學在加強工程實踐和創新能力方面取得了積極的成效:學生所開發的軟體系統的規模平均達到10 000行以上代碼,軟體系統集成了多個系統和設備(如機器人、無人飛機、智能終端、開源軟體和互聯網服務)、交叉了多樣化的知識和技術(如模式識別技術、機器人軟體技術、移動APP軟體技術等等),軟體產品的質量(包括代碼、模型和文檔)得到了顯著提升,基本掌握了基於互聯網來進行群體化協同開發的技術和技能,所構想和實現的軟體系統有新意,在多個比賽和競賽中獲獎。
5 結 語
技術發展、產業進步和國家經濟結構戰略調整對高等院校的人才培養質量,尤其是工程實踐和創新能力、工程素養等提出了更高的要求。如何針對這一要求改進教育理念和教學方法是當前高等教育面臨的一項重要挑戰。實踐教學無疑是達成這一目標的關鍵,但是當前基於教師、教材和教室的實踐教學方法在支撐人才培養方面存在諸多的局限性。互聯網理念和群體化方法可以為達成新工科人才培養要求、克服現有實踐教學方法不足等提供有效的解決途徑,從而實現實踐教學理念和思想上的轉變,充分藉助群體的智慧來促進人才培養將是高等教育的一個重要趨勢。基於這一思想,我們探索了基於群體化的軟體工程實踐教學,設計了讀開源代碼、改開源軟體、利用開源軟體和互聯網群體來開發有創意、上規模和高質量的軟體系統等一系列的課程實踐,訓練和培養了學生的工程意識、質量意識、創新意識,實踐結果表明了我們的教學實踐改革思路和方法的有效性。
參考文獻:
[1] 胡波, 馮輝, 韓偉力, 等.加快新工科建設,推進工程教育改革創新——「綜合性高校工程教育發展戰略研討會」綜述[J]. 復旦教育論壇, 2017(2): 20-27.
[2] 吳愛華, 侯永峰, 楊秋波, 等. 加快發展和建設新工科 主動適應和引領新經濟[J]. 高等工程教育研究, 2017(1): 1-9.
[3] Foulger T S. The 21st-Century teacher educator and crowdsourcing[J]. Journal of Digital Learning in Teacher Education, 2014, 30(3): 110.
[4] Prasad M R, Reddy D K. Computer based teaching methodology for outcome-based engineering education[C]// IEEE. International Conference on Advanced Computing. IEEE, 2016: 809-814.
[5] Bandyopadhyay S, Thakur S S. ICT in education: Open source software and its impact on teachers and students[J]. International Journal of Computer Applications, 2016, 151(6): 19-24.
TAG:計算機教育 |