林丕源, 王 強, 肖 磊, 惠興海, 劉財興
(1.華南農業大學 軟件學院,廣東 廣州 510642; 2.四川華迪信息技術有限公司,四川 成都 611731)
作為高等學校和專業教育機構,服務于國家經濟、社會發展,為國家產業化鏈條、地方經濟和產業布局謀發展,培養高素質的專業人才是其重要職責與義務。隨著國家軟件及IT產業的快速和深入發展,國家亟需大量高素質的軟件人才。但是,當前我國軟件人才的培養并沒有很好地滿足軟件及IT產業對人才的需求。每年計算機及軟件類專業畢業學生的就業情況,顯示出我國軟件人才培養的質量與定位存在一些問題,主要表現有畢業生項目工程實踐能力弱、對行業應用背景不了解、不懂現代IT企業的規范標準, 不知道信息技術服務標準[1-2]、所學知識與實際應用脫節、無法達到企業的用人要求等。這些問題折射出我國高等教育在軟件人才培養中所存在的不足,特別是在對學生的工程實踐能力培養模式上,沒有下足功夫,效果不佳,不能滿足軟件企業對人才的能力需求。我們認為,要培養出軟件企業所需人才,在培養中應該遵循大型軟件企業的規范標準,從行業規范要求入手,重新思考人才培養目標及內涵、培養方案與模式、管理體制與運行機制,進行系統化的改革與創新。
借鑒西方發達國家走過的教育路線經驗,為貫徹落實《國家中長期教育改革和發展規劃綱要(2010—2020年)》[3],為培養合格的軟件工程人才,建立深入的高校和企業合作培養人才的新機制,實現社會和產業的實際需求與高校人才培養的無縫銜接,是軟件工程教育改革大勢所趨,這也符合國家卓越工程師教育培養計劃的精神。為此,學校和企業應更好地扮演好各自角色,發揮好各自優勢,形成優勢互補;合作的校企雙方需要構建一套完善的長效運行保障機制,建立一支符合人才崗位培養所需的雙師型隊伍,并采用業界普遍認可的工程規范來培養學生的工程實踐能力。這不僅是一種教育體制的改革創新,也是加速經濟發展的催化劑,更是學校、企業和學生的多贏互利模式,具有較大的現實意義。
華南農業大學為培養滿足軟件及IT產業需求的人才,進行多年有效的探索和實踐[4-7],“本科軟件工程人才培養探索與實踐”于2010年獲廣東省教學成果二等獎,“貼近產業的工程化本科軟件人才培養探索與實踐”于2014年獲廣東省教學成果一等獎。
本文以校企合作培養現代軟件企業所需的軟件工程人才為例,論述我們所探索和實踐的一種強調工程規范的分階段成果交付和交叉的軟件工程實訓模式,它能更好地培養學生具備軟件企業所要求的工程實踐能力。
2010年6月,教育部為貫徹落實《國家中長期教育改革和發展規劃綱要》精神,啟動了卓越工程師教育培養計劃[8]。卓越計劃的主要目標是面向工業界、面向世界、面向未來,培養造就一大批創新能力強、適應經濟社會發展需要的高質量各類型工程技術人才。卓越人才教育培養計劃強調行業企業深度參與培養過程,按通用標準和行業標準培養工程人才,強化培養學生的工程能力和創新能力。
在教育部和各級教育管理機構的政策倡導下,各高校根據自身專業的辦學特點開展校企合作,提升學生的綜合技能培養。其中,國家級和省級示范性軟件學院在軟件工程人才培養中表現突出,走在了校企合作培養工程人才的前列。然而,總的來說,目前的校企合作還是較為粗放的,在對軟件工程人才的能力培養上也存在著有待進一步探索和解決的問題,可能涉及到深化校企合作和能力培養等方面。
企業作為市場經濟的經營主體,盈利是其主要經營目標,企業參與合作培養人才的源動力繞不開盈利這一目標。目前已主動或被動地參與軟件工程人才培養的軟件企業,不可避免地會擔心合作對企業業務經營的影響;在沒有相應激勵政策和法規約束的機制下,合作企業確實并沒有把人才培養納入自己的價值鏈中。于是,深入的校企合作人才培養是很難實現的。
目前軟件企業不愿意把過多的精力投入到軟件工程人才的工程實踐能力培養中,尤其不愿意花太多精力通過實訓來培養學生,可能存在下列因素:
(1) 軟件企業接待實訓學生的數量有限。由于沒有形成規模效應,企業難以從通過實訓培養學生中獲得經濟利益。然而,承接實訓的軟件企業的管理成本卻要增加,它們要安排專人管理學生,解決學生吃住等重要問題。
(2) 軟件企業開展實訓業務可能增加巨大風險。例如,學生在企業實訓期間一旦發生安全事故,企業可能要承擔相關費用,更可能影響企業聲譽。
(3) 大多數軟件企業并沒有專門開發實訓所需的教學資源。由于沒有專業化的企業工程師開發案例和課程,因此學生參加實訓很難到達好理想效果。目前的主要做法是把學生放到項目中,讓學生自己跟蹤項目走,缺乏實質性指導、考核、監督和效果評價機制。
(4) 軟件企業在人才培養中不愿付出過高人力成本。處于自身考慮,企業未必愿意把最有經驗的優秀工程師安排到人才培養崗位,并且即使培養出優秀學生,也可能留不下來。
要使得上述因素不再制約校企合作,讓企業能主動深入參與通過實訓培養軟件工程人才,只有校企雙方互利共贏,尤其是企業能從中獲得應有的利益,才能實現校企合作的可持續發展。
對于軟件工程學生而言,培養其工程實踐能力是非常重要的[9]。但是,目前在對軟件工程人才的實踐技能培養中,參與校企合作的有不少是軟件技能培訓公司或培訓機構,而非真正具有實力的規范的軟件研發企業。這些培訓公司或機構專業技術能力較弱,普遍缺乏規范意識和實施能力,自身沒有足夠的不斷獲得的中大型軟件項目支撐和專業化實施工作師;它們主要以培養學生的具體開發能力為主,忽略了對學生進行工程規范訓練。
在軟件培訓公司對學生進行軟件開發實踐訓練中,幾乎是按照中小型公司的粗放式開發方式展開,每個學生被分到一個項目組,從頭到尾參與一個項目的需求→設計→實現→測試→部署的全過程,并伴隨成果交付。其結果,學生不能理解每個階段的交付標準,不知道每個階段到底要交什么成果,也不知道自己每個階段完成的工件到底符不符合要求。
在這樣的模式中,由于需求、設計和編碼都是學生項目組自己完成,在整個項目開發過程中隨意性大,項目經理對項目的管理控制弱,每個成員根據自己的理解會隨時變更需求和設計,影響了項目組成員之間的合作。
同時,由于軟件本身的特點,本應在需求、設計階段發現的問題沒有發現和及時解決,很多學生都覺得反正都是自己完成,錯了可以改、漏了可以補,因此造成大量問題集中到實現、測試階段才發現。這造成了軟件質量嚴重下降,工作量和成本急劇增加,交付工期延后,最終影響項目的收益,也不符合國家軟件工程規范中的軟件開發與維護標準[10]。
上述目前普遍采用的實踐技能培養模式,從工程角度講,是不夠理想的。這種模式沒有強調規范的軟件開發過程,學生沒有得到起碼的工程規范訓練,也無法對學生的工作進行度量[11]。
軟件開發是一個工程化過程。軟件工程的目標是找到指導軟件開發過程進而生產出高效的、可靠的軟件產品的原則[12]。因此,要培養合格的軟件工程人才,就應該指導學生懂得并實踐軟件開發的工程化過程。當開展以實訓方式培養軟件工程人才的教學時,就應該盡量按照工程方法管理好項目過程,即軟件開發的工程化過程。項目過程中,每個階段工作任務明確,成果按時交付,每項工作都按規范做好。
由于現代商業軟件工程項目的大規模和復雜性,所組建的項目團隊成員之間必須分工明確,才能實現軟件開發滿足用戶需求、分階段及時交付成果、按期提交無故障軟件系統,并且不超過預算獲得最大經濟效率。為此,商業軟件項目開發是以質量保證為基礎,以項目過程、方法和工具為基本要素的系統工程。為了保證順利地完成軟件工程項目,必須分階段對項目階段成果進行及時評審和交付,以滿足下一個階段的工作要求。大型的軟件企業,一個商業軟件項目的不同階段的工作,通常會由不同的團隊或成員來完成,并非一個團隊從頭到尾完成一個軟件項目所有階段的工作。
為了使培養出的軟件工程人才能適應現代軟件企業的業務需求,經過長期思考,我們提出強調工程規范的分階段成果交付和交叉的軟件工程實訓模式。該模式以真實商業軟件項目為紐帶,按項目組建學生項目團隊并分階段開展工作,每個團隊在每個階段結束時交付工作成果給另一個團隊,項目不同階段的工作在團隊間進行交叉。在開展該模式的實訓時,必須有優秀的規范的軟件企業的深度參與,企業發揮其技術和管理優勢,強化學生工程規范意識,讓學生獲得軟件企業所要求的工程實踐能力。
依據軟件能力成熟度模型集成(Capability Maturity Model Integration,CMMI)[13],大型軟件企業在從事商業軟件項目開發活動時遵循的規范,借鑒歐盟認可的信息時代的技能框架(Skills Framework for the Information Age,SFIA)[14]IT人才標準,根據軟件從業人員的崗位技能組成軟件項目開發團隊。通常團隊配置有項目經理、需求分析師、系統構架師,系統設計員、編碼人員、測試人員、界面設計員、配置管理員、質量保證員等角色。不同角色承擔不同的工作職責,需求分析師策劃和完成項目需求開發工作,系統構架師根據項目需求搭建符合要求的系統構架工作,系統設計員按照提交的需求工件完成系統設計工作、項目開發人員根據系統設計完成編碼工作。項目團隊角色之間主要通過工作成果完成項目階段交付工作,相關工作成果必須符合交付標準,以確保每個階段的工作成果都符合要求。
強調工程規范的分階段成果交付交叉實訓模式,就是學習軟件企業按照CMMI來組織軟件工程項目開發的方法進行實訓,依托軟件企業的真實項目將學生組織成軟件項目開發團隊,每個學生在團隊中擔任不同角色,實現“做中學”[15]。每個團隊在每個階段結束時交付工作成果,通過抽簽將工作成果移交給其他團隊,并開展下一個階段工作。整個工作過程見圖1。
假設參加實訓的學生按照不同的商業軟件項目組建了三個軟件項目開發團隊A、B和C;
按照統一軟件過程(Rational Unified Process,RUP)[16]開發項目,在先啟階段每個團隊承擔不同的商業項目的需求分析;
在先啟階段工作結束進入精化階段時,團隊A的項目工作階段成果移交給團隊B,團隊B組的項目工作階段成果移交給團隊C,團隊C組的項目工作階段成果移交給團隊A;
在精化階段工作結束進入構建階段時,團隊A的項目工作階段成果移交給團隊C,團隊B組的項目工作階段成果移交給團隊A,團隊C組的項目工作階段成果移交給團隊B;

