戴牡紅
(湖南大學(xué) 信息科學(xué)與工程學(xué)院,湖南 長沙 410082)
十幾年前,中國開始工程教育的專業(yè)認(rèn)證工作,在工程教育領(lǐng)域與國際標(biāo)準(zhǔn)接軌,對教育理念的更新和教育質(zhì)量標(biāo)準(zhǔn)的建立起到了很大的推動(dòng)作用[1]。工程教育認(rèn)證強(qiáng)調(diào)要培養(yǎng)學(xué)生解決復(fù)雜工程問題的能力,工程認(rèn)證標(biāo)準(zhǔn)中有多條提到“復(fù)雜工程問題”。“復(fù)雜工程問題”必須通過運(yùn)用深入的工程原理才能得到解決,一般而言,沒有固定、簡單的方法[2]。培養(yǎng)學(xué)生解決復(fù)雜工程問題的能力應(yīng)貫穿于四年本科教育中,基礎(chǔ)課、專業(yè)基礎(chǔ)課和專業(yè)課均應(yīng)對解決復(fù)雜工程問題能力的培養(yǎng)承擔(dān)責(zé)任。工科類本科教學(xué)中,復(fù)雜工程問題在各個(gè)教學(xué)環(huán)節(jié)中都存在。在課程設(shè)計(jì)、課程作業(yè)、綜合練習(xí)、綜合實(shí)驗(yàn)、生產(chǎn)實(shí)習(xí)、畢業(yè)設(shè)計(jì)等教學(xué)環(huán)節(jié)中,應(yīng)主動(dòng)將工程問題的復(fù)雜性融入教學(xué)內(nèi)容,對解決復(fù)雜工程問題進(jìn)行教學(xué)設(shè)計(jì)、組織實(shí)施和能力達(dá)成評價(jià)[3]。
學(xué)生解決復(fù)雜工程問題的能力可以從課程層面、設(shè)計(jì)層面和畢業(yè)設(shè)計(jì)(論文)3個(gè)層面培養(yǎng):①課程層面,每門核心課程須有“課程實(shí)驗(yàn)”,必有“綜合設(shè)計(jì)”;②設(shè)計(jì)層面,在第3個(gè)夏季學(xué)期設(shè)4個(gè)學(xué)分的系統(tǒng)設(shè)計(jì)課程,類似國際上的Capstone課程,重在“綜合、設(shè)計(jì)”;③畢業(yè)設(shè)計(jì)(論文)層面,在第八學(xué)期進(jìn)行畢業(yè)設(shè)計(jì)(論文),整合專業(yè)課程學(xué)習(xí),通過項(xiàng)目(具備復(fù)雜工程特征)實(shí)作(研究),培養(yǎng)創(chuàng)新與研究能力,重在創(chuàng)新、研究[4]。系統(tǒng)設(shè)計(jì)類課程培養(yǎng)學(xué)生解決復(fù)雜工程問題的能力[5]。工程設(shè)計(jì)的基本流程見圖1。

圖1 工程設(shè)計(jì)的基本流程
系統(tǒng)設(shè)計(jì)類課程整合畢業(yè)要求,從專業(yè)性方面,解決復(fù)雜工程問題,設(shè)計(jì)實(shí)現(xiàn)一個(gè)系統(tǒng)。從通用性方面,培養(yǎng)學(xué)生團(tuán)隊(duì)合作、領(lǐng)域整合、有效溝通、項(xiàng)目管理、主動(dòng)學(xué)習(xí)和終身學(xué)習(xí)的能力。系統(tǒng)設(shè)計(jì)課程要培養(yǎng)學(xué)生具備通用性能力,見圖2。

