戴牡紅
(湖南大學 信息科學與工程學院,湖南 長沙 410082)
十幾年前,中國開始工程教育的專業(yè)認證工作,在工程教育領域與國際標準接軌,對教育理念的更新和教育質(zhì)量標準的建立起到了很大的推動作用[1]。工程教育認證強調(diào)要培養(yǎng)學生解決復雜工程問題的能力,工程認證標準中有多條提到“復雜工程問題”?!皬碗s工程問題”必須通過運用深入的工程原理才能得到解決,一般而言,沒有固定、簡單的方法[2]。培養(yǎng)學生解決復雜工程問題的能力應貫穿于四年本科教育中,基礎課、專業(yè)基礎課和專業(yè)課均應對解決復雜工程問題能力的培養(yǎng)承擔責任。工科類本科教學中,復雜工程問題在各個教學環(huán)節(jié)中都存在。在課程設計、課程作業(yè)、綜合練習、綜合實驗、生產(chǎn)實習、畢業(yè)設計等教學環(huán)節(jié)中,應主動將工程問題的復雜性融入教學內(nèi)容,對解決復雜工程問題進行教學設計、組織實施和能力達成評價[3]。
學生解決復雜工程問題的能力可以從課程層面、設計層面和畢業(yè)設計(論文)3個層面培養(yǎng):①課程層面,每門核心課程須有“課程實驗”,必有“綜合設計”;②設計層面,在第3個夏季學期設4個學分的系統(tǒng)設計課程,類似國際上的Capstone課程,重在“綜合、設計”;③畢業(yè)設計(論文)層面,在第八學期進行畢業(yè)設計(論文),整合專業(yè)課程學習,通過項目(具備復雜工程特征)實作(研究),培養(yǎng)創(chuàng)新與研究能力,重在創(chuàng)新、研究[4]。系統(tǒng)設計類課程培養(yǎng)學生解決復雜工程問題的能力[5]。工程設計的基本流程見圖1。
圖1 工程設計的基本流程
系統(tǒng)設計類課程整合畢業(yè)要求,從專業(yè)性方面,解決復雜工程問題,設計實現(xiàn)一個系統(tǒng)。從通用性方面,培養(yǎng)學生團隊合作、領域整合、有效溝通、項目管理、主動學習和終身學習的能力。系統(tǒng)設計課程要培養(yǎng)學生具備通用性能力,見圖2。
圖2 通用性能力培養(yǎng)
夏季學期共4周,是正常教學時間,不是暑假實習。按照培養(yǎng)計劃規(guī)定,學生需要取得4個必修學分。依據(jù)國際工程教育專業(yè)認證標準,夏季學期課程教學的核心目標是復雜系統(tǒng)分析與設計訓練。夏季學期是教學的重要組成部分,以基本能力訓練和養(yǎng)成、復雜系統(tǒng)分析與設計能力提升為教學的主要目標。根據(jù)已定教學計劃要求,應切實加強夏季學期教學,取得真正實效,達到教學計劃目標,這是每位夏季課程設計類教師的本職工作,也是每位學生應完成的必修學分。三年級學生夏季學期教學項目基本目標是復雜系統(tǒng)設計訓練。
各系系統(tǒng)設計類課程的開設情況如下:①計算機科學系,負責開設編譯器設計、操作系統(tǒng)設計兩門課程;②通信工程系,負責開設交換機與路由器設計課程;③軟件工程系,負責開設數(shù)據(jù)庫系統(tǒng)設計、軟件測試工具設計兩門課程;④計算機工程系,負責開設智能機器人系統(tǒng)設計、物聯(lián)網(wǎng)系統(tǒng)設計、CPU設計3門課程;⑤信息工程系,負責開設三維渲染系統(tǒng)的設計與開發(fā)課程;⑥網(wǎng)絡空間安全系,負責開設安全網(wǎng)絡協(xié)議棧的設計、涉密信息系統(tǒng)設計兩門課程。
數(shù)據(jù)庫系統(tǒng)設計課程的核心內(nèi)容為如何分析、設計、存儲、使用和管理數(shù)據(jù),這門課程的特點是理論性和實踐性都很強。本課程的任務是通過各個教學環(huán)節(jié),運用各種教學手段和方法,使學生在掌握數(shù)據(jù)模型、數(shù)據(jù)庫管理系統(tǒng)、數(shù)據(jù)庫語言及數(shù)據(jù)庫設計等基本理論知識的基礎上,熟練地掌握使用各種工具進行數(shù)據(jù)庫的設計、開發(fā)和維護管理等工作。數(shù)據(jù)庫系統(tǒng)設計夏季學期課程主要是實踐性教學環(huán)節(jié)。在進行專業(yè)基礎課和數(shù)據(jù)庫系統(tǒng)課程的基礎上,要設計一個具有基本功能的數(shù)據(jù)庫原型系統(tǒng),其目標旨在加深對計算機硬件結(jié)構(gòu)和系統(tǒng)軟件的認識,初步掌握數(shù)據(jù)庫管理系統(tǒng)DBMS組成模塊和應用接口的編程與使用方法,提高學生解決復雜工程問題的工程設計和系統(tǒng)軟件的分析與設計能力,培養(yǎng)學生組織管理能力、較強的語言文字表達能力和人際交往能力以及良好的團隊合作精神,培養(yǎng)學生技術文檔的寫作能力,培養(yǎng)學生的自主學習和終身學習意識,有不斷學習和適應發(fā)展的能力,為畢業(yè)設計和以后的工程實踐打下良好基礎。數(shù)據(jù)庫系統(tǒng)設計的原型系統(tǒng)HnuSQL主要的設計目標和任務包括:①支持數(shù)據(jù)庫的基本功能,包括表管理操作,數(shù)據(jù)的存儲、更新和刪除操作,基于索引的查詢,批處理及對表結(jié)構(gòu)更改等操作;②支持可擴展性。
擬設計的數(shù)據(jù)庫管理原型系統(tǒng)HnuSQL(Hunan University SQL)采用客戶機/服務器體系結(jié)構(gòu),系統(tǒng)的體系結(jié)構(gòu)見圖3。
系統(tǒng)由SQL接口、解析器、優(yōu)化器、緩存和存儲引擎等核心模塊組成。
設計與實現(xiàn)任務以項目組的形式完成,一個大項目組由16~20個學生組成,選定一個項目經(jīng)理,項目經(jīng)理確定該組的數(shù)據(jù)庫設計工具、編程語言和開發(fā)工具,組內(nèi)各成員不可以選擇其他的設計與實現(xiàn)環(huán)境。HnuSQL由以下八大模塊(子系統(tǒng))組成:
(1)HnuSQL存儲引擎,存儲引擎提供了數(shù)據(jù)庫訪問接口的具體實現(xiàn)方法。
(2)HnuSQL數(shù)據(jù)庫管理子系統(tǒng),提供創(chuàng)建一個新數(shù)據(jù)庫、刪除一個數(shù)據(jù)庫及其所有表、給出服務器的一個擴展狀態(tài)消息。
(3)數(shù)據(jù)庫備份子系統(tǒng),設計與實現(xiàn)HnuSQLdump數(shù)據(jù)庫備份工具,實現(xiàn)全備份與增量備份功能。
圖3 HnuSQL體系結(jié)構(gòu)
(4)HnuSQL日志子系統(tǒng),日志文件幫助查找服務器內(nèi)部發(fā)生的事務。日志文件包含Error日志與查詢?nèi)罩镜取?/p>
(5)HnuSQL網(wǎng)絡連接和網(wǎng)絡通信協(xié)議子系統(tǒng),HnuSQL的協(xié)議建立在TCP/IP協(xié)議棧之上。該子系統(tǒng)為上層其他子系統(tǒng)提供數(shù)據(jù)包的讀、寫、解析和發(fā)送。
(6)線程和內(nèi)存分配子系統(tǒng),HnuSQL服務器啟動過程中,需要經(jīng)歷一個自啟動準備過程,服務器正常啟動后,線程子系統(tǒng)跟蹤各類線程,保證當客戶端發(fā)送請求時服務器擁有線程處理該請求。
(7)HnuSQL查詢解析與查詢優(yōu)化子系統(tǒng)。
(8)HnuSQL安全管理子系統(tǒng),HnuSQL主要依賴用戶驗證和訪問控制等手段保護服務器,訪問控制確認用戶是否有足夠的權限訪問相關的庫、表。
教師、助教和學生按角色的不同分為項目經(jīng)理、小組長、助教、程序員、測試員,項目經(jīng)理對整個項目的開發(fā)負責,小組長負責具體模塊的開發(fā),小組由程序員和測試員組成?;镜慕M織結(jié)構(gòu)見圖4。
圖4 項目組織結(jié)構(gòu)
各角色的職責和分工如下:
(1)項目經(jīng)理(PM):由學生推薦產(chǎn)生,負責指導項目小組完成人員管理、任務分配等工作,承擔項目技術指導和答疑工作,對項目完成情況負責并給小組長評分,負責整體項目各模塊的集成測試和最后項目文檔的歸檔工作。
(2)助教(TA):由研究生承擔,負責協(xié)助教師管理項目團隊,對項目開發(fā)提供技術支持,監(jiān)督學生的日常開發(fā)工作,負責組織學生討論并記錄。
(3)小組長(Team):為具體模塊的負責人,制訂本小組的開發(fā)計劃,負責功能模塊的劃分,組織討論詳細設計,組織協(xié)調(diào)本小組模塊的開發(fā)工作,確保及時完成各個里程碑的任務并上交相關文檔。同時作為程序員參與開發(fā),負責組織代碼評審,為項目經(jīng)理的工作提供輔助,負責模塊文檔管理和配置管理。
(4)程序員(DEV):按時完成所分配的模塊開發(fā)任務,包括編寫詳細設計文檔、程序編碼、單元測試、Bug修復,積極協(xié)助本組成員開展代碼評審,共同協(xié)作開發(fā)高質(zhì)量的軟件。
(5)測試員(Tester):按照測試計劃安排進行各項測試,提交測試用例和測試報告,協(xié)助開發(fā)人員充分測試及管理軟件Bug,以實現(xiàn)高質(zhì)量軟件的開發(fā)。
數(shù)據(jù)庫系統(tǒng)設計課程需要填寫、檢查、整理和修改周計劃、周進度報告、周檢查與考核、需求分析報告、系統(tǒng)設計報告、設計總結(jié)報告等過程文檔。準確評定課程的成績也是該課程的重點。教師通過進度檢查、設計答辯和報告評審的形式了解學生的設計水平,根據(jù)學生任務完成的情況,設計報告的質(zhì)量,答辯水平及平時的學習態(tài)度、工作作風等全面評定成績。每個學生都要寫項目總結(jié)報告。
軟件工程專業(yè)畢業(yè)要求中,與數(shù)據(jù)庫系統(tǒng)設計課程相關的要求包括如下幾個方面:①GA1工程知識,應用數(shù)學、科學、工程和專業(yè)知識的能力;②GA2問題分析,分析、識別、表達和解決復雜工程問題的能力;③GA3設計/開發(fā)解決方案,能夠設計系統(tǒng)、組件或軟件;④GA4研究,設計并進行實驗、分析與解釋數(shù)據(jù)的能力;⑤GA5使用現(xiàn)代工具,運用專業(yè)技能和現(xiàn)代工程工具解決復雜工程問題的能力;⑥GA9個人和團隊,能夠在團隊中承擔個體、團隊成員以及負責人的角色;⑦GA10溝通,能夠就復雜工程問題與同行進行有效交流和溝通,包括撰寫報告和設計文檔、陳述發(fā)言、清晰表達的能力;⑧GA12終身學習,具有終身學習和自主學習、適應發(fā)展的能力。
課程總評成績由4周的每周評分加權平均得出。每周評分由考勤 、過程檢查(分工情況、任務完成情況、問題解決情況)和每周匯報組成,各占15%、60%和25%,檢查和匯報檢查主要考慮數(shù)據(jù)結(jié)構(gòu)設計是否合理、功能是否合理、程序界面是否美觀以及工作態(tài)度。
課程采用程序檢查、文檔審查、每周匯報等方式進行能力達成評價,評價方法為每周先自評、然后助教評價、最后教師評價等方式評定能力的達成情況,最后的評定以4周評分的加權平均得出。90分以上為達成度優(yōu),80~89分為達成度良好,70~79分為達成度中等,60~69分為基本達成,60分以下為未達成。
歷經(jīng)4周、160個小時集中設計開發(fā)的HnuSQL達到了預期效果,各個模塊完成了集成測試,系統(tǒng)運行效果見圖5。完成的HnuSQL具備數(shù)據(jù)庫管理系統(tǒng)的基本功能。學生積極查閱相關資料,努力尋找問題的解決方法,很多問題都是學生獨立自主完成的,充分反映出學生發(fā)現(xiàn)問題與處理問題的能力得到了極大提高。
圖5 HnuSQL運行效果
數(shù)據(jù)庫系統(tǒng)設計課程在借鑒開源數(shù)據(jù)庫管理系統(tǒng)軟件的基本功能,剖析DBMS內(nèi)部主要構(gòu)件的基礎上,以小組和團隊協(xié)作的方式,分析、設計與實現(xiàn)一個原型DBMS系統(tǒng)類軟件,培養(yǎng)了學生認真負責、積極協(xié)作的精神,提高了學生對軟件開發(fā)平臺技術的掌握,增強了軟件分析、開發(fā)和測試方面的技能,強化了自主學生的能力,實實在在培養(yǎng)了學生解決復雜工程問題的能力,達到了預期的效果。