摘要:根據(jù)整體項目模式下軟件工程專業(yè)教學體系要求,項目應貫穿到系列專業(yè)課程之中,讓學生理解軟件開發(fā)過程的不同方面。文章將系列專業(yè)課程融于軟件開發(fā)過程中,建立軟件開發(fā)過程體系流程圖,確認系列專業(yè)課程在軟件開發(fā)過程中的位置和作用,并提出先案例后理論的教學方式。
關鍵詞:整體項目模式;項目Bus;軟件工程;教學
0 引言
文獻1論述什么是整體項目模式以及整體項目模式的優(yōu)缺點,文獻2論述整體項目模式下軟件工程專業(yè)的教學體系結構,同時也提到軟件工程專業(yè)教學方面的要求,主要是針對教師的要求。在實際過程中,整體項目模式下軟件工程專業(yè)的課程教學較為復雜。首先,需要理清專業(yè)課程之間的相互關系;其次,需要明確專業(yè)課程和項目過程之間的關系;第三,需要掌握專業(yè)課程教學和實際項目之間的切入點、重點和難點;最后,學生要能切實根據(jù)自己所做的項目,從不同的側面或教學內(nèi)容方面書寫項目文檔,并認識到同一項目可以從不同的角度進行分析、設計和編程。
傳統(tǒng)的專業(yè)課程項目教學和整體項目模式下的專業(yè)課程教學存在很大區(qū)別。傳統(tǒng)的專業(yè)課程項目教學主要是沒有從整體項目模式考慮教學問題,割裂了專業(yè)課程之間的相互聯(lián)系,只從該課程的教學內(nèi)容方面列舉案例,學生對教學內(nèi)容的認識具有片面性和局限性,不能建立起對知識體系的整體觀念。在實踐教學過程中,學生曾經(jīng)提出過很多問題:軟件工程和結構化設計、面向?qū)ο笤O計有什么不同?它們之間有什么聯(lián)系?為什么要學習面向?qū)ο??不學習可以嗎?作為一個專業(yè)課任教師,如何進行解釋?如果學生有足夠的項目經(jīng)驗,前期是否一定要有詳細的分析和設計文檔?針對最后一個問題,若是不具備豐富項目經(jīng)驗的教師回答,那答案是一定要有詳細的分析和設計文檔;但是實踐經(jīng)驗豐富的教師則認為這個問題的答案是不一定的。小型或者微型項目的前期不一定要有詳細的分析和設計文檔,可以直接在編程過程中進行分析和設計,那么這是否違反了軟件工程呢?當然,答案也是否定的。如教師在講授面向?qū)ο蟮能浖_發(fā)方法課程時,必須強調(diào)某一開發(fā)方法的優(yōu)缺點,可以綜合運用其他開發(fā)方法如結構化分析方法、形式化編程,甚至弱化分析過程,強化設計和編碼過程,主要目的是明確整體項目開發(fā)過程。
1 軟件開發(fā)流程和系列課程之間的關系
1.1整體項目模式下軟件工程專業(yè)教學體系結構
任何課程的設置不能脫離教學體系結構。一個好的教學體系結構能夠幫助學生在頭腦中樹立完整的知識結構,讓學生主動獲取相關知識。在教學過程中,教師首先要明確該課程在整個教學體系結構中的位置,建立項目開發(fā)過程的全局觀。文獻2中建立的整體項目驅(qū)動模式下軟件工程專業(yè)教學體系結構如圖1所示。
從圖1中可以看出,項目Bus橫貫整個專業(yè)課程,教師和學生各自只使用同一個項目案例貫穿于系列課程中,從而從不同的角度讓教師講授、學生學習同一個項目的相關內(nèi)容。
1.2軟件開發(fā)過程流程
圖2所示是筆者在軟件開發(fā)過程中總結出來的一套軟件工程專業(yè)軟件開發(fā)過程流程,包括軟件開發(fā)過程、軟件工程文檔、軟件標準規(guī)范、實際軟件開發(fā)規(guī)程等方面的內(nèi)容。在每一門課程的開始和結束階段,筆者都要將該圖展示出來,讓學生明確自己已經(jīng)學到了哪些內(nèi)容,還存在哪些欠缺。
1.3軟件開發(fā)過程對應的專業(yè)課程設置
筆者有幸為中南民族大學軟件工程專業(yè)以及本校與美國威斯康星大學合辦的3+2軟件工程國際合作試點班的學生講授部分專業(yè)課程,包括軟件工程、軟件測試、用戶界面設計、軟件項目管理、面向?qū)ο蟮能浖_發(fā)方法5門課程。對于相關的其他專業(yè)課程,我們將不做說明,如CMMI、軟件過程、軟件質(zhì)量保證等。
這些課程與軟件開發(fā)過程流程是一一對應的關系。軟件工程課程是專業(yè)核心課程,涉及內(nèi)容廣泛,是其他專業(yè)課程的基礎,也是整個軟件開發(fā)過程流程的基礎,主要內(nèi)容包括軟件需求提取、分析、設計、測試、維護變更管理以及軟件質(zhì)量控制、軟件項目管理、軟件開發(fā)配置變更管理、軟件開發(fā)標準以及軟件開發(fā)方法。軟件測試貫穿軟件開發(fā)過程的始終,包括用戶需求的確認、用戶界面的確認以及單元測試、集成測試、系統(tǒng)測試、Alpha/Bete詛測試、評審、驗收等內(nèi)容。用戶界面設計主要包括軟件界面設計理論、原則和規(guī)范,在實際軟件開發(fā)過程中,是圖2中的系統(tǒng)概要設計/用戶界面驅(qū)動分析部分,通過與用戶反復溝通確認需求,是測試的基礎,同時也是軟件編碼階段、評審、驗收階段的依據(jù)。軟件項目管理主要對軟件的質(zhì)量、成本和進度進行管理和控制,同時考慮如何在軟件開發(fā)過程中避免不必要的風險或者降低風險的影響。面向?qū)ο蟮能浖_發(fā)方法著重于軟件開發(fā)過程中面向?qū)ο蟮男枨蠓治龊驮O計,包括用戶分析、界面設計、類模型、動態(tài)模型、狀態(tài)模型等一系列的分析和設計。
這5門專業(yè)課程從不同的側面講解軟件項目的開發(fā)過程和方法,各有特點。但是對于為什么要學習這幾門課程,以及它們在軟件開發(fā)過程中處于什么樣的位置,起到什么樣的作用,是教師在教學之初就應該明確的。
2 整體項目模式下系列課程的教學
根據(jù)整體項目模式原理,實踐項目應貫穿到各專業(yè)課程之中,系列課程最好使用同一項目,這樣更能加強學生理解軟件開發(fā)過程的不同方面。該項目在專業(yè)課程開始之前就必須存在,即已經(jīng)完成或正在進行中的實踐項目,因此,系列課程必須是相互聯(lián)系并且能基于同一項目案例,這和傳統(tǒng)的項目教學方式雖然模式一致,但是效果卻有本質(zhì)的不同。圖3為系列專業(yè)課程的項目案例、課程和學生實踐案例示意圖,5門課程都基于同一實際項目案例,學生根據(jù)自己所做的項目,按照不同專業(yè)課程要求的格式和內(nèi)容書寫相關文檔。
2.1先案例后理論的案例驅(qū)動教學模式
軟件工程專業(yè)的特點是實踐性非常強,軟件工程的很多理論都來源于對實踐的總結和歸納。因此,教師在教學過程中采用先案例后理論的案例驅(qū)動教學模式,符合軟件工程專業(yè)的授課特點。
首先,教師要講解實際項目案例的文檔,該文檔是一套完整的、從不同側面反映軟件開發(fā)過程的實際文檔。對于每一門專業(yè)課,教師首先講解需求提取、需求分析過程、功能提取、系統(tǒng)功能結構框圖等,讓學生明確該系統(tǒng)的背景和要解決的問題,以及需要具備什么樣的功能以實現(xiàn)目標。
其次,教師要聯(lián)系實際項目案例,講解課本上的理論,將每個理論知識點與實際的項目案例相結合,讓學生充分理解理論。在實際講解過程中,對于新開課,新教師若碰到教學學時偏少的狀況,可以言簡意賅地講解重點知識;實踐經(jīng)驗豐富的教師,碰到學時偏少的情況可以精簡案例功能,講解1~2個功能即可。
最后,教師必須強調(diào)實踐的重要性并給出標準的文檔規(guī)范,要求學生按照自己的實際項目書寫標準的文檔。在每一門課程講解完畢后,教師再一次幫助學生回顧該課程在軟件開發(fā)過程中的位置。
以軟件項目管理為例,在正式進入課程教學之前,教師需要做大量的工作,首先需要準備的文檔有項目需求、項目需求分析報告、可行性分析報告、項目開發(fā)計劃書、項目Demo程序演示、軟件項目投標書、軟件項目開發(fā)合同。然后,開始進人軟件開發(fā)項目管理過程教學,軟件項目主要內(nèi)容有成本管理、進度管理、人員管理、風險控制等理論內(nèi)容。實際的軟件項目管理主要分為4個階段:IT項目的啟動階段、IT項目的計劃階段、IT項目的執(zhí)行控制階段、IT項目的收尾階段,這在一般的教材中很少提及,但是教師在內(nèi)容講解中要明確階段任務。IT項目的計劃階段涉及48個文檔;IT項目的執(zhí)行控制階段涉及45個文檔;IT項目的收尾階段涉及14個文檔。
教師在講解合同的內(nèi)容時,可以直接參照“軟件項目開發(fā)合同”進行講解。對于必不可少的合同內(nèi)容,教師就必須跟學生講清為什么必須要包含這些內(nèi)容;講解成本計算的時候,根據(jù)文檔“工作包、進度和預算”進行項目的WBS分解以及基本的估算方法。
總之,由于教材先理論后案例的局限性,在聽課之初,學生覺得枯燥乏味。而教師通過先案例的方式能有效調(diào)動學生在課堂上的學習積極性,為后面的項目實踐奠定基礎。
2.2學生項目實踐環(huán)節(jié)
每一門專業(yè)課都有上機實踐部分,學生在實踐課上主要是書寫文檔。每門專業(yè)課都有各自不同的文檔,軟件工程課程要求學生必須完成標準的13個文檔;軟件測試課程需要軟件測試報告文檔;軟件項目管理課程有127個文檔;面向?qū)ο蟮能浖治龇椒ㄕn程有包含9大部分內(nèi)容的軟件項目分析與設計文檔。每一門課程的文檔內(nèi)容非常多,要求每個學生最好獨立完成,主要訓練每一個學生的文檔書寫和理解能力。
需要強調(diào)的是,學生書寫的項目文檔一定要給出標準的、規(guī)范的文檔格式,包括目錄、段落、標題、字體等排版之類的要求。項目模板可以采用軟件工程國標文檔或者相關的其他標準文檔,最好和某一軟件公司的案例文檔格式相一致。筆者在軟件公司任職過程中,很多剛參加工作的大學生書寫文檔的水平非常差,主要是文檔格式、結構和內(nèi)容混亂,往往給人留下非常不好的印象。整體項目驅(qū)動模式下的課程教學,首先強調(diào)的就是文檔格式和正確的文檔排版,其次才是內(nèi)容的正確性與完整性。
在學生項目實踐中,任課教師最好跟蹤指導。學生每次在實驗課上必須完成相應的實驗,并把實驗的電子文檔通過教學資源管理系統(tǒng)或以電子郵件的方式提交給教師。電子文檔的批改能快速糾正學生文檔格式不規(guī)范以及內(nèi)容方面的錯誤,但這個工作量往往很大,每一次電子作業(yè)批改的工作量往往是學生數(shù)量的3~4倍。這是因為學生按照批改意見進行修改后又會返回給教師,最終達到合格標準的電子文檔往往會被修改2~4次。
2.3考核方式
完成每門課程的項目文檔是學生對文檔書寫熟練程度以及課程內(nèi)容理解的直接反映,也是培養(yǎng)軟件開發(fā)過程中需要具備的素養(yǎng)和習慣的有效途徑,克服學生疏于或懶于書寫文檔的缺陷。因此,教師需要對學生書寫的項目文檔進行考核并將其反映在學生成績上。項目文檔的成績占學生總成績比例的30%~50%較為合理。
2.4教學效果
筆者經(jīng)過近2年的教學實踐,取得了良好教學效果。以中南民族大學軟件工程專業(yè)2008級學生為例,首先,學生很順利地完成了各自的軟件項目,包括中南民族大學學生基金項目;其次,學生能很好地書寫申請軟件項目著作權系列文檔以及畢業(yè)論文,書寫的文檔格式規(guī)范,只需稍加修改就能將文檔立即轉化成學術論文并發(fā)表。這表明學生無論是在文檔格式還是在內(nèi)容編排上都取得了進步,進一步提高了在軟件開發(fā)過程中應有的素質(zhì)。這也是軟件工程專業(yè)學生和計算機其他專業(yè)學生之間非常明顯的差別。
就前2屆學生的就業(yè)情況,筆者回訪了2家用人單位,他們對中南民族大學軟件工程專業(yè)畢業(yè)的學生刮目相看,稱贊學生書寫的項目文檔很規(guī)范。
3 結語
基于整體項目模式下的教學研究是一種全新的探索,筆者積極努力地探索并實踐,教學工作量巨大。為了嚴格要求學生,讓每一個學生都掌握軟件開發(fā)過程的每一方面,我們不對學生進行分組,而讓每個學生自選一個實際項目。即使是同一項目,每個學生也必須獨立書寫文檔。因此,教師對于每門課程文檔的批改至少達到600余次;由于每一份文檔對應不同的項目,對任課教師的要求很高,因此,教師需要對多達100項(有多少學生就有多少項,筆者所教授的每屆軟件工程專業(yè)學生人數(shù)均超過100人)的項目進行細致地分析和判斷。如果系列課程由不同的教師擔任,則需要這些任課教師相互配合并形成教學團隊。筆者也將進一步探索和研究整體項目驅(qū)動模式下軟件工程專業(yè)教學團隊的建設。
(編輯:宋文婷)