圖2 通用性能力培養(yǎng)
夏季學(xué)期共4周,是正常教學(xué)時(shí)間,不是暑假實(shí)習(xí)。按照培養(yǎng)計(jì)劃規(guī)定,學(xué)生需要取得4個(gè)必修學(xué)分。依據(jù)國際工程教育專業(yè)認(rèn)證標(biāo)準(zhǔn),夏季學(xué)期課程教學(xué)的核心目標(biāo)是復(fù)雜系統(tǒng)分析與設(shè)計(jì)訓(xùn)練。夏季學(xué)期是教學(xué)的重要組成部分,以基本能力訓(xùn)練和養(yǎng)成、復(fù)雜系統(tǒng)分析與設(shè)計(jì)能力提升為教學(xué)的主要目標(biāo)。根據(jù)已定教學(xué)計(jì)劃要求,應(yīng)切實(shí)加強(qiáng)夏季學(xué)期教學(xué),取得真正實(shí)效,達(dá)到教學(xué)計(jì)劃目標(biāo),這是每位夏季課程設(shè)計(jì)類教師的本職工作,也是每位學(xué)生應(yīng)完成的必修學(xué)分。三年級學(xué)生夏季學(xué)期教學(xué)項(xiàng)目基本目標(biāo)是復(fù)雜系統(tǒng)設(shè)計(jì)訓(xùn)練。
各系系統(tǒng)設(shè)計(jì)類課程的開設(shè)情況如下:①計(jì)算機(jī)科學(xué)系,負(fù)責(zé)開設(shè)編譯器設(shè)計(jì)、操作系統(tǒng)設(shè)計(jì)兩門課程;②通信工程系,負(fù)責(zé)開設(shè)交換機(jī)與路由器設(shè)計(jì)課程;③軟件工程系,負(fù)責(zé)開設(shè)數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)、軟件測試工具設(shè)計(jì)兩門課程;④計(jì)算機(jī)工程系,負(fù)責(zé)開設(shè)智能機(jī)器人系統(tǒng)設(shè)計(jì)、物聯(lián)網(wǎng)系統(tǒng)設(shè)計(jì)、CPU設(shè)計(jì)3門課程;⑤信息工程系,負(fù)責(zé)開設(shè)三維渲染系統(tǒng)的設(shè)計(jì)與開發(fā)課程;⑥網(wǎng)絡(luò)空間安全系,負(fù)責(zé)開設(shè)安全網(wǎng)絡(luò)協(xié)議棧的設(shè)計(jì)、涉密信息系統(tǒng)設(shè)計(jì)兩門課程。
數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)課程的核心內(nèi)容為如何分析、設(shè)計(jì)、存儲、使用和管理數(shù)據(jù),這門課程的特點(diǎn)是理論性和實(shí)踐性都很強(qiáng)。本課程的任務(wù)是通過各個(gè)教學(xué)環(huán)節(jié),運(yùn)用各種教學(xué)手段和方法,使學(xué)生在掌握數(shù)據(jù)模型、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫語言及數(shù)據(jù)庫設(shè)計(jì)等基本理論知識的基礎(chǔ)上,熟練地掌握使用各種工具進(jìn)行數(shù)據(jù)庫的設(shè)計(jì)、開發(fā)和維護(hù)管理等工作。數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)夏季學(xué)期課程主要是實(shí)踐性教學(xué)環(huán)節(jié)。在進(jìn)行專業(yè)基礎(chǔ)課和數(shù)據(jù)庫系統(tǒng)課程的基礎(chǔ)上,要設(shè)計(jì)一個(gè)具有基本功能的數(shù)據(jù)庫原型系統(tǒng),其目標(biāo)旨在加深對計(jì)算機(jī)硬件結(jié)構(gòu)和系統(tǒng)軟件的認(rèn)識,初步掌握數(shù)據(jù)庫管理系統(tǒng)DBMS組成模塊和應(yīng)用接口的編程與使用方法,提高學(xué)生解決復(fù)雜工程問題的工程設(shè)計(jì)和系統(tǒng)軟件的分析與設(shè)計(jì)能力,培養(yǎng)學(xué)生組織管理能力、較強(qiáng)的語言文字表達(dá)能力和人際交往能力以及良好的團(tuán)隊(duì)合作精神,培養(yǎng)學(xué)生技術(shù)文檔的寫作能力,培養(yǎng)學(xué)生的自主學(xué)習(xí)和終身學(xué)習(xí)意識,有不斷學(xué)習(xí)和適應(yīng)發(fā)展的能力,為畢業(yè)設(shè)計(jì)和以后的工程實(shí)踐打下良好基礎(chǔ)。數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)的原型系統(tǒng)HnuSQL主要的設(shè)計(jì)目標(biāo)和任務(wù)包括:①支持?jǐn)?shù)據(jù)庫的基本功能,包括表管理操作,數(shù)據(jù)的存儲、更新和刪除操作,基于索引的查詢,批處理及對表結(jié)構(gòu)更改等操作;②支持可擴(kuò)展性。
擬設(shè)計(jì)的數(shù)據(jù)庫管理原型系統(tǒng)HnuSQL(Hunan University SQL)采用客戶機(jī)/服務(wù)器體系結(jié)構(gòu),系統(tǒng)的體系結(jié)構(gòu)見圖3。
系統(tǒng)由SQL接口、解析器、優(yōu)化器、緩存和存儲引擎等核心模塊組成。
設(shè)計(jì)與實(shí)現(xiàn)任務(wù)以項(xiàng)目組的形式完成,一個(gè)大項(xiàng)目組由16~20個(gè)學(xué)生組成,選定一個(gè)項(xiàng)目經(jīng)理,項(xiàng)目經(jīng)理確定該組的數(shù)據(jù)庫設(shè)計(jì)工具、編程語言和開發(fā)工具,組內(nèi)各成員不可以選擇其他的設(shè)計(jì)與實(shí)現(xiàn)環(huán)境。HnuSQL由以下八大模塊(子系統(tǒng))組成:
(1)HnuSQL存儲引擎,存儲引擎提供了數(shù)據(jù)庫訪問接口的具體實(shí)現(xiàn)方法。
(2)HnuSQL數(shù)據(jù)庫管理子系統(tǒng),提供創(chuàng)建一個(gè)新數(shù)據(jù)庫、刪除一個(gè)數(shù)據(jù)庫及其所有表、給出服務(wù)器的一個(gè)擴(kuò)展?fàn)顟B(tài)消息。
(3)數(shù)據(jù)庫備份子系統(tǒng),設(shè)計(jì)與實(shí)現(xiàn)HnuSQLdump數(shù)據(jù)庫備份工具,實(shí)現(xiàn)全備份與增量備份功能。

