徐利軍等
摘 要:軟件工程課程是計算機專業(yè)重要的專業(yè)基礎課,由于其實踐性較強,歷來是教學的難點。我們基于案例化教學模式,設計并實施了一套綜合理論知識、應用技術和項目實踐的教學模式。實踐表明,這種新的教學模式有利于培養(yǎng)學生的團隊合作精神與運用軟件工程技術和方法解決實際問題的能力。
關鍵詞:軟件工程 實例化教學 項目實踐
中圖分類號:G462 文獻標識碼:A 文章編號:1674-2117(2014)16-00-02
1 前言
軟件工程是一門研究用工程化方法構建和維護有效的、實用的和高質(zhì)量的軟件的學科。它涉及程序設計語言、數(shù)據(jù)庫、軟件開發(fā)工具、系統(tǒng)平臺、設計模式以及管理、標準、個人技能、團隊協(xié)作和專業(yè)實踐等多方面的知識和技能。它是一門理論性和實踐性并重的重要學科。
軟件工程課程是計算機專業(yè)重要的專業(yè)基礎課。通過軟件工程課程的學習,學生能夠了解和掌握軟件工程的理論、技術和方法,具備作為軟件工程師所需的專業(yè)能力。由于軟件工程的課程特點,傳統(tǒng)的教師課堂授課為主、學生被動聽講為輔的教學模式在實踐環(huán)節(jié)上存在很大不足,軟件工程的理論和方法是從眾多軟件開發(fā)實踐中總結出來的。但是對于缺乏軟件開發(fā)實際經(jīng)驗的本科生來說,單純地講授理論知識往往使學生感到枯燥無味且難以理解,這嚴重影響了課程的教育質(zhì)量和教學效果。近年來,部分學校采用了案例化教學的方式改革軟件工程課程教學,在案例化教學中收集和總結了若干典型的軟件開發(fā)案例,將這些案例貫穿于理論知識的講解中;同時引入“做中學”教學模式,讓學生在實際的項目開發(fā)中進一步理解理論知識,取得了很好的教學效果。[1-4]
我們在軟件工程的授課過程中,也引入了案例化教學模式。總體來講,學生的反應是積極的,不過也發(fā)現(xiàn)了一些問題。
(1)任課教師本身缺乏使用軟件工程方法開發(fā)一個完整系統(tǒng)的經(jīng)驗,僅限于照本宣科地介紹基本原理和實際案例,不能將當前實際案例和軟件工程方法有機地結合在一起,與實際的軟件工程實踐有明顯的差距。
(2)大學階段的課程實踐基本以個人編程完成為主,軟件工程方法起到的作用有限。即使面對需要團隊協(xié)作的作業(yè),也因為規(guī)模小、從頭開發(fā)和無需維護的特點,使得學生感覺到使用軟件工程方法作用不大,除了增加工作量外,沒有明顯的益處,無法激發(fā)他們進一步學習的興趣。
(3)現(xiàn)有的軟件實驗環(huán)境偏重于提供編程工具的支持,缺少一個完整的軟件工程支持環(huán)境,缺少適合教學使用的實驗環(huán)境和資料,學生得不到真正的鍛煉。
2 教學改革
針對現(xiàn)存的問題,結合ACM和IEEE聯(lián)合發(fā)布的CCSE2005的相關內(nèi)容[5],我們進一步改革課程體系框架和教學內(nèi)容,本文將著重介紹我們在軟件工程課程教學中的經(jīng)驗和成果。
IEEE發(fā)布的軟件工程知識體系包括10個知識領域:軟件需求、軟件設計、軟件構造、軟件測試、軟件維護、軟件配置管理、軟件工程工具和方法、軟件工程過程和軟件質(zhì)量。參考這10個領域知識,根據(jù)教學目標,結合理論知識、軟件工具和工程實踐等方面組織整個課程內(nèi)容,在理論、應用、實踐三個層次上建立了軟件工程的課程體系。
理論部分以當前流行的統(tǒng)一開發(fā)過程RUP和UML語言為核心,覆蓋IEEE發(fā)布的軟件工程知識體系。包括軟件需求、軟件設計、軟件實現(xiàn)、軟件測試、軟件演化、軟件質(zhì)量和軟件配置管理等內(nèi)容。
應用部分結合實際案例,覆蓋IEEE的系列軟件工程標準,學習RationalRose、ClearCase、ClearQuest、JUnit、MicrosoftProject等常見軟件工程工具和環(huán)境。
實踐部分要求學生以團隊的方式協(xié)作開發(fā)具有一定規(guī)模的軟件系統(tǒng),并且在實踐過程中能夠熟練使用軟件工程工具。實踐部分著重培養(yǎng)學生應用軟件工程的思想和現(xiàn)代技術解決軟件開發(fā)問題的能力。
2.1 理論知識
理論部分的教學仍采用教師授課為主的模式,向?qū)W生講述軟件工程的基本理論,內(nèi)容力求少而精,目的是在較短時間內(nèi)讓學生了解現(xiàn)階段最廣泛使用的軟件工程技術的理論基礎,為下一步應用部分的學習奠定基礎。在具體的授課過程中,為避免單純理論學習的枯燥性,授課內(nèi)容圍繞典型的軟件開發(fā)案例展開。學生學習的注意力和興趣是影響教學質(zhì)量的重要因素。我們使用的案例是從國內(nèi)著名的軟件開發(fā)公司得到的真實案例,學生可以完整地看到項目的全景,這樣既幫助學生認識到學習課程的必要性,又調(diào)動起學生的學習興趣。
2.2 應用技術
軟件工程與其他計算機課程不同,學生需要面對的不只是單一的軟件工具,而是一組軟件工具組成的軟件支持環(huán)境。為了增強軟件工程課的真實性,我們選用了一組業(yè)內(nèi)流行的軟件工程工具,營造一個適合軟件工程課程項目實踐的軟件工程環(huán)境。使用RationalRose完成需求分析與系統(tǒng)分析和設計,使用ClearCase完成源代碼管理,使用ClearQuest完成缺陷管理,使用MicrosoftProject完成項目資源調(diào)度等。考慮到相關軟件工具的復雜性,為避免學生陷入單純學習軟件功能的誤區(qū),我們堅持“用中學”的方針,不要求學生面面俱到掌握軟件功能,而是從實用角度出發(fā),以完成項目為目的,掌握軟件的常用功能。我們會首先演示如何使用相關軟件完成典型案例,然后要求學生模仿示例,自行創(chuàng)作設計。
2.3 項目實踐
大學階段,大部分計算機課程實踐通過學生的獨立編程即可完成,軟件工程課程實踐則不同,軟件工程方法和技術的作用必須在完成項目的過程中通過團隊合作才能體現(xiàn)出來。
我們剛剛開始教這門課的時候,為了便于管理,選擇的項目偏小,一般適合3~5人完成。不過通過幾學期的實踐,發(fā)現(xiàn)效果不佳。因為規(guī)模不大,通常只會有1~2人來承擔主要開發(fā)工作,其他學生通常只起到輔助作用。在開發(fā)過程中,由于核心開發(fā)人員少,口頭溝通遠要比書面溝通簡單有效,沒有認真準備項目文檔的動力;而且項目是從頭做起,不需要利用以前文檔來了解項目情況,無法體會到項目文檔的重要性。在此種情形下,學生感覺到引入軟件工程只是額外增加了工作負擔,并沒有明顯的益處。endprint
為了更好地幫助學生認識到這門課的重要性,我們在實踐階段做了若干改進。
(1)有意識地擴大了項目的規(guī)模,開發(fā)團隊的人數(shù)也相應增加,通常開發(fā)團隊人數(shù)在10人左右。人數(shù)的增多使得單純的口頭交流很難保證項目的順利進行,從而促使學生撰寫項目文檔。
(2)分組時,根據(jù)學生的能力和水平,明確學習任務,進行合理有效的分工。在一個項目組內(nèi),應該有項目經(jīng)理、系統(tǒng)分析師、軟件工程師、配置管理員、測試工程師等角色。同一名學生在不同的開發(fā)階段可能會承擔不同的角色。
(3)項目開發(fā)也分為兩個階段,第一階段完成后,我們會再提出一份更新的需求,要求在第一階段的成果上繼續(xù)開發(fā)。項目組的成員也不是一成不變的,第二階段時每個項目組至少更換50%的成員。
在項目開發(fā)過程中,我們會監(jiān)控項目的開發(fā)過程,參與項目階段成果的評審工作。項目開發(fā)過程盡可能模擬真實軟件企業(yè)的開發(fā)過程,最終使學生完成需求分析、設計、代碼編寫、測試、部署全過程,培養(yǎng)學生的合作意識、責任感和集體榮譽感。學生在開發(fā)過程中遇到問題,我們也不會直接給出答案,會建議他們自行討論來解決,提高他們的溝通交際能力,培養(yǎng)其團隊合作精神。
在教學過程中,理論部分、應用部分和實踐部分并不是相互獨立,而是有機地結合在一起。我們在該課程教學初期,首先給學生若干項目課題進行選擇,題目選定后,以自主結合的方式完成分組。這樣做可以有效地增強學生學習時的目的性。在重要章節(jié)的教學過程中,遵循先理論知識、再應用技術、最后實踐部分的次序進行。完成某章節(jié)的學習后,就應該在規(guī)定時間內(nèi)提交項目相應階段的工作成果。例如,需求分析章節(jié)的理論知識學習安排在第2周、應用技術部分安排在第3周、需求分析說明書要求在第5周提交;系統(tǒng)分析的理論知識學習安排在第4周、應用技術部分安排在第5周、系統(tǒng)分析報告要求在第7周提交。我們會及時對每一部分的工作成果進行評講,指出缺陷和不足,保障項目開發(fā)的順利進行。在期末考試結束之前,結束第一階段的開發(fā)工作。隨后,我們會給出項目的新增需求,并調(diào)整項目成員,開始第二階段的開發(fā)工作。由于第二階段是在所有課程考試結束之后,學生有條件在固定地點集中上機,因此第二階段的工作將盡可能模仿軟件公司的開發(fā)模式。首先,項目經(jīng)理必須和組員共同討論出一份可行的項目開發(fā)計劃。我們將根據(jù)該計劃監(jiān)控項目進展過程,并在重要節(jié)點抽查該項目的進展情況。項目計劃的重大變化,必須及時更新項目開發(fā)計劃。其次,在項目進展過程中,每個開發(fā)階段的工作成果都必須經(jīng)過評審。不評審或者評審不合格,不可以開始下一階段的工作。最后,每個項目成員必須每天提交工作進展報告,內(nèi)部會議也要有會議記錄。所有這些項目管理相關文檔和項目本身的文檔都需要在項目結束時一并提交。評定成績時結果和過程并重,項目管理相關文檔是過程的重要體現(xiàn)。
3 考核方法和教學效果分析
為突出實踐環(huán)節(jié)的重要性,我們將項目實踐部分的考核比例增加至總成績的50%,即成績標準為項目實踐成績(50%)+筆試成績(30%)+平時成績(20%)。其中第一階段的項目實踐成績占20%,第二階段占30%。在對學生的實踐環(huán)節(jié)考核中,我們更側(cè)重于對學生的實踐操作能力、文檔編寫能力、團隊合作和溝通能力的考核。為避免渾水摸魚,在評定成績時,根據(jù)貢獻不同,組中的不同成員會有不同的權重,每個學生的最終成績是團隊成績和權重的乘積。采用新的考核方法后,極大地調(diào)動了學生參與項目實踐的熱情,取得了良好的學習效果。在隨后的畢業(yè)設計和程序設計比賽中學生都體現(xiàn)出較強的團隊開發(fā)能力。
4 結語
軟件工程是一門理論和實踐并重的課程,只有加強實踐環(huán)節(jié)的訓練,理論知識才能得到有效鞏固。我們在教學過程中,始終把項目實踐放在突出的地位,通過增大項目規(guī)模和引入兩階段項目開發(fā),讓學生主動認識到軟件工程課程的重要作用。實踐證明,現(xiàn)階段軟件工程的教學改革工作,有效地提高了學生的學習興趣,增強了學生使用軟件工程方法和技術解決實際問題的能力,培養(yǎng)了學生團隊合作精神。下一步我們準備通過“校企合作”,增強項目實踐的真實性,使軟件工程的項目實踐更加合理、完善。
(上海海洋大學信息學院,上海201306)
參考文獻:
[1]張劍波,方芳,袁國斌.軟件工程專業(yè)實踐教學體系改革[J].計算機教育,2013(12):37-41.
[2]王衛(wèi)紅,楊良懷,江領.軟件工程優(yōu)勢專業(yè)的建設與發(fā)展[J].計算機教育,2013(10):1-4,9.
[3]湯淼.軟件工程專業(yè)“項目驅(qū)動”實驗教學模式研究[J].實驗技術與管理,2012(4):267-271.
[4]吳建斌,陳中育,葉榮華.軟件工程類課程教學模式改革探索[J].中國信息技術教育,2013(5):119-121.
[5]IEEE-CS/ACMJointTaskForceonComputingCurricula,SoftwareEngineering2004Volume[R].2004.endprint