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