陸聲鏈 李幗
摘 要 Web技術相關課程是高校計算機專業(yè)的主要課程。在“互聯(lián)網(wǎng)+”時代,培養(yǎng)合格且有創(chuàng)新能力的互聯(lián)網(wǎng)專業(yè)人才不僅僅需要與時俱進地更新該類課程中Web技術的知識體系,同時也需要在課堂教學和實踐中融入軟件系統(tǒng)分析、項目文檔撰寫、編碼測試、團隊合作等軟件工程實施關鍵能力的訓練,提高學生的軟件項目開發(fā)綜合能力。
關鍵詞 軟件工程能力培養(yǎng) Web技術 教學改革 項目化教學
中圖分類號:G424 文獻標識碼:A DOI:10.16400/j.cnki.kjdkz.2019.01.046
Abstract Web technology related-courses are the main major courses in colleges and universities. Internet plus era not only need to update the Web technology courses for cultivating innovative Internet professionals, but also needs more integrated the software system analysis, code testing, project documentation and team software engineering implementation ability into classroom teaching and practice, to improve the comprehensive occupation ability of computer major students.
Keywords training of software engineering ability; Web technology; teaching reform; project oriented teaching
0 引言
軟件項目的開發(fā)是一項十分復雜的工作。一個軟件項目的成功,除了編寫代碼,需求調研、系統(tǒng)設計、系統(tǒng)測試、項目文檔編寫和歸檔等工作必不可少。近年來,盡管國內高校計算機專業(yè)的教學實踐中,往往包括編程語言課程和軟件工程課程。但現(xiàn)實情況是,這兩方面的課程培養(yǎng)一般都是相對獨立的,沒有結合起來。編程語言課程以講解編程語言本身為主,而軟件工程課程則側重于介紹軟件工程各種概念。結果是學生往往只是了解了編程語言的基本知識,而缺乏軟件項目實施過程的系統(tǒng)訓練。導致我們高校的本科畢業(yè)生普遍存在系統(tǒng)分析能力欠佳、文檔撰寫水平低、團隊協(xié)作意識薄弱等問題。[1]本文針對當前我國Web技術與應用相關課程的教學現(xiàn)狀,從提升計算機相關專業(yè)學生的綜合職業(yè)能力出發(fā),采用項目化教學法對該課程開展了初步的教學實踐探索。
1 教學改革的思路和目標
1.1 現(xiàn)有教學方式存在的主要問題
近年來,隨著互聯(lián)網(wǎng)技術的不斷發(fā)展及其在日常生活中的應用日趨廣泛,Web技術相關課程在高校中受到了學生的普遍歡迎。大部分高校都相繼開設了“Web前端開發(fā)技術”、“Java Web應用開發(fā)”、“C#與Web應用開發(fā)”、“PHP Web開發(fā)”等課程,授課內容不僅涉及HTML、CSS、JavaScript等Web前端開發(fā)技術,還包括JSP、PHP 、ASP.NET等動態(tài)網(wǎng)頁編程語言。但是,雖然很多高校在Web技術與應用類課程的教學內容能隨著互聯(lián)網(wǎng)技術的發(fā)展而不斷更新調整,但教學過程主要還是采用傳統(tǒng)的教學組織方式,授課過程中主要采用理論講解結合操作演示、分組實踐等的方式開展,其中前兩個環(huán)節(jié)一般占課程的絕大部分教學時間,主要由教師實施完成,最后留給學生進行分組實踐的時間往往只有2-3周。這種教學模式存在的主要缺點是:(1)以編程語言的語法教學為主線,教學內容側重于語言的某個概念、函數(shù)或組件的簡單編碼,而忽略了語言本身在實際應用中的問題分析、算法設計和程序測試與調試等重要過程。(2)教學過程以教師講解為主、學生練習為輔,難以調動學生的主動性和學習興趣。(3)實踐過程不夠系統(tǒng)化,平時課堂中的實踐往往是針對某個知識點的孤立實踐,難以把重點放在解決問題的方法和思路上。即老師“教”和學生“學”之間孤立進行的現(xiàn)象十分突出。[2]
在這種教學模式下,學習編程語言的理論知識和技術占用了學生的大部分時間,很多學生學完課程后,往往只是了解該編程語言的基本知識點,缺乏將這些知識應用到具體項目的開發(fā)中的能力。[3]更糟糕的是,這種教學模式培養(yǎng)出來的學生往往只會簡單地使用編程工具,而缺乏創(chuàng)新和創(chuàng)造力。
1.2 教學改革的目標
項目化教學法是一種理論與實踐相結合的教學方式,[4]通過在教學中以一個完整、真實的軟件工程項目為主導,在傳授專業(yè)知識的同時,也訓練軟件工程實施的各方面能力;此外也強調以學生的自發(fā)學習為導向,改變傳統(tǒng)教學中學生處于被動學習的地位。在計算機類課程中,項目化教學法以完成真實的軟件項目的設計和開發(fā)為目標,將項目分解為明確具體的小階段任務,每個任務都融入了若干課程所要講授的知識點。這樣,學生在學習過程中就不覺得是在枯燥地學習編程語言,而是在解決現(xiàn)實問題 。[5]
Web技術與應用類課程不僅僅涉及到HTML、CSS、JavaScript等常規(guī)網(wǎng)頁設計技術,還包括PHP、JSP、ASP.NET等動態(tài)網(wǎng)頁技術,涉及到容器、會話、過濾器、數(shù)據(jù)庫連接池、框架、多層開發(fā)模型等新的、抽象的概念,以及與具體編程語言相關的各種組件、對象。通過采用項目化教學,就可以通過在真實的軟件項目的功能實現(xiàn)中展示這些難以理解與抽象的概念與組件是如何應用的,學生也就可以更直觀的理解與掌握它們。同時,項目化開發(fā)也使得學生的學習能力、動手實踐能力和研究分析與解決問題的能力、團隊協(xié)作能力、交流能力、職業(yè)素養(yǎng)與創(chuàng)新能力等得到了鍛煉和提高。學生對軟件開發(fā)的流程與步驟也有了更加直觀的體會,為將來的就業(yè)創(chuàng)業(yè)打下必要的技能和實踐基礎。同時,由于真實的軟件項目開發(fā)是一項復雜的系統(tǒng)工程,本課程傳統(tǒng)上以程序設計語言學習和編程工具使用為主的教學理念遠遠不能使學生適應軟件項目開發(fā)的需要。
2 教學內容設計
為了達到以項目任務引導學生學習、以項目實踐學生學習效果的目的,在課程的項目化教學中,我們設計了課堂訓練和課程設計兩個項目。課堂鍛煉項目是課程教學的主體,該項目有具體的功能需求和系統(tǒng)模塊,事先由任課教師設計和開發(fā)完成,學生在授課教師的引導下完成整個系統(tǒng)預定功能的開發(fā),學生通過該項目的鍛煉,掌握動態(tài)網(wǎng)站開發(fā)的基礎知識和基本流程。而課程設計項目僅由授課教師給出基本的要求,具體選題由學生選定,學生通過分組的方式進行項目的需求調研、系統(tǒng)分析和設計,最終實現(xiàn)項目的開發(fā)和試運行,使學生切身體驗到一個軟件項目開發(fā)的整個流程。
2.1 課堂訓練項目
課堂訓練項目的選取十分關鍵,也是課程改革取得成功的主要前提。訓練項目需要由任課教師事先根據(jù)所授課程的特點選擇合適的選題,并進行詳細的系統(tǒng)設計,將項目劃分為功能和實現(xiàn)難度適中的小模塊,然后采用所授課程的編程語言進行編碼實施。課堂訓練項目的選取十分關鍵,需要將本課程主要的知識點進行分解并融入項目的各個模塊中。以“C#與Web應用開發(fā)”課程為例,該課程選定“校園二手品交易網(wǎng)”作為課堂訓練項目,該項目的模塊劃分和對應的知識點如表1所示。課程學習中,學生在授課教師的引導和幫助下逐步實現(xiàn)軟件的各個功能模塊。通過這種鮮活的例子,學生就容易理解并掌握該門編程語言中各個函數(shù)、組件、對象等知識點是如何使用的。
2.2 課程設計項目
課程設計項目安排在課程學習的后期,用于檢驗和增強學生對課程知識的水平,同時鍛煉學生主動解決問題的能力,以及培養(yǎng)團隊合作意識。因此,課程設計項目通過分組,學生以小組為單位完成整個軟件項目的實施。課程設計項目的題目和具體功能由學生根據(jù)自己的興趣自行擬定,或者選擇任課老師推薦的題目。本實踐環(huán)節(jié)中,要求學生從“項目需求調研和系統(tǒng)分析”、 “系統(tǒng)編碼”、 “系統(tǒng)部署”等各個方面進行開展,并對每個方面的工作成果制定相應的要求。比如,在需求調研和系統(tǒng)設計階段,需要學生開展需求調研和分析,撰寫項目需求說明書、系統(tǒng)詳細設計報告等項目開發(fā)文檔;在系統(tǒng)部署階段,需要撰寫用戶操作說明書,等等。
3 教學過程組織
一般地,一門課程的授課時間大約為18周。考慮到大部分學生前期對于本門課程基本知識的掌握程度不高,因此在時間安排上,課堂訓練項目的時間約為12周,課程設計項目的開發(fā)實踐時間4周,課程考核和總結用時1-2周。
課堂訓練項目的實施是本課程是否取得成效的關鍵。任課教師首先將整個項目的開發(fā)任務進行分解,對每個任務模塊進行編程實現(xiàn),并將主要的編程操作錄制成小視頻;更重要的是,需要總結每個任務模塊中的關鍵知識點以及需要注意的事項。在課堂教學中,老師首先給學生明確本項目的總體目標,以及每個階段的任務分解和時間進度要求。同時,為了給予學生更好的引導,每個任務開始前,老師都首先對實現(xiàn)該任務需要用到主要知識點和工具進行講解,以及需要用到哪些學習資料等等。這樣,學生就在老師的引導下,圍繞任務目標,一步步進行課堂訓練項目的開發(fā)。同時,為了配合學生更好地自主學習,每門課程最好構建專門的課程學習網(wǎng)站,將前期每個項目任務模塊錄制的編程操作小視頻,以及老師認為有用的網(wǎng)絡學習資源分類放在該網(wǎng)站上,方便學生隨時獲得。在實際工作中,我們還會要求學生在每完成一個階段任務后,提交將完成的項目源代碼。任課教師通過查閱學生的任務完成情況,發(fā)現(xiàn)學生實踐中普遍存在的問題,在下次課統(tǒng)一講解、更正。總之,課堂訓練項目的目的就是使學生達到通過模仿制作、理解和領會知識點的具體作用的要求,實現(xiàn)任務驅動和案例教學的有機結合,更好地激發(fā)學生的學習興趣,鍛煉學生的自學能力。
課程設計項目的組織則通過學生自由分組進行實施,每個小組4-5名學生,其中1人任組長。分組后,任課教師首先對項目的實施要求做出具體說明,并提供必要的資料,包括提供軟件項目需求說明書、系統(tǒng)詳細設計報告等文檔的示范案例,講解軟件編碼中需要注意哪些規(guī)范,等等。在分組實施中,如果小組覺得有必要,可隨時請求任課老師的幫助。任課老師也需要全程跟蹤各個小組,隨時參與小組的討論,或在發(fā)現(xiàn)小組的實踐中遇到困難或突發(fā)情況時及時給予支持。
4 考核評價
本課程的考核主要通過平時成績和課程設計項目成績兩部分構成。平時成績根據(jù)學生平時提交的課堂訓練項目中各個階段任務的完成結果進行評定,占30%。課程設計項目成績的評定通過小組答辯來進行,評委由3-5位相關課程的老師承擔;答辯時間約為10分鐘,答辯前要求各個小組提交項目需求分析報告、系統(tǒng)設計報告、用戶手冊等必要的文檔資料。評委根據(jù)小組的軟件完成效果和文檔資料對各個小組進行評分。最后任課老師根據(jù)小組成員的具體分工評定每個成員的成績。課程設計項目小組評分的考核依據(jù)如表2所示。
5 結束語
兩年來,我們在本?!癑ava Web應用開發(fā)”、“C#與Web應用開發(fā)”、“PHP Web開發(fā)”等Web技術與應用相關課程的教學中采用了項目化教學法,通過對選課學生課后進行不同形式的訪問和調查,結果表明這種將知識點教學分解到具體的項目實踐中、通過任務驅動引導學生掌握編程技能的教學改革思路正確,學生的學習主動性、積極性有了較大的提高,改變了普遍以老師講授為主、學生聽做為輔的常規(guī)教學方式,不僅使學生的動手編程能力得到了鍛煉,同時也培養(yǎng)了其獨立思考、積極探索的習慣。此外,在課程中引入需求分析、系統(tǒng)設計等計算機專業(yè)綜合能力的鍛煉,也適應當前我國大力發(fā)展“新工科”教育的新形勢,[6]希望在以后的教學中進一步推廣和完善。
參考文獻
[1] 伍春香,劉斌,李小紅.基于能力培養(yǎng)的軟件工程教學實踐[J].計算機教育,2017.8:38-41.
[2] 肖卓宇,黎妍,葉嘉笑. 以計算思維為導向的大學生程序設計能力培養(yǎng)研究[J].計算機時代,2017.1:79-81.
[3] 王藍婧.基于項目和任務的教學模式在Web技術及應用課程中的探索[J].電腦知識與技術,2016.12(34):184-185.
[4] 錢存陽.項目化教學培養(yǎng)大學生系統(tǒng)實踐能力[J].高等工程教育研究,2015.2:187-192.
[5] 李曉明.企業(yè)項目化教學法在基于Java技術的Web應用開發(fā)課程教學中的應用與實踐[J].軟件導刊,2012.11(2):182-183.
[6] 傅雷揚,饒元.新工科背景下軟件課程教學模式研究[J].重慶科技學院學報(社會科學版),2017.10:116-117.