文/張齊勛 汪盛 田在銘 楊志偉
軟件工程課程是軟件工程專業一門綜合性基礎課程,對于軟件工程專業的其他課程起到穿針引線的作用,是其他課程基礎知識的綜合應用,包含程序設計語言、數據庫、開發工具、系統平臺以及軟件設計模式等內容,采用工程化的概念、原理、技術和方法進行軟件的開發和維護,貫穿軟件的全生命周期,包括軟件的需求分析、設計、開發、測試、交付以及維護等全過程。
隨著IT 技術的不斷更新及發展,企業對軟件工程人才的需求提出了更高的要求,為了培養符合IT 企業需求的軟件工程專業人才,學院在華為公司的支持下,對軟件工程實踐課程進行了改革,針對課程的知識體系、教學方法、實踐項目以及考核標準等進行了重新設計,邀請企業導師參與課程實踐項目的指導,按照企業的軟件開發模式及開發流程,指導學生完成小組項目,使學生在學校期間真正學習到企業的軟件工程能力,為將來實習和就業打下良好的基礎。
在實踐教學過程中,如何激發學生自主學習的積極性,讓學生課后主動彌補自己知識的不足也是本次課程教學改革的一個目標。首先是教師角色的轉變,從知識的傳授者轉變為學生走向知識的領路人。其次要有信息化的手段,幫助教師與學生之間更好的互動,教師需要及時了解學生在學習過程中的更多細節,掌握學生的學習效果和課程項目實踐的參與程度。
針對目前的課程教學內容及教學模式,本課程主要從以下幾個方面進行了教學改革的思考和嘗試。
在保持課程內容相對穩定的基礎上,補充業界最新的軟件工程理念、技術和方法,強化課程實驗、創新實踐項目與相關知識點的結合。在講授基礎知識的過程中,貫穿教學案例分析與講解,讓學生真正掌握軟件工程的相關理論、工程方法以及創新實踐技術,訓練學生從事軟件開發的系統能力,使學生通過學習本課程既掌握理論基礎知識,又具備軟件創新實踐能力。
教學過程一方面要發揮教師教學的主觀能動性,另一方面也要充分激發學生的學習興趣,并將之保持下去。這就需要采用豐富有效的教學方式。
本課程將理論、實踐和創新的培養結合在一起。通過理論、實踐和創新的結合,形成相互促進的螺旋式上升結構,教師與學生能夠進行充分的溝通和交流,讓教學內容、積極思考和創新思想深入到學生的思維,從而達到良好的教學效果。
在教學過程中,除正常的教師授課外,還采用了課堂討論的方式,通過交互式的交流和探討,提高學生的學習興趣,使學生積極活躍的進行思考。同時,通過交互式的教學,還提高了學生的自學能力和表達能力。
在軟件生命周期中,除了設計能力和編程能力外,還涉及軟件文檔撰寫能力、口頭表達能力和團隊配合能力等多方面素質,進而完成軟件系統的構思、設計、實現和實施等全過程。
課程定期邀請企業的專家學者參與課程教學過程,使學生能夠更好的了解軟件工程領域最新進展。
作為一門理論與實踐并重的課程,課程學習結果的考核綜合考慮了理論、實踐兩個方面。學生的最終課程成績分布為:理論成績30%,平時實驗20%,綜合實踐項目30%,課堂討論20%。通過這種考核方式,同學們不再單純的關注傳統的書面考試,而是將理論、實踐、課堂互動交流等綜合起來,同時促進學生主動思考,積極創新,從而提高學生的綜合素質。
為了對教學效果進行有效的跟蹤,課程組采用多種方法收集課程的教學效果。首先在課程過程中通過對學生在討論交流中曝露出的問題進行分析,找出問題的主要原因及應對方法,進而反饋到教學中;在課程結束后,進行問卷調查,對學生進行訪談,了解學生的學習效果;在課程結束半年后,進行問卷調查和訪談,收集學生對本課程的改進意見。教學效果跟蹤對于改善課程設置,提高教學水平起到了良好的作用。
學生創新實踐能力的培養主要來源于項目實踐環節,除了邀請企業專家參與授課,最重要的是采用企業先進的開發理念、流程以及工具,按照企業開發場景進行實訓操作,在課程實踐教學中,需求分析、項目管理、軟件開發、部署等過程均基于華為云DevCloud,參照企業實際開發流程進行。軟件實踐過程中,讓學生們真正體會把理論知識變成軟件產品的全過程。
DevCloud 是華為云提供的一站式云端DevOps 平臺,覆蓋軟件研發過程中項目管理、代碼托管、代碼檢查、編譯構建、測試管理、自動化測試、自動化部署、發布管理和流水線端到端的業務過程,讓軟件開發簡單高效,并可以管理和監測軟件開發的全過程。在使用DevCloud 進行課程項目實踐教學過程中,可以及時了解到每位學生的日常表現。
項目管理:包含多項目管理、敏捷迭代、看板協作、需求管理、缺陷跟蹤、文檔管理、Wiki 在線協作、儀表盤自定制報表等功能。
代碼托管:提供基于Git 的在線代碼托管服務,包括代碼克隆/下載/提交/推送/比較/合并/分支/Code Review 等功能。
代碼檢查:基于云端實現代碼質量管理的服務,軟件開發者可在編碼完成后執行多語言的代碼靜態檢查和安全檢查,獲取全面的質量報告,并提供缺陷的改進建議和趨勢分析,有效管控代碼質量。
部署:提供可視化、一鍵式部署服務,支持并行部署和流水線無縫集成,支持腳本部署,容器部署等部署類型,支持java、node.js、python 等多種技術棧,實現部署環境標準化和部署過程自動化。
發布:提供軟件倉庫、軟件發布、發布包下載、發布包元數據管理等功能,通過安全可靠的軟件倉庫,實現軟件包版本管理。
在小組實踐項目管理過程中,小組人員進行角色分工,華為專家通過分享企業實際開發過程中所使用的敏捷開發流程,以及企業在軟件工程中的不同角色之間如何協同開發,每個角色所需的關鍵技能,使學生參照企業真實開發流程,討論需求、分工協作,使用華為云DevCloud 進行敏捷開發項目實踐。
在企業中,通常迭代周期為1 周或2 周,在課堂上,同樣采用迭代的方式驗收小組項目,課程項目采用2 周發布一次迭代的方式,對項目及成員的表現進行考核,為了確保考核標準可量化,也為了使學生能夠更加深入的理解敏捷軟件項目開發的項目管理和實施細節,課程教師共同針對本課程,制定了表1 的課程項目迭代考核標準,每次迭代驗收均按照迭代考核標準對小組項目及組內每個成員進行考核打分。

表1 課程項目迭代考核標準
通過一個學期的課程改革及教學實踐,本課程基于軟件工程基礎知識和DevCloud 開發平臺,將教學知識體系與工程技術教學相結合,使教學與工程完美融合在一起。學生反饋通過本次課程的學習,了解了IT 企業真實的工作模式,收獲了獨立解決問題的能力,掌握了學習新技術的能力,具備了工程實踐能力、團隊協作能力、交流溝通能力。
軟件工程課程教學改革以學生發展為中心,以企業為市場主體,把培養學生創新能力放在軟件工程人才培養的核心地位,采取多項課程改革方式,引入企業先進的軟件技術及研發經驗,調動企業參與人才培養的積極性,構建產學深度融合的多方協同育人平臺,強化學生職業素養和工程實踐能力的培養。