葛文庚
摘要:本文針對(duì)采取傳統(tǒng)的教學(xué)方法講授軟件工程,教學(xué)效果往往很不理想的現(xiàn)象,在充分研究軟件工程教學(xué)內(nèi)容及實(shí)際應(yīng)用的基礎(chǔ)上提出階段教學(xué)法,即針對(duì)軟件開(kāi)發(fā)各個(gè)階段的特點(diǎn),采取不同的教學(xué)方法,讓學(xué)生感受既是開(kāi)發(fā)者,也是過(guò)程控制和管理者,培養(yǎng)學(xué)生必須注意的各個(gè)環(huán)節(jié)的要點(diǎn),從而提高學(xué)生從事實(shí)際軟件開(kāi)發(fā)的能力。
關(guān)鍵詞:軟件工程;教學(xué)方法;階段教學(xué)法
中圖分類(lèi)號(hào):G642文獻(xiàn)標(biāo)識(shí)碼:A
“軟件工程”是軟件工程專(zhuān)業(yè)的重要專(zhuān)業(yè)課程,也是計(jì)算機(jī)科學(xué)與技術(shù)、計(jì)算機(jī)應(yīng)用等相關(guān)專(zhuān)業(yè)的一門(mén)專(zhuān)業(yè)必修課,是指導(dǎo)計(jì)算機(jī)軟件開(kāi)發(fā)與維護(hù)的一門(mén)綜合性課程。它包括方法、工具和過(guò)程三要素,以質(zhì)量保證為基礎(chǔ),涵蓋了軟件生存周期的所有階段,包括計(jì)劃、分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試、集成、交付、維護(hù)等。學(xué)生通過(guò)學(xué)習(xí),能夠系統(tǒng)全面地掌握軟件開(kāi)發(fā)的基本原理、方法、技術(shù)和過(guò)程,為更深入地學(xué)習(xí)和從事軟件工程事業(yè)打下基礎(chǔ)。
1研究現(xiàn)狀
“軟件工程”不同于一般的專(zhuān)業(yè)課程,它為擺脫軟件危機(jī)而生,為適應(yīng)軟件行業(yè)的發(fā)展而生,是理論課,更是一門(mén)實(shí)踐課。采用傳統(tǒng)教學(xué)方法,這門(mén)課的教學(xué)效果往往不是很理想,教師覺(jué)得這門(mén)課教起來(lái)較困難,多數(shù)學(xué)生也覺(jué)得枯燥無(wú)味,很難達(dá)到較好的教學(xué)效果。因此,很多教師對(duì)軟件工程的教與學(xué)進(jìn)行研究,文獻(xiàn)[1~5]提出一些可行的教學(xué)模式,主要有以下幾種:
(1) 啟發(fā)式教學(xué):在教學(xué)過(guò)程中,以學(xué)生自主學(xué)習(xí)和合作討論為前提,以教材為基礎(chǔ),在教師的啟發(fā)下,學(xué)生自由表達(dá)觀點(diǎn)、置疑探究問(wèn)題,并通過(guò)個(gè)人、小組、集體等多種形式的解難釋疑活動(dòng),用所學(xué)知識(shí)解決實(shí)際問(wèn)題的教學(xué)模式。
(2) 能力驅(qū)動(dòng)教學(xué):教學(xué)工作的展開(kāi)以提高學(xué)生能力為主要目的,以學(xué)科知識(shí)的進(jìn)化、應(yīng)用能力的強(qiáng)化和人才素質(zhì)的優(yōu)化為基礎(chǔ),培養(yǎng)強(qiáng)內(nèi)力人才的教學(xué)模式。
(3) 項(xiàng)目驅(qū)動(dòng)教學(xué):教學(xué)之初,請(qǐng)具有豐富軟件工程實(shí)踐的項(xiàng)目人員與教師共同制定2~3個(gè)中型軟件項(xiàng)目工程,規(guī)模適中。制定項(xiàng)目工程時(shí)遵從實(shí)用性原則,并且密切聯(lián)系日常的工作學(xué)習(xí)實(shí)踐。
(4) 情景法教學(xué):學(xué)習(xí)者進(jìn)行學(xué)習(xí)必須依據(jù)個(gè)人的學(xué)習(xí)目標(biāo)主動(dòng)操作探究,能主動(dòng)與環(huán)境進(jìn)行互動(dòng)協(xié)調(diào),以建構(gòu)所需的知識(shí)。教師必須在情境脈絡(luò)中幫助學(xué)生發(fā)現(xiàn)與選取問(wèn)題,調(diào)動(dòng)學(xué)生的學(xué)習(xí)動(dòng)機(jī),最終引導(dǎo)學(xué)生自己解決問(wèn)題。
(5) 案例法教學(xué):向?qū)W習(xí)者提供案例研究的學(xué)習(xí)環(huán)境,包括從實(shí)際案例中選取資料。讓學(xué)習(xí)者以調(diào)查員的身份去了解案情,通過(guò)對(duì)資料的收集、分析、決策,最終對(duì)問(wèn)題予以解決,得到可行的結(jié)論。
這些方法都能在一定程度上幫助學(xué)生提高學(xué)習(xí)效果,但是也存在一定缺陷,如啟發(fā)式教學(xué)缺乏對(duì)實(shí)際項(xiàng)目中出現(xiàn)的多種問(wèn)題進(jìn)行分析,項(xiàng)目驅(qū)動(dòng)教學(xué)難以把握項(xiàng)目大小,案例法教學(xué)缺乏學(xué)生自主參與等,不能讓學(xué)生全面感受軟件開(kāi)發(fā)的全過(guò)程,不利于學(xué)生認(rèn)識(shí)各個(gè)階段出現(xiàn)的問(wèn)題。在充分研究“軟件工程”教學(xué)內(nèi)容及實(shí)際應(yīng)用的基礎(chǔ)上,我們提出了階段教學(xué)法,即根據(jù)軟件開(kāi)發(fā)各個(gè)階段的不同特點(diǎn)采取不同的教學(xué)方法。
2階段教學(xué)法
2.1階段教學(xué)法教學(xué)模式
階段教學(xué)法的培養(yǎng)目標(biāo)是:建立將軟件開(kāi)發(fā)作為一個(gè)生產(chǎn)過(guò)程的概念,掌握軟件工程的需求分析、系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)、軟件測(cè)試等專(zhuān)門(mén)的工程技術(shù)方法,了解軟件產(chǎn)品管理、項(xiàng)目管理、質(zhì)量管理、過(guò)程控制等基本過(guò)程,感受作為一個(gè)開(kāi)發(fā)者同時(shí)也是過(guò)程控制和管理者所必須注意的各個(gè)環(huán)節(jié)要點(diǎn)。具體措施是:理論與實(shí)踐兩手抓,兩手都要硬。一方面強(qiáng)調(diào)理論學(xué)習(xí)的重要性,理論學(xué)習(xí)是指導(dǎo)實(shí)踐的基礎(chǔ);另一方面強(qiáng)調(diào)實(shí)踐的重要性,只有通過(guò)實(shí)踐活動(dòng)才能掌握軟件工程的精髓。
由于大部分學(xué)生第一次接觸軟件工程,第一次開(kāi)發(fā)軟件,采取開(kāi)發(fā)階段清晰,易于評(píng)審、跟蹤、管理和控制的瀑布模型容易讓學(xué)生了解和掌握軟件開(kāi)發(fā)的整個(gè)過(guò)程。但傳統(tǒng)的瀑布模型可維護(hù)性差,需要對(duì)瀑布模型進(jìn)行改進(jìn),即采取變形的瀑布模型——“V”字模型,并在每一個(gè)階段都加入測(cè)試,以便及時(shí)改正錯(cuò)誤(圖1)。在可行性分析及需求分析階段采取情景法教學(xué),根據(jù)學(xué)生的項(xiàng)目選擇情況,在學(xué)生完成項(xiàng)目調(diào)查分析的基礎(chǔ)上,小組內(nèi)部模擬客戶與開(kāi)發(fā)人員進(jìn)行交流、討論。在系統(tǒng)設(shè)計(jì)階段采取啟發(fā)式教學(xué),以一個(gè)典型的系統(tǒng)作為切入點(diǎn),具體分析如何根據(jù)需求分析進(jìn)行系統(tǒng)設(shè)計(jì),然后讓學(xué)生充分消化、吸收,啟發(fā)他們?cè)O(shè)計(jì)出自己的系統(tǒng)。在詳細(xì)設(shè)計(jì)及編碼調(diào)試階段采取項(xiàng)目驅(qū)動(dòng)教學(xué),讓學(xué)生根據(jù)系統(tǒng)設(shè)計(jì)階段的模塊劃分選取最優(yōu)的設(shè)計(jì),然后設(shè)計(jì)模塊內(nèi)部結(jié)構(gòu),并用某種編程語(yǔ)言實(shí)現(xiàn)。測(cè)試階段主要采取案例法教學(xué)和啟發(fā)式教學(xué)在單元測(cè)試階段,檢測(cè)代碼的開(kāi)發(fā)是否符合詳細(xì)設(shè)計(jì)的要求,并改正詳細(xì)設(shè)計(jì)階段出現(xiàn)的問(wèn)題;在集成測(cè)試階段,
檢測(cè)此前測(cè)試過(guò)的各組成部分是否能完好地結(jié)合到一起,并改正系統(tǒng)設(shè)計(jì)階段的不足;在系統(tǒng)測(cè)試階段,檢測(cè)已集成在一起的產(chǎn)品是否符合系統(tǒng)規(guī)格說(shuō)明書(shū)的要求,并修正需求分析的錯(cuò)誤;在驗(yàn)收測(cè)試階段,檢測(cè)產(chǎn)品是否符合最終用戶的需求,并添加用戶新增的功能、改正錯(cuò)誤的功能;在試運(yùn)行及維護(hù)期間,及時(shí)完善系統(tǒng)功能,提高系統(tǒng)性能,再次檢查各階段的錯(cuò)誤和不足,并加以修改,直至滿足用戶要求。
2.2階段教學(xué)法的實(shí)施
階段教學(xué)法在實(shí)施過(guò)程中,必須做好以下工作:
(1) 教師要做好統(tǒng)籌規(guī)劃。“軟件工程”對(duì)教師的要求較高,教師不僅要講授理論知識(shí),而且要把握教學(xué)進(jìn)度,根據(jù)每一階段采取不同的教學(xué)方法,并充分準(zhǔn)備各階段教學(xué)的相關(guān)資料。教師應(yīng)該在講授軟件工程相關(guān)知識(shí)點(diǎn)的同時(shí),花更多的精力和時(shí)間,教會(huì)學(xué)生如何理解和把握軟件開(kāi)發(fā)過(guò)程,對(duì)教學(xué)內(nèi)容、形式和考核方法進(jìn)行綜合設(shè)計(jì)。根據(jù)學(xué)生的學(xué)習(xí)階段,科學(xué)地安排相應(yīng)領(lǐng)域知識(shí)點(diǎn)的出現(xiàn)順序,使學(xué)生在課堂教學(xué)和項(xiàng)目實(shí)踐的適當(dāng)環(huán)節(jié)上恰到好處地體會(huì)和獲得相應(yīng)的知識(shí),并取得自身真實(shí)的感受和經(jīng)驗(yàn)。這就要求教師不僅要有一定的軟件開(kāi)發(fā)經(jīng)驗(yàn),而且要具備一定的項(xiàng)目和工程背景。這樣授課才能切合實(shí)際,更好地運(yùn)用階段教學(xué)法。
(2) 搜集學(xué)生感興趣的項(xiàng)目,并進(jìn)行篩選。很多學(xué)生選擇的題目缺乏可操作性、趣味性和適當(dāng)?shù)碾y度。這些題目沒(méi)有經(jīng)過(guò)詳細(xì)的可行性分析和需求分析,不能保證完成實(shí)驗(yàn)。因此教師必須對(duì)學(xué)生自選項(xiàng)目進(jìn)行篩選,也可以由教師給出一些綜合實(shí)驗(yàn)項(xiàng)目。
(3) 制定項(xiàng)目完成的標(biāo)準(zhǔn)。目前,項(xiàng)目是否成功完成主要參考需求說(shuō)明書(shū)和最后運(yùn)行情況,但需求說(shuō)明書(shū)又因系統(tǒng)難易程度和學(xué)生的主觀因素存在很大差別,因此,如何評(píng)判題目的完成情況,不能采用統(tǒng)一的標(biāo)準(zhǔn),要根據(jù)學(xué)生選擇的項(xiàng)目分別對(duì)待。
(4) 及早布置課程項(xiàng)目。理論學(xué)習(xí)和課程項(xiàng)目相結(jié)合,隨著課程進(jìn)展布置任務(wù)。學(xué)生自愿結(jié)合,3~5人組成一個(gè)項(xiàng)目小組,教師指導(dǎo)他們進(jìn)行分工合作,學(xué)習(xí)軟件開(kāi)發(fā)組織和管理,明確項(xiàng)目開(kāi)發(fā)各階段的任務(wù),熟悉軟件開(kāi)發(fā)環(huán)境,培養(yǎng)團(tuán)隊(duì)精神。通過(guò)調(diào)查研究、可行性研究、需求分析、概要設(shè)計(jì)、詳細(xì)設(shè)計(jì)、編碼、測(cè)試、維護(hù)(版本升級(jí))及技術(shù)文檔的編寫(xiě),共同完成該項(xiàng)目的設(shè)計(jì)及實(shí)現(xiàn)。在課程項(xiàng)目開(kāi)發(fā)過(guò)程中,要引導(dǎo)學(xué)生提高完成實(shí)驗(yàn)的積極性,激發(fā)學(xué)生進(jìn)一步鉆研的斗志;鼓勵(lì)學(xué)生進(jìn)行自主學(xué)習(xí),如撰寫(xiě)小論文和專(zhuān)題報(bào)告,讓學(xué)生跟蹤該領(lǐng)域的最新動(dòng)態(tài)。
(5) 項(xiàng)目開(kāi)發(fā)過(guò)程中,教師扮演“用戶”和“項(xiàng)目顧問(wèn)”的角色,學(xué)生則是各項(xiàng)目組的“開(kāi)發(fā)人員”,而開(kāi)發(fā)小組的組長(zhǎng)則要模擬“項(xiàng)目經(jīng)理”的角色,進(jìn)行交流討論。
(6) 課程項(xiàng)目成績(jī)?cè)u(píng)定。項(xiàng)目完成后,每位同學(xué)要進(jìn)行答辯。每一個(gè)小組指派一個(gè)同學(xué),對(duì)設(shè)計(jì)的項(xiàng)目進(jìn)行答辯,其他同學(xué)可以補(bǔ)充。教師的主要任務(wù)是檢查,一方面檢查小組的完成情況,一方面檢查每一位同學(xué)的工作。由教師和其他小組進(jìn)行評(píng)分,取平均分得到小組成績(jī),小組長(zhǎng)根據(jù)工作量給出組員的個(gè)人成績(jī)。綜合小組成績(jī)和個(gè)人成績(jī),得出學(xué)生的最終實(shí)驗(yàn)成績(jī)。
階段教學(xué)法為學(xué)生提供了發(fā)現(xiàn)問(wèn)題、分析問(wèn)題、解決問(wèn)題的空間,既強(qiáng)調(diào)了軟件工程的基礎(chǔ)知識(shí),也注重培養(yǎng)學(xué)生的分析設(shè)計(jì)及實(shí)踐能力,同時(shí)調(diào)動(dòng)學(xué)生的積極性、創(chuàng)造性。在半年的學(xué)習(xí)期間,學(xué)生夜以繼日地工作,加深了對(duì)軟件工程化含義的理解;在設(shè)計(jì)過(guò)程中,能自覺(jué)運(yùn)用標(biāo)準(zhǔn)化、規(guī)范化和可度量的原則;在小組的交流合作中,加強(qiáng)了團(tuán)隊(duì)精神,鍛煉了溝通與動(dòng)手能力。
2.3進(jìn)一步實(shí)施的設(shè)想
階段教學(xué)法在實(shí)施過(guò)程中也出現(xiàn)了一些問(wèn)題,通過(guò)對(duì)問(wèn)題的分析研究,提出下一步教學(xué)的設(shè)想:
(1) 更新教育觀念:加強(qiáng)先進(jìn)教育理論研究,分析企業(yè)對(duì)軟件人才的需求。根據(jù)企業(yè)需求,不斷更新教育觀念,努力使教學(xué)模式、教學(xué)方法與國(guó)際接軌,科學(xué)地建立面向市場(chǎng)的開(kāi)放式軟件工程人才培養(yǎng)模式。
(2) 加強(qiáng)教材建設(shè):教材是教學(xué)內(nèi)容的載體。相對(duì)基礎(chǔ)學(xué)科,計(jì)算機(jī)領(lǐng)域發(fā)展非常迅速。教材也需要緊跟時(shí)代的發(fā)展,不斷更新。因此必須把教材建設(shè)納入“軟件工程”教學(xué)改革的研究范疇。
(3) 學(xué)習(xí)資源建設(shè):充分利用網(wǎng)絡(luò)資源,建立軟件工程資源網(wǎng)站,調(diào)動(dòng)師生力量,力爭(zhēng)把最優(yōu)秀、最全面、最新穎的軟件學(xué)習(xí)資源與師生共同分享。一方面完成與其他軟件工程相關(guān)網(wǎng)站的搭建,學(xué)習(xí)他人經(jīng)驗(yàn);一方面鼓勵(lì)師生進(jìn)行作品原創(chuàng),供他人學(xué)習(xí)、借鑒。
(4) 校企聯(lián)合:加強(qiáng)學(xué)校與國(guó)內(nèi)外產(chǎn)業(yè)界的交流與合作,完善以工程實(shí)踐為核心的“邊學(xué)習(xí)、邊實(shí)踐—再學(xué)習(xí)、再實(shí)踐”螺旋式新型工程型人才培養(yǎng)流程,實(shí)現(xiàn)校企雙贏。
(5) 組織軟件工程相關(guān)講座。邀請(qǐng)有項(xiàng)目開(kāi)發(fā)、管理經(jīng)驗(yàn)的教師或科研人員做軟件工程相關(guān)方面的講座,介紹他們?cè)谲浖_(kāi)發(fā)、管理過(guò)程中的經(jīng)驗(yàn)與體會(huì),對(duì)軟件工程的發(fā)展趨勢(shì)、最新動(dòng)態(tài)等進(jìn)行指導(dǎo)。
3小結(jié)
在“軟件工程”教學(xué)中采用階段教學(xué)法,必須把握好教學(xué)進(jìn)度,并及早安排好課程設(shè)計(jì),讓學(xué)生在學(xué)習(xí)理論的同時(shí)開(kāi)展課程設(shè)計(jì)。這樣,當(dāng)理論課講完時(shí),課程設(shè)計(jì)也基本結(jié)束,學(xué)生才能從理論和實(shí)踐的結(jié)合上加深對(duì)軟件工程知識(shí)難點(diǎn)、重點(diǎn)的理解,進(jìn)一步深刻理解軟件過(guò)程和系統(tǒng),消化理論知識(shí),訓(xùn)練項(xiàng)目設(shè)計(jì)的思路,鍛煉實(shí)際開(kāi)發(fā)能力,培養(yǎng)嚴(yán)格規(guī)范的項(xiàng)目開(kāi)發(fā)方法和步驟,體驗(yàn)文檔編寫(xiě)整理、階段性評(píng)審總結(jié)以及軟件測(cè)試等各個(gè)方面的工作流程,更好地理解、掌握知識(shí),運(yùn)用所學(xué),服務(wù)社會(huì)。
參考文獻(xiàn):
[1] 林惠強(qiáng),劉財(cái)興,林丕源.“軟件工程”課程啟發(fā)式教學(xué)的研究與實(shí)踐[J]. 計(jì)算機(jī)教育,2008(11):40-42.
[2] 夏小娜,曹寶香. 《軟件工程》教學(xué)的“三段論”定位與“能力驅(qū)動(dòng)”[J]. 現(xiàn)代教育技術(shù),2007,17(8):109-111.
[3] 戚世貴,徐盡,張泊平. 軟件工程的項(xiàng)目工程實(shí)踐驅(qū)動(dòng)教學(xué)改革[J]. 時(shí)代教育,2008(3):86.
[4] 黃萍. 情景法在《軟件工程》教學(xué)中的應(yīng)用[J]. 現(xiàn)代計(jì)算機(jī),2007(6):52-53.
[5] 殷美桂. 案例教學(xué)法在軟件工程教學(xué)中的應(yīng)用[J]. 福建電腦,2008(5):201.
Research on Teaching Method in Software Engineering
GE Wen-geng
(Huanghuai University, Zhumadian 463000, China)
Abstract: With the traditional teaching method, the teaching effect of software engineering is not ideal. In the article, a new teaching method stage teaching is put forward, which based on the study of teaching content and practical application. According to characteristics of each period, the method adopts different teaching methods to achieve the following aims: Firstly, as a developer and manager, what students should be noticed in every step. Secondly, its better to train their abilities of developing software.
Key words: software engineering; teaching method; stage teaching