王祥斌 唐翠芳



摘要:從介紹應用課題實踐與項目開發訓練特色課程出發,分析軟件工程課程教學中關于實踐實驗教學所存在的問題,提出該特色課程中關于開展軟件工程實驗教學的思路,指出主要教學內容,說明取得的教學效果。
關鍵詞:特色課程;軟件工程;實驗教學
1.應用課題實踐與項目開發訓練課程的開設背景
近年來,計算機專業已經成為高校應屆畢業生就業率較低的專業之一。表1所示為2012年中國大學畢業生“紅黃綠牌”本科專業的情況。2012年6月11日,由麥可思研究院(MyCOS Institute)獨家撰寫的《2012年中國大學生就業報告》正式發布。在這份報告中,雖然計算機科學與技術專業沒有成為前10位失業率最高的專業之一,但就業形勢依然不容樂觀。報告顯示,計算機專業同樣存在著失業量較大、就業率低,且薪資較低等問題。同時,計算機專業的低就業率也由人才培養質量達不到產業要求而造成,一方面應屆畢業生找不到合適的崗位,另一方面企業招不到合適的人才。因此,對于計算機專業而言,如何提高該專業畢業生的動手實踐能力,掌握當前主流的軟件設計方法與技能,緊跟企業的實際要求,改變以往“重視書本理論,忽視實驗實踐,脫離企業應用”的現狀,成為當前計算機專業教育的迫切要求。
應用課題實踐與項目開發訓練課程(簡稱“實訓”課程)是一個系列課程,從2008-2009學年開始,首先在2006級和2007級計算機本科班中開展該課程的教學實驗。經過對5屆學生進行教學摸索,目前該課程已經正式成為貴州師范大學數學與計算機科學學院計算機本科專業的必選課程之一。
“實訓”課程課時總計約180學時,10個學分,歷時5個學期,約80周。課程采用“導師制+小班教學”的形式組建學習小組開展學習,住強調理論與實踐聯系的基礎上重點培養學生的動手實踐能力。
2.軟件工程實驗教學內容中出現的問題
軟件工程是計算機專業的必修課程之一,也足核心課程之一。該課程旨在提高學生的實踐能力和工程設計能力,其實驗課程的內容設計和開展尤為重要。傳統上該課程安排在大學三年級,總學時為72學時(54+18)。但是在實際教學過程中我們發現學生的實踐時間偏少,很難通過18個實驗課時完成從最初的資料查找、閱讀、整理、系統分析、設計、編寫文檔、編碼和測試等有關于軟件開發的基本流程,特別是相關軟件設汁的文檔編制的訓練。對于可視化建模軟件,諸如Rose Rational、trufun P1ato、Power Design等講解淺嘗輒止,甚至被教師一筆帶過,以至于到最后,很多學生只是為了完成課程作業,沒有很好的思考和創新,達不到課程開設的目的,這門原本重要且有趣的課程變成為了應付考試的枯燥的“背誦”課程。
另一方面,授課教師在一定程度上與實際軟件企業的運作存在一定的脫節。絕大部分授課教師甚至自己都沒有編制商業化軟件的經歷。而這種經歷的缺失毫無疑問地將影響到該教師對軟件工程的課程教學與實驗內容的設計,從而造成了某些教師授課時僅能“照本宣科”,這不得不說是軟件工程課程教學的一大遺憾。
因此,為了提高軟件工程課程的教學質量,通過多年的摸索,我們在“實訓”課程中安排了有針對性的實驗課程,采用項目實踐的方式作為軟件工程的有效補充,以期解決上述問題,提高課程的教學質量。
3.軟件工程實驗教學課程的設計思路與開展
通過幾年的實驗,我們可以對“軟件工程實驗教學課程”的教學思路做出以下總結:
1)教學目的。
在教師的指導下,學生通過適當的選題完成軟件工程中的需求分析、架構設計、數據庫設計、編碼、測試、部署等基本環節,使學生在完成任務的過程中培養和提高分析和解決問題的能力。
2)基礎課程與時間安排。
有關軟件工程實驗教學課程的教學,其基礎課程涉及數據庫原理概論、Windows程序設計(有的院校開設的是MFC程序設計或C#程序設計)。因此,將該課程的教學安排在這兩門課程之后是比較適宜的。
3)教學內容框架。
軟件工程實驗教學課程的框架體系如圖1所示。
(1)學生分組與選題。由于實訓課程采用的是“小班制”教學,每個教師教授8-10個學生,可以將學生分為小組。而后,每個教師提供1-2個難度適中的實訓選題,每個題目由一個小組完成。由于學生人數少,有利于教師更加充分地、有側重點地對學生的學習過程進行指導。兩個學生小組也可以展開一定的競爭,促進學生的學習。
(2)課程的框架體系與時間安排。軟件工程實驗教學課程的框架體系主要由兩個部分組成。其中第1個階段即本文所涉及的內容,安排在實訓課開設的第4學期(多為大三上學期)完成,所占學時為18周,54學時。第2個階段則是外包給校外的軟件培訓企業來完成,以2-4周為期夏令營的形式完成,總計120學時,安排在實訓課開設的第5學期(多為大三下學期)完成。
(3)軟件工程實驗教學課程的教學內容。
①項目選題與企劃:確定小組選題,討論并制訂實施計劃;估算項目總體規模、工作量和成本;確定選題實施中擬解決的重點難點問題;初步設計作品功能結構,估計項目范圍、產品規模及總工作量,編寫人力資源計劃和軟硬件資源計劃、測試計劃、配置管理計劃等相應文檔。
②需求分析:介紹或者回顧需求分析的相關理論知識;學習合適的建模軟件,畫出用例圖,書寫用例規約、術語表,完成需求規格說明書等相應文檔;教授類圖、順序圖、協作圖、活動圖、狀態圖等文檔的書寫;確定系統開發環境。
③軟件體系結構設計:設計系統架構;制訂開發策略;確定系統的主要功能模塊;確定系統的物理視圖、邏輯視圖、開發視圖及進程視圖。
④數據庫設計:確定采用何種DBMS系統;利用建模工具進行邏輯設計;設計庫結構與表結構以及完整性約束機制;設計數據庫使用的安全性機制;書寫數據庫使用的管理規章等文檔。endprint
⑤功能及算法設計:制訂模塊的命名規范;確定系統的各個模塊;學習或回顧NS圖、PAD圖的畫法;細化NS圖、PAD圖等手段設計各模塊的功能。
⑥用戶界面設計:確定用戶界面風格;系統出錯處理機制的沒計;人機交互風格的設計。
⑦編碼與設計:根據需求分析規格說明書和相關的技術文檔,采用合適的程序設計語言分工明確地完成相關模塊的編程工作;制作測試用例;采用合適的測試方法測試作品,并編寫測試報告。
⑧作品驗收與部署:作品幫助文檔的編寫;提交作品及相關技術資料;編寫簡要總結報告;對系統進行自我評價。
(4)可能涉及的相關軟件。Rose Rational、trufun Plato、Power Design、Project、Visio。
4.課程實施過程中需要注意的問題
通過四屆學生“實訓”課程的實際教學,軟件工程實驗教學課程在具體的實施過程中,需要注意以下幾個問題:
(1)實訓選題應把握“跳一跳,摸得著”的原則,控制難度。例如,實訓選題太空戰艦(如圖2所示)就是2008級計算計本科所做的選題之一。尤其不提倡指導教師將自己的科研項目進行所謂的“剝離”一部分給學生作為選題。
(2)程序設計語言應當選用前期實訓課程中所學習的程序語言,以免重新學習編程語言而耽誤實驗課程的后期開展。
(3)應選擇大型數據庫系統,如SQL Server或者Oracle,最好與前期實訓課程中學習內容一致。
(4)設計前后臺交互代碼時,培養學生采用事務機制的觀念。
(5)根據指導教師自身的情況,選擇1-2個要用到的建模軟件重點學習,不必面面俱到、跑馬觀花地“介紹”所有的工具軟件。
(6)采用MVC架構進行系統開發時,注重告知學生表現層、業務邏輯層、數據訪問層等多層結構的體現與優缺點;對于網站類選題,注重引入一些新的開發技術(如Ajax)等。
(7)注重培養學生對于技術文檔的查找與自學能力,例如與Java相關的JDK API,或.NET相關的MSDN等。
(8)注重培養學生之間的交流和團隊協作能力。
5.結語
經過諸多學時的集中學習,歷時半年,通過課堂教學、上機實驗、視頻教程等多種形式相結合,該“實訓”課程學習小組的學生對開發軟件作品的基本流程、技術有比較完整的理解,動手能力有了明顯提高,改變了軟件工程課程“枯燥”的“死記硬背”的印象,使學生能夠切切實實地將知識、技術、方法、工具應用到項目實踐中,大大提高了課程的教學質量和學生的動手能力。endprint