羅海麗
(內(nèi)蒙古科技大學信息工程學院,內(nèi)蒙古包頭014010)
“軟件工程”是計算機科學與技術(shù)專業(yè)的一門重要的專業(yè)必修課程,它的內(nèi)容主要涉及與軟件開發(fā)和維護相關(guān)的概念、原理和方法,這些概念、原理、方法對于實際的軟件開發(fā)起重要的指導作用。近幾年軟件工程學科發(fā)展較快,出現(xiàn)了許多新技術(shù)、新分支?,F(xiàn)有的軟件工程教材種類很多,但所涉及的側(cè)重點各不相同,有必要根據(jù)不同學校計算機專業(yè)的專業(yè)方向及培養(yǎng)目標,選擇適合的教學內(nèi)容,以做到有針對性的教學;“軟件工程”課程內(nèi)容主要涉及與軟件開發(fā)維護相關(guān)的原理和方法,這些內(nèi)容若沒有軟件開發(fā)實踐做支撐,勢必顯得空洞乏味。因此有必要從課堂教學、實驗教學、實踐教學這三個環(huán)節(jié)入手探索“軟件工程”課程的一種新的教學模式。這種新的教學模式通過案例教學、實訓式實驗及綜合實踐相結(jié)合,幫助學生更好地掌握“軟件工程”課程內(nèi)容,并培養(yǎng)學生實際軟件開發(fā)的能力。
軟件工程領(lǐng)域的知識體系如圖1所示。
圖1 軟件工程領(lǐng)域的知識體系
按照教育部計算機科學與技術(shù)專業(yè)規(guī)范,計算機科學與技術(shù)專業(yè)分為計算機科學、計算機工程、軟件工程、信息技術(shù)這四個專業(yè)方向。不同的專業(yè)方向的特點及培養(yǎng)目標不同,因此不同的專業(yè)方向中“軟件工程”課程的內(nèi)容應有所不同。
計算機科學方向研究計算機和可計算系統(tǒng)的理論、設(shè)計、開發(fā)技術(shù),著重于理論知識的教學和分析問題、解決問題能力的培養(yǎng),以培養(yǎng)計算機科學研究型人才為目標。“軟件工程”課程是該方向的核心課程。該方向中“軟件工程”課程的內(nèi)容應包括軟件過程、軟件過程的改善、項目管理、軟件分析、軟件設(shè)計、工具與環(huán)境等知識。
計算機工程方向研究計算機系統(tǒng)的理論、設(shè)計、實現(xiàn)、開發(fā)和應用。著重于理論和工程知識的教學,使學生掌握較高層次的計算機系統(tǒng)的分析、設(shè)計能力。軟件工程是計算機系統(tǒng)工程的重要組成部分,因此“軟件工程”課程是該方向的核心課程。該方向中“軟件工程”課程的內(nèi)容應包括軟件過程、軟件開發(fā)的方法與技術(shù)、工具與環(huán)境、軟件生命周期。
軟件工程方向研究如何用系統(tǒng)的、規(guī)范的、可度量的方法開發(fā)、維護軟件。該方向的教學既重視理論知識和較高層次分析問題、解決問題的方法,也重視軟件設(shè)計和工程實踐。軟件工程方向的知識要求幾乎覆蓋了軟件工程領(lǐng)域的知識體系的全部。該方向只設(shè)一門“軟件工程”課程是不夠的,應設(shè)立一系列軟件工程相關(guān)課程。應開設(shè)“軟件工程導論”課程,用于綜述軟件工程知識體系及各部分知識;應開設(shè)“軟件過程管理”課程,用于講授軟件開發(fā)工程、項目管理、軟件質(zhì)量管理、軟件度量等知識;應開設(shè)“面向?qū)ο筌浖_發(fā)方法”課程,用于講授目前應用廣泛的面向?qū)ο蟮能浖_發(fā)方法及該方法涉及的工具;此外,軟件生命周期中的各重要階段(如需求分析階段,總體設(shè)計階段,詳細設(shè)計階段,編碼階段,測試階段)均需對應一門獨立的課程,用于講授該階段的任務及涉及的工具方法[1]。
信息技術(shù)方向著重培養(yǎng)學生運用信息技術(shù)領(lǐng)域的核心技術(shù)、工具來構(gòu)造滿足需求的計算機應用系統(tǒng)的能力,即培養(yǎng)應用型人才。這一方向中的“軟件工程”課程內(nèi)容的選擇應更具有實用性。“軟件工程”課程內(nèi)容應包括軟件生命周期、軟件開發(fā)方法與技術(shù)、軟件開發(fā)過程中涉及的重要工具與環(huán)境。
在計算機科學與技術(shù)專業(yè)的四個專業(yè)方向中“軟件工程”課程都是重要的專業(yè)必修課,該課程的教學效果直接影響到專業(yè)的發(fā)展,因此有必要從課堂教學、實驗教學、實踐教學這三個環(huán)節(jié)入手探索“軟件工程”課程的一種新的教學模式。
“軟件工程”課程主要內(nèi)容涉及指導軟件開發(fā)的原理、方法、工具。若脫離了軟件開發(fā)實踐,這些原理、方法、工具會變得枯燥、難懂。在“軟件工程”課程教學中引入案例輔助教學能有效地提高教學質(zhì)量。課程中的每個重要知識點都應配備若干相關(guān)案例。在整個課程的教學中應有1到2個貫穿始終的綜合案例。綜合案例應為一個較為實際的軟件系統(tǒng)的開發(fā)過程,包括問題定義、可行性研究、需求分析、總體設(shè)計、詳細設(shè)計、編碼、測試。綜合案例中應包含各開發(fā)階段中涉及的任務、技術(shù)、方法及工具。學生應在課余時間認真閱讀案例,并進行分析,老師同步在課堂上講授案例,然后學生在實驗課中,按照案例中的步驟重視案例中的系統(tǒng)開發(fā)過程,最后總結(jié)歸納[2]。
實訓式實驗是通過實例演示及模擬、課堂練習、課后作業(yè)這三個環(huán)節(jié)使學生通過實驗訓練很好地掌握相關(guān)技術(shù)及方法。實訓式實驗包含如下三個環(huán)節(jié):
(1)實例演示及模擬
每個實驗,教師應先講解實驗步驟及要求。之后教師講解并演示一個案例,在此過程中學生同步模擬每個實驗步驟。教師做一步,學生跟一步,若有學生出現(xiàn)問題,教師及實驗員應及時輔導使其能跟上大家的進度。
(2)課堂練習
案例講解演示之后,教師應布置1到2個類似練習題,學生參照前面所講解的案例,按步驟完成這些練習。學生練習過程中教師應全程指導,實驗課結(jié)束時學生應將實驗結(jié)果以電子郵件形式發(fā)給教師,并書寫實驗報告。
(3)課后作業(yè)
實驗課結(jié)束時,教師應布置一個相關(guān)作業(yè),學生在課下參照教師講解的實例及課堂練習完成作業(yè),以鞏固相關(guān)知識。
“軟件工程”課程的教學中應注重綜合實踐環(huán)節(jié)的建設(shè)。綜合實踐環(huán)節(jié)包括以下三個方面:
(1)“軟件工程”課程設(shè)計
“軟件工程”課程應設(shè)置兩周左右的課程設(shè)計。課程設(shè)計的目標是讓學生體驗軟件開發(fā)的全過程,且學會與他人合作,培養(yǎng)團隊精神。課程設(shè)計過程中,學生分成若干小組,每個小組選擇一個項目,該項目的規(guī)模應與課程綜合案例的規(guī)模類似。每個小組應完成項目的問題定義、可行性研究、需求分析、總體設(shè)計、詳細設(shè)計這些階段。各個小組由組長負責組織、分工、控制進度等,對小組成員的最終課程設(shè)計成績有一定的分數(shù)浮動調(diào)整權(quán);組長帶領(lǐng)全組順利完成任務,總評可加一定分數(shù)。小組完成項目之后,應提交項目開發(fā)各階段文檔及課程設(shè)計報告。
(2)與其它課程的課程設(shè)計相結(jié)合
計算機專業(yè)的很多課程(如數(shù)據(jù)庫原理、信息系統(tǒng)開發(fā)、數(shù)據(jù)結(jié)構(gòu)、C語言等)的課程設(shè)計都與軟件開發(fā)相關(guān),可將這些課程的課程設(shè)計作為“軟件工程”課程的輔助課程設(shè)計。在這些相關(guān)課程的課程設(shè)計中,可通過恰當?shù)剡x擇設(shè)計題目,將軟件工程的原理、方法、工具應用于這些課程設(shè)計中,使學生體會到軟件工程方法與各種軟件開發(fā)的關(guān)系。
(3)與畢業(yè)設(shè)計相結(jié)合
計算機專業(yè)的畢業(yè)設(shè)計主要是進行實際的軟件開發(fā)。目前畢業(yè)設(shè)計中學生一般面臨全新的題目,設(shè)計過程中學生既要分析研究系統(tǒng)又要熟悉開發(fā)工具,這樣很多學生會覺得頭緒太多,忙不過來,最終不能完成一個理想的系統(tǒng)。鑒于此可將畢業(yè)設(shè)計作為“軟件工程”課程設(shè)計的延續(xù),延用課程設(shè)計中的分組,每個小組延用課程設(shè)計中的題目。由于課程設(shè)計時間較短,課程設(shè)計時各小組只進行了粗略并且簡化的項目開發(fā),在畢業(yè)設(shè)計的半年中,各小組可在課程設(shè)計的基礎(chǔ)上進一步完善擴充已有成果,按照軟件工程的步驟最終得到比較理想的系統(tǒng)。
“軟件工程”課程應根據(jù)不同學校的專業(yè)方向及培養(yǎng)目標合理地選擇教學內(nèi)容,這樣才能做到重點突出;“軟件工程”課程的教學中應通過案例教學、實訓式實驗及綜合實踐相結(jié)合,幫助學生掌握“軟件工程”課程內(nèi)容,并培養(yǎng)學生實際軟件開發(fā)能力。
[1] 計算機科學與技術(shù)專業(yè)規(guī)范起草小組.計算機科學與技術(shù)專業(yè)(軟件工程方向)規(guī)范與專業(yè)建設(shè)研究報告[M].北京:高等教育出版社,2005.
[2] 王忠群,劉濤.《軟件工程》教學方法的研究[J].現(xiàn)代計算機,2009,05:86-87.
[3] 陳昊,明仲.在軟件工程實驗教學中引入敏捷方法的探索[J].計算機教育,2008,24:46-47.