袁 超,李春青
(天津工業(yè)大學(xué) 計算機科學(xué)與技術(shù)學(xué)院,天津 300387)
工程碩士研究生教育是我國學(xué)位與研究生教育的重要組成部分[1]。1997年4月,國務(wù)院學(xué)位委員會辦公室和原國家教委研究生工作辦公室借鑒國外成功經(jīng)驗,提出設(shè)置工程碩士,并獲國務(wù)院學(xué)位委員會第十五次會議通過,工程碩士專業(yè)學(xué)位正式誕生[2]。2009年,教育部黨組決定增招碩士研究生,全部用于招收應(yīng)屆本科畢業(yè)生全日制攻讀碩士專業(yè)學(xué)位[3]。自此,工程碩士專業(yè)學(xué)位研究生納入全日制碩士研究生招生渠道,更好地滿足了經(jīng)濟社會發(fā)展需要以及人民群眾對研究生教育的需求[3]。
高級軟件工程課程是軟件工程專業(yè)工程碩士的學(xué)位課,具有較強的科學(xué)性、技術(shù)性和實踐性[4]。通過學(xué)習(xí)該課程,學(xué)生能夠扎實掌握軟件工程領(lǐng)域前沿的理論和技術(shù),具備一定的工程研究能力和獨立承擔(dān)大型軟件項目的能力,為學(xué)生后續(xù)課題研究打下堅實的基礎(chǔ)。目前,關(guān)于本科軟件工程課程教學(xué)研究的文獻相對較多,而關(guān)于工程碩士高級軟件工程課程教學(xué)研究的文獻較為鮮見。
本課程與本科階段的軟件工程課程不同,主要體現(xiàn)在以下幾點。
(1)小班授課。每年選修本課程的工程碩士人數(shù)在20人左右,利于采用更加靈活的授課方式。
(2)學(xué)生基礎(chǔ)不同。在實際教學(xué)過程中發(fā)現(xiàn),學(xué)生所具有的學(xué)科背景和專業(yè)基礎(chǔ)各不相同。其中,一些學(xué)生本科來自本專業(yè)或相關(guān)專業(yè),具有相當(dāng)?shù)膶嵺`工作經(jīng)驗,對本課程的教學(xué)期望更高;而有些學(xué)生基礎(chǔ)較薄弱,尤其是一些跨專業(yè)學(xué)生,起點相對較低。由于學(xué)生的專業(yè)基礎(chǔ)不同,導(dǎo)致該課程的教學(xué)難度增加。
(3)本課程講授內(nèi)容比本科軟件工程課程更加深入,前沿性、創(chuàng)新性和實踐性要求更高。作為工程碩士課程,本課程比本科生課程要求更高,內(nèi)容更加前沿和深入,要求學(xué)生具有更強的分析解決問題的能力。通過本課程的學(xué)習(xí),既要培養(yǎng)學(xué)生的工程實踐能力,也要培養(yǎng)學(xué)生的工程研究能力。本課程會涉及比較前沿的技術(shù),如云計算技術(shù)、軟件重用和軟件構(gòu)件技術(shù)、SOA、軟件演化、人工智能技術(shù)在軟件工程中的應(yīng)用等。其次,本課程要求學(xué)生能夠針對復(fù)雜大型系統(tǒng)進行管理、規(guī)劃、分析、設(shè)計、建模、開發(fā)及維護。因此,本課程探討的教學(xué)案例業(yè)務(wù)邏輯更復(fù)雜,系統(tǒng)規(guī)模較大,具有高并發(fā)、高吞吐量等特點,這無疑增加了學(xué)生的學(xué)習(xí)難度。
為了能夠較系統(tǒng)地培養(yǎng)學(xué)生的工程實踐和工程研究能力,提出了“1+2+N”教學(xué)模式。其中,“1”指用一個完整的具有實際工程背景的軟件項目作為主線貫穿整個教學(xué)環(huán)節(jié);“2”指從“工程實踐”和“工程研究”兩個維度組織教學(xué);“N”指綜合利用多種教學(xué)方法達成教學(xué)目標。
由于課時有限,在實際教學(xué)過程中,發(fā)現(xiàn)案例并不是越多越好。案例過多,容易貪多嚼不爛。把一個具有實際應(yīng)用背景的教學(xué)案例研究透,讓學(xué)生深刻體會軟件開發(fā)的全過程,反而效果更好,能夠讓學(xué)生系統(tǒng)掌握軟件開發(fā)的理論、方法、技術(shù)和工具。作者曾主持和參與過10多個軟件開發(fā)項目,如“新能源汽車充電網(wǎng)絡(luò)運營服務(wù)平臺”“天津市軌道交通故障仿真與維修訓(xùn)練平臺”“軌道交通在線考試系統(tǒng)”以及“精米控制系統(tǒng)”等。在實際教學(xué)過程中,課程組選取了業(yè)務(wù)邏輯相對簡單(適合于課堂教學(xué))、學(xué)生容易理解的“軌道交通在線考試系統(tǒng)”作為教學(xué)案例。考慮到保密要求,刪掉了項目背景,對業(yè)務(wù)邏輯和數(shù)據(jù)結(jié)構(gòu)等進行了修改、簡化和相關(guān)脫敏處理。修改后的項目案例簡述如下。
在線考試系統(tǒng)——某單位欲開發(fā)一套在線考試系統(tǒng)。參加考試的考生規(guī)模大致在20 000人左右。試卷題型主要有單選題、多選題和判斷題,一份試卷中各種題型可以自由組合,共有100道題,答題時間為40分鐘。要求系統(tǒng)能夠?qū)崿F(xiàn)考生在線考試(通過手機終端或者臺式電腦),并能夠?qū)崿F(xiàn)題庫管理、自動組卷、自動判卷、考場監(jiān)控、保存考生歷次考試記錄、考試成績查詢及打印等功能。
系統(tǒng)基本用例圖和系統(tǒng)總體架構(gòu)分別如圖1和圖2所示。
圖1 在線考試系統(tǒng)用例圖
圖2 在線考試系統(tǒng)總體架構(gòu)
在課堂講授過程中,重點講解自動組卷和在線考試兩個功能模塊。整個項目則需要學(xué)生課后分組完成(4~5人一組)。從項目立項開始,到完成交付結(jié)束,涉及項目管理、軟件過程模型、系統(tǒng)分析、系統(tǒng)設(shè)計(架構(gòu)設(shè)計、接口設(shè)計、數(shù)據(jù)庫設(shè)計等)、編碼實現(xiàn)、測試及維護等多個專題和知識點。其間,穿插課堂討論、項目演示等方式,增加課堂趣味性,調(diào)動學(xué)生的積極性,加深學(xué)生對課程知識的掌握。
“1+2+N”中的“2”指工程實踐和工程研究兩個維度。工程碩士的培養(yǎng)既注重工程實踐能力,也注重工程研究能力,因此本課程提出要從這兩個維度組織教學(xué),以達成學(xué)生的畢業(yè)要求。
1)工程實踐維度。
工程實踐教育的目標在于培養(yǎng)學(xué)生創(chuàng)新的工程實踐意識、嚴謹?shù)墓こ虒嵺`作風(fēng)、科學(xué)的工程實踐素質(zhì)、優(yōu)秀的工程實踐能力和規(guī)范的工程實踐標準等[5]。
本課程是培養(yǎng)本專業(yè)工程碩士工程實踐能力的一門重要學(xué)位課。以實際工程項目為案例,通過課堂講授、學(xué)生課后項目實踐、項目演示及課堂匯報等方式,主要達到以下目標:①運用軟件工程的理論、方法和技術(shù)解決復(fù)雜工程項目中的系統(tǒng)規(guī)劃、分析與設(shè)計、開發(fā)與維護、組織與實施以及關(guān)鍵技術(shù)等實際問題;②掌握軟件工程各階段CASE工具的使用,如項目管理工具Project、配置管理工具SVN、快速原型設(shè)計工具Axure RP、數(shù)據(jù)建模工具PowerDesigner、軟件建模工具Rational Rose、測試工具Junit和JMeter等;③培養(yǎng)學(xué)生良好的職業(yè)素養(yǎng),熟悉軟件工程的規(guī)范和標準,具備規(guī)范化的文檔編制能力。
2)工程研究維度。
工程碩士屬于高層次應(yīng)用型人才,應(yīng)該能夠持續(xù)學(xué)習(xí)和掌握本專業(yè)的前沿理論和技術(shù),所以要具備一定的工程研究能力。對于本課程來說,應(yīng)該使學(xué)生掌握軟件工程領(lǐng)域前沿的理論、方法和技術(shù),并應(yīng)用這些新理論、新方法和新技術(shù)解決復(fù)雜的工程問題。同時,應(yīng)該了解本學(xué)科的發(fā)展趨勢,能夠?qū)ο嚓P(guān)理論和工程問題具有自己的見解,具備一定的創(chuàng)新意識和持續(xù)學(xué)習(xí)研究能力,從而適應(yīng)本行業(yè)的快速變化。
針對工程研究能力,本課程主要從兩個方面進行改進:①及時更新授課內(nèi)容,跟蹤當(dāng)前的新理論和新技術(shù)。軟件工程理論和技術(shù)的發(fā)展對軟件產(chǎn)業(yè)向工程化、標準化、自動化方向的發(fā)展起到了重要的促進作用。當(dāng)前,軟件工程領(lǐng)域有許多熱點問題和亟待解決的難題,如軟件可靠性、標準化、智能化、分布式技術(shù)、軟件架構(gòu)技術(shù)、軟件復(fù)用、軟件演化等問題,這些問題都可以作為教學(xué)專題進行討論。②對教學(xué)方法進行改進。例如,對一些涉及前沿技術(shù)的專題,可以邀請行業(yè)專家作專題報告;其次,針對一些復(fù)雜的工程難題,可以發(fā)揮學(xué)生的主體作用,讓其通過查閱文獻、小組討論或者課堂匯報等形式,提出自己的想法和見解。
“1+2+N”中的“N”指多種教學(xué)方法,即綜合應(yīng)用多種教學(xué)方法達成教學(xué)目標。關(guān)于軟件工程課程,相關(guān)文獻提出了多種教學(xué)方法,比如MOOC/SPOC、案例教學(xué)等。然而,要系統(tǒng)上好這門課,還需要有針對性地應(yīng)用多種教學(xué)方法。
1)針對學(xué)情不同,通過分組教學(xué)和針對性補習(xí)減小學(xué)生的基礎(chǔ)差異。
工程碩士的學(xué)情不同于本科生,因為學(xué)生的專業(yè)背景、學(xué)習(xí)起點各不相同。其中,有些同學(xué)有過行業(yè)工作經(jīng)歷,有些同學(xué)是本專業(yè)應(yīng)屆畢業(yè)生,有些同學(xué)屬于跨專業(yè)。為了縮小其基礎(chǔ)差異,可通過兩種方式:①采用分組教學(xué)法,將學(xué)生分成小組,以小組為單位組織教學(xué)。小組中既有基礎(chǔ)較好的,也有基礎(chǔ)較差的。通過課后作業(yè)、課后實踐和課堂討論,基礎(chǔ)較好的同學(xué)帶動基礎(chǔ)較差的,逐漸縮小基礎(chǔ)差異。②采用針對性補習(xí)的方式,根據(jù)學(xué)生的知識背景和基礎(chǔ),有針對性地指定相應(yīng)補習(xí)內(nèi)容和資料,學(xué)生通過課外補習(xí)達到預(yù)期水平,從而縮小全班學(xué)生水平差異,便于后續(xù)內(nèi)容的學(xué)習(xí)。
舉例來說,本課程在第一次上課時會跟學(xué)生有一個互動,給每個學(xué)生分發(fā)一張卡片??ㄆ蠒嵋恍┍究栖浖こ陶n的問題,讓學(xué)生在卡片背面填寫是否能夠回答這些問題,并讓學(xué)生說明對本門課程的了解程度和對本課程的教學(xué)期望。通過該方法,可以初步收集班級的學(xué)情。然后對學(xué)生進行分組,每組4~5人,選一個基礎(chǔ)較好的學(xué)生作為組長,成員既有基礎(chǔ)較好的,也有基礎(chǔ)較薄弱的。以后上課時,每個小組的成員坐在一起,作為一個基本教學(xué)單位。學(xué)習(xí)本課程,需要具備相關(guān)基礎(chǔ)知識,如本科階段的軟件工程、數(shù)據(jù)庫、UML、軟件體系結(jié)構(gòu)、Java/C#編程語言等。對于缺少相關(guān)知識基礎(chǔ)的學(xué)生,會根據(jù)課程進度,分發(fā)相關(guān)資料進行課后補習(xí),以便學(xué)生跟上課堂節(jié)奏。
2)針對項目管理、系統(tǒng)分析與設(shè)計、項目實施、測試與維護等環(huán)節(jié),綜合應(yīng)用分組教學(xué)、案例教學(xué)、課后實踐、課堂討論、項目演示等教學(xué)方式,可調(diào)動學(xué)生的積極性與主動性,有助于學(xué)生理解軟件工程的相關(guān)理論,增強分析問題、解決問題的能力和工程實踐能力。
具體來說,以上文“在線考試系統(tǒng)”為教學(xué)案例,以項目小組為單位組織教學(xué)活動。課后實踐要求以小組為單位完成整個軟件項目,包括項目管理、系統(tǒng)分析設(shè)計與建模、代碼編寫、測試與維護等,同時要掌握相關(guān)CASE工具的使用(見3.2節(jié)),按照規(guī)范編制項目文檔。學(xué)期結(jié)束,要求各小組演示自己的成果,作為實踐考核依據(jù)。平時也可以隨機安排一兩組學(xué)生到講臺前演示項目階段成果,以活躍課堂氣氛,發(fā)揮學(xué)生的創(chuàng)造力,分享各自的見解。對于一些關(guān)鍵點和難點(如軟件過程模型、系統(tǒng)架構(gòu)、設(shè)計模式等),以小組為單位安排幾次課堂討論,有助于調(diào)動學(xué)生的積極性,培養(yǎng)學(xué)生的創(chuàng)新思維,加深對知識點的掌握。
3)對于軟件工程前沿專題內(nèi)容,通過課堂講授、邀請專家作專題報告、課堂討論及匯報、查閱文獻等方式,培養(yǎng)學(xué)生的工程創(chuàng)新意識、創(chuàng)新思維和創(chuàng)新能力。
如前文所述,新理論、新技術(shù)的發(fā)展促進了軟件工程學(xué)科的發(fā)展。學(xué)生有必要掌握本學(xué)科的前沿理論和技術(shù)。本課程會邀請行業(yè)專家進課堂,分享其研究方向,如云計算技術(shù)、軟件理解與軟件演化、SOA等。同時,會安排學(xué)生查閱文獻,通過課堂討論、課堂匯報等方式探討軟件復(fù)用與軟件構(gòu)件技術(shù)、設(shè)計模式、軟件過程模型、軟件可靠性、AI技術(shù)在軟件工程中的應(yīng)用等問題。
我校于2009年取得軟件工程工程碩士學(xué)位授予權(quán)。以國家級卓越軟件工程師實習(xí)實訓(xùn)基地為依托,在培養(yǎng)過程中突出產(chǎn)業(yè)適用型人才培養(yǎng)特色,遵循“實用型、有特色、高層次”的教育理念,為軟件產(chǎn)業(yè)培養(yǎng)基礎(chǔ)扎實、素質(zhì)全面、工程實踐能力強并具有一定工程研究能力的應(yīng)用型、復(fù)合型高層次工程技術(shù)和工程管理人才。
高級軟件工程課程屬于軟件工程專業(yè)工程碩士的學(xué)位課,是培養(yǎng)本專業(yè)高層次應(yīng)用型人才的一門重要課程,能夠為后續(xù)課題研究打下堅實的基礎(chǔ),但是由于工程碩士專業(yè)背景、學(xué)科基礎(chǔ)差別較大,增加了課程的授課難度,相應(yīng)的教學(xué)文獻也比較少見。針對工程碩士工程實踐和工程研究能力的培養(yǎng)要求,我們提出了“1+2+N”教學(xué)模式,基于該教學(xué)模式給出了一個高并發(fā)系統(tǒng)的教學(xué)案例——“在線考試系統(tǒng)”,同時介紹了該教學(xué)模式的實施經(jīng)驗。在實踐中,該教學(xué)模式取得了較好的效果。首先,學(xué)生的課堂積極性和參與度有所提高,課堂氣氛活躍。其次,學(xué)生的工程實踐能力和工程研究能力得到加強。各小組都能完成實踐項目,并提交規(guī)范的項目文檔。同時,學(xué)生能夠從系統(tǒng)的可擴展性和可維護性等角度出發(fā),采用當(dāng)前流行的架構(gòu)技術(shù)、設(shè)計模式等對系統(tǒng)進行優(yōu)化,每個小組都體現(xiàn)了自己的特色。例如,有的小組采用了SSM框架,并從設(shè)計模式的角度給出了解讀;有的小組考慮到成員技術(shù)背景不同,通過查閱文獻,提出了基于WebService的跨平臺集成方案,利用HttpClient和JSON等技術(shù)集成C#和Java項目。這些都是學(xué)生創(chuàng)新能力的表現(xiàn)。此外,本教學(xué)模式通過課堂報告等方式,鍛煉了學(xué)生的演講和表達能力,有利于綜合素質(zhì)的培養(yǎng)。