圖1 分階段成果交付交叉實訓模式工作過程
當構建階段結束進入最后產品化階段時,團隊A、團隊B和團隊C組再回到各團隊,各團隊承擔項目的需要驗證、測試和部署。
以上流程從制度上保證了每個項目階段結束后的工作成果必須符合交付標準,下一個階段的團隊才能正常開展工作,團隊之間對項目的正確理解和信息的準確傳遞完全依賴階段的工件(包括文檔、原型、模型和程序等),從而避免了每個階段工作成果隨意更改和變更,客觀上使下一個階段的團隊對前一個階段團隊的工作成果進行了監督和檢查,符合軟件開發的管理流程。
現今的軟件工程和計算機類專業的大多數學生,比較注重程序編碼,覺得只要編好程序,項目能運行就可以部署交付了。但是,在實際的商業軟件項目開發中,程序編碼一般只占整個項目工作量的30%左右。大型的軟件企業更加強調工程規范,強調團隊合作和項目成果規范。從軟件工程看,“項目”較之于“程序”有重要的本質的區別。“項目”強調團隊工作成果的規范,其所包含的內容遠遠超越“程序”層面,“程序”只是“項目”的一小部分。軟件項目開發團隊在項目過程中所積累的所有文檔、模式、原型和設計圖表等更能體現“項目”的核心,因此理應是軟件工程專業畢業生應該學習和掌握的核心技能。
軟件工程專業畢業生將就職于軟件企業作為軟件項目開發團隊成員,如何能更快更好地融入軟件項目團隊至關重要。正確理解項目每個階段的工作任務和項目分工的角色職責是關鍵,強調工程規范的分階段成果交付交叉實訓模式可以很好地幫助學生實現這一目標。
該模式以CMMI-3/ISO9001:2008[17]工作規范作為指南,如圖2所示,重點強化了對學生的工程規范意識的培養。其中,每個階段的角色分工和工作成果交付規范要求十分重要,它們為軟件項目開發提供過程管理基礎,為后續人員開展工作提供必須支持。后續人員只需熟悉標準工件成果,就能開展項目的二次開發、系統維護和系統支持等工作,從而避免了項目依賴于個人能力,避免了項目團隊成員因為跳槽和企業內部人事變動所帶來的項目風險。

圖2 CMMI-3/ISO9001:2008工作規范
強調工程規范的分階段成果交付交叉軟件工程實訓模式,對參加實訓的學生是更具工程價值的軟件工程項目訓練,學生完成的是真實商業項目,體驗的是真實項目過程,扮演的是真實角色,需要按時交付負責任的工作成果。通過這樣的訓練,學生對體現“項目”核心的文檔、模式、原型和設計圖表等有更真切的體會,對工程規范有深刻的認識,學生會因此而初步具備軟件企業所要求的工程實踐能力。
華南農業大學軟件學院是廣東省示范性軟件學院,招生一本學生;四川華迪信息技術有限公司是教育部授權的軟件工程專業大學生實習實訓基地。從2007年開始,雙方開展實質性合作,共同培養軟件工程專業學生。目前,經過雙方合作,華南農業大學軟件學院軟件工程專業是廣東省特色專業、廣東省專業綜合改革試點專業、廣東省人才培養模式創新實驗區專業,雙方合作建設的工程教育中心成為國家級大學生校外實踐教育基地和廣東省大學生實踐教學基地。
華南農業大學軟件學院和四川華迪信息技術有限公司在多年密切合作的基礎,經過深入交流、探討和精心準備,于2013年開展了強調工程規范的分階段成果交付交叉實訓模式的實踐。
應用該模式,2013年華南農業大學軟件學院軟件工程專業的116名學生,按不同商業軟件項目組建成18個軟件項目開發團隊,在四川華迪信息技術有限公司參加為期3個月的實訓。在實訓中,公司使用企業真實項目,讓學生經歷真實工程過程,學生在團隊中擔任真實角色,每個階段實現工作成果交付和交叉,對項目過程和工作成果進行評估、考核和驗收,整個實訓過程遵循CMMI-3/ISO9001:2008規范。
在實訓過程中,我們保持對學生跟蹤調查,收集學生的心得體會、意見反饋和總結材料。學生對強調工程規范的分階段成果交付交叉實訓模式高度認可。實踐表明,實訓取得了令人滿意的效果。總結該實訓模式所獲得的成功,主要體現在以下幾個方面:
(1) 強化了學生對軟件開發標準化以及規范性、軟件工程的工程化過程及過程完整性應用的理解。
(2) 學生懂得了項目團隊成員之間的溝通和協調工作機制,學習和實現了項目團隊成員之間和項目團隊之間的有效溝通。
(3) 流程上對項目團隊之間的規范約束,確保了軟件質量。項目團隊在完成每個階段成果后,相互之間對移交的成果開展同行評審并相互考核,迫使每個項目團隊自覺按照規范要求工作。
(4) 通過階段交叉直觀暴露了每個項目團隊在各階段的學習“盲區”,學生更深刻地體會到文檔和工件在軟件工程中的重要性,培養了學生項目管理經驗。
(5) 所有學生一致認為做好需求開發和需求管理是項目成功最重要要素之一。因為項目需求貫穿整個項目開發周期,整個項目要做什么,不做什么,做到什么程度,在需求階段必須進行范圍界定,同時在后期的項目開發過程中對變化的需求應進行嚴格管理,做到項目需求在需求→設計→實現→測試→部署各階段之間正反追溯。
當然,強調工程規范的分階段成果交付交叉實訓模式無論對學生還是軟件企業也帶來了新的挑戰。
(1) 參加實訓的學生幾乎都是沒有任何軟件工程項目經驗的,加上對于軟件開發過程的理解不足,工作交叉在各個項目團隊中第一個階段推動較為困難,需要企業工程師不斷進行跟蹤管理和強化指導,必要時進行干預來推動項目。
(2) 在商業軟件企業中這種模式是基于項目團隊組成員之間和項目團隊之間技能水平符合崗位要求的情況下開展的工作模式;但參加實訓的學生并不具備這樣的條件,如何讓學生盡快理解和融入這種實訓模式,對企業組織管理者提出了更高的要求。
(3) 為保證該模式的實訓工作有效實施,實訓前校企雙方必須根據學生的知識結構詳細訂制切實可行的實訓目標、實訓內容、實施方案、保障措施、工程師配備等。
(4) 企業工程師在整個項目推動過程中,要嚴格按照工程規范進行,并引導學生盡快進入角色,讓學生進入自主的、積極主動的工作方式,在整個實踐過程中真切體會到以后正式崗位的職責,從而在心理上建立一種自信而努力的態度。即在“授人以魚”的同時,實現“授人以漁”。
強調工程規范的分階段成果交付交叉軟件工程實訓模式,以真實商業軟件項目組建軟件項目開發團隊,整個實訓工作過程符合大型軟件企業項目開發的CMMI規范,實現分階段成果交付和工作交叉,對項目過程進行有效管理。該模式必須有優秀的規范的軟件企業的深度參與,軟件企業發揮其技術和管理優勢,實現對學生進行工程規范訓練,讓學生初步具備現代軟件企業所要求的工程實踐能力。
利用該模式進行軟件工程項目實訓,參加實訓的學生能清楚地理解軟件項目開發每個階段的工作成果、交付標準,工作任務的分工、職責和團隊合作關系,清楚理解每個階段訓練目標和具體內容,真實感受到商業軟件項目的開發要求和工作規范。
華南農業大學軟件學院在四川華迪信息技術有限公司的實踐證明,該軟件工程實訓模式是成功的。
[1] 國家信息技術服務標準工作組. 中國信息技術服務標準(ITSS)白皮書第二版[EB/OL]. 工業和信息化部軟件服務公司, 2014. http://www.itss.cn/
[2] 國家信息技術服務標準工作組. 中國信息技術服務標準(ITSS)白皮書第一版[EB/OL]. 工業和信息化部軟件服務公司, 2010. http://www.itss.cn/
[3] 新華社授權發布. 國家中長期教育改革和發展規劃綱要(2010-2020年)[EB/OL].新華社北京7月29日電. http://news.xinhuanet.com /edu/2010-07/29/c_12389320.htm
[4] 林丕源, 劉才興,張明武,徐建民. 軟件工程專業的實踐教學改革初探[J]. 實驗室研究與探索, 2007, 26(12): 238-240, 247.
LIN Pi-yuan, LIU Cai-xing, ZHANG Ming-wu, XU Jian-min. Employment obtaining oriented reform of software engineering major practice teaching[J]. Research and Exploration in Laboratory, 2007, 26(12): 238-240, 247.
[5] 林惠強,劉才興,林丕源. 軟件工程課程啟發式教學的研究與實踐[J]. 實驗室研究與探索, 2008, 27(5): 112-114, 133.
LIN Hui-qiang, LIU Cai-xing, LIN Pi-yuan. Research and practice of the elicitation teaching method of software engineering course[J]. Research and Exploration in Laboratory, 2008, 27(5): 112-114, 133.
[6] 林丕源, 劉才興.本科軟件人才培養探索與實踐[J].計算機教育, 2009(16): 77-79.
LIN Pi-yuan, LIU Cai-xing. Exploration and practice of software talent cultivation for bachelor students[J]. Computer Education, 2009(16): 77-79.
[7] 林丕源,劉財興,黃大乾.以問題求解能力為核心的IT人才培養途徑探析[J]. 黑龍江高教研究, 2012, 30(8): 126-129.
LIN Pi-yuan, LIU Cai-xing. Exploration and analysis of IT talent cultivation approaches centered on problem-solving ability[J]. Heilongjiang Researches on Higher Education, 2012, 30(8): 126-129.
[8] 教育部網站. 教育部23日啟動實施“卓越工程師教育培養計劃”[EB/OL]. 中央政府門戶網站,2010年06月23日. http://www.gov.cn/gzdt/2010-06/23/content_1635114.htm
[9] (美)Roger S Pressman. 軟件工程:實踐者的研究方法[M]. 鄭人杰、馬素霞等譯. 7版. 北京:機械工業出版社,2011.
[10] 中國質檢出版社第四編輯室. 計算機軟件工程國家標準匯編-軟件開發與維護卷[M]. 2版. 北京:中國標準出版社,2011.
[11] Capers Jones. Applied Software Measurement: Global Analysis of Productivity and Quality[M]. 3rd Edition. McGraw-Hill Osborne Media, 2008.
[12] J. Glenn Brookshear. Computer Science An Overview [M]. 11th Edition. Addison-Wesley 2012, Massachusetts, p299.
[13] CMMI Product Team. CMMI for Development [EB/OL]. Software Engineering Institute, Carnegie Mellon University, 2010. http://cmmiinstitute.com/cmmi-solutions/cmmi-for-development/
[14] The SFIA Foundation. The Skills Framework for Information Age [EB/OL]. http://www.sfia-online.org/
[15] 盧 葦, 邢薇薇. 產學研結合做中學育人[J]. 高等工程教育研究, 2011(5): 32-39, 71.
Lu Wei, Xing weiwei. Cooperation among Industries-Universities -Research institutes and education through practices[J]. Research in Higher Education of Engineering, 2011(5): 32-39, 71.
[16] IBM Rational Team. RUP: Best practices for design, implementation and effective project management [EB/OL]. http://www-01.ibm.com /software/rational/rup/
[17] ISO 9000-Quality management [EB/OL]. http://www.iso.org/iso/home/standards/management-standards/iso_9000.htm
加快解決經濟社會發展對高質量多樣化人才需要與教育培養能力不足的矛盾、人民群眾期盼良好教育與資源相對短缺的矛盾、增強教育活力與體制機制約束的矛盾,為教育事業持續健康發展提供強大動力。
——摘自《國家中長期教育改革和發展規劃綱要》