韋海蘭
摘要:軟件工程導論課程是軟件工程專業一門理論性和實踐性均較強的綜合性核心專業課。為了克服傳統教學方法產生的問題,取得良好教學效果,論文介紹了將項目和同伴教學法融入軟件工程導論課程的教學設計與應用,以增強學生的自主學習、同伴合作學習的意識,提高學生的思維能力、溝通合作能力、建構知識和將理論運用于實踐能力。
關鍵詞:軟件工程;軟件開發;課程教學
中圖分類號:G642? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2023)06-0028-03
開放科學(資源服務)標識碼(OSID)
0引言
軟件工程導論課程是軟件工程專業的核心專業課,該課程系統地介紹在軟件開發、運行和維護中如何運用工程的概念、原理、技術和方法[1],幫助學生掌握規范的企業軟件開發的基本過程和任務,提高學生將工程化的思想應用計算機軟件的實踐能力。
軟件工程導論是集較強的理論性和實踐性于一身的綜合性課程。如果按照傳統的“滿堂灌”的教學方法,教師爭分奪秒不斷灌輸知識,學生被動地接收,即使教師花費大量時間和精力備課、賣力講課,抽象、復雜的理論仍使學生興致不高,學習參與度較低,較難真正理解和掌握眾多概念、原理和方法以及較好地將理論運用于具體的場景,提交的作業、實驗報告缺少結合場景具體情況進行分析與設計的細節和深度,難以達到預期理解消化知識的教學效果。
項目驅動教學法以項目為載體,在項目中穿插講授課程的理論體系,實現理論和實踐、“教、學、做”的一體化,特別適合于實踐性較強的課程[2]。鄧娜等提出基于項目驅動的軟件工程課程教學設計,以某工資支付系統軟件項目的開發貫穿整門課程教學,涵蓋軟件項目開發的各個環節,學生通過實現一個完整的項目,并穿插學習相關理論知識[3],提升學生理論應用實踐和團隊協作的能力。但部分學生的實踐積極性可能不高,周長敏等提出以畢業設計為驅動的軟件工程教學方法,提高學生的學習動力,由被動學習轉變到主動投入到軟件系統的分析、設計[4],但實際需要調整畢業設計的部分工作安排時間。
同伴教學法是哈佛大學馬祖爾教授1991年提出來的教學方法[5],該方法把傳統的以教為中心的課堂,轉變為以學為中心的課堂,即學習主要由學生剛開始的自主學習、與學生同輩合作探究并最終回歸到學生個人對知識的理解消化,而不是由教師教授學生,教師則轉變為在一旁指導的教練,它適合涉及批判性思維的學科。該教學方法通過讓學生在課前學習完成知識的傳遞過程,教師在課堂通過與核心概念相關的問題進行教學,讓學生先獨立思考作答再在小組討論中嘗試說服對方,最后再次作答,在課堂完成知識的理解和消化,充分鍛煉學生的思維能力[6],提升學生建構自身知識、在場景中運用理論分析和解決問題的能力。胡樹煜等提出在軟件工程導論課程中應用同伴教學法,學生合作學習,共同探討問題,增長知識技能,培養溝通合作能力,通過互助精神共同進步[7]。
1 基于項目和同伴學習的教學方法
為克服軟件工程導論課程實踐教學中遇到的問題,改進教學質量,本文根據項目驅動和同伴教學法的特點,在課程教學中綜合運用項目驅動法和同伴教學法的思想,通過項目引導學生自主與合作學習、提高其理論應用于實踐的能力,通過與其畢業切身相關的畢業設計任務,進一步提升學生學習的積極性和參與度,并提高其主動學習、思考問題、分析問題和將理論應用實踐以解決問題的能力。
1.1 教學設計實例
基于項目驅動教學法,教師以典型的工資支付系統[8]的設計和開發為例,貫穿本門課程的各個章節,內容涵蓋軟件項目的問題定義和可行性分析、需求分析、概要設計、詳細設計、實現以及維護等各個環節,教學過程見表1。
基于項目驅動的軟件工程導論課程教學過程的設計具體如下:
1)準備工作階段
教師介紹工資支付系統開發相關背景,布置該項目及課程設計任務,包括項目各階段結束后需提交的軟件文檔和源代碼等。學生自由分組,因項目規模較小,每個小組的具體人數可根據小組成員對項目的熟悉度和編程語言等技術掌握情況設置3~8人,設置1名組長任項目經理,共同對課程設計選題,并明確小組成員的主要分工。
2)可行性分析階段
小組成員自由分配任務,調查工資支付系統相關情況,進行可行性分析,研究現有系統,導出新系統的高層邏輯模型,經過技術、操作、經濟、法律等方面可行性的分析,考慮不同定時處理要求劃分的不同自動化邊界等因素,導出可供選擇的幾種不同成本的物理實現方案,并從中推薦其中的最適合的方案,注意對該方案運用成本/效益分析法進行仔細分析,最后撰寫可行性分析報告提交負責人和評審組審查。
為讓學生初步體驗企業真實環境下項目立項的情景,小組成員根據前期調查和可行性分析,對立項項目撰寫項目立項建議書和軟件開發合同。最后選擇兩個小組進行課堂展示,由項目經理先簡要介紹項目的基本情況和本人擔任的工作,再由本小組成員依次介紹自己在項目中分配的任務和實際完成的工作。
3)需求分析階段
小組成員自由分配角色和任務,進行需求分析,利用Microsoft Visio等軟件工具輔助建立功能模型、數據模型和行為模型,撰寫需求規格說明書,并選擇兩個小組根據情景法扮演客戶、項目經理、技術人員等角色,模擬與用戶溝通獲取需求的場景進行課堂展示。
4)總體設計階段
小組成員自由分配任務,進行概要分析,進行體系結構設計、數據設計、接口設計等,詳細設計提供基礎??捎妹嫦驍祿鞯姆椒ǎ瑥筒椴⒕枨蠓治鲭A段得出的數據流圖,設計軟件結構并利用啟發式規則不斷優化,力爭做到高內聚、低耦合,最后撰寫概要設計說明書。教師在課堂上選擇兩組進行展示。
5)詳細設計階段
小組成員自由分配任務,進行詳細設計,包括進行實現具體模塊所涉及的主要算法設計和人機界面設計,利用程序流程圖、盒圖和判定樹和偽代碼等過程設計工具進行過程設計,并撰寫詳細設計說明書。教師在課堂上選擇兩組進行展示。
6)實現階段
實現階段主要分為編碼和測試兩部分。小組成員自由分配開發和測試任務,對系統模塊按照編碼規范進行編程開發和各種類型的測試,包括單元測試、集成測試和確認測試,通過白盒測試、黑盒測試等測試技術在不同測試階段發現程序中的Bug,不斷修復、完善系統,以提高軟件的質量,最后撰寫軟件測試文檔和開發文檔。
7)維護
小組成員自行分配任務,進行軟件維護,撰寫維護文檔,并以改正性維護為場景,選擇兩個小組根據情景法進行課堂展示,其中最終用戶由其他小組成員交叉扮演,以讓學生體驗不同小組開發的軟件系統。
1.2 融入同伴教學法的教學設計實例
在項目的各個環節中,基于同伴教學法重新進行教學設計,以其中的“軟件過程”這一章節為例設計如圖1。
詳細步驟如下:
1)課前學習
在上節課結束前10分鐘,教師提前布置本節課任務:閱讀教材的“軟件過程”章節,結合教師提供的相關資料,并通過互聯網搜集相關資料,對以下問題獨立思考分析,形成自己的答案并在線上提交。
針對以下應用場景開發軟件,應適合采用哪種軟件開發模型,并簡要求說明原因。
① 乙單位為拓展自身業務,與甲方合作為其代理收取自來水水費。乙方需要對甲單位的自來水繳費系統進行接口開發,開發代收水費系統實現代收業務。甲單位提供的接口文檔已明確記錄其系統的相關業務功能和數據處理要求。
② 開發一個校務通系統作為學校的綜合管理平臺,涉及學校日常業務管理等相關功能如招生管理、學生日常管理、教務管理和考試管理等[9]。
③ 假設要為一家集生產和銷售長筒靴業務一體的公司開發一個軟件,用于跟蹤其存貨以及購買原材料、生產、發貨給各個連鎖店,直至銷售給顧客的全過程,以保證各環節供需平衡,不產生停工待料或供不應求的問題[10]。
2)課堂問題提出
在課堂上,教師介紹課前任務的反饋,引出核心概念軟件生命周期模型,并提出對開發講解項目工資支付系統選擇適合的軟件生命周期模型的問題。
3)獨立思考與獨立作答
小組成員根據課前的資料閱讀和知識儲備進行分析,形成自己的初步觀點,并在線上提交答案。
4)同伴討論與再次作答
教師統計各小組答題情況,如果答題正確率少于30%,教師對相關的概念重新解釋后,由學生再次獨立思考并獨立作答重新測驗,接著統計學生答題情況。
對于課堂上提出的教學項目工資支付系統與課前問題①代收水費系統類似,業務算法、數據等需求較明確,業務規模不大且功能不復雜,風險較低,適合采用傳統但至今仍用得很廣泛的瀑布模型,嚴格確保項目每個階段完成文檔等任務的質量,提高軟件的開發效率。但在教學實踐中,有1個大班第一次獨立作答選擇瀑布模型的正確率低于30%,超過半數以上的學生選擇了快速原型模型。大多數學生普遍認為快速原型模型是為克服瀑布模型最終開發出的軟件產品可能并不是用戶真正需要的這個缺點而提出,所以錯認為快速原型模型在各方面完全優于瀑布模型,可取而代之。因此,該大班本輪未開啟同伴討論,而由教師根據學生的錯誤原因重點對瀑布模型的相關概念與應用情況再次講解,由學生再次獨立思考后獨立作答。
如果正確率介于30%和70%之間,則開啟同伴討論進行同伴教學,原小組成員或就近成新小組的成員在規定時間內(一般不超過10分鐘)依次闡述自己的答案和理由,并試圖說服其他成員。教師巡視或旁聽,可參與討論,收集典型疑問做解答準備,或視小組情況適度演示提出一些建議但不給出答案。小組成員根據討論結果獨立進行第二次作答。若學生能基本達成共識達到70%以上的正確率,則展示答題分布情況并簡要講解后進入下一題。為鍛煉學生的語言表達能力,可選擇至少2組展示討論結果及相關情況,本門課程結束時每個小組至少要展示一次。
5)教師總結
教師匯總整理學生知識點掌握情況,總結各組答案的優缺點,分析易錯點和錯誤成因,歸納提煉本章節知識的重點和難點。小組成員結合教師講解,對照分析小組討論和教師答案的利弊,在糾正和補充完善中進一步領會相關的知識技能,并最終理解和消化,內化于心。
2 課程考核體系
為提高學生學習的積極性,綜合考查學生的理論知識掌握和實踐應用能力,軟件工程導論課程成績總評按100分計,由三部分組成:平時成績占40%,考核論文成績占60%。其中,平時成績包括考勤10%、課堂表現20%和課后作業10%??己苏撐闹饕疾槠浠A理論知識和方法的掌握和應用能力。
3 結束語
本文分析了軟件工程導論教學存在的難點,提出了在課程教學中融入項目與同伴教學法,將一個項目貫穿課程始終進行教學,在項目中穿插理論學習,同時由學生自由分組,按小組申報一個選題進行課程設計,最后提交參照畢業設計論文的要求完成考核論文,為畢業設計打下良好基礎;并通過同伴教學法使學生相互成為知識的傳授者,在學習過程中相互扶助,增強團隊合作和溝通能力,從而進一步提高學生學習主動性、理論素養和將軟件工程項目理論運用于實踐的能力。
參考文獻:
[1] 張海藩,牟永敏.軟件工程導論(第6版)學習輔導[M].北京:清華大學出版社,2013.
[2] 張白,周春艷,潘俊濤.基于虛擬仿真軟件的項目驅動教學方法研究[J].計算機教育,2016(4):129-132.
[3] 鄧娜,林松,熊才權,等.工程教育認證下基于項目驅動的軟件工程教學設計[J].計算機教育,2019(1):104-107.
[4] 周長敏,佘佐明.以畢業設計為驅動的軟件工程教學方法探索[J].現代計算機,2019(28):68-70.
[5] Mazur E.Peer instruction:a user's manual[M].Upper Saddle River,NJ:Prentice Hall,1997
[6] 同伴教學法[EB/OL].[2021-10-22].https://www.icourse163.org/learn/PKU-1449482161?tid=1468612458#/learn/content.
[7] 胡樹煜,王琢.同伴教學法在軟件工程導論課程中的應用[J].中國管理信息化,2017,20(4):222-223.
[8] 張海藩,牟永敏.軟件工程導論(第6版)學習輔導[M].北京:清華大學出版社,2013.
[9] 韓萬江,姜立新.軟件項目管理案例教程[M].2版.北京:機械工業出版社,2009.
[10] 呂云翔.軟件工程:理論與實踐[M].2版.北京:人民郵電出版社,2018.
【通聯編輯:王力】