郭詠梅,趙秀梅
(長治學(xué)院 計算機系,山西 長治 046011)
在新工科教育背景下,計算機專業(yè)學(xué)生的能力培養(yǎng)越來越受到學(xué)校和用人單位的廣泛關(guān)注。要培養(yǎng)服務(wù)社會的應(yīng)用型人才,能力培養(yǎng)必須貫穿在整個教學(xué)過程中[1]。而且,能力一定通過讓學(xué)生自己“做”來培養(yǎng)[2]。軟件工程課程是計算機科學(xué)與技術(shù)專業(yè)一門專業(yè)基礎(chǔ)課程,不僅承擔(dān)著向?qū)W生傳授軟件開發(fā)基本方法和基本技術(shù)的責(zé)任,而且承擔(dān)著訓(xùn)練學(xué)生系統(tǒng)的、規(guī)范的軟件開發(fā)基本能力的重任。其教學(xué)目標(biāo)是使學(xué)生了解和掌握軟件工程的新方法和新技術(shù),具備應(yīng)用所學(xué)知識和技術(shù)解決真實問題的能力[3]。能力的培養(yǎng)不僅要貫穿在實驗教學(xué)中,而且要融入課堂教學(xué)過程中。課堂教學(xué)能否避免單純灌輸理論知識、概念和原理,強化學(xué)生軟件工程能力培養(yǎng),一直是軟件工程課程教學(xué)需要解決的難點問題[4]。為了解決這個難題,采用案例教學(xué),將一個完整的案例貫穿整個教學(xué)過程,引導(dǎo)學(xué)生對案例出現(xiàn)的問題進行討論,得到掌握課程基本知識、提升軟件開發(fā)能力的目的[5]。然而,針對應(yīng)用型人才培養(yǎng),如何將課程的知識點和能力點融入到教學(xué)案例中,如何選擇案例、設(shè)計案例和實施案例,如何讓學(xué)生自己“做”起來等問題仍需要進行深入的研究和探討。
對應(yīng)用型人才的能力要求應(yīng)該有別于科研型和工程型人才的能力要求[6]。應(yīng)用型人才的主要任務(wù)是將成熟的技術(shù)和理論應(yīng)用到實際的生產(chǎn)和生活中,其重點是要求學(xué)生掌握軟件工程的規(guī)范和工具,學(xué)生能夠分析、設(shè)計中小規(guī)模的軟件應(yīng)用系統(tǒng),針對具體的解決方案,運用特定的開發(fā)平臺和技術(shù),實現(xiàn)軟件應(yīng)用系統(tǒng),同時具備有效的溝通能力和團隊協(xié)作能力[7]。以軟件工程面向?qū)ο蠓椒ń虒W(xué)內(nèi)容為例,分析其教學(xué)內(nèi)容的知識點和能力要求,如表1所示。
在軟件開發(fā)的各個階段,都要求學(xué)生具備有效的溝通能力和團隊協(xié)作能力。
通過對教學(xué)內(nèi)容知識點的分析,明確要培養(yǎng)的能力要求,為教學(xué)案例的選擇、設(shè)計和實施過程奠定基礎(chǔ)。
案例教學(xué)是培養(yǎng)學(xué)生軟件開發(fā)工程能力的重要途徑[8],而案例的選擇是決定案例教學(xué)效果的關(guān)鍵環(huán)節(jié)。針對應(yīng)用型人才能力特點,教學(xué)案例的選擇主要考慮以下四個方面。
(1)案例要具有實際意義,與學(xué)生的日常生活應(yīng)用緊密聯(lián)系,案例系統(tǒng)的處理流程應(yīng)該是學(xué)生比較熟悉的,這樣便于學(xué)生對案例進行需求分析,同時能夠調(diào)動學(xué)生學(xué)習(xí)的積極性,讓學(xué)生體會到軟件工程知識在真實環(huán)境下的應(yīng)用。
(2)案例要能夠綜合應(yīng)用前修課程的知識[9],領(lǐng)會Java程序設(shè)計、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)庫原理與應(yīng)用、算法分析與設(shè)計、HTML等在軟件開發(fā)過程中的應(yīng)用。
(3)案例要有一定的規(guī)模,能夠體現(xiàn)軟件工程的新技術(shù)和新方法[9],能夠分層次、分模塊進行開發(fā),便于學(xué)生分工合作,有利于培養(yǎng)學(xué)生溝通能力和團隊協(xié)作能力。同時,多模塊結(jié)構(gòu)可以引導(dǎo)學(xué)生進行功能擴展,增加新的功能模塊。
(4)案例要考慮學(xué)生的接受能力,設(shè)計從簡單到復(fù)雜,從單項到綜合的分模塊的教學(xué)案例,讓不同層次的學(xué)生都能理解和掌握一定的知識,讓基礎(chǔ)比較差的學(xué)生能夠理解簡單的案例模塊,獲得成就感,讓學(xué)有余力的學(xué)生能發(fā)揮潛能,理解并擴展較為復(fù)雜的案例模塊。
通過調(diào)研和與學(xué)生的交流討論,我們選擇軟件工程課程網(wǎng)站作為教學(xué)案例,學(xué)生即作為使用者又作為開發(fā)者,容易理解案例的需求。對學(xué)生來說具有較強的實用價值,有利于調(diào)動學(xué)生學(xué)習(xí)的積極性,網(wǎng)站的多個模塊結(jié)構(gòu)有利于學(xué)生分工合作完成。
教學(xué)案例的體系結(jié)構(gòu)設(shè)計一方面要采用軟件的主流結(jié)構(gòu)[10],另一方面結(jié)構(gòu)盡可能簡單直觀,有利于學(xué)生的理解和體驗,以軟件工程課程網(wǎng)站的前臺管理模塊為例,其功能結(jié)構(gòu)設(shè)計如圖1所示,系統(tǒng)體系結(jié)構(gòu)采用當(dāng)前流行的B/S體系結(jié)構(gòu)。
網(wǎng)站前臺分為用戶登錄注冊、前沿新聞、師資隊伍、教學(xué)大綱、教學(xué)視頻、課件中心、教案中心等模塊,每個模塊完成一個具體的任務(wù),學(xué)生以小組的形式對一個或兩個模塊分析討論,有利于學(xué)生之間的交流溝通,有利于樹立團隊協(xié)作的意識。多模塊結(jié)構(gòu)還可以啟發(fā)學(xué)生對網(wǎng)站功能進行擴展,增加新的功能模塊,例如增加案例中心、互動交流等新的功能模塊。
陳道蓄老師指出:能力一定要讓學(xué)生自己“做”來培養(yǎng)。那么案例教學(xué)過程中我們能讓學(xué)生做什么呢?在教師的啟發(fā)和引導(dǎo)下,重點按以下步驟讓學(xué)生動手“做”起來。
(1)學(xué)生以用戶的角色使用案例,通過實際操作,體驗案例完成了哪些功能,涉及哪些數(shù)據(jù),操作界面如何轉(zhuǎn)換。然后讓學(xué)生轉(zhuǎn)換角色,以開發(fā)者的角色獲取需求,了解需求獲取的途徑。
(2)學(xué)生以開發(fā)者的角色對案例進行需求分析,進行數(shù)據(jù)分析、功能分析和狀態(tài)轉(zhuǎn)換分析,理解和掌握對象模型、用例模型和動態(tài)模型的建立過程,并學(xué)會使用畫圖工具畫出類圖、用例圖和狀態(tài)轉(zhuǎn)換圖等,編寫案例的需求規(guī)格說明書。
(3)學(xué)生分析和理解案例系統(tǒng)的體系結(jié)構(gòu),比較B/S結(jié)構(gòu)和C/S結(jié)構(gòu)的不同,設(shè)計案例的結(jié)構(gòu),學(xué)會使用畫圖工具畫出案例系統(tǒng)的結(jié)構(gòu)圖。同時理解和設(shè)計數(shù)據(jù)庫結(jié)構(gòu)設(shè)計、交互界面設(shè)計和算法的流程圖設(shè)計,編寫案例的設(shè)計說明書。
(4)學(xué)生以小組為單位選擇一個模塊,閱讀源代碼并加上注釋,理解和學(xué)習(xí)良好的、規(guī)范的編程風(fēng)格,規(guī)范標(biāo)識符的命名規(guī)則;同時學(xué)會用白盒測試、黑盒測試方法設(shè)計測試用例,完成類的基本測試;掌握測試步驟和常用的測試工具,編寫案例的測試分析報告。
(5)教師啟發(fā)學(xué)生分析案例的不足,鼓勵學(xué)生增加新的功能模塊,例如增加案例展示、資源下載、交流互動等新的功能模塊。
(6)學(xué)生在實驗室網(wǎng)絡(luò)環(huán)境下進行部署和測試,了解維護工作和項目管理的基本任務(wù)。
(7)教師引導(dǎo)學(xué)生進行交流討論,總結(jié)歸納案例的整個開發(fā)過程,讓學(xué)生理解軟件工程的基本概念和基本原理,領(lǐng)悟軟件生命周期各個階段的任務(wù)、方法和工具,樹立規(guī)范化的工程意識,在動手“做”的過程中,提升軟件開發(fā)的能力,提高解決實際問題的能力。
在案例教學(xué)實施過程中,教師緊緊圍繞一個典型的案例開展教學(xué)[11],引導(dǎo)學(xué)生對真實案例進行分析、解剖、閱讀代碼、驗證功能和增加新的功能,將課程知識點與案例緊密結(jié)合,讓學(xué)生在學(xué)中做,做中學(xué)[12],在不斷的實踐過程中提升軟件開發(fā)的基本能力。教師引導(dǎo)學(xué)生按照軟件開發(fā)的基本過程解剖案例,學(xué)生動手體驗案例開發(fā)各個階段的主要活動,動手模仿和驗證各個階段的實際操作[13],學(xué)生真正看到一個應(yīng)用系統(tǒng)是如何開發(fā)的,初步認(rèn)識一個軟件項目的開發(fā)方法和過程,了解軟件項目開發(fā)流程和規(guī)范,養(yǎng)成良好的軟件開發(fā)習(xí)慣,加深理解軟件工程的基本概念、原理和方法在實際項目中的應(yīng)用,建立初步的工程意識,提高了解決實際問題的能力,為下一步的課程實驗和課程設(shè)計奠定堅實的基礎(chǔ)。
案例教學(xué)在激發(fā)學(xué)生學(xué)習(xí)興趣,幫助學(xué)生理解和掌握軟件工程的基本概念、基本原理和基本方法方面起到了積極的作用,但是教學(xué)案例還需要不斷完善和更新,要與時俱進,不斷加入新技術(shù)和新方法,以滿足新工科教育對應(yīng)用型人才培養(yǎng)的需求。