摘要:“軟件工程”是一門理論性和實踐性非常強的課程。針對目前“軟件工程”的教學(xué)現(xiàn)狀,本文對軟件工程教學(xué)內(nèi)容的更新、教學(xué)方式與考核方式的改進、理論結(jié)合實際以及加強實驗室建設(shè)等方面的改革提出了具體的觀點和實施方案。
關(guān)鍵字:軟件工程;教學(xué)改革;教學(xué)方法
“軟件工程”是指導(dǎo)計算機軟件開發(fā)和維護的工程學(xué)科,是培養(yǎng)學(xué)生軟件開發(fā)能力和項目管理能力的一門重要課程。其教學(xué)效果直接影響到學(xué)生畢業(yè)后從事軟件開發(fā)和項目管理的能力。然而,在實際教學(xué)中,學(xué)生總認(rèn)為這門課內(nèi)容枯燥無味、繁瑣,學(xué)習(xí)興趣不大,待到用時又不知如何運用。同時學(xué)生的課堂表現(xiàn)又極大地挫傷了老師講課的積極性,很難達(dá)到較好的教學(xué)效果和教學(xué)目的。因此,本課程急需改革,本文結(jié)合作者多年來從事軟件工程教學(xué)和科研的實際體會,對軟件工程的教學(xué)改革提出了若干建議。
1更新“軟件工程”的教學(xué)內(nèi)容
目前,計算機行業(yè)需要的軟件工程師是既掌握軟件開發(fā)技術(shù),又懂項目管理的復(fù)合型人才。我們認(rèn)為“軟件工程”課程應(yīng)強調(diào)軟件工程的思想與方法,突出軟件工程的過程概念,側(cè)重軟件工程應(yīng)用能力的培養(yǎng)。因此,考慮不斷更新充實教學(xué)內(nèi)容。根據(jù)美國計算學(xué)會ACM(Association for Computing Machinery)在2001年制定的ACM草案,軟件工程的七大核心專題為(1)軟件工程過程和軟件生命周期模型;(2)需求分析;(3)軟件設(shè)計(以面向?qū)ο笙到y(tǒng)分析——OOSA,面向?qū)ο笙到y(tǒng)設(shè)計——OOSD);(4)測試和評估;(5)軟件進化(強調(diào)可維護軟件的特征,軟件成熟度、軟件重構(gòu)和軟件重用等);(6)軟件項目管理(強調(diào)軟件開發(fā)人員的組織、項目進度、軟件評估、項目風(fēng)險、軟件質(zhì)量保證、軟件配置管理、項目管理工具等);(7)軟件工具和環(huán)境(重點為編程環(huán)境、需求分析建模工具、測試工具)。這七大核心內(nèi)容是掌握軟件工程理論的最小子集。然而,目前國內(nèi)出版的教材基本上沒有覆蓋這七大核心內(nèi)容,有的甚至還停留在面向過程的傳統(tǒng)軟件工程學(xué)的詳細(xì)論述上。為此,我們參考了國外經(jīng)典教材和軟件工程學(xué)的最新研究成果,將軟件工程教學(xué)內(nèi)容分為5個教學(xué)模塊,即軟件工程基礎(chǔ)、軟件項目管理、傳統(tǒng)的軟件工程、面向?qū)ο蟮能浖こ?,軟件工程的最新技術(shù)[1]。其中軟件工程基礎(chǔ)包括軟件工程概論、軟件過程、建模語言、軟件項目、風(fēng)險分析和管理內(nèi)容。軟件項目管理包括項目進度計劃與控制、質(zhì)量保證與配置管理內(nèi)容。傳統(tǒng)的軟件工程包括需求工程、系統(tǒng)設(shè)計、軟件測試內(nèi)容。面向?qū)ο筌浖こ贪嫦驅(qū)ο蠓治觥⒚嫦驅(qū)ο笤O(shè)計、編碼實現(xiàn)、面向?qū)ο鬁y試內(nèi)容。軟件工程的最新技術(shù)包括基于組件的開發(fā)方法、基于構(gòu)件的開發(fā)方法、敏捷開發(fā)(XP)等。其中每個模塊都是獨立的教學(xué)部分,模塊之間有一定的聯(lián)系,但可有選擇地進行教學(xué)??筛鶕?jù)不同的教學(xué)計劃,將幾個模塊組合講授[2]。
2學(xué)生學(xué)習(xí)中存在的問題
“軟件工程”課程涉及計算機、經(jīng)濟學(xué)、管理學(xué)、工程學(xué)、市場學(xué)等多個領(lǐng)域的知識。由于涉及的內(nèi)容太多、太寬,學(xué)生感覺這門課程包含的知識非常廣泛。在教學(xué)中,我們發(fā)現(xiàn)學(xué)生么涉及算法設(shè)計,邏輯推理較少,不像程序設(shè)計課程(如C/C++語言、JAVA語言)那樣能帶給學(xué)生智力上的快感,激發(fā)學(xué)生的興趣和熱情。在學(xué)習(xí)理論知識時,由于沒有開發(fā)經(jīng)驗,學(xué)生很難將軟件工程的抽象理論與實際聯(lián)系起來,很難體會該門課程的指導(dǎo)實踐性,容易產(chǎn)生枯燥乏味的感覺。
(2) 學(xué)生輕視軟件工程的價值。在學(xué)校,學(xué)生開發(fā)的一些程序,一般都是小型軟件系統(tǒng),在規(guī)模和復(fù)雜度上都遠(yuǎn)遠(yuǎn)不如實際開發(fā)的系統(tǒng)。對于這些系統(tǒng),學(xué)生只需寫少量的代碼。在這些小規(guī)模的非正式系統(tǒng)中運用軟件工程,很難體會得到軟件工程的作用。因此,學(xué)生容易輕視軟件工程的價值。
3 “軟件工程”教學(xué)的改革措施
3.1理論結(jié)合實際,采用案例教學(xué)法
軟件工程講授的原理、技術(shù)、方法都是抽象的。為了使學(xué)生能夠深刻領(lǐng)會和理解軟件工程的思想和方法,在教學(xué)中創(chuàng)造條件引入案例,將復(fù)雜抽象的概念用具體案例進行解釋,能夠收到事半功倍的效果。例如,在講解需求分析內(nèi)容時,我們以“教材購銷系統(tǒng)”作為教學(xué)案例,詳細(xì)介紹了需求分析四步驟:需求獲取、需求建模、編寫需求說明文檔、需求驗證。這樣將枯燥的理論與實際緊密結(jié)合,變抽象為具體,有利于學(xué)生充分理解和掌握各知識點。
其次,我們一改“一言談”,“一人談”的傳統(tǒng)教學(xué)模式。在講完每個知識點后,安排一次案例討論課。一般要求討論案例不同于教學(xué)案例。例如,講授完需求分析內(nèi)容后,我們以學(xué)生較熟悉“圖書館借閱系統(tǒng)”作為討論案例。在課堂上將學(xué)生分成幾個小組,每組成員分別扮演用戶和開發(fā)者的角色,模擬實際開發(fā)情形,運用所學(xué)知識展開討論。討論之后,要求學(xué)生再根據(jù)需求調(diào)查過程整理出相應(yīng)的需求文檔資料。這個過程增強了學(xué)生對軟件開發(fā)項目的感性認(rèn)識和興趣,提高了他們分析問題和解決問題的能力。
3.2創(chuàng)建良好的軟件工程學(xué)習(xí)環(huán)境
(1) 加強軟件工程實驗室建設(shè)。軟件工程實驗室是“軟件工程”課程建設(shè)的主要方面。軟件工程實驗室需要配置適用的軟硬件設(shè)施和軟件開發(fā)工具,以便為軟件工程的教學(xué)和研究創(chuàng)造必要的條件。通過實驗室建設(shè),一方面可以加強教學(xué)實踐環(huán)節(jié)。另一方面,能夠在實驗室積累一批優(yōu)秀的實例,為老師的專業(yè)研究和學(xué)生理解、掌握課程內(nèi)容提供良好的幫助。軟件工程實驗室的軟件環(huán)境建設(shè)應(yīng)以工程化關(guān)鍵技術(shù)為重點,包括領(lǐng)域工程技術(shù)、軟件過程技術(shù)、工程環(huán)境技術(shù)、軟件構(gòu)件技術(shù)和軟件標(biāo)準(zhǔn)化技術(shù)。另外,軟件工程實驗室建設(shè)應(yīng)吸收有軟件開發(fā)經(jīng)驗、科研能力的教師直接參與課程建設(shè),把實際科研項目納入實踐性教學(xué)工作中。讓學(xué)生有機會參與軟件項目的開發(fā),實現(xiàn)教學(xué)和實踐相結(jié)合。以便學(xué)生對軟件工程的思想、方法、工具和環(huán)境、軟件工程過程、軟件標(biāo)準(zhǔn)和規(guī)范有一個全面的了解和掌握。
(2) 探索校企合作,在軟件企業(yè)設(shè)立講壇?!败浖こ獭闭n程具有顯著的實踐性,其教學(xué)內(nèi)容必須與當(dāng)前軟件行業(yè)的發(fā)展和需求保持同步。為此,我們安排1~2次課在軟件企業(yè),請既有理論知識又有開發(fā)經(jīng)驗的軟件工程師為學(xué)生上課,作有關(guān)先進工程技術(shù)和管理規(guī)范方面的專題報道。讓學(xué)生了解企業(yè)軟件工程的實際問題、行業(yè)現(xiàn)狀和發(fā)展趨勢,及時修正學(xué)習(xí)方向和端正學(xué)習(xí)態(tài)度,增強學(xué)習(xí)的主動性和對軟件開發(fā)工作的感性認(rèn)識。
3.3改革課程考核方式
作為實踐性很強的課程,“軟件工程”的考核方法應(yīng)該有別于其他課程,考核的重點不應(yīng)該是理論考試成績,而是學(xué)生能否學(xué)會在軟件開發(fā)過程中貫徹軟件工程學(xué)的思想和方法[3]。因此,我們改革傳統(tǒng)的“一張試卷定成績”的考試方法,注重學(xué)生綜合知識和應(yīng)用能力方面的考核。采用的方案是:平時作業(yè)10%,課堂討論20%,案例分析(分組模式)30%,筆試40%。課程設(shè)計單獨考核。采用這種考核方案,可以避免學(xué)生對知識的死記硬背,轉(zhuǎn)而重視對知識的理解與應(yīng)用。課堂上踴躍發(fā)言,對學(xué)生學(xué)習(xí)的主動性和創(chuàng)造性思維具有很大的促進作用。
4結(jié)語
“軟件工程”課程具有發(fā)展迅速、實踐性強的特點。在教學(xué)實踐中,應(yīng)該結(jié)合軟件工程的發(fā)展和軟件行業(yè)的人才需求現(xiàn)狀,不斷更新教學(xué)內(nèi)容,設(shè)計合理的教學(xué)模式,理論與實踐相結(jié)合,側(cè)重培養(yǎng)學(xué)生的軟件工程應(yīng)用能力。建立良好的軟件工程學(xué)習(xí)環(huán)境,培養(yǎng)學(xué)生的學(xué)習(xí)興趣,提高學(xué)生學(xué)習(xí)的主動性與創(chuàng)造性。
參考文獻:
[1] 王慶育. 軟件工程[M]. 北京:清華大學(xué)出版社,2004.
[2] 孫知信. 軟件工程課程模塊化教學(xué)改革的實踐與思考[J]. 南京郵電學(xué)院學(xué)報:社會科學(xué)版,2004(6):39-42.
[3] 齊治昌. 軟件工程學(xué)科的建立與軟件工程本科教學(xué)[J]. 中國大學(xué)教育,2006(2):20-30.
Discussion of Software Engineering Course Teaching Reform
ZHANG Xia
(Dept of Computer Science, Xiangnan University, Chenzhou 423000, China)
Abstract: Software engineering is a quite theoretical and pragmatic course. In this article, according to the problem in the course of teaching, several issues on the course have been discussed, namely, the update of teaching contents, the improvement on teaching and examination methods, how to integrate theory with practice and strengthening laboratory construction etc. Suggestions of reinforcing the teaching reform are also offered.
Key words: software engineering; teaching reform; teaching method
(編輯:白杰)