



摘" 要: 考慮了軟件工程課程的特點和當前教學模式中存在的問題,提出“以工程教育為理念,項目任務為驅動,學生為主,教師為輔”的教學方法。以完成CDIO四個階段的子任務為切入點,從職業規劃、T型人才培養、提升工程管理技能幾個方面闡述教學改革的思路與實施。最后對教學效果進行總結。
關鍵詞: 軟件工程; CDIO; 任務驅動; 教學探索
中圖分類號:G642.0" " " " " 文獻標識碼:A" " "文章編號:1006-8228(2023)12-209-04
Research of software engineering course teaching based on CDIO and task-driven
Xiao Bo
(School of Information and Engineering, SwanColleage, Central South University of Forestry and Technology, Changsha, Hunan 410211, China)
Abstract: In view of the characteristics of software engineering curriculum and the problems existing in the current teaching mode, the teaching method of \"engineering education as the concept, project task as the driver, students as the main, teachers as the auxiliary\" is proposed. Starting from completing the sub-tasks of the four stages of CDIO, the idea and implementation of teaching reform are expounded from the aspects of career planning, T-type talent cultivation, and improvement of engineering management skills. The teaching effect is summarized and evaluated.
Key words: software engineering; CDIO; task-driven; teaching research
0 引言
“軟件工程”是一門指導計算機軟件開發和維護的學科[1], 它系統地介紹了軟件與軟件工程的關系,軟件開發過程與模型,以及與工程密切相關的人或事的處理方式,它是培養學生的軟件開發能力和項目管理能力的一門重要課程。近年來,伴隨著大數據,人工智能等相關領域的飛速發展,使人們對計算機軟件的功能、性能、質量、安全、成本和交付的要求越來越高。互聯網企業迫切需要既有深厚專業知識,又了解整個軟件工程實施過程的“T”型人才[2]。
初入職場的畢業生并不能馬上勝任實際項目中紛繁復雜的工作,從而出現了企業用人成本增加,畢業生個人發展停滯的現象。行業大環境對軟件工程課程的教學提出了新的要求——學生除了應具備扎實的專業技能之外,還應具備較好的統籌規劃、溝通協調、應對風險等工程實踐能力。
1 軟件工程教學現狀和存在的問題
我院在大三下學期開設軟件工程課程,共計48個學時,其中理論40學時,實踐8學時。先導課程有javaweb、軟件體系結構、計算機網絡等。通過對以往教學互評的分析,了解到該課程教學效果不太理想,主要存在以下幾個原因。
⑴ 課程理論性比較強,學生缺乏興趣和動力
軟件工程理論是從眾多不同領域軟件項目中提煉出來的方法和經驗。在沒有參與過實際項目之前,學生對“軟件生命周期”、“需求管理”、“敏捷開發”、“成本控制”等概念僅停留在背誦階段,感到內容枯燥,缺乏興趣和動力。同時, 課時安排上重理論輕實踐,一般都是由教師事先安排實驗內容,在實驗中再給與指導,一定程度上制約了學生的創造能力。
⑵ 傳統教學和企業要求連接不緊密,不利于學生綜合素質的培養
近幾年,計算機技術發展迅速,特別是在體系結構、軟件重用、大數據等領域獲得了長足的發展。 但目前的軟件工程的教學方式和內容仍傾向于把它當成一門獨立學科,其取材、知識結構、實踐環節僅限于傳統軟件工程理論, 沒有將其他學科、熱門技術橫向聯系起來。學生所獲取的知識體系與企業的實用性要求有一定程度的脫節。
⑶ 缺乏軟件工程管理意識,出現問題和矛盾時不會自主思考
由于課程理論性太強,學生缺乏工程實戰經驗,因此很難將這些基本理論和方法運用到實際的工程問題處理當中。當遇到一些典型問題,比如進度滯后,成本增加、需求蔓延時,常常感到力不從心,束手無策。
以上這些情況,制約了軟件工程課程的教學效果。我們不得不反思教學中存在的問題并對其加以改進。
2 教學改進思路和計劃
2.1 教學改進思路
結合我院計算機專業的具體情況,教研組嘗試從CDIO[3]工程教育理念的角度來解決這些矛盾。CDIO(Conceive-Design-Implement-Operate,即構思-設計-實施-運作)是一種得到國際廣泛認可的工程教育模式,它以產品研發到產品運行的生命周期為載體 ,讓學生以主動地、實踐地、在課程之間有機聯系的方式學習工程,以培養學生的專業技能、團隊協作和應對風險的能力。根據這種工程教育理念,我們將之前“以教師授課為主,實驗為輔”的教學方法改為“以工程教育為理念,項目任務為驅動[4],學生為主,教師為輔”的教學方法,從以下三個方面著手考慮改進教學思路:
⑴ 選擇合適的軟件項目,成立學生項目組,引導學生思考職業規劃
由于沒有參與項目的經歷,很多學生覺得該課程寡淡無味。因此,教學中擬采用虛擬項目組的方式,成立學生項目團隊。學生根據對未來的規劃選擇項目經理、系統架構師、系統分析師、軟件設計師、軟件開發師、軟件測試師、質量管理員、配置管理員等不同的角色。項目組選定一個軟件開發項目,依據其特點,自主選擇軟件開發模型,開發技術。在項目實施的每個階段,由主要承擔該階段任務的成員提交相應的階段成果。
通過這種方式,學生能切實體會不同角色需承擔的職責、需掌握的專業技能,同時思考將來在企業中的角色定位及個人職業發展方向。
⑵ 在項目實施過程中注重“T”型人才的培養,拓展學生知識體系
與學院開設的javaweb,軟件體系結構、計算機網絡等基礎課相結合,將關鍵知識點融入到軟件工程各階段的教學中,將傳統的理論課轉化為串聯各科知識點的主干課。培養既有深厚的專業知識又懂得整個軟件工程實施過程的“T”型人才。
在教學過程中,教師引導學生將一些熱門技術融合到項目當中來,例如在開展軟件架構設計章節的教學活動時,教師將軟件工程理論和企業級應用開發相結合,注重突出軟件體系結構設計中擴展和復用等思想,引導學生了解設計模式和開源框架底層原理。
通過對知識體系的合理擴展,學生不但能夠對專業基礎課的知識進行鞏固,還能緊貼行業的用人需求,真正達到學以致用的目標[5]。
⑶ 培養軟件工程項目管理意識,提升溝通協作和緊急問題處理能力
教師引入工程中的突發情況(如:需求變更、骨干人員流失、外部環境異常),結合PMP認證知識點,從需求管理,質量管理,進度控制,版本管理,成本管理,溝通管理等幾個方面引導學生自主分析、解決問題。課堂交流時,老師指出學生中普遍存在的問題,將其處理方法和參考方法之間進行對比,指出不足。通過對若干典型工程問題的處理,學生的統籌規劃、溝通協調、應對風險能力得到提升,為將來的職業晉升打下基礎。
2.2 教學整體設計
按照以上指導思想,軟件工程課程教學被劃分為幾個階段,針對某一具體的軟件開發項目,以任務驅動[6]的方式幫助學生從全局理解軟件工程的意義。具體階段任務如表1所示。
在教學過程中教師采用如圖1所示的螺旋互動教學模式,通過“下達任務,講授知識導圖—學生自主完成任務—課堂討論—知識拓展—方案改進”五個環節,引導學生自主完成每一項工作任務。
3 教學應用實例
由于同學們都有豐富的在線購物經驗,對此項目的需求普遍能較好的把握,所以本文以“在線購物系統”中兩個任務為例,闡述如何圍繞工程任務開展教學活動。
Step1 教師首先下達“建立在線購物系統的體系結構”的任務,圍繞此項任務,回顧軟件體系結構課程[7]的相關內容,知識點如圖2所示。
Step2 課后學生按圖2的步驟自主完成在線購物系統體系結構的設計。
Step3 課堂上學生展示階段成果,教師采用問答的形式了解學生的構建思路,指出不足。在其MVC分層結構上,結合目前就業形勢的需要,介紹spring開源框架[8],幫助學生深入理解IOC,AOP的基本原理。
Step4 進一步提出在分層結構的基礎上建立基于構件的體系結構的改進思路。
Step5 學生課后修改,課上匯報體系結構的改進方案。
而后進入任務2的互動教學環節,教師提出:“如果在項目實施階段,用戶提出付費方式由原來的微信支付擴展為支付寶支付和信用卡支付,項目組將采取的哪些應對措施”。同時提示學生可以從圖3所示的幾個方面考慮。
學生根據圖3所示的知識點研究如何開展需求變更的工作,自主完成此次任務。課堂上項目經理首先介紹需求變更流程、變更的內容,波及范圍和計劃安排。架構師介紹體系結構的調整方案。教師從三個角度引導學生完善此方案。
⑴ 項目管理的角度:組織同學對需求變更的整個流程進行評審,討論變更管理流程的合理性、變更的可行性、技術風險、如何給客戶滿意的答復(溝通技巧)、變更后對哪些后續工作產生影響,比如:版本變更、測試、成本、進度[9]等。結合PMP考點,講解如何控制需求蔓延。
⑵ 技能提升的角度:就“擴展支付方式”這個需求變更,評價之前的體系結構是否具有良好的可擴展可復用性。評估修改策略。
⑶ 知識拓展的角度:在評審體系結構改造方案的過程中,教師引導學生體會兩個知識點:①邊界類隔離作用:與外部環境(支付寶、微信等)打交道的地方設立邊界類(支付代理類),外部環境改變時,不會影響內部模塊。②依賴倒置原則:內部模塊并不關心實際的支付方式,只需要知道支付服務的接口即可。
學生結合老師拓展的知識點,分別從管理和技術的角度進一步完善需求變更方案,下一次課堂上組織評審。
通過完成以上兩個任務,學生掌握了軟件體系結構的建模過程和需求變更的處理流程。并能自發的深入研究Spring開源框架的原理、自主尋找軟件工程項目中常見問題的解決方法,達到從技術和工程管理兩個層面提升專業技能的目的。
4 教學效果
我們在近二屆的計算機科學與技術的統招班的“軟件工程”課程教學中實施該方案,在專升本的班級采用傳統教學方式。教學互評對比顯示采用新方案下的學生對軟件工程的理解更為深厚,突出體現在以下幾個方面。
⑴ 采用新方案的課堂氣氛更加活躍,同學們從剛開始的不敢上臺演講,到后期積極踴躍的闡述,逐步從工程實施的角度形成了自己對軟件工程原理和方法的的理解。
⑵ 學生對項目經理、需求分析師、系統架構師等角色有所理解,對未來的發展方向有初步的規劃。
⑶ 部分學生對于PMP、信息項目管理師的認證考試產生興趣,能自主學習。
⑷ 通過工程項目的實踐將多門課程的知識點串聯起來,形成完整的知識體系。
5 結束語
本文對于“以工程教育為理念,項目任務為驅動,學生為主,教師為輔”的教學方式進行了探討和實踐,學生興趣、工程問題處理能力和自主學習能力都有了顯著提高。但同時也感受到這種教學模式對教師和學生的要求都非常高。教師需要有豐富的工程項目經驗,同時橫向了解多門課程的知識點精髓,并能緊抓時代的需求。對學生而言,要求對基礎課程掌握到位,整個項目執行過程需高度配合教師,堅持做完所有的任務。但實際操作過程中仍有人懈怠,抄襲。所以教學試點目前僅在基礎功比較扎實的統招班進行。今后,針對這些問題,我們還將不斷探索,考慮如何擴大這種教學模式的受眾群體,在廣范圍內達到更好的教學效果。
參考文獻(References):
[1] 齊治昌,譚慶平,寧洪.軟件工程[M].北京:高等教育出版社,
2019:1-3.
[2] 魯亮,劉立才,杜傳紅,等.地方高校大數據背景下“軟件工程”
課程建設研究[J].安順學院學報,2023,25(2):126-130.
[3] 劉瑜,方霞,趙海冰.CDIO理念指導下的計算機網絡實驗課
程教學體系建設與案例設計[J].中國現代教育裝備,2023(1):83-86.
[4] 侯德源.軟件工程中的項目式教學實踐[J].電子技術, 2023,
52(2):96-97
[5] 王靜,徐向陽,賀軍義.新工科背景下軟件工程案例教學模式
探討[J].中國多媒體與網絡教學學報(上旬刊),2023(4):188-191.
[6] 屈正庚.問題引導下“計算機組成原理”任務驅動教學設計的
研究[J].微型電腦應用,2023,39(1):32-34.
[7] 董威,文艷軍,陳振邦.軟件設計與體系結構[M].第2版.
北京:高等教育出版社,2017:1-5.
[8] 賈玉祥,昝紅英.基于開源框架的軟件體系結構教學方法
探索[J].軟件導刊,2023,22(2):199-203.
[9] 宋雪琴.軟件項目進度管理的實用分析[J].現代企業文化,
2023(2):34-36.