鄭大鵬 張曉燕 張申勇
摘要:提出在軟件工程綜合實訓課程中融合有關理論教學模塊,通過模擬軟件企業(yè)實際工作環(huán)境,讓學生在完成軟件項目的過程中掌握軟件工程的實戰(zhàn)知識,介紹基于建構(gòu)主義的軟件工程綜合實訓法并付諸實施。
關鍵詞:課程融合;企業(yè)環(huán)境;綜合實訓;軟件工程;建構(gòu)主義
1、背景
為了提高軟件工程人才培養(yǎng)水平,探索適合計算機學院特點的人才培養(yǎng)方案,幾年前我們提出了一種創(chuàng)新的軟件工程人才培養(yǎng)模式。我們于第6學期設置大型綜合性軟件工程實訓課程,在課程中融合軟件工程的理論教學模塊,同時通過模擬軟件企業(yè)實際工作環(huán)境,讓學生在完成軟件項目的過程中掌握軟件工程的實踐知識。為了落實這種創(chuàng)新的綜合性實訓課程,我們還對綜合實訓的軟件開發(fā)過程進行了探討。根據(jù)上述人才培養(yǎng)思路,我們修訂了軟件工程專業(yè)教學計劃。該計劃在第6學期安排了一門13學分的軟件工程綜合實訓課,與系統(tǒng)分析與設計(4學分)、軟件開發(fā)過程管理(3學分)同修。按照我們的實訓理念,后兩門課將融合在綜合實訓課中開展。2014年春季學期,根據(jù)修訂后的教學計劃,我們首次對2011級軟件工程專業(yè).NET技術(shù)方向的59名學生實施了此綜合實訓課的教學。
2、綜合實訓課主要實施內(nèi)容
按照課程的構(gòu)想,軟件工程綜合實訓一方面要通過“做中學”促進理論課的教學,讓學生掌握軟件工程技術(shù)方面的知識;另一方面要通過企業(yè)工作環(huán)境模擬,讓學生在項目開發(fā)中掌握軟件工程管理和過程方面的知識。這意味著課程覆蓋面很廣。為了確保成功,我們將此次實施的重點放在以下幾個方面。
2.1真實工作場景的模擬
在實踐課程中,我們盡量模擬真實的工作場景。除了開發(fā)時使用與企業(yè)接近的開發(fā)工具、服務器環(huán)境和工作方式,最重要的是要求學生像在企業(yè)上班一樣,每天都要到實訓室工作,并記錄考勤。
這樣做可以給學生一種小組開發(fā)的氛圍,同時由于開發(fā)小組數(shù)據(jù)和代碼保存在單獨的服務器上,如果沒有實訓室網(wǎng)絡環(huán)境支撐,學生無法組織有效的團隊開發(fā)。
2.2小組軟件開發(fā)
開發(fā)活動以小組為單位,每個小組由5人組成,分別擔任組長、開發(fā)經(jīng)理、計劃經(jīng)理、測試經(jīng)理和技術(shù)支持經(jīng)理等角色,小組開發(fā)活動參照“小組軟件過程”的指引。
2.3、理論課融合
在實踐課開展過程中,有關理論課的內(nèi)容和進度根據(jù)實踐課需要安排。涉及的理論課除了與實訓課同修的系統(tǒng)分析與設計、軟件開發(fā)過程管理,也包括實踐課中的理論教學模塊Web程序設計技術(shù)、軟件測試管理與實踐、數(shù)據(jù)庫設計及管理等3個模塊。這些理論教學的內(nèi)容盡量以學生項目開發(fā)需要為取舍依據(jù),內(nèi)容組織順序盡量以項目進展需要為參考,所有課程都圍繞同一案例(送花網(wǎng)站)從不同的方面展開。
2.4迭代開發(fā)
按照業(yè)界流行的軟件開發(fā)過程,軟件開發(fā)以3周為一次迭代,每次迭代進行必要的需求、分析、設計、實現(xiàn)、測評等活動,通過多次迭代逐步完成軟件功能。整個實訓包括開始1周,5次迭代15周。這與原來設想相比減少了1次迭代,主要是因為學期長度已改為19周,需要留出2周做期末考核,l周做成績評定和提交。
2.5階段考核和小組考核
由于實訓課時間較長、學分較多,為了及時掌握學生的學習情況,也為了減少一次性考核對學生的壓力,本課程采用階段考核方式。大約每兩次迭代即對實訓課中融合的理論知識進行一次考核,共進行三次。此外,為了加強團隊建設,讓學生有集體感,有些作業(yè)、考核以小組為單位評分。每門課30%的成績由考勤、參與度和表現(xiàn)決定,30%由團隊表現(xiàn)和成果決定,40%由學生個人的書面考試或書面報告決定。
3、實施過程
3.1分組與選題
課程開始,首先將學生每5人分成一組,老師根據(jù)學生所在行政班并考慮以往學習成績給出初步分組方案,原則是確保每組有一名學習成績相對較好的同學,盡量讓同一行政班的學生在一組,如果有充分的理由學生可以提出微調(diào)。由于學生共59人,故分為12組,第12組4人。第12組由實驗班中學習成績較好或編程能力較強的學生組成,并被委托開發(fā)本實訓課程急需的支撐平臺系統(tǒng),以備下一屆學生上課使用。
第1-11組學生要求參考老師提供的送花網(wǎng)站功能和代碼,使用ASP.NET技術(shù)完成一個電子商務網(wǎng)站。電子商務網(wǎng)站類型由學生從老師提出的候選類型中選擇。每個小組要求做業(yè)務不同的網(wǎng)站,但都應完成一個完整的購物流程,包括瀏覽商品、選購、下訂單、網(wǎng)上支付、訂單查詢等環(huán)節(jié)。各小組選題情況見表1。
3.2開發(fā)環(huán)境搭建
課程開始,教師首先要求各小組用一臺自備的筆記本電腦作為小組開發(fā)服務器,安裝并配置服務器操作系統(tǒng)(Windows Server或Windows 7)、數(shù)據(jù)庫管理系統(tǒng)(SQL Server)及源代碼管理軟件(Visual Source Safe),而實驗室電腦作為開發(fā)工作機已經(jīng)預先安裝了必要的軟件,可直接使用。
要求學生用自己的電腦做服務器主要是為了讓每組學生都能實踐服務器系統(tǒng)的安裝和配置、源代碼管理、遠程數(shù)據(jù)庫連接和讀寫。另外實驗室電腦安裝了還原卡,每次啟動都會還原,數(shù)據(jù)無法保存。
3.3Web應用開發(fā)
本課程介紹給學生的是ASP.NET Web Form編程技術(shù)。因為先修課C#高級程序設計中已介紹過此技術(shù),實訓課的目標是加強以往知識并付諸實踐。此外,這種編程技術(shù)入門容易,比較適合本實驗班大部分同學掌握。
第12組學生提出使用他們感興趣的ASP. NET MVC技術(shù)完成項目,指導老師支持學生大膽嘗試。第4組同學提出瀏覽器端編程使用HTML+CSS+AJAX技術(shù),也獲得同意。這體現(xiàn)了因材施教的思想。
本課程實施的一大特色是為學生提供了完整的送花網(wǎng)站代碼和文檔示例,讓學生在模仿過程中建立自己的編程經(jīng)驗。
各小組開發(fā)活動在類似企業(yè)的分布式環(huán)境下進行。學生每日開始編程時,先從服務器上簽出源代碼;每日結(jié)束時,將修改后的代碼簽入服務器。每日集成活動要求小組測試經(jīng)理負責保證每日簽入的代碼都是完整、可運行的。此外,每個成員開發(fā)時直接讀寫服務器上的數(shù)據(jù)庫,確保數(shù)據(jù)結(jié)構(gòu)的一致性。
3.4Web代碼重構(gòu)
開發(fā)過程中,要求學生在第一次迭代完成網(wǎng)站的原型;然后在第2、3次迭代添加功能代碼實現(xiàn)網(wǎng)站要求的功能;最后在學習多層體系架構(gòu)、設計模式等方面知識后,在第4、5次迭代對完成的代碼進行重構(gòu),使系統(tǒng)優(yōu)化為多層體系結(jié)構(gòu),并在有關功能實現(xiàn)中適當使用設計模式、Web服務、Windows服務等技術(shù)。為了便于學生模仿和體會代碼重構(gòu)的概念,示例代碼按照迭代階段分為初始版、多層架構(gòu)版及分布技術(shù)與設計模式版,并分別在不同的時間節(jié)點提供給學生。后兩個版本的示范代碼中留有大量重構(gòu)的痕跡供學生參考。
3.5小組活動
在開發(fā)過程中,要求小組開展每日晨會、考勤、每周例會、周計劃、日志、周報、每周互評等開發(fā)活動。由于缺少支撐軟件的輔助,以上某些活動未能很好監(jiān)督,執(zhí)行還不夠到位。但考勤、周例會、周計劃等活動基本堅持下來。
在技術(shù)層面,小組開展的活動包括業(yè)務建模、范圍識別、需求描述、原型設計、系統(tǒng)分析、設計、編碼、測試、每日集成、源代碼管理等。由于項目非真實,管理軟件缺乏和準備工作不足,尚有代碼走查、測試驅(qū)動的開發(fā)(TDD)、風險管理、變更控制等未很好落實。
3.6理論課教學
按照建構(gòu)主義認知理論,在實踐課中融合理論模塊的教學主要是為學生的自我知識構(gòu)建提供素材和幫助,這既能提高理論課的教學效果,也可以確保實踐項目的完成。為此我們要求理論課的內(nèi)容必須圍繞項目開發(fā)的實際需要展開,理論課中的例子必須與項目相關,且各種不同的理論課應以同一項目為實例,這樣可以從不同的角度體現(xiàn)各種理論知識對項目開發(fā)的作用。以上要求對理論模塊教學內(nèi)容的取舍和內(nèi)容組織的先后順序提出了新的標準。實際執(zhí)行時,由于系統(tǒng)分析與設計這門傳統(tǒng)專業(yè)課的內(nèi)容不要有太大的變化,我們在設置項目需求時做了特別的考慮。例如,為了讓學生了解和掌握有關多層體系架構(gòu)、設計模式方面的知識,要求各小組最后完成的作品必須是多層體系架構(gòu),且要實現(xiàn)付款功能(為此,筆者事先實現(xiàn)了模擬的公共支付網(wǎng)站及相關編程接口供學生開發(fā)使用),付款的實現(xiàn)還要考慮支持多種不同的付款方式。這樣,教學大綱規(guī)定的有關知識點就能在項目中體現(xiàn)了。在理論課內(nèi)容組織順序方面,為了與項目開發(fā)的需要配合,開始幾周要安排較多的理論課教學,開發(fā)的進度則相應減慢。
3.7全程輔導
本課程要求學生在長達一個學期的時間里,每天到實訓教室工作或上課。這是本課程的特色,也是模擬真實工作場景的需要。在此過程中,理論課之外的所有時間都安排老師全程輔導,一方面監(jiān)督學生的工作,了解各小組的進展;另一方面可及時解答學生的問題,提高學生的學習效率及效果。
4、實施結(jié)果
由精心的組織和認真的執(zhí)行,本實訓課首次實施最終順利完成,12個小組都提交了自己的作品。這些作品雖然水平參差,但都已超過往用實踐課,基本達到了本校畢業(yè)設計作品要求,有些小組作品甚至已達優(yōu)秀畢業(yè)設計水平。
為了比較新的實訓課與以往同類課程的教學效果,筆者連續(xù)兩年對自己所帶的軟件工程綜合實訓課學生進行了問卷調(diào)查。作為對比的2013年綜合實訓課按照未改革的傳統(tǒng)模式進行。凋查方法是采用統(tǒng)一的規(guī)范化問卷,要課程結(jié)束時按照自愿和匿名的原則請已完成答辯的學生填寫2013年調(diào)查班級共42名同學,收回有效問卷38份;2014年共有59名同學,收回有效問卷48份問卷中代表學生對實踐課總體印象和評價的陳述包括以下兩部分。
問題1:本課程讓我學到了軟什開發(fā)的實戰(zhàn)知識;
問題15:總體來說,本實踐課開展得很好
這兩項的調(diào)查結(jié)果如圖l、圖2所。
從圖1可知,2013年89%的同學對課程表示認可,其中強烈認可者占18%;2014年,采用新的教學模式后,對此問題表示認可者上升到92%,其中表示強烈認可者顯著上升到42%。根據(jù)圖2,對本課程總體上認可的學生從79%上升到了85%,其中表示強烈認可的從26%顯著上升到了56%。
5、結(jié)語
盡管基于課程融合和企業(yè)環(huán)境模擬的軟件工程綜合實訓實施有一定的困難,但只要精心計劃、充分準備,該實訓課方案是完全可行的。盡管第一次實施尚有不少需要改進的地方,但實施的結(jié)果表明,這種實訓方式有利于提高學生的軟件工程實戰(zhàn)能力,并能顯著提高學生對課程的滿意度。