摘要:針對國內(nèi)軟件工程專業(yè)教育問題,全面分析國際軟件工程專業(yè)教育知識體系SEEK和CBOK,并結(jié)合對國內(nèi)高校教學(xué)實際的調(diào)查,提出軟件工程本科教育知識體系的重構(gòu)與求精方案。重構(gòu)后的本科教育知識體系可以靈活適應(yīng)國內(nèi)各層次高校軟件工程專業(yè)的教學(xué)訴求,并與國際研究生教育知識體系CBOK有效銜接,共同組成完整的軟件工程教育知識體系,為我國軟件工程教育設(shè)計者提供參考。
關(guān)鍵詞:軟件工程;知識體系;本科教育;研究生教育;教學(xué)改革
每種工程職業(yè)都有一個職業(yè)基礎(chǔ)知識體系及其推薦的實踐。這一知識體系多數(shù)情況下可以組織成正式文檔,并發(fā)布為理論指導(dǎo)文件、教育程序、培訓(xùn)程序、專家認證或職業(yè)執(zhí)照等。在國際上,IEEE-CS和ACM聯(lián)合組建的軟件工程協(xié)調(diào)委員會(SWECC)發(fā)布了軟件工程知識體系和推薦實踐SWEBOK2004[1],為軟件工程職業(yè)實踐建立了合適的準則和規(guī)范集?;赟WEBOK,SWECC進一步定義了其中可以納入
教育程序的知識體系,包括本科生軟件工程教育計劃SE2004[2]中的SEEK、研究生軟件工程教育計劃GSwE2009[3]中的CBOK、軟件工程職業(yè)道德規(guī)范和職業(yè)實踐[4]。國內(nèi)有過較好實踐的有南京大學(xué)的軟件工程教育知識體系[5-7]。
本文在分析SEEK和CBOK的基礎(chǔ)上,求精與重構(gòu)軟件工程專業(yè)學(xué)科教育知識體系,包括:1)按照“新視角、新認知、新方法”確定計算基礎(chǔ)部分在教學(xué)中的重點,解決SEEK對CS知識單元的“鴕鳥”化處理問題;2)基于教學(xué)實踐總結(jié)求精本科階段軟件工程最小核心教育知識點。該項工作試圖能夠更好指導(dǎo)各個層次教育機構(gòu)的教學(xué)活動,適應(yīng)從具有國際競爭能力的高端工程型軟件人才到面向具體應(yīng)用領(lǐng)域的基礎(chǔ)軟件開發(fā)實用人才的多層次培養(yǎng)需要。
1SEEK分析
SE2004[2]定義了本科生軟件工程教育知識體系SEEK,包括知識領(lǐng)域(KA)、知識單元和知識點3個層次,采用Bloom分類法,并在知識單元級別給出了最小核心課時數(shù)。SEEK共有10個知識領(lǐng)域,42個知識單元,最小核心學(xué)時數(shù)為494,詳見表1。
SEEK歷經(jīng)5年實踐,其系統(tǒng)性、全面性、先進性和實用性均得到了較好驗證。但作為確立軟件工程專業(yè)的第1版教育知識體系,SEEK過于強調(diào)新學(xué)科確立的知識領(lǐng)域,忽視了對繼承學(xué)科的相關(guān)知識領(lǐng)域的描述,從而影響到相當(dāng)一部分教育機構(gòu)對于知識體系的理解和執(zhí)行。如:1)計算機科學(xué)基礎(chǔ)擁有140個核心學(xué)時,占SEEK總核心學(xué)時數(shù)的三分之一,但僅僅作為一個知識單元存在,如何執(zhí)行?SE2004建議去參考CS2001,但是CS2001中的知識領(lǐng)域僅對應(yīng)于SE2004中的知識點,大多數(shù)教育機構(gòu)很難理解SE如何調(diào)整求精CS,因此很難對CS的核心課程進行調(diào)整與改革。2)很多教育機構(gòu)反映軟件工程相關(guān)知識領(lǐng)域的核心學(xué)時數(shù)比較多,在高等教育大眾化階段下,應(yīng)該允許教育機構(gòu)根據(jù)自己的人才培養(yǎng)定位,適當(dāng)削減本科階段的軟件工程核心學(xué)時數(shù),也有益于培養(yǎng)面向某一應(yīng)用領(lǐng)域的實用型軟件人才。
2CBOK分析
GSwE2009[3]給出了研究生軟件工程教育知識體系CBOK。CBOK以SWEBOK的組織和內(nèi)容為藍本,但進行了一些修改。包括:1)加入了系統(tǒng)工程基礎(chǔ)和職業(yè)操守指導(dǎo)兩個新的KA。2)重新安排或修改了一些知識單元和知識點,如人機交互設(shè)計被加入到軟件設(shè)計KA;工程經(jīng)濟學(xué)單元被加入到軟件工程管理KA;風(fēng)險管理單元被加入到軟件工程管理KA;
軟件檢驗和有效性驗證單元被加入到軟件質(zhì)量KA;以及部分名稱的改變和知識單元/點組織的改變。值得注意的是,即將發(fā)布的SWEBOK2010也在進行同步修改。
GSwE2009 指出了軟件工程專業(yè)研究生面臨寬泛的入學(xué)準備條件,包括:1)獲得過相關(guān)學(xué)士學(xué)位;2)學(xué)習(xí)過SwE相關(guān)課程;3)具有2年的SwE相關(guān)經(jīng)驗。CBOK則具體組織為預(yù)備材料、核心材料、大學(xué)特有材料、選擇性材料、頂點經(jīng)驗等部分。學(xué)生對每個KA所應(yīng)該掌握的程度,CBOK使用了K(知識)、C(理解)、AP(應(yīng)用)和AN(分析)等4個級別。
CBOK預(yù)備材料指出了學(xué)生在進入碩士階段學(xué)習(xí)的時候所必須具有的知識,這些知識可以從大學(xué)本科的教育、軟件開發(fā)經(jīng)驗、機構(gòu)的認證課程中獲得。表2給出了對預(yù)備材料的分析,SE2004是這一部分知識元素的主要來源,但在組織上與SEEK有所不同,反映了對SEEK 5年實踐的總結(jié)和提高,對我們更好地理解SEEK有較大意義。
CBOK核心材料給出了研究生課程所應(yīng)該覆蓋的核心知識體系,按照相當(dāng)于15學(xué)分的教學(xué)時間來定義。即核心知識體系的學(xué)習(xí)由比總學(xué)時數(shù)50%略少的時間來達到,其他時間和課程將會被分派去提供加深核心領(lǐng)域(Bloom級別的提高)和專注于某個選定的應(yīng)用領(lǐng)域。表3給出了對核心材料的分析,其中百分數(shù)表示在總課時數(shù)內(nèi)所占的比例,相加不超過50%。
3研究目標
本文結(jié)合最新發(fā)布的GSwE2009中CBOK教育知識體系和即將發(fā)布的SWEBOK2010,總結(jié)SE2004中SEEK教育知識體系在我國高校5年的教學(xué)實踐,從加強實用性的角度重構(gòu)與求精SEEK以與CBOK接軌,適應(yīng)我國高校軟件工程專業(yè)多層次教育的需求。
在人才培養(yǎng)上,我們的定位如下:
1) 研究生教育知識體系保持CBOK的靈活性與可伸縮性,允許高校針對多入口情況靈活設(shè)置教學(xué)體系。
2) 本科教育知識體系既適應(yīng)高水平大學(xué)軟件工程專業(yè)培養(yǎng)具有國際競爭能力的中高層次工程型軟件人才的需求。
3) 本科教育知識體系又適應(yīng)應(yīng)用型大學(xué)軟件工程專業(yè)培養(yǎng)面向各個應(yīng)用領(lǐng)域的基礎(chǔ)軟件開發(fā)實用人才的需求。
在人才培養(yǎng)目標上,力圖使得學(xué)生具有如下能力:
1) 掌握核心知識。
2) 熟悉某個應(yīng)用領(lǐng)域。
3) 知曉職業(yè)道德。
4) 能夠利用系統(tǒng)工程原則指導(dǎo)軟件工程。
5) 具有團隊合作精神、交流表達能力。
6) 具有協(xié)調(diào)折中能力。
7) 具有綜合能力。
8) 具有終身學(xué)習(xí)能力。
9) 具有對新技術(shù)的分析應(yīng)用能力。
10) 能夠在某個KA上追求深度。
在教學(xué)知識內(nèi)容設(shè)計上,我們的要求如下:
1) 軟件工程專業(yè)強調(diào)扎實寬泛的知識基礎(chǔ)。軟件工程師在工作環(huán)境中需要廣泛地了解涉及產(chǎn)品開發(fā)的諸多知識領(lǐng)域,并在具體產(chǎn)品構(gòu)造中靈活運用該領(lǐng)域的前沿技術(shù)。
2) 軟件工程專業(yè)強調(diào)從事該領(lǐng)域工作的實際體驗。在教學(xué)實施中應(yīng)該重視體驗實際軟件開發(fā)工作的過程,熟悉實際應(yīng)用的方法與工具,以使畢業(yè)生能夠更快地融入今后的工作。
3) 軟件工程專業(yè)強調(diào)分析與解決實際工程問題的方法與能力。解決實際工程問題的能力是軟件工程教育的核心問題,要重視培養(yǎng)學(xué)生分析、設(shè)計、構(gòu)造、實施、維護實際工程問題的知識與能力以及圍繞實際工程問題的組織、協(xié)調(diào)與管理的知識與能力。
4) 軟件工程專業(yè)強調(diào)與實際應(yīng)用領(lǐng)域的結(jié)合能力。軟件的應(yīng)用無所不在,熟悉一個或數(shù)個應(yīng)用領(lǐng)域的相關(guān)知識,并將其與軟件工程核心技術(shù)相結(jié)合,是對該專業(yè)畢業(yè)生的基本要求。
5) 軟件工程專業(yè)強調(diào)綜合運用各種方法與技術(shù)的能力。選擇合適的方法與工具并有效集成,是構(gòu)造軟件產(chǎn)品的重要能力,再學(xué)習(xí)能力是對軟件工程師的基本要求,選擇與決策是一個軟件工程師的核心素質(zhì)。
6) 軟件工程專業(yè)強調(diào)工程觀、職業(yè)道德和團隊合作能力。樹立工程理念,在工程原則和方法指導(dǎo)下遵從職業(yè)要求,以團隊方式完成軟件項目,是一個軟件工程師所應(yīng)具備的素質(zhì)。
4工作路線
在技術(shù)路線上,軟件工程專業(yè)教育知識體系的重構(gòu)與求精遵循以下途徑:
1) 用軟件工程的世界觀統(tǒng)一審視和重新組織軟件工程教育知識體系。SEEK回避了計算機科學(xué)基礎(chǔ)相關(guān)知識,通過直接借用CS2001,導(dǎo)致SEEK在教學(xué)實施時成為CS和SE兩種觀點的混合體,各高校在對計算機科學(xué)傳統(tǒng)課程改造時遇到較大困難。求精后的教育知識體系試圖站在軟件工程的新視角來重新編寫和組織計算基礎(chǔ)相關(guān)知識領(lǐng)域,站在軟件系統(tǒng)構(gòu)建的高度全新認知計算系統(tǒng)知識的教學(xué),運用解決具體軟件設(shè)計問題的新方法來處理計算機科學(xué)傳統(tǒng)課程的教學(xué)改革,從而達到在軟件工程專業(yè)有效改造CS傳統(tǒng)課程的目標。
2) 求精本科教育階段的軟件工程知識,適應(yīng)更多教育機構(gòu)多層次教育的需求。根據(jù)我國高校5年教學(xué)實踐,多數(shù)學(xué)校普遍認為軟件工程相關(guān)知識的教學(xué)內(nèi)容偏多。特別是對于應(yīng)用型高校軟件工程專業(yè)來說,重點是培養(yǎng)學(xué)生在軟件工程思想指導(dǎo)下的針對應(yīng)用領(lǐng)域的軟件開發(fā)技能。CBOK定義的研究生準入條件和準出條件也在另一方面印證了SEEK的部分軟件工程知識可以移入研究生階段。因此筆者在認真調(diào)研的基礎(chǔ)上對軟件工程相關(guān)知識領(lǐng)域進行求精,設(shè)置核心教學(xué)課時最小值,作為大學(xué)軟件工程專業(yè)的最低要求;同時把SEEK規(guī)定的核心教學(xué)課時取為最大值,作為高水平大學(xué)軟件工程專業(yè)的辦學(xué)參考;有關(guān)高校可以根據(jù)自己的人才培養(yǎng)定位在兩者之間浮動,實現(xiàn)自己的辦學(xué)特色。
3) 適應(yīng)我國高校教學(xué)的具體訴求。計算機科學(xué)與技術(shù)一級學(xué)科研究生聯(lián)考對軟件工程專業(yè)教學(xué)產(chǎn)生影響。因此在重構(gòu)計算基礎(chǔ)相關(guān)知識領(lǐng)域時,把SEEK中與數(shù)據(jù)結(jié)構(gòu)、計算機組成、操作系統(tǒng)和網(wǎng)絡(luò)相關(guān)的核心課時數(shù)設(shè)置為最小值,作為軟件工程專業(yè)辦學(xué)的基本要求;同時把聯(lián)考要求規(guī)定的核心教學(xué)課時取為最大值,作為部分高校軟件工程專業(yè)的辦學(xué)參考。
4) 研究生教育知識體系采用CBOK。軟件工程專業(yè)研究生教育程序面臨相對寬泛的入口。軟件工程專業(yè)本科畢業(yè)生需要在某個KA、某個應(yīng)用領(lǐng)域和實踐上得到深造;信息類專業(yè)本科生或接受過IT培訓(xùn)的學(xué)生需要在軟件工程知識和實踐上受到良好訓(xùn)練,并把這些知識與他們原先的工作領(lǐng)域或以后想從事的應(yīng)用領(lǐng)域相結(jié)合;在SwE方面有過兩年工作經(jīng)驗的人,嚴格的軟件工程訓(xùn)練則更加重要。不同的人有著不同的學(xué)習(xí)訴求,因此在建設(shè)教育知識體系與相關(guān)課程方面,良好的靈活性與可伸縮性尤其顯得重要,CBOK較好地解決了這一訴求。
5) 遵從SEEK與CBOK。本文給出的學(xué)科教育知識體系以SWEBOK為基礎(chǔ),是用軟件工程視角統(tǒng)一規(guī)整、重構(gòu)和求精SEEK與CBOK后得到的,其基礎(chǔ)和知識產(chǎn)權(quán)均屬于SWECC。
5重構(gòu)和求精后的軟件工程教育知識體系
軟件工程教育知識體系包括本科生和研究生兩個部分,其中研究生教育知識體系完全采用CBOK,本科生教育知識體系在SEEK基礎(chǔ)上重構(gòu)與求精。
重構(gòu)的方法是采用軟件工程視角全新組織SEEK中的計算基礎(chǔ)、數(shù)學(xué)與工程基礎(chǔ)等兩個知識領(lǐng)域,重新劃分為數(shù)學(xué)基礎(chǔ)、程序設(shè)計基礎(chǔ)、計算系統(tǒng)基礎(chǔ)和工程基礎(chǔ)4個知識領(lǐng)域。此外,原計算基礎(chǔ)中的軟件構(gòu)造升格為知識領(lǐng)域,原計算基礎(chǔ)中構(gòu)造工具與分布在軟件工程各相關(guān)知識領(lǐng)域中的工具知識點合并為一個獨立的知識領(lǐng)域,后者與系統(tǒng)與應(yīng)用知識領(lǐng)域一樣,不設(shè)核心教學(xué)課時數(shù)要求。
求精則依據(jù)CBOK的研究生準入條件和我國高校對SEEK的五年教學(xué)實踐。首先,求精軟件工程各知識領(lǐng)域和工程基礎(chǔ)知識領(lǐng)域中各知識點的本科教學(xué)要求;設(shè)置核心教學(xué)課時數(shù)最小值,作為本科畢業(yè)生最低教學(xué)要求;把SEEK原先核心教學(xué)課時數(shù)設(shè)置為最大值,供部分高校在教學(xué)設(shè)計時參考。其次,針
對我國高校計算機一級學(xué)科研究生聯(lián)考的現(xiàn)實,對數(shù)據(jù)結(jié)構(gòu)、算法、計算機組織結(jié)構(gòu)、操作系統(tǒng)、網(wǎng)絡(luò)與通信等知識單元進行擴展,SEEK原先核心教學(xué)課時數(shù)設(shè)置為最小值,作為本科畢業(yè)生最低教學(xué)要求;聯(lián)考特別要求作為核心教學(xué)課時數(shù)最大值,給有研究生考試需求的高校參考。
表4給出了重構(gòu)和求精后的軟件工程專業(yè)本科教育知識體系,采用Bloom分類法,知識點的掌握程度用k(知識)、c(理解)和a(應(yīng)用)標記;重要程度用E(核心)、D(推薦)和O(選修)標記;共有13個基本知識領(lǐng)域,52個知識單元,建議核心學(xué)時數(shù)最小值為381(E),最大值為520(E+D);另有軟件工具和系統(tǒng)與應(yīng)用兩個擴展知識領(lǐng)域。
研究生教育知識體系參考第二節(jié)關(guān)于CBOK2009的描述。
6結(jié)語
本文從實用性角度出發(fā),對SEEK進行了重構(gòu)和
求精。用軟件工程的統(tǒng)一視角組織、細化和求精本科生教育知識體系,從而使本科生教育知識體系具有較好的靈活性、適用性和可伸縮性,并較好地與CBOK銜接,共同組成完整的軟件工程專業(yè)教學(xué)知識體系,從而能夠有效指導(dǎo)我國高校軟件工程專業(yè)的本科生與研究生教學(xué)體系設(shè)計。
參考文獻:
[1]Guide to the Software Engineering Body of Knowledge[EB/OL]. [2010-10-11]. http://www.swebok.org/.
[2]Software Engineering 2004. Curriculum Guidelines for Undergraduate Degree Programs in Software Engineering[EB/OL]. [2010-10-25]. http://sites.computer.org/ccse/.
[3]Graduate Software Engineering 2009 (GSwE2009): Curriculum Guidelines for Graduate Degree Programs in Software Engineering[EB/OL]. [2010-10-25]. http://www.gswe2009.org/.
[4]Software Engineering Professionalism[EB/OL]. [2010-10-25]. http://www.acm.org/about/se-code.
[5]\