圖3 HnuSQL體系結(jié)構(gòu)
(4)HnuSQL日志子系統(tǒng),日志文件幫助查找服務(wù)器內(nèi)部發(fā)生的事務(wù)。日志文件包含Error日志與查詢?nèi)罩镜取?/p>
(5)HnuSQL網(wǎng)絡(luò)連接和網(wǎng)絡(luò)通信協(xié)議子系統(tǒng),HnuSQL的協(xié)議建立在TCP/IP協(xié)議棧之上。該子系統(tǒng)為上層其他子系統(tǒng)提供數(shù)據(jù)包的讀、寫、解析和發(fā)送。
(6)線程和內(nèi)存分配子系統(tǒng),HnuSQL服務(wù)器啟動(dòng)過程中,需要經(jīng)歷一個(gè)自啟動(dòng)準(zhǔn)備過程,服務(wù)器正常啟動(dòng)后,線程子系統(tǒng)跟蹤各類線程,保證當(dāng)客戶端發(fā)送請求時(shí)服務(wù)器擁有線程處理該請求。
(7)HnuSQL查詢解析與查詢優(yōu)化子系統(tǒng)。
(8)HnuSQL安全管理子系統(tǒng),HnuSQL主要依賴用戶驗(yàn)證和訪問控制等手段保護(hù)服務(wù)器,訪問控制確認(rèn)用戶是否有足夠的權(quán)限訪問相關(guān)的庫、表。
教師、助教和學(xué)生按角色的不同分為項(xiàng)目經(jīng)理、小組長、助教、程序員、測試員,項(xiàng)目經(jīng)理對整個(gè)項(xiàng)目的開發(fā)負(fù)責(zé),小組長負(fù)責(zé)具體模塊的開發(fā),小組由程序員和測試員組成。基本的組織結(jié)構(gòu)見圖4。

圖4 項(xiàng)目組織結(jié)構(gòu)
各角色的職責(zé)和分工如下:
(1)項(xiàng)目經(jīng)理(PM):由學(xué)生推薦產(chǎn)生,負(fù)責(zé)指導(dǎo)項(xiàng)目小組完成人員管理、任務(wù)分配等工作,承擔(dān)項(xiàng)目技術(shù)指導(dǎo)和答疑工作,對項(xiàng)目完成情況負(fù)責(zé)并給小組長評分,負(fù)責(zé)整體項(xiàng)目各模塊的集成測試和最后項(xiàng)目文檔的歸檔工作。
(2)助教(TA):由研究生承擔(dān),負(fù)責(zé)協(xié)助教師管理項(xiàng)目團(tuán)隊(duì),對項(xiàng)目開發(fā)提供技術(shù)支持,監(jiān)督學(xué)生的日常開發(fā)工作,負(fù)責(zé)組織學(xué)生討論并記錄。
(3)小組長(Team):為具體模塊的負(fù)責(zé)人,制訂本小組的開發(fā)計(jì)劃,負(fù)責(zé)功能模塊的劃分,組織討論詳細(xì)設(shè)計(jì),組織協(xié)調(diào)本小組模塊的開發(fā)工作,確保及時(shí)完成各個(gè)里程碑的任務(wù)并上交相關(guān)文檔。同時(shí)作為程序員參與開發(fā),負(fù)責(zé)組織代碼評審,為項(xiàng)目經(jīng)理的工作提供輔助,負(fù)責(zé)模塊文檔管理和配置管理。
(4)程序員(DEV):按時(shí)完成所分配的模塊開發(fā)任務(wù),包括編寫詳細(xì)設(shè)計(jì)文檔、程序編碼、單元測試、Bug修復(fù),積極協(xié)助本組成員開展代碼評審,共同協(xié)作開發(fā)高質(zhì)量的軟件。
(5)測試員(Tester):按照測試計(jì)劃安排進(jìn)行各項(xiàng)測試,提交測試用例和測試報(bào)告,協(xié)助開發(fā)人員充分測試及管理軟件Bug,以實(shí)現(xiàn)高質(zhì)量軟件的開發(fā)。
數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)課程需要填寫、檢查、整理和修改周計(jì)劃、周進(jìn)度報(bào)告、周檢查與考核、需求分析報(bào)告、系統(tǒng)設(shè)計(jì)報(bào)告、設(shè)計(jì)總結(jié)報(bào)告等過程文檔。準(zhǔn)確評定課程的成績也是該課程的重點(diǎn)。教師通過進(jìn)度檢查、設(shè)計(jì)答辯和報(bào)告評審的形式了解學(xué)生的設(shè)計(jì)水平,根據(jù)學(xué)生任務(wù)完成的情況,設(shè)計(jì)報(bào)告的質(zhì)量,答辯水平及平時(shí)的學(xué)習(xí)態(tài)度、工作作風(fēng)等全面評定成績。每個(gè)學(xué)生都要寫項(xiàng)目總結(jié)報(bào)告。
軟件工程專業(yè)畢業(yè)要求中,與數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)課程相關(guān)的要求包括如下幾個(gè)方面:①GA1工程知識,應(yīng)用數(shù)學(xué)、科學(xué)、工程和專業(yè)知識的能力;②GA2問題分析,分析、識別、表達(dá)和解決復(fù)雜工程問題的能力;③GA3設(shè)計(jì)/開發(fā)解決方案,能夠設(shè)計(jì)系統(tǒng)、組件或軟件;④GA4研究,設(shè)計(jì)并進(jìn)行實(shí)驗(yàn)、分析與解釋數(shù)據(jù)的能力;⑤GA5使用現(xiàn)代工具,運(yùn)用專業(yè)技能和現(xiàn)代工程工具解決復(fù)雜工程問題的能力;⑥GA9個(gè)人和團(tuán)隊(duì),能夠在團(tuán)隊(duì)中承擔(dān)個(gè)體、團(tuán)隊(duì)成員以及負(fù)責(zé)人的角色;⑦GA10溝通,能夠就復(fù)雜工程問題與同行進(jìn)行有效交流和溝通,包括撰寫報(bào)告和設(shè)計(jì)文檔、陳述發(fā)言、清晰表達(dá)的能力;⑧GA12終身學(xué)習(xí),具有終身學(xué)習(xí)和自主學(xué)習(xí)、適應(yīng)發(fā)展的能力。
課程總評成績由4周的每周評分加權(quán)平均得出。每周評分由考勤 、過程檢查(分工情況、任務(wù)完成情況、問題解決情況)和每周匯報(bào)組成,各占15%、60%和25%,檢查和匯報(bào)檢查主要考慮數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)是否合理、功能是否合理、程序界面是否美觀以及工作態(tài)度。
課程采用程序檢查、文檔審查、每周匯報(bào)等方式進(jìn)行能力達(dá)成評價(jià),評價(jià)方法為每周先自評、然后助教評價(jià)、最后教師評價(jià)等方式評定能力的達(dá)成情況,最后的評定以4周評分的加權(quán)平均得出。90分以上為達(dá)成度優(yōu),80~89分為達(dá)成度良好,70~79分為達(dá)成度中等,60~69分為基本達(dá)成,60分以下為未達(dá)成。
歷經(jīng)4周、160個(gè)小時(shí)集中設(shè)計(jì)開發(fā)的HnuSQL達(dá)到了預(yù)期效果,各個(gè)模塊完成了集成測試,系統(tǒng)運(yùn)行效果見圖5。完成的HnuSQL具備數(shù)據(jù)庫管理系統(tǒng)的基本功能。學(xué)生積極查閱相關(guān)資料,努力尋找問題的解決方法,很多問題都是學(xué)生獨(dú)立自主完成的,充分反映出學(xué)生發(fā)現(xiàn)問題與處理問題的能力得到了極大提高。

圖5 HnuSQL運(yùn)行效果
數(shù)據(jù)庫系統(tǒng)設(shè)計(jì)課程在借鑒開源數(shù)據(jù)庫管理系統(tǒng)軟件的基本功能,剖析DBMS內(nèi)部主要構(gòu)件的基礎(chǔ)上,以小組和團(tuán)隊(duì)協(xié)作的方式,分析、設(shè)計(jì)與實(shí)現(xiàn)一個(gè)原型DBMS系統(tǒng)類軟件,培養(yǎng)了學(xué)生認(rèn)真負(fù)責(zé)、積極協(xié)作的精神,提高了學(xué)生對軟件開發(fā)平臺技術(shù)的掌握,增強(qiáng)了軟件分析、開發(fā)和測試方面的技能,強(qiáng)化了自主學(xué)生的能力,實(shí)實(shí)在在培養(yǎng)了學(xué)生解決復(fù)雜工程問題的能力,達(dá)到了預(yù)期的效果。