許崗++劉靖
摘 要:軟件工程是計算機專業(yè)必修課,對于學生進行軟件開發(fā)以及軟件開發(fā)的規(guī)范性具有重要的意義。軟件工程課程教材抽象、枯燥,而相應的授課方式一般是教材的重復,這對于學生掌握該課程的精髓不利。本文通過實踐的探索,使用了完整案例以及案例分解的方式,使得一個案例貫穿整個學期,在課堂上按照分解后的案例環(huán)節(jié),逐個使用軟件工程的方法引導學生進行環(huán)節(jié)的實踐,以便達到教學更加生動實際,學習更加有壓力和清晰的目標的目的。
關鍵詞:軟件工程 教學方法探索 案例環(huán)節(jié)教學
一、課程重要性和教學現(xiàn)狀分析
毫無疑問,作為軟件工程專業(yè)或者計算機專業(yè)的學生,未來的就業(yè)方向往往跟計算機軟件開發(fā)相關。學生在學習計算機編程語言并用編程語言進行程序設計和實現(xiàn)的實踐過程中,需要養(yǎng)成編寫程序的好思維和必要的好習慣。作為教師,不能只是引導學生會寫程序,完成指定的實驗內(nèi)容,更需要引導學生編寫好的程序,能夠使程序符合規(guī)范,便于維護,這是因為目前軟件的維護成本已經(jīng)遠遠大于軟件的開發(fā)成本??删S護性是軟件最重要的屬性,一項可維護易維護的軟件將節(jié)約大量的成本。而軟件的可維護性是由軟件開發(fā)時,開發(fā)團隊遵守良好開發(fā)規(guī)范和原則來保證的,這一點正是軟件工程課程的目的。
軟件工程是一門經(jīng)過時間和實踐驗證的,講述開發(fā)軟件團隊應該遵守的軟件分析、設計、實現(xiàn)方法、算法和原則的課程。該門課程將軟件的編寫劃分成了幾個階段:需求分析階段、概要設計階段、詳細設計階段、實現(xiàn)階段、單元測試階段和集成測試階段。經(jīng)過這些階段,用戶的需求被認真推敲和理解,使得用戶和開發(fā)人員之間達成了共識,這一點保證了軟件開發(fā)的最終目標是正確的。在概要設計階段和詳細設計階段,用戶的意識被逐步細化,使得細化后的功能程序員能夠用編程語言完成。實現(xiàn)階段是按照分析的結(jié)果對功能逐個模塊的編寫代碼。測試階段則是測試代碼的正確性。
目前,雖然軟件工程課程教材種類豐富,數(shù)量眾多,然而,絕大部分教材,甚至包括國外的較好的軟件工程教材都是長篇累牘的敘述軟件開發(fā)過程應該遵循的方法和原則。這些方法和原則沒有詳細的實例作為佐證,使得軟件工程理論陷于抽象和空泛??傮w來說,目前的教材和教學手段,對于學生認識軟件工程的整體架構和具體細節(jié)還有不足。具體表現(xiàn)為:
軟件工程整體感不好。軟件工程是一整套方法和原則,這些方法和原則指導了整個軟件分析、開發(fā)、測試和維護。目前在軟件工程教材以及教學過程中,缺乏貫穿整個課程的完整案例。當課程結(jié)束后,學生普遍不清楚這門課程能夠做什么,對軟件工程方法和原則沒有整體架構的概念、理解和掌握。
軟件工程各環(huán)節(jié)的聯(lián)系性沒有體現(xiàn)。目前的教學過程中,有一些小案例來說明軟件工程中提到的方法和理論,這些例子對于其對應的理論點的說明較為合適,但這些案例彼此之間聯(lián)系很少甚至沒有聯(lián)系。這些案例使得本來是軟件工程方法和原則中不可分割的階段顯得過于零碎以及無關聯(lián)。這使得學生無法體驗和掌握軟件工程各個階段的作用以及階段之間的聯(lián)系。
沒有案例教學體現(xiàn)軟件工程的各個階段及其整體架構的關聯(lián)。目前已經(jīng)有一些教師引入了案例教學。但是,我們發(fā)現(xiàn)還沒有在整個教學中貫穿完整案例,并將完整案例按照各個階段分解,隨著各個階段的進行,案例越來越接近完整,所有的階段進行完畢后,一個完整的案例呈現(xiàn)在學生的眼前。
教學手段比較單一。目前的主流教學方式都是課上以講為主,課下學生組織團隊進行編程。這樣造成講述的方法和學生的實踐無法統(tǒng)一。學生在完成作業(yè)的過程中,仍然沒有使用軟件工程的方法,而是采用非正規(guī)游擊戰(zhàn)的方式繼續(xù)著從前的編程習慣。這使得引導學生實踐軟件工程的方法和原理不夠完善。
為了解決上述問題,我們提出了一個完整的教學實踐體系和流程,總體來說就是案例的實現(xiàn)、案例的講解和推進、學生實驗的選題、學生作業(yè)的推進和檢查方式。
二、教學案例設計
軟件工程的案例是軟件工程課程的核心。只有實際且有意義的案例才能使學生體會到軟件工程的作用,并掌握軟件工程的方法和原則。
首先,我們選擇一個有實際意義的目標,提出具體的需求,然后按照實際的問題,依據(jù)軟件工程的方法和流程進行軟件的開發(fā)。在需求分析階段,我們按照軟件工程提出的方法進行需求分析,并按照規(guī)范形成規(guī)定的文檔。然后,按照需求分析的結(jié)果,我們進行概要設計和詳細設計,并形成設計的結(jié)果和文檔。最后我們按照設計文檔進行軟件開發(fā),并進行單元測試,最終進行集成測試。在每個階段都有必要的文檔,我們都按照規(guī)范進行組織和準備。
按照這樣的方法,我們完成了一個實際的案例。這個案例我們將作為教學用的實踐案例。
三、用完整案例貫穿軟件工程教學
在軟件工程課程的講授過程中,往往有很多不相關的案例貫穿于每個階段,當課程講授結(jié)束時,學生往往不清楚軟件工程總體框架是什么、總的目標是什么。為了解決該問題我們在講授中使用了一個完整案例。
由于軟件工程課程抽象,為了讓學生掌握其方法和原則,教學中我們使用了案例教學。與其他的案例教學不同的是,在講授軟件工程課程時,我們采用了貫穿整個課程的一個完整案例。由于采用完整案例,使得學生在課程的學習過程中始終有一個清晰的目標和脈絡。這樣,軟件工程抽象的理論、方法和原理能夠始終如一由一個案例來體現(xiàn)。當課程結(jié)束時,學生往往能看到一個實際的軟件產(chǎn)品,使得學生對該課程產(chǎn)生了興趣。
四、教學中強調(diào)軟件工程各階段的聯(lián)系
在教學案例設計中,我們已經(jīng)將完整的案例進行了分解,分解后的案例與各個階段的產(chǎn)品對應。這些小案例都是使用與之對應的階段提供的方法和原則進行開發(fā)的。由于不同階段之間的產(chǎn)品具有很強的聯(lián)系,這樣每個階段的產(chǎn)品也具有很強的聯(lián)系。往往上一個階段的產(chǎn)品是下一個階段的輸入,下一個階段的產(chǎn)品是依據(jù)上一個階段產(chǎn)品而進行的開發(fā)。這些階段應該順序進行,不可跨越進行。由于各階段對應的小案例都來自整體案例,并且是按照軟件工程的方法進行開發(fā)的,這些階段性案例都是緊密相關的。這樣在課程的講授過程中,學生能夠清晰而實際的把握每個階段的作用和階段之間彼此的聯(lián)系。endprint
五、教學中強調(diào)軟件工程各階段的聯(lián)系和各階段與總體架構的關系
由于軟件工程方法和原則是有多個階段的,我們在每個階段都設計了一個符合本階段的小案例,這些小案例都是貫穿課程的一個完整案例的分解。這樣,在每個階段,學生會依照案例對該階段的方法和原則有較為具體的認識。隨著課程的進行,這些小案例的逐個完成,當課程結(jié)束后,各個案例匯聚成了一個完整的軟件產(chǎn)品,這樣學生對軟件工程課程有了整體的認識,同時,學生也會真切體會到軟件工程在軟件開發(fā)中的巨大指導作用。
六、教學中強調(diào)學生的參與
在整個教學過程中,強調(diào)學生的參與。軟件工程課程具有很強的實踐性。只有學生親自參與才能體會到軟件工程對軟件開發(fā)的指導作用。
首先,我們將學生以開發(fā)團隊的形式分成小組。
然后,我們?yōu)閷W生選擇題目,或者學生自己選擇題目,引導并和學生一起討論題目的合適性。
之后便是實踐階段。隨著課程的講解,軟件工程各個階段在進行,我們講解的是我們已經(jīng)設計好的案例,而要求學生組成的開發(fā)團隊也需要按照階段去進行他們的項目,每個階段都要安排學生做報告,報告他們分析、設計和實現(xiàn)過程中使用的方法,以及他們每個階段產(chǎn)品形成的具體流程。這樣學生能深度實踐可控的軟件工程原理。當課程結(jié)束后,他們的各個階段的產(chǎn)品以及最終的集成產(chǎn)品也產(chǎn)生了。這樣學生會有很大的成就感,使得他們進行了一次深度的軟件工程體驗,并感受到了軟件工程對于軟件開發(fā)的重大意義。因此,這對于學生未來在軟件行業(yè)就業(yè)后,按照規(guī)范的流程和方法開發(fā)軟件起到了關鍵的引導作用。
結(jié)語
軟件工程課程理論目前來說已經(jīng)逐步完善并發(fā)展著。這門課程對計算機專業(yè)的學生來說具有重要意義,為培養(yǎng)學生開發(fā)易維護且規(guī)范的軟件打下了基礎。我們在軟件工程課程的講授過程中發(fā)現(xiàn),該課程的抽象和理論化使得學生很難掌握該課程。有些教學也采用了案例的方式,但是,案例在整個教學中不停地變化,在教學結(jié)束后也沒有產(chǎn)品產(chǎn)生,使得學生很難理解該方法。我們從案例的設計、分解、聯(lián)系以及實踐環(huán)節(jié)各個方面進行了深度的實驗,發(fā)現(xiàn)本文提出的完整案例法、案例分解法、案例聯(lián)系法和引導學生實踐并形成產(chǎn)品法具有很好的效果。
但是,有些細節(jié)問題我們還沒有進行實驗,整個教學流程還沒有進行量化,這是我們未來需要進一步進行的工作。
論文項目信息:內(nèi)蒙古大學“卓越教學團隊”建設項目(2013-5):數(shù)據(jù)結(jié)構與程序設計系列課程教學團隊
參考文獻:
[1]王立群.應用型本科軟件工程精品課程教學改革研究.信息科技,2013(26)
[2]徐玲,文俊浩,熊慶宇.軟件工程人才培養(yǎng)模式的探索與實踐.現(xiàn)代教育技術,2013(8)
[3]劉征海,徐卓然,肖建田.基于團隊學習的軟件工程專業(yè)課程教學改革探索.課程教育研究,2013(22)endprint