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