摘要:軟件工程實踐作為軟件工程專業(yè)本科生企業(yè)實習(xí)前的綜合實踐課程在培養(yǎng)體系中占有重要地位,其教學(xué)過程不但使學(xué)生在編碼、文檔撰寫和團隊協(xié)作等方面得到了綜合訓(xùn)練,而且也為大四學(xué)生進入企業(yè)實習(xí)提供了很好的崗前培訓(xùn)。為在校內(nèi)營造更貼近實際的軟件開發(fā)氛圍,需要從實踐內(nèi)容、組織方式、實施過程、教師作用以及考核標準等方面進行精心設(shè)計。本文論述了北航軟件學(xué)院本科生軟件工程實踐課程的建設(shè)思路,介紹了實施情況,并對實施中的優(yōu)缺點進行了總結(jié)。
關(guān)鍵詞:軟件工程實踐;實踐內(nèi)容;領(lǐng)域知識
2004年8月,軟件工程知識體(SWEBOK)、軟件工程教育知識體(SEEK)兩個文件最終版的發(fā)布,標志著軟件工程學(xué)科在世界范圍內(nèi)的正式確立,以及在本科教育層次上的迅速發(fā)展。軟件工程、計算機科學(xué)、信息系統(tǒng)、信息技術(shù)并列成為計算學(xué)科下的獨立學(xué)科。其實從2002年7月起,我國首批35所示范性軟件學(xué)院就開始正式招收軟件工程專業(yè)本科學(xué)生,但我國軟件工程學(xué)科的創(chuàng)立則在2004年才陸續(xù)啟動。北航軟件學(xué)院從2002年建院起就一直在探索軟件工程專業(yè)本科層次人才的培養(yǎng)體系,目前基本框架明確,內(nèi)容建設(shè)正在逐步完善。在北航軟件學(xué)院軟件工程本科的4年學(xué)制中,以學(xué)年為單位將專業(yè)培養(yǎng)重點劃分為4個層次:大一為公共基礎(chǔ)、大二為計算機軟件基礎(chǔ)、大三為軟件工程專業(yè)基礎(chǔ),大四為軟件工程實習(xí)。在大三下學(xué)期課程結(jié)束后,所有軟件工程專業(yè)基礎(chǔ)課程,如系統(tǒng)分析與設(shè)計、軟件測試、軟件工程過程和軟件項目管理等都已修完。為了使學(xué)生能更好地適應(yīng)接下來一年的企業(yè)實習(xí)工作,在大三的暑期集中安排了軟件工程實踐課程,對學(xué)生進行規(guī)范化軟件開發(fā)與管理訓(xùn)練。
由于軟件開發(fā)
本身受諸多因素影響,為了能營造一個盡可能接近企業(yè)實際的軟件開發(fā)環(huán)境,需要從實踐內(nèi)容、學(xué)生組織方式、資源配備等方面精心安排。為此,學(xué)院專門立項并成立了由 3 位軟件系統(tǒng)應(yīng)用開發(fā)經(jīng)驗豐富的中、青年教師組成的課題組,負責(zé)該課程的建設(shè)工作。
1教學(xué)目標
軟件工程實踐作為軟件工程專業(yè)本科的必修課程,其目標是[1]:
?培養(yǎng)學(xué)生的文檔撰寫能力和團隊合作精神。
?對學(xué)生進行規(guī)范化軟件開發(fā)和管理的訓(xùn)練。
軟件工程實踐的過程是培養(yǎng)學(xué)生綜合運用所學(xué)知識,解決實際問題的過程,是當(dāng)前貫徹規(guī)范化軟件開發(fā)、管理的有效的途徑。
2實踐內(nèi)容
為實現(xiàn)上述目標,本課程的教學(xué)內(nèi)容將緊緊圍繞軟件開發(fā)中涉及的方法、過程、管理及相應(yīng)支持工具展開,因此實踐的載體——實踐題目是關(guān)鍵。題目過于簡單,無法體現(xiàn)團隊開發(fā)優(yōu)勢,過于難又會因超出學(xué)生現(xiàn)有能力和時間限制而無法完成,挫敗學(xué)生的積極性。在實踐題目選擇中需要綜合考慮如下方面:
1) 業(yè)務(wù)易理解。
軟件工程的應(yīng)用與實際應(yīng)用領(lǐng)域相關(guān),實踐題目的選擇要能體現(xiàn)某一應(yīng)用領(lǐng)域的典型業(yè)務(wù)流程。所涉及的領(lǐng)域知識既要專業(yè),又要讓學(xué)生稍花時間就能快速理解其業(yè)務(wù)。
2) 規(guī)模適中。
實踐題目的規(guī)模要適中,在實踐中,既要讓學(xué)生認識到業(yè)務(wù)理解和系統(tǒng)實現(xiàn)上都有難度,又不至于難以完成,同時還要讓學(xué)生深刻體會文檔撰寫能力、團隊協(xié)作能力、一定的技術(shù)開發(fā)能力在整個項目開發(fā)過程中的作用。
3) 技術(shù)難度適中。
考慮到本科學(xué)生其興趣點主要是編碼,故完成實踐題目所涉及的技術(shù)不宜過于簡單,挫傷其編碼積極性;又不易過難,要使其所需技術(shù)或工具能在借助現(xiàn)有資源(如網(wǎng)絡(luò)、同學(xué)和任課教師)的情況下在短期內(nèi)掌握。這樣通過實踐,不但體驗了規(guī)范化軟件開發(fā)流程,還拓展了技術(shù)能力。
4) 題目數(shù)量適中。
在指導(dǎo)教師能承受的工作量范圍內(nèi),為充分調(diào)動學(xué)生的積極性,實踐題目、數(shù)量要適中,使學(xué)生能根據(jù)其團隊興趣有所選擇。
5) 教師領(lǐng)域知識豐富。
在整個實踐中教師的作用不僅僅是提供指導(dǎo),還扮演客戶/用戶角色,因此授課教師要對實踐題目所涉及的業(yè)務(wù)知識很熟悉,能夠解答實踐題目所涉及的應(yīng)用領(lǐng)域的相關(guān)知識,促使學(xué)生能在短期內(nèi)獲取某一領(lǐng)域的業(yè)務(wù)知識,理解問題背景,為成功解決問題創(chuàng)造有利條件。理解業(yè)務(wù)背景的過程也是有目的地培養(yǎng)學(xué)生解決實際問題的過程。
6) 源于實際。
為了增強實踐的真實性,要選擇源于實際的項目,并以教師整理過的“原始需求”作為原始的用戶輸入。選擇實際項目既有實際意義,又能激發(fā)學(xué)生們的主動參與意識。如在做需求分析時,面對用戶“含糊不清”的原始需求,同學(xué)們需要做很多背景知識的鋪墊才能做到“準確理解”。這些尷尬問題,在軟件開發(fā)中經(jīng)常發(fā)生,作為軟件從業(yè)人員必須面對。也正因為如此,需求分析在軟件開發(fā)中的地位越來越重要。
實踐題目可以由教師自己收集,亦可以向?qū)W生征集。匯總的實踐題目,要根據(jù)上述要點進行遴選,適當(dāng)剪裁,使其更適合于課程要求。在實踐前,要求學(xué)生必須從確定的實踐題目中選擇其一作為實踐項目。這樣做主要有兩點好處,一是在實際應(yīng)用中,大多數(shù)情況下,承擔(dān)任務(wù)的團隊選擇余地較小,這比較符合實際;二是教師團隊需要對授課過程中可能出現(xiàn)的各種問題提前做好準備,以便掌控整個實踐過程。
3組織形式
實際的軟件開發(fā)過程大多是集體行為,因此以團隊形式組織實踐過程是最佳選擇。在教師給定實踐項目集合中,要求學(xué)生組成團隊,選擇其中一個實踐題目,在規(guī)定的時間內(nèi)模擬實際項目的開發(fā)過程,實施實踐活動。
每個學(xué)生團隊由5~6人(不得低于5人)組成,以確保在實踐中能體會到溝通的重要性。團隊形成過程可以采取學(xué)生自由組合提出申請,教師根據(jù)實際情況進行微調(diào)的方式進行,這樣可以在一定程度上規(guī)避團隊成員溝通風(fēng)險。組內(nèi)人員建議角色:需求1人、設(shè)計1人、編碼1~2人、測試1人、項目經(jīng)理1人。
4實施策略
在軟件企業(yè)中,大多數(shù)人都是遵循企業(yè)現(xiàn)有的軟件過程實施軟件開發(fā)。為了讓學(xué)生通過本次實踐能很好地體會軟件開發(fā)過程,即從用戶的原始構(gòu)想到最終可運行系統(tǒng)的演進過程,同時考慮到多數(shù)大三學(xué)生都沒有實戰(zhàn)經(jīng)驗,在實踐開始前,教師組要精心策劃,依據(jù)實際項目的特點、學(xué)生團隊的整體情況及時間等綜合因素,選定軟件過程模型,確定必須執(zhí)行的活動和任務(wù),形成“軟件工程實踐課程實施計劃”。為提高可實施性,計劃應(yīng)該詳盡。要根據(jù)實踐的持續(xù)時間,在計劃中詳細列出各團隊每周或每天應(yīng)完成的工作及作為工作成果的提交物。階段提交物也是重要的過程考核點,要合理、可行,使各團隊稍作努力即可完成。每個團隊要依據(jù)此計劃來精細化團隊成員的具體任務(wù)。要花一點時間向?qū)W生推銷該計劃,給學(xué)生以信心:只要按照計劃每一步都落實到位,實踐項目的成功率就會提升。
5教師作用
軟件工程實踐應(yīng)該以學(xué)生實踐為主,教師講評、答疑為輔的方式實施教學(xué)[1]。在實踐過程中,沒有學(xué)生的積極主動參與,無法達到目的;教師的指導(dǎo)作用不容忽視,學(xué)生因軟件開發(fā)技能、過程理解與項目管理等方面的經(jīng)驗不足,需要教師及時引導(dǎo)而少走彎路。為了幫助學(xué)生更好地工作,在實踐中,教師作用主要體現(xiàn)在如下方面:
1) 適時提供講座。
在實施計劃中應(yīng)明確給出教師什么時間提供相應(yīng)的講座,如在團隊組建前,教師先做“項目啟動”需要考慮的問題的講座,在需求分析期間,教師做需求分析與文檔撰寫方面的講座等。
2) 提供文檔撰寫模板[2]。
軟件文檔,如需求分析規(guī)格說明書等是用戶也是軟件項目管理者關(guān)注的重要提交物,項目成員必須認真對待。在實踐開始前,教師組對每一提交物都應(yīng)提前給出相應(yīng)的撰寫模板,要求學(xué)生按規(guī)定的模板撰寫文檔。文檔撰寫過程也是對學(xué)生進行規(guī)范化訓(xùn)練的一個方面。
3) 及時評審文檔并反饋。
作為階段提交物的文檔是項目開發(fā)過程中的重要成果,教師應(yīng)及時對各團隊提交的各類文檔逐一進行評審,以了解項目的進展狀況。同時,教師對文檔的及時反饋,能很好地解決學(xué)生實踐中的遇到的困惑,同時為了激勵學(xué)生的工作熱情也要對學(xué)生取得的階段性成果及時給予肯定。
4) 隨時隨地答疑。
加強教師在實踐過程中的指導(dǎo)力度是本課程確定成功的關(guān)鍵。為此,要求在實踐過程中,教師的時間投入要足夠,使學(xué)生有任何問題都可隨時與教師交流,尋求幫助。
5) 監(jiān)控各團隊項目進展。
項目管理是軟件工程實踐的重要內(nèi)容,也是軟件開發(fā)過程中的核心活動,為了模擬實際環(huán)境,教師要通過工作日志隨時了解各團隊進展狀況,并根據(jù)需要適時干預(yù),保證各組基本按計劃進行。
總之,在實踐過程中,教師承擔(dān)起了“客戶”、“外援”和“高層項目管理”的職責(zé)。實踐期間要求小組每天提交工作日志,總結(jié)一天的項目實施情況,并明確下一天的實施計劃。
6考核方式
體驗軟件開發(fā)過程、提高文檔撰寫、團隊協(xié)作能力是本課程的授課目標,而軟件開發(fā)的最終目的是要向用戶提交可運行的軟件??己朔绞绞菍嵺`參與者的指揮棒,它充分體現(xiàn)了實踐的最終意圖。因此考核方式既要注重結(jié)果又要注重過程,既要考核團隊協(xié)作又要注重個體能動性,同時又要盡量與社會接軌。為此本課程的考核以團隊為單位從兩個方面進行課程考核:
1) 過程實施成績部分。
該部分主要考核各團隊是否按時提交階段性成果以及階段性成果的撰寫質(zhì)量。
2) 最后成果演示部分。
該部分主要考核各團隊最后的交付軟件或原型系統(tǒng)及其相關(guān)文檔的最終稿。
將過程實施和最后成果演示兩部分成績按一定比例形成團隊成績。
學(xué)生個人的最終成績則以個人所在團隊成績?yōu)榛A(chǔ),根據(jù)組員個人對團隊貢獻業(yè)績系數(shù)進行調(diào)整,得到個人成績。個人對團隊的業(yè)績系數(shù)由每組組長(項目經(jīng)理)根據(jù)組員工作的完成情況給出每個人的業(yè)績系數(shù),要求組員成績不得高于小組成績。
7實踐支持平臺
在整個實踐過程中,教師與學(xué)生之間需要頻繁交流:教師需要定期發(fā)布通知、上傳文檔模板、監(jiān)控交付物提交時間、解答學(xué)生問題;學(xué)生需要根據(jù)計劃按時提交階段成果,為尋求老師或其他學(xué)生的幫助及時提出實踐中遇到的問題。為了教師與學(xué)生順暢交流,實時監(jiān)控整個實踐過程,實踐支持平臺必不可少。
8課程實施情況
2010年7月1日至7月15日,依照上述思想我們對大三143名本科生組成的24個團隊講授了軟件工程實踐課程。在實踐中我們選定了專利應(yīng)用領(lǐng)域的兩個實際的項目:這兩個項目的共同特點是需求中流程的概念比較強,涉及業(yè)務(wù)知識不復(fù)雜,實現(xiàn)中主要涉及的技術(shù)有Web編程、數(shù)據(jù)庫、郵件收發(fā)、界面處理,團隊成員技術(shù)熟練者可輕松在15天內(nèi)完成,技術(shù)儲備不足的團隊,時間有些緊張。在實踐開始前,我們向?qū)W生公布了詳盡到天的具體日程安排,明確給出了教師、團隊的具體工作內(nèi)容和階段提交物。具體提交物集合是軟件文檔(開發(fā)類、過程管理類和用戶類)+可演示的原型或?qū)嶋H系統(tǒng)(最終文檔和代碼)。依據(jù)教師給定的日程安排,各團隊分別細化其具體實施計劃,明確團隊成員每天的任務(wù)安排。要求團隊每天提交工作日志,總結(jié)當(dāng)天項目實施情況,并給出下一天的實施計劃。教師通過各組的工作日志、階段提交
物評審、不定期抽查等方式了解各團隊項目進展情況,逐項對各考核點進行打分,形成實踐過程部分的成績。在實踐結(jié)束后,采用各小組答辯和演示等方式逐一考察各組的實踐成果——所開發(fā)的軟件。從最終提交的軟件成果看,有5個組(占20.8%)提交的軟件系統(tǒng)從功能到界面都相對比較完整,接近實際用戶要求,可以做進一步完善成為實際的軟件系統(tǒng);有14個組(占58.4%)的軟件系統(tǒng)已實現(xiàn)了用戶的基本功能;有4個組(占16.7%)的軟件系統(tǒng)尚處于界面原型階段;還有1個組(占4.1%)因團隊協(xié)作問題,導(dǎo)致軟件系統(tǒng)尚未成型。無論從學(xué)生提交的階段性文檔還是最后的成果演示結(jié)果,都達到了我們的預(yù)期目標。
9調(diào)查問卷
為了能準確了解學(xué)生的真實感受,我們做了調(diào)查問卷,從教師的教學(xué)態(tài)度、教學(xué)內(nèi)容(包括實踐題目的選取和講評內(nèi)容的針對性)、方式與方法(包括實踐能力、文檔撰寫能力和團隊協(xié)作精神的培養(yǎng))、實踐效果(包括學(xué)生的主動參與度和學(xué)生對實踐效果的認可度)4個方面收集了學(xué)生們的反饋。表1給出了調(diào)查問卷的統(tǒng)計結(jié)果。
從表1可以看出,同學(xué)們對本課程的整體滿意度還是很高的。其中,對教師的教學(xué)態(tài)度和在實踐中的作用給與了充分肯定,以教學(xué)為輔、實踐為主的教學(xué)方式對學(xué)生各方面能力的培養(yǎng)是非常有效的。
從學(xué)生反饋信息看,在實踐中大家遇到的主要問題中,技術(shù)方面占27.7%、文檔撰寫方面占22.0%、團隊協(xié)作方面占14.9%和時間緊張問題占14.2%。
在“你認為本課程在教學(xué)內(nèi)容、組織形式、實踐安排等方面有哪些值得發(fā)揚之處”的調(diào)查中,同學(xué)們從14個方面給出了158條反饋意見,其中,認為教學(xué)內(nèi)容、授課方式、組織形式、考核方式、課程計劃安排及支持平臺好的占73.4%,認為教學(xué)效果好的26.6%。
在“你認為本課程哪些方面需要改進”的調(diào)查中,同學(xué)們主要提出了如下改進建議:1)拓寬實踐題目覆蓋的應(yīng)用領(lǐng)域、增加實踐題目數(shù)量。2)延長實踐持續(xù)時間。3)針對學(xué)生在實踐中遇到的技術(shù)問題,增加有針對性的技術(shù)講座。4)適當(dāng)增加文檔撰寫案例等。
10結(jié)語
軟件工程實踐課程,是對學(xué)生三年來所學(xué)的軟件工程理論的綜合訓(xùn)練,這一綜合訓(xùn)練對即將進入企業(yè)實習(xí)的本科生非常重要。實踐過程越接近目前軟件開發(fā)企業(yè)現(xiàn)狀,越能縮短學(xué)生適應(yīng)社會的時間。但這無疑也對教師本身提出了更高的要求,也對軟件工程實踐課程的建設(shè)提出了更高的要求。為了使該課程能持續(xù)地提高教學(xué)效果,尚需要在教學(xué)內(nèi)容與教學(xué)案例建設(shè)、實施過程改進等方面繼續(xù)投入更多的努力。
參考文獻:
[1]