李彤 代飛 沈勇
摘要:針對軟件工程碩士培養(yǎng)存在的問題,借鑒CDIO工程教育模式,結(jié)合國情和軟件工程碩士培養(yǎng)的要求,提出軟件工程碩士培養(yǎng)的SE-CDIO方法,從構(gòu)思、設(shè)計、實現(xiàn)、運作等4個階段闡述如何建立軟件工程碩士分階段的人才培養(yǎng)過程,實施軟件工程碩士培養(yǎng)的教學(xué)改革與創(chuàng)新。
關(guān)鍵詞:軟件工程碩士;人才培養(yǎng)過程;CDIO;人才培養(yǎng)方法
0.引言
軟件產(chǎn)業(yè)作為國民經(jīng)濟信息化的基礎(chǔ),已經(jīng)涉足工業(yè)、農(nóng)業(yè)、商業(yè)、金融、科教文衛(wèi)、國防和百姓生活等各個領(lǐng)域。由于軟件產(chǎn)業(yè)的發(fā)展和軟件在各行各業(yè)的廣泛應(yīng)用,軟件工程師在規(guī)模上已大大超過了硬件工程師,人才需求日益旺盛且缺口較大。為適應(yīng)我國經(jīng)濟結(jié)構(gòu)戰(zhàn)略性調(diào)整,實現(xiàn)軟件產(chǎn)業(yè)和軟件人才培養(yǎng)的跨越式發(fā)展,國務(wù)院國發(fā)[2011]4號文件《國務(wù)院關(guān)于印發(fā)進一步鼓勵軟件產(chǎn)業(yè)和集成電路產(chǎn)業(yè)發(fā)展若干政策的通知》中,以三個條款的強度,明確要求“要加強軟件學(xué)院和軟件工程專業(yè)的建設(shè)”,進一步要求軟件學(xué)院必須成為國家高層次軟件人才的培養(yǎng)基地,以培養(yǎng)出符合市場要求、面向產(chǎn)業(yè)發(fā)展的工程型國際化的軟件人才。
長期以來,由于培養(yǎng)目標(biāo)單一,高校軟件工程碩士培養(yǎng)不論在數(shù)量上還是在質(zhì)量上,都不能滿足產(chǎn)業(yè)高速發(fā)展的需要,無法為產(chǎn)業(yè)的發(fā)展壯大提供強有力的支持。軟件工程碩士來源龐雜,專業(yè)背景、工作背景千差萬別,培養(yǎng)過程中存在不規(guī)范的情況。及時轉(zhuǎn)變辦學(xué)觀念,以工程型、國際化軟件人才培養(yǎng)為目標(biāo),從過程管理的角度,提出將CDIO工程教育模式引入到軟件工程碩士培養(yǎng)過程,從構(gòu)思、設(shè)計、實現(xiàn)、運作4個階段,對軟件工程碩士的培養(yǎng)環(huán)節(jié)進行規(guī)范,以確保人才的培養(yǎng)質(zhì)量。
1.CDIO工程教育模式與軟件工程碩士培養(yǎng)現(xiàn)狀
1.1CDIO工程教育模式
CDIO工程教育模式是近年來國際工程教育改革的最新成果,是由麻省理工學(xué)院、瑞典皇家工學(xué)院等4所大學(xué),自2000年起,經(jīng)過4年探索研究后創(chuàng)立的先進工程教育理念。CDIO模式以構(gòu)思(conceive)、設(shè)計(design)、實現(xiàn)(implement)、運作(operate)為主線,以產(chǎn)品從研發(fā)到運行的生命周期為載體,將基礎(chǔ)知識、個人能力、團隊協(xié)作與社會環(huán)境融合在一起,注重理論與實踐的結(jié)合。CDIO教學(xué)模式應(yīng)用于我國的一些高校,已經(jīng)取得了初步成果。
1.2軟件工程碩士培養(yǎng)現(xiàn)狀
近年來,隨著我國軟件產(chǎn)業(yè)的快速發(fā)展,軟件工程碩士培養(yǎng)也取得了長足的進步。在取得進步的同時,軟件工程碩士培養(yǎng)也存在巨大的挑戰(zhàn):現(xiàn)有的軟件工程碩士培養(yǎng)過程存在著重視理論和技術(shù)、輕視實踐、忽視運作(指推廣應(yīng)用和運營)等問題。其特點是:①在辦學(xué)機制上,基本是以學(xué)校為中心,缺乏與產(chǎn)業(yè)和社會的溝通和互動;②在教學(xué)方法上,以教師為中心,以課堂講授為主,以理論考試成績評價學(xué)生學(xué)習(xí);③在師資建設(shè)方面,片面強調(diào)高學(xué)歷、高學(xué)位,缺乏對教師產(chǎn)業(yè)背景和工程實踐經(jīng)驗的要求;④在課程設(shè)置上,以學(xué)科為導(dǎo)向,強調(diào)知識的完備性和系統(tǒng)性;⑤在評價體系上,注重學(xué)生理論學(xué)習(xí)和考試成績,缺乏對實踐能力的考核。但為了解決上述問題,又走向了另外一個極端,出現(xiàn)了片面強調(diào)實踐環(huán)節(jié)、不重視理論基礎(chǔ)、忽視“運作”的問題,從而造成理論和實踐之間的比重?fù)u擺不定、沒有一個既定的方針、按下葫蘆浮起瓢的局面。因此,探索一條新的符合產(chǎn)業(yè)發(fā)展要求的新型軟件工程碩士培養(yǎng)模式,就必須從解決上述“脫節(jié)”著手。
2.借鑒CDIO工程教育模式,提出SECDIO方法
鑒于傳統(tǒng)的軟件工程碩士培養(yǎng)過程存在從理論到技術(shù)、從技術(shù)到生產(chǎn)、從生產(chǎn)到運行的脫節(jié),CDIO工程教育模式強調(diào)以產(chǎn)品從構(gòu)思研發(fā)到運行的生命全過程指導(dǎo)教學(xué)過程,這與軟件工程碩士培養(yǎng)需求非常吻合。為此,我們結(jié)合國情和軟件工程人才培養(yǎng)的要求,將CDIO工程教育模式與軟件工程相結(jié)合,提出了軟件工程碩士培養(yǎng)的SE-CDIO方法(SE是軟件工程的英文縮寫),實施軟件工程碩士培養(yǎng)的改革與創(chuàng)新。
SE-CDIO方法的內(nèi)涵是讓學(xué)生經(jīng)歷從理論到技術(shù)、從技術(shù)到生產(chǎn)、從生產(chǎn)到運營的全過程。進一步說,它是與軟件生命周期緊密結(jié)合而提出的軟件工程人才培養(yǎng)模式,以軟件生命周期為載體,集構(gòu)思(理論)、設(shè)計(技術(shù))、實現(xiàn)(落實)和運作(推廣應(yīng)用和運營)于一體,讓學(xué)生主動地、實踐地、各階段有機聯(lián)系地學(xué)習(xí),經(jīng)歷從理論到技術(shù)、從技術(shù)到生產(chǎn)、從生產(chǎn)到運營的全過程,讓理論、技術(shù)、實踐、運營各部分按比例協(xié)調(diào)發(fā)展,并能根據(jù)實際情況動態(tài)調(diào)整。具體而言,各階段的要求如下:
(1)構(gòu)思階段(C):運用軟件工程原理,構(gòu)思學(xué)生畢業(yè)論文所需研發(fā)的項目。該項目要求與學(xué)生的實際工作背景相關(guān),在分析、思考、討論和調(diào)研的基礎(chǔ)上,進行可行性研究和需求分析,并按照國家標(biāo)準(zhǔn)《GB/T 8567-2006計算機軟件文檔編制規(guī)范》(以下簡稱國標(biāo))的要求完成《軟件需求規(guī)格說明》等相關(guān)文檔的編制。
(2)設(shè)計階段(D):運用軟件工程方法,完成軟件系統(tǒng)的設(shè)計,包括軟件體系結(jié)構(gòu)設(shè)計、構(gòu)件設(shè)計、數(shù)據(jù)庫設(shè)計和接口設(shè)計,從而進一步加深學(xué)生對軟件工程原理、方法和技術(shù)的理解和再認(rèn)識,并按照國標(biāo)完成《軟件設(shè)計說明》等相關(guān)文檔的編制。
(3)實現(xiàn)階段(I):在計算機上完全實現(xiàn)軟件系統(tǒng)并完成所有測試。本階段培養(yǎng)學(xué)生的實干精神、工程能力和團隊精神,并按照國標(biāo)完成軟件測試報告軟件產(chǎn)品規(guī)格說明等相關(guān)文檔的編制,完成全部源代碼的編寫。
(4)運作階段(O):實現(xiàn)軟件系統(tǒng)的運營,包括建立應(yīng)用、營銷和服務(wù)渠道,讓系統(tǒng)投入實際應(yīng)用,培養(yǎng)學(xué)生的市場能力和服務(wù)能力,最后完成軟件產(chǎn)品運作總結(jié)(國標(biāo)沒有規(guī)定,由教師確定寫作大綱)及其他相關(guān)文檔。
3.軟件工程碩士培養(yǎng)過程
SE-CDIO為指導(dǎo)的軟件工程碩士人才培養(yǎng)過程由構(gòu)思、設(shè)計、實現(xiàn)、運作4個活動組成。需要說明的是,Petri網(wǎng)是1962年由德國科學(xué)家C.A.Petri在博士論文《用自動機通信》中創(chuàng)立的一種網(wǎng)狀結(jié)構(gòu),被稱為“Petri網(wǎng)”。
Petri網(wǎng)是一個四元組∑=(P,T,F(xiàn),M),其中:①P∪T≠∮,習(xí)慣稱尸為庫所集,T為變遷集;②P∩T=∮;③F∈(P×T)∪(T×P),稱F為流關(guān)系;④映射M:P→{0,1,2,3…}稱為Petri網(wǎng)的一個標(biāo)識。通常用Mo表示Petri網(wǎng)的初始標(biāo)識。通常,為了圖形化的直觀表示接口Petri網(wǎng),用圓圈表示P中的元素,用矩形框表示丁中的元素,用有向邊表示F中的元素,若(x,y)∈F,則從x到y(tǒng)畫一條有向邊。
3.1構(gòu)思活動的細(xì)化過程
構(gòu)思活動輸入“研發(fā)項目的想法”,輸出“軟件需求規(guī)格說明”,其細(xì)化過程如圖1所示。
具體而言,選擇需求分析方法是指學(xué)生可以選擇采用面向?qū)ο蠓治龇椒?,或結(jié)構(gòu)化分析方法,對研發(fā)項目進行需求分析。若采用面向?qū)ο蟮男枨蠓治龇椒?,則業(yè)務(wù)需求描述需采用活動圖,給出具體的業(yè)務(wù)流程;功能需求分析需采用用例圖和用例說明,給出具體的功能需求描述;數(shù)據(jù)需求分析需采用概念類圖,給出具體的數(shù)據(jù)需求描述;非功能性需求分析需采用文本方式,給出具體的非功能需求描述。若采用結(jié)構(gòu)化的需求分析方法,則業(yè)務(wù)需求描述需采用流程圖,給出具體的業(yè)務(wù)流程;功能需求分析需采用數(shù)據(jù)流圖和數(shù)據(jù)字典,給出具體的功能需求描述;數(shù)據(jù)需求分析需采用IPO(input process output)圖,給出具體的數(shù)據(jù)需求描述;非功能性需求分析需采用文本方式,給出具體的非功能需求描述。
3.2設(shè)計活動的細(xì)化過程
設(shè)計活動輸入“軟件需求規(guī)格說明”,輸出“軟件設(shè)計說明”,其細(xì)化過程如圖2所示。具體而言,選擇設(shè)計方法是指學(xué)生可以選擇采用面向?qū)ο蟮脑O(shè)計方法,或結(jié)構(gòu)化的設(shè)計方法,對研發(fā)項目進行設(shè)計。若采用面向?qū)ο蟮脑O(shè)計方法,則總體設(shè)計需采用包圖給出系統(tǒng)的體系結(jié)構(gòu)設(shè)計;功能模塊設(shè)計包含兩個子活動:功能結(jié)構(gòu)設(shè)計和功能設(shè)計,其中,功能結(jié)構(gòu)設(shè)計也需采用包圖給出具體模塊的結(jié)構(gòu)設(shè)計。功能設(shè)計包含3個任務(wù):類圖設(shè)計、時序圖設(shè)計、核心處理流程設(shè)計(活動圖給出)。若采用結(jié)構(gòu)化的設(shè)計方法,則需采用層次結(jié)構(gòu)圖(即H圖)給出系統(tǒng)的體系結(jié)構(gòu)設(shè)計;功能模塊設(shè)計包含兩個子活動功能結(jié)構(gòu)設(shè)計和功能設(shè)計,其中,功能結(jié)構(gòu)設(shè)計也需采用層次結(jié)構(gòu)圖給出具體模塊的結(jié)構(gòu)設(shè)計;功能設(shè)計包含3個任務(wù):輸入數(shù)據(jù)設(shè)計、輸出數(shù)據(jù)設(shè)計、處理數(shù)據(jù)設(shè)計,并給出處理流程圖。
需要說明的是,學(xué)生選擇的需要分析方法必須與選擇的設(shè)計方法保持一致。也就是說,不允許在構(gòu)思階段選擇結(jié)構(gòu)化需求分析方法,但在設(shè)計階段選擇面向?qū)ο蟮脑O(shè)計方法。
3.3實現(xiàn)活動的細(xì)化過程
實現(xiàn)活動輸入“軟件設(shè)計說明”,輸出“軟件產(chǎn)品”,其細(xì)化過程如圖3所示。首先,依據(jù)“軟件設(shè)計說明”,選擇合適的程序設(shè)計語言。隨后,對各功能模塊進行并行編碼實現(xiàn)。再經(jīng)過單元測試、功能測試、系統(tǒng)測試和驗證測試,以最終完成軟件產(chǎn)品的開發(fā)。
3.4運作活動的細(xì)化過程
運作活動輸入“軟件產(chǎn)品”,輸出“軟件變更記錄”“用戶手冊”“客戶滿意度測試報告”。其細(xì)化的過程如圖4所示。具體而言,變更管理和版本管理是指學(xué)生就試運行階段和產(chǎn)品維護階段產(chǎn)生的問題,對系統(tǒng)進行設(shè)計優(yōu)化及編碼改進。為方便對整個項目的監(jiān)控,在改進的同時進行變更控制及版本控制,并產(chǎn)生“軟件變更記錄”。用戶培訓(xùn)要求學(xué)生編寫“用戶手冊”輔助產(chǎn)品使用者了解產(chǎn)品。試運行階段是指學(xué)生將產(chǎn)品移植到用戶使用環(huán)境中進行測試。若測試結(jié)果表明存在問題,學(xué)生需進入設(shè)計優(yōu)化階段對產(chǎn)品進行變更,為了使開發(fā)過程高效且可控,學(xué)生需進行變更控制。若測試結(jié)果良好,產(chǎn)品進入發(fā)布階段。發(fā)布后用戶將產(chǎn)品使用中出現(xiàn)的問題反饋給學(xué)生,學(xué)生需根據(jù)問題進行軟件維護。軟件維護包含糾錯性維護、適應(yīng)性維護、完善性維護及預(yù)防性維護多個方面,每個方面都會涉及對軟件的改進和演化。在改進和演化同時產(chǎn)生版本的變更,為此學(xué)生需進行版本控制;根據(jù)需要定期向用戶發(fā)送“顧客滿意度調(diào)查表”,收集相關(guān)意見和建議;分析產(chǎn)品或體系存在的問題,識別改進時機、改進地方及宜采用的糾正和預(yù)防措施,并編寫“客戶滿意度測試報告”;當(dāng)項目組對項目進展進行內(nèi)部審核結(jié)束后,軟件開發(fā)過程正式結(jié)束。此時學(xué)生需要整理開發(fā)過程中產(chǎn)生的文檔,將其歸檔,以作日后類似產(chǎn)品開發(fā)的參考及借鑒,最后完成軟件產(chǎn)品運作總結(jié)。
4.結(jié)語
事實證明,SE-CDIO為指導(dǎo)的軟件工程碩士人才培養(yǎng)過程符合軟件工程碩士的培養(yǎng)需要,有效改變了軟件工程碩士培養(yǎng)過程中的不規(guī)范、隨意等問題,取得了良好的人才培養(yǎng)效果。
針對軟件工程碩士培養(yǎng)的要求,我們今后將繼續(xù)完善SE-CDIO方法,從課程體系和實踐教學(xué)體系方面,進一步探索人才培養(yǎng)的策略和方法。
(編輯:郭田珍)