彭慧伶
(洛陽理工學(xué)院計(jì)算機(jī)與信息工程學(xué)院,河南 洛陽471023)
應(yīng)用型高校《軟件工程》課程是計(jì)算機(jī)科學(xué)與技術(shù)專業(yè)和軟件工程專業(yè)課程體系中非常重要的專業(yè)課,它的綜合性強(qiáng),對學(xué)生實(shí)踐要求很高。該課程主要是為了讓學(xué)生掌握軟件工程的基本原理和實(shí)踐方法,熟悉軟件項(xiàng)目研發(fā)的過程,探索軟件開發(fā)的最新方法與傳統(tǒng)方法的區(qū)別,著重培養(yǎng)學(xué)生的系統(tǒng)工程思維能力、策劃能力、實(shí)踐能力、創(chuàng)新能力,兼顧培養(yǎng)學(xué)生的溝通和團(tuán)隊(duì)合作能力。
①本課程的理論原理比較抽象,不易掌握,從而導(dǎo)致學(xué)生在教與學(xué)的過程中極易產(chǎn)生枯燥、乏味的感覺。②本課程作為一門本科軟件專業(yè)必修課程,在教學(xué)方案設(shè)置和教學(xué)過程中應(yīng)突出本科計(jì)算機(jī)專業(yè)課程特色,同時(shí)要注重發(fā)揮本科生自學(xué)能力強(qiáng)的優(yōu)點(diǎn),加強(qiáng)引導(dǎo)。③本課程教學(xué)學(xué)時(shí)少,教學(xué)過程簡單乏味。④理論與實(shí)踐相脫離,重理論、輕實(shí)踐。⑤考核方式滯后。
為了解決上述問題,我們在軟件工程教學(xué)過程中,結(jié)合長期以來積累的經(jīng)驗(yàn)教訓(xùn),對教材的選取策略、教學(xué)內(nèi)容的安排、教學(xué)的方法生動(dòng)性和教學(xué)手段的多樣性等方面進(jìn)行了研究,提出了一些建議。
隨著軟件行業(yè)的快速發(fā)展,那些既掌握軟件開發(fā)技術(shù),又要懂得項(xiàng)目管理的復(fù)合型人才,成為各個(gè)軟件公司的寵兒。針對這種需求,高校的應(yīng)用型軟件工程課程的教學(xué)培養(yǎng)目標(biāo),也需要以滿足社會(huì)需求為導(dǎo)向,努力培養(yǎng)學(xué)生的復(fù)合能力,以期能在軟件項(xiàng)目研制中發(fā)揮重要作用。因此,在教學(xué)上不僅要注重軟件研發(fā)專業(yè)技能的培養(yǎng),還要注意對學(xué)生軟件項(xiàng)目管理能力的培養(yǎng),我們建議,軟件工程的教學(xué)要輔以大量的課堂討論和管理、溝通實(shí)踐環(huán)節(jié)。
特別是在教學(xué)內(nèi)容的安排上,要注重軟件工程的基本原理、概念和方法的講解,引領(lǐng)學(xué)生學(xué)習(xí)面向?qū)ο?、面向組件等方法在內(nèi)的新方法和新技術(shù),盡量使學(xué)生盡快深入掌握軟件重用、CASE 集成環(huán)境和網(wǎng)絡(luò)平臺下的軟件研發(fā)技術(shù)等。還要大力鼓勵(lì)學(xué)生閱讀英文原版文獻(xiàn),增強(qiáng)對國際前沿技術(shù)的了解,同時(shí)教師也要講授比較成熟的新方法,例如,面向A-gent方法、敏捷開發(fā)(XP) 等[1]。通過教學(xué)內(nèi)容的合理安排和對前沿知識的引導(dǎo),幫助學(xué)生開闊視野、培養(yǎng)創(chuàng)新意識、了解最前沿的技術(shù),為以后的工程實(shí)踐打下堅(jiān)實(shí)的基礎(chǔ)。
當(dāng)前的在校大學(xué)生普遍缺乏軟件開發(fā)實(shí)戰(zhàn)經(jīng)驗(yàn),對軟件工程課程的部分內(nèi)容認(rèn)識相對膚淺,同時(shí),大部分學(xué)生對課程內(nèi)容的邏輯關(guān)系沒有整體的把握,他們通常也不容易對純理論的東西感興趣,所以,教和學(xué)都會(huì)感到枯燥無味,學(xué)生的積極性無法調(diào)動(dòng),這直接影響了教學(xué)效果。為了充分調(diào)動(dòng)學(xué)生在課堂學(xué)習(xí)過程中的主動(dòng)性和趣味性,軟件工程教師在教學(xué)實(shí)踐上,需要注意以下幾個(gè)方面:第一,要讓學(xué)生明白理論指導(dǎo)實(shí)踐的重要性,著重提高學(xué)生的軟件工程理論水平。在講解軟件工程發(fā)展過程的同時(shí),能夠輔助介紹一些軟件工程上成功和失敗的著名案例,要使學(xué)生充分理解軟件開發(fā)包含策劃、設(shè)計(jì)、實(shí)現(xiàn)、測試、部署、維護(hù)等多個(gè)過程,不單單是寫代碼。教師要盡力使學(xué)生確信,軟件開發(fā)必將朝著“工程化”的方向發(fā)展,軟件項(xiàng)目的研發(fā)也應(yīng)該以軟件工程學(xué)的思想和方法為指導(dǎo),才能保證軟件項(xiàng)目的質(zhì)量和進(jìn)度,避免風(fēng)險(xiǎn)。第二,要讓學(xué)生明白軟件工程的完整過程域和實(shí)施方法。軟件工程課程本身就是為了培養(yǎng)學(xué)生系統(tǒng)解決問題的能力,教師在教學(xué)內(nèi)容的組織和軟件開發(fā)方法的講授過程中,就需要循循誘導(dǎo)學(xué)生,使其明白系統(tǒng)性、全局觀對高質(zhì)量的軟件項(xiàng)目研發(fā)的重要性。第三,著重強(qiáng)調(diào)軟件工程中各主要知識點(diǎn)之間的邏輯關(guān)系。軟件工程中各主要知識點(diǎn)之間均有內(nèi)在的邏輯關(guān)系,它們環(huán)環(huán)相扣,彼此印證。教師在講解需求分析、概要設(shè)計(jì)和詳細(xì)設(shè)計(jì)三項(xiàng)開發(fā)過程之間的關(guān)系時(shí),要在需求開發(fā)完成的基礎(chǔ)上,通過系統(tǒng)的概要設(shè)計(jì),來實(shí)現(xiàn)需求的功能、性能要求,把每個(gè)功能在哪個(gè)部件實(shí)現(xiàn)進(jìn)行初步的規(guī)劃設(shè)計(jì),這就是概要設(shè)計(jì);對概要設(shè)計(jì)進(jìn)一步細(xì)化,形成詳細(xì)可實(shí)現(xiàn)的功能模塊,這就是詳細(xì)設(shè)計(jì),教師要把這些邏輯關(guān)系講清楚,使學(xué)生爛熟于心,才能在未來的軟件研發(fā)中使用。同時(shí),也要將面向?qū)ο蟮能浖_發(fā)方法與傳統(tǒng)的結(jié)構(gòu)化開發(fā)方法相比較,將測試用例生成技術(shù)與需求分析模型、軟件設(shè)計(jì)模型以及相關(guān)技術(shù)相聯(lián)系,讓學(xué)生能夠直觀地感受到軟件工程的思想和方法始終貫穿于軟件研發(fā)活動(dòng)中[2]。
我們建立了完善的課程體系:基礎(chǔ)部分—應(yīng)用部分—實(shí)踐部分?;A(chǔ)部分:軟件工程概述、軟件工程過程、軟件工程管理、軟件工程技術(shù)。應(yīng)用部分:參照當(dāng)前軟件項(xiàng)目研發(fā)的標(biāo)準(zhǔn)過程,以面向?qū)ο蠹夹g(shù)與通用模型語言為核心,把企業(yè)的最佳實(shí)踐和實(shí)際案例講解給學(xué)生,同時(shí)注重覆蓋CVS、Rational Rose、Enterprise Architecture、JUnit 等軟件工程工具與環(huán)境,使學(xué)生在應(yīng)用部分教學(xué)中,熟悉當(dāng)前先進(jìn)的軟件工程過程和通用技術(shù)。實(shí)踐部分:教師要組織學(xué)生以軟件項(xiàng)目開發(fā)團(tuán)隊(duì)的方式,共同協(xié)作開發(fā)一個(gè)具有一定規(guī)模的軟件系統(tǒng),讓學(xué)生按照軟件工程的策劃、需求、設(shè)計(jì)、測試、部署、維護(hù)等各個(gè)階段的要求,認(rèn)真實(shí)施完成,讓學(xué)生通過軟件研發(fā)項(xiàng)目的實(shí)戰(zhàn)經(jīng)驗(yàn),深入了解和掌握軟件工程的思想和過程,了解每一個(gè)過程域的重點(diǎn)和它們之間的相互關(guān)系。
教師在教授軟件工程課程時(shí),要加強(qiáng)課堂互動(dòng),充分讓學(xué)生參與教學(xué)過程,發(fā)揮學(xué)生的主觀能動(dòng)性,循循善誘,讓學(xué)生一邊思考一邊聽取理論講解,同時(shí)又能實(shí)時(shí)表達(dá)自己的理解和想法,加強(qiáng)教師對當(dāng)前教授內(nèi)容的掌控。實(shí)戰(zhàn)訓(xùn)練需要提前安排學(xué)生分組,按照軟件工程的要求進(jìn)行初步策劃,教師要根據(jù)課堂分組討論的結(jié)果,引導(dǎo)他們完成一個(gè)完備的軟件界面設(shè)計(jì)方案,并用指導(dǎo)學(xué)生使用界面輔助設(shè)計(jì)工具實(shí)現(xiàn)[3]。通過這些實(shí)踐讓學(xué)生感受軟件研發(fā)的魅力,使理論與實(shí)踐有機(jī)統(tǒng)一,激發(fā)學(xué)生學(xué)習(xí)軟件工程的興趣和自信。
課程中盡量采用案例教學(xué)法,通過案例的生動(dòng)講解,把枯燥的教學(xué)變得生動(dòng)有趣,同時(shí),在教學(xué)中教師要扮演設(shè)計(jì)者與激勵(lì)者的角色,并鼓勵(lì)學(xué)生要積極參與討論,進(jìn)而增進(jìn)教學(xué)效果。在理論教學(xué)中,以實(shí)際軟件開發(fā)案例貫穿于整個(gè)理論知識講解的始終,使學(xué)生在理解理論知識的同時(shí)建立起軟件開發(fā)系統(tǒng)化與工程化觀念;讓學(xué)生參與教學(xué)過程中,針對某一問題進(jìn)行互動(dòng)式的討論;針對課程實(shí)踐中的問題,鼓勵(lì)學(xué)生開展專題討論或形成專題報(bào)告。
軟件工程作為一門實(shí)踐性課程,其考核方法應(yīng)該有別于其他課程,檢驗(yàn)的重點(diǎn)不但要關(guān)注理論考試成績,而且要考查學(xué)生是否能在軟件開發(fā)過程中貫徹軟件工程的思想和方法。因此,建議加大實(shí)踐考核的比重,考核分為課程考試和課程設(shè)計(jì),其中課程考試兼顧平時(shí)成績和筆試成績;課程設(shè)計(jì)單獨(dú)作為一門實(shí)踐課程進(jìn)行考核,建議從課程的開始就布置課程設(shè)計(jì)題目,學(xué)生自由組合,按照教學(xué)進(jìn)度,分階段提交需求分析文檔、設(shè)計(jì)文檔、測試文檔和可運(yùn)行的軟件代碼等。
《軟件工程》作為應(yīng)用型高校計(jì)算機(jī)專業(yè)和軟件工程專業(yè)的核心課程之一,我在教學(xué)過程中,擯棄了主講理論的傳統(tǒng)教學(xué)方法,通過對教材的精心選取、教學(xué)內(nèi)容的合理組織、考核方法的科學(xué)評判,實(shí)踐與理論并重,注重在教學(xué)中使用具體化、實(shí)例化的案例,增強(qiáng)學(xué)生的主觀能動(dòng)性和積極性,注重學(xué)生綜合能力的養(yǎng)成。