一、軟件工程實踐框架構建
校企結合的軟件工程實踐框架包括教學大綱、案例庫、教師團隊、考核標準、交流平臺和實施反饋6個部分。
1、教學大綱
軟件工程實踐作為軟件工程專業本科階段最后一門2學分的必修課程,是學生進入企業實習前的軟件工程綜合訓練,安排在大三暑假集中2周完成,之后學生進入企業進行為期1年的企業實習。教學目標是培養學生的文檔撰寫能力和團隊合作精神,對學生進行規范化軟件開發和管理的訓練。教學內容應盡量覆蓋目前軟件應用熱點,教學實施采用開放性原則,即任課教師可以根據當年的軟件應用熱點和企業師資狀況,選定該年的教學實踐內容。
2、案例庫
案例庫是整個實踐教學的基礎,以往的實踐課程多采用教師提供的虛擬案例,很難體現實際工程中面臨的一系列問題;而有效的案例必須來自實際項目需求,這些案例可以源于企業實際項目,也可以源于教師的應用研究課題,真正做到將實踐課程融入實際工作環境。實踐案例的內容主要分為3類:軟件應用類(如手機移動軟件開發)、面向領域軟件開發類(如面向金融領域的軟件開發)以及軟件方法應用類(如敏捷軟件開發方法)。在滿足課程教學目標的前提下,實踐案例的篩選要能充分體現軟件企業開發中面臨的典型問題,如需求不穩定等。實踐案例覆蓋的應用領域要寬且涉及的領域知識能讓學生在短期內理解。每個案例所涉及的技術難度和案例規模要適中,能方便學生在兩周內完成并讓參與實踐的學生有成就感。此外,還要考慮實踐案例實施時間和場地的影響等因素,在案例建設中對實際案例進行剪裁,以滿足上述要求。由于不同軟件項目采用的模型或方法不同,其實際開發過程可能差異很大。軟件過程模型既決定軟件項目管理需要監控的里程碑點,又影響過程執行中需要使用的相關模板,因此案例庫建設很重要的一部分內容是針對不同的實踐案例,根據采用的過程模型,確定項目執行中的監控點和成果的展現形式,開發相關標準和模板。案例庫的建設是一個不斷豐富的過程。為激發學生主動參與實踐過程的積極性,要保證每年的實踐案例不重復。
3、教師團隊
軟件工程實踐應該以學生實踐為主、教師講評和答疑為輔的方式實施教學。在實踐過程中,學生如果沒有積極主動參與,那么將無法達到目的;教師的指導作用不容忽視,學生軟件開發、過程理解與項目管理等方面的經驗不足,需要教師及時引導。指導教師要適時開展講座、及時評審文檔并解答學生在實踐中遇到的各種問題,還有更重要的一點是教師要作為客戶回答學生提出的各種有利于澄清需求的問題。實踐的成功實施必須依賴于好的實踐教學團隊。軟件學院教師實踐經驗的局限很難讓學生體會實際的軟件開發過程,企業教師雖然可以彌補這一缺陷,但因企業教師的不穩定性致使所積淀的實踐成果很難延續。為了使學院教師也能在實踐教學中不斷成長,我們組建了以學院教師為主、企業教師為輔的校企結合的實踐教學團隊。學院教師負責教學大綱的修訂、課程的組織安排、案例庫的建設、規范化的指導和充當現場客戶等工作,而企業教師則負責提供企業案例、在校內建立模擬企業環境以及進行實踐現場指導等工作。在企業教師的聘請上,我們以軟件學院現有的企業實習基地單位為突破口,同時借助軟件行業協會等支持,積極與企業聯系,探討企業參與實踐教學的可能方式。為不斷促進實踐教學的開展,軟件工程實踐教學團隊每年定期與合作企業商討當年實踐教學案例的選擇和實施方式,同時共同完成當年實踐教學工作。在校企結合的教師團隊中,學院教師相對穩定,企業教師則根據每年選定的實踐案例需要進行動態調整,聘請最熟悉該實踐案例的高水平企業工程師參與實踐教學,以保證實踐教學效果。
4、考核標準
考核標準是實踐參與者的指揮棒,它充分體現了實踐的最終意圖,既要減少“打醬油”現象,又要扭轉“大作業式”軟件開發局面。團隊開發要充分調動每個人的積極性,這樣才能在有限的時間內向用戶交付更多的功能。此外,通過考核內容引導學生關注用戶的需要,這也是實際軟件項目關注的重點。在實踐中向學生滲透“向用戶交付價值”的思想,即軟件開發者向用戶交付的不僅僅是軟件功能,更重要的是要向用戶交付可以為其創造價值或節約資源的軟件功能。向用戶交付不想要或不感興趣的功能是一種資源浪費,因為每一個軟件功能的開發都需要投入時間、人力等成本。與學生大作業中的虛擬題目不同,軟件開發者追求的目標是以最小代價向用戶交付滿意軟件。基于上述思想,軟件工程實踐課程的考核可以在基本考核標準基礎上進行適當微調,形成個人成績。基本考核標準是以團隊為單位從過程實施和最后成果演示兩個方面進行課程考核。過程實施部分主要考核各團隊是否按時提交階段性成果以及階段性成果的撰寫質量;最后成果演示部分主要考核各團隊最后的交付軟件或原型系統及其相關文檔的最終稿。最終將過程實施和最后成果演示兩部分成績按一定比例形成團隊成績。學生個人成績也受所采用的過程模型的影響,如敏捷過程模型強調團隊的成績就是個人的成績,而瀑布模型比較適合分層管理思想,學生個人成績可以在團隊成績基礎上,根據個人對團隊所做貢獻的業績系數進行調整。
5、交流平臺
在整個實踐過程中,教師與學生之間需要頻繁交流:教師需要定期發布通知、上傳文檔模板、監控項目進展情況、解答學生問題;學生需要針對實踐中遇到的問題尋求教師或同學的幫助,同時根據計劃按時提交階段成果。為了教師與學生之間能夠順暢交流,整個實踐過程需要實時監控,實踐支持平臺也必不可少。在實踐教學平臺建設中,我們從開發與維護的可持續性、學生使用的便利性等方面反復論證,確定“以學院現有的信息化平臺為基礎”的建設原則,在學院的“協同工作與學習系統”中實現“教學輔助”功能并向企業教師開放。該平臺不僅實現了課件、作業的上傳和下載,還成為學生獲取教學補充材料和師生教學互動的直接渠道,具體網址為http://soft.buaa.edu.cn/eCollege/Index.aspx。
6、實施反饋
校企結合的軟件工程實踐框架為軟件工程實踐教學建設與實施提供了依據,但它只是一個框架,規定了軟件工程實踐課程教學的基本內容。每次具體實施都是對該框架的一次驗證,并且可以根據實施情況對框架進行優化和完善,因此將實施反饋作為該框架的重要組成部分,要求每年課程實施完成后根據當年教學主題的不同,開發有針對性的調查問卷,以及時了解課程的實施效果,為持續提升后續實踐教學質量提供動力并指明方向。
二、框架應用
依據前面提出的軟件工程實踐框架,通過與IT行業敏捷軟件開發實踐實施最好的Thought-Works(斯特沃克)公司進行多次洽談,北京航空航天大學軟件學院軟件工程實踐教學團隊于2012年4月確立2012年暑期軟件工程實踐的具體實施方案,確定由7人構成的校企結合指導教師團隊對2009級本科生進行敏捷方法實踐訓練。
1、實踐準備
為了使學院教師和企業教師能很好地合作,在實踐準備階段,學院教師團隊一行3人花費2周共累計5天的時間進入企業體驗生活,與來自企業的4名具有豐富開發經驗的教師組成7人的實踐教師指導團隊。以該公司為某國際機構開發的一個有關慈善業務管理系統項目為實踐案例材料,對其剪裁后,形成了此次實踐教學案例并配備50頁文字材料,提供已運行系統的鏈接網址。為規范整個實踐過程,實踐教師指導團隊根據此次實踐主題,制定了詳細到天的教學實施計劃,明確給出教師、團隊的具體工作內容以及每個階段的提交物,確定學院教師與企業教師的工作重點,同時開發實踐交付物相關文檔的模板。
2、應用效果
2012年6月15日—7月30日,我們依照上述思想對大三139名本科生組成的14個團隊講授軟件工程實踐課程。在6月15日的實踐啟會后,向學生下發案例的相關材料、教學實施計劃及相關標準、模板,讓學生在實踐前就明確驗收標準。為了增強實際項目開發氛圍,我們要求學院指導教師和學生每天按時到實踐場地。學院指導教師每天到實踐現場不定期考查各團隊進度、批改審閱學生提交的階段成果,針對開發出現的技術與管理問題進行現場指導,從客戶角度回答與需求相關的問題。企業指導教師則按計劃在各階段點到實踐現場作團隊指導和總體點評。在第一、第二階段的評審會上,除了指導教師針對每個組作點評外,還邀請做得好的團隊介紹成功經驗,供其他組借鑒。第三階段的驗收包括軟件功能演示和小組答辯。學院指導教師依據最初計劃,對學生的文檔和軟件產品給出綜合成績。為了了解校企結合實踐教學的效果,我們在課后進行針對教師、教學等各個方面的問卷調查,軟件工程實踐課調查問卷見表1。學生對企業教師在實踐指導中的作用給予充分肯定,滿意度達到96.3%;對學院教師在實踐中的指導和評審也很滿意,但是相對來說,學生對學院教師的實踐準備不是很滿意。產生該結果的原因在于:一是學生對案例內容生疏,與以往由學生自己提供實踐項目不同,此次則由教師提供實踐項目并且在實踐啟動會后才下發相關材料;二是對“客戶意圖”理解不夠,與以往大作業中自己既是客戶又是開發者不同,此次實踐項目的客戶是指導教師,他們對案例需求具有解釋權。很多學生在開發中遇到需求不清楚的問題時沒有與教師積極交流,而是“臆斷”需求,導致在階段性檢查中由于沒有正確理解“客戶”需求而受挫。此外,學生普遍反映時間太短,但這恰好符合軟件開發項目的實際情況,軟件開發中最緊缺的資源莫過于時間。學生對此次實踐的整體滿意度為95.56%,還是很高的。這表明以教師為輔、學生為主的校企結合教學模式以及對學生實踐能力和團隊協作能力的培養方式得到了學生的充分肯定。對于該調查中的兩個開放問題:“你認為此次實踐值得發揚的方面有哪些?需要改進的方面有哪些?”學生認為最值得發揚的是企業教師參與實踐的指導,最需要改進的是延長實踐持續時間。該反饋再次驗證了校企結合模式的有效性。
三、結語
軟件工程實踐課程是對本科生3年來所學軟件工程理論的綜合訓練,對即將進入企業實習的本科生非常重要。實踐過程越接近目前軟件開發企業現狀,越能縮短學生適應企業的時間。開放的軟件工程實踐框架為更新實踐教學內容注入了新的活力,企業教師的引入彌補了學院教師實踐知識的局限性,源于企業的真實案例極大地調動了學生的積極性,面向用戶價值的驗收與考核標準引導學生要立足用戶開發軟件,充分利用信息化平臺等手段實現師生線上和線下交流。對于一名合格的軟件工程師,這些訓練必不可少,并且做得越早越好。為了能持續地提高該課程教學效果,我們還需要在真實案例的建設和校企教師團隊特別是高水平企業教師的深度參與等方面不斷努力。
作者:林廣艷 賈經冬 譚火彬 單位:北京航空航天大學 軟件學院