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