林斌武
(四川西南航空職業學院,四川 成都 610041)
計算機專業不同于其他工科專業,其具有實踐性、工程性強等特點,且計算機課程的理論知識也更為抽象、復雜,只依賴理論知識的學習學生很難準確掌握計算機語言的運行機制和編譯原理,因此計算機專業的實踐課程也極為重要。然而,據目前互聯網企業的反饋情況,高校計算機專業畢業生雖然理論知識掌握的較為全面,但缺乏實踐技能,對知識的理解只流于表面,且普遍反映學生學習能力較差,對不同語言的適應能力較差?;诖耍绾翁嵘咝S嬎銠C專業實踐課程的教學質量和教學效果,從而使學生滿足社會和企業的需求,是高校教育工作者急需解決的問題。文章提出一種軟件工業迭代開發流程驅動的實踐課程教學方法,致力于提升高校計算機實踐課程的教學效果,從而為高校計算機專業教師提供參考依據。
以項目迭代開發的實踐需求為導向,將知識點融合于項目目標中,強化學生的實踐行為,通過這樣的教學方式,能夠有效地實現以下目標:
迭代開發不同于敏捷開發,迭代開發的軟件更具穩定性和可靠性。其是將大型項目分割為多個迭代子項目,每次迭代過程都包含改子過程的需求分析、概要設計、編碼設計、實現、單元測試、集成測試以及性能測試等。這種開發方式對確保了每個迭代子項目的穩定性和可靠性,各迭代子環節的測試確保了最終迭代環節的穩定性和健壯性,也因此迭代開發是過去20年的主流開發方式。然而,目前高校教學中,迭代式開發也只限于教材內容的理論知識,教師并未將其核心思想真正融入學生的實踐課程中,也因此學生無法深入理解迭代式開發的內涵,因此,將迭代開發驅動的模擬項目引入實踐課程的教學能彌補以上不足,更好地滿足軟件行業對高校學生的需求。
計算機專業不同于其他工科專業,其對學生的實踐技能有較高的要求,且相關的學科教學中明確指出,高校必須注重對計算機專業學生實際動手能力的提升。而迭代式開發過程可以使學生在各階段學習完成后進行子項目的開發,且子項目開發中使用了整體的開發流程,學生可以了解需求分析、設計、編碼、測試等完整的開發過程,這無疑可以提高學生的編碼能力和實踐技能。
本文以“網絡程序設計(J2EE)”為例,在教學組織方面進行以下嘗試。
項目背景為某公司在不同的規模程度時期對網上平臺技術要求的變化過程,在第一階段,要求網頁以靜態頁面為主,主要展示企業背景、企業產品列表及屬性等;第二階段要求網頁以動態頁面為主,并涉及簡單的電子商務,如用戶可以自行查詢產品信息以及訂貨等;第三階段要求將其制作為復雜的B2C電子商務網站,入隊用戶增加產品推薦、優化信息等功能;第四階段要求其能支持較大規??蛻羧旱拇笮虰2C網站,并要求網站的穩定性、安全性和可靠性等。從以上階段可看出,網上平臺技術要求的提升趨勢與J2EE的教學內容同步,能很好地與教學進度安排相融合。
作為專業性極強的實踐類課程,上機學時應占據總學時的2/3以上。在實際的軟件開發環節,往往項目初期是極為重要的,初期涉及需求調研、需求分析、框架設計、概要設計以及各類文檔編寫等,其是對項目整體的定性過程,因此其應占據總課時的1/3。在組織方面,項目的每次迭代之前,教師需要提供場景信息,安排學生小組討論,進行需求分析,設計框架,完成詳細設計、實施和測試,然后完成用戶手冊等文檔工作。最后,小組將公開演示結果,并在通過全班和老師的評估后完成迭代。
第一階段主要講述網絡程序的背景和基礎知識,如語言的學習方式、開發環境以及環境配置方式,第一階段的開發可由學生自行完成,學生可自行安裝開發工具并配置環境變量,安裝完成后編寫簡單的“hello world”程序進行測試;第二階段的側重點則是程序是怎么被計算機識別的,以及相關的網絡程序技術,如JSP、數據庫等內容,該階段教師可以安排學生自由組隊,學生以小組合作模式查找技術點的相關資料并探討,思維的碰撞可以促使學生深入了解理論知識;第三階段的教學重點是成熟的開發范式的應用,如MVC框架應用,查詢推薦、優化等,該階段教師應根據課本的理論知識或實際項目設計相關的課程設計,以供學生以小組合作方式進行時間開發;第四階段教學重點是企業級應用的開發技術,如事務處理、企業級平臺以及EJB應用等,在第三階段的開發基礎上,第四階段的開發逐步深入,從實現簡單的功能性要求升級到實現項目的穩定性和運行效率。
通過兩個學期的實踐,“網絡程序設計”這門課程取得了良好的教學效果,在該課程中,學生們完成了約4000~6000行的Java、JSP、Servlet和EJB等程序.期末考試的主觀題部分得分率達到58%,較以前有較大幅度增長。有理由相信,通過一系列實踐課程的學習,一個高校學生完全有希望達到成為一個有基礎的程序員的目標。