邢 如 意
(江蘇聯(lián)合職業(yè)技術(shù)學(xué)院 徐州財經(jīng)分院,江蘇 徐州 221008)
?
基于測試驅(qū)動和迭代開發(fā)的程序設(shè)計教學(xué)
邢 如 意
(江蘇聯(lián)合職業(yè)技術(shù)學(xué)院 徐州財經(jīng)分院,江蘇 徐州221008)
摘要:從分析當(dāng)前程序設(shè)計類課堂教學(xué)存在的問題入手,闡述測試驅(qū)動和迭代開發(fā)的相關(guān)理論,按照功能演示和需求分析,任務(wù)實現(xiàn)技術(shù)性分析,制訂測試計劃,編碼實現(xiàn),功能測試和版本化提交教學(xué)過程,討論了基于這兩種程序開發(fā)的課程實施方法,通過課堂教學(xué)評估曲線來實現(xiàn)課堂教學(xué)效果的評價.
關(guān)鍵詞:測試驅(qū)動;迭代開發(fā);課堂教學(xué)
高職軟件技術(shù)專業(yè)程序設(shè)計開發(fā)類課程的人才培養(yǎng)目標(biāo)是培養(yǎng)具有一定程序設(shè)計理論基礎(chǔ)、以實踐為主的高級技術(shù)應(yīng)用型人才.教育的重點在于學(xué)生的程序設(shè)計實踐,著重培養(yǎng)學(xué)生的分析設(shè)計能力和動手能力.因此,在高職程序設(shè)計類課程的安排上應(yīng)先以程序設(shè)計基礎(chǔ)入手,然后開設(shè)實訓(xùn)項目類課程,讓學(xué)生能通過一門課程的學(xué)習(xí)實踐完成一個完整的項目,進(jìn)而鞏固知識和提高項目開發(fā)的經(jīng)驗.
1程序設(shè)計類課程教學(xué)中存在的問題
程序設(shè)計類課程在講授的同時需要讓學(xué)生進(jìn)行實踐練習(xí),因此大部分會安排在機(jī)房授課,學(xué)生雖然能夠每堂課認(rèn)真聽講、作筆記和上機(jī)練習(xí),但由于知識點配套練習(xí)任務(wù)在設(shè)計上不夠連貫,導(dǎo)致學(xué)生對知識點的認(rèn)知和理解不能形成整體,最終不能達(dá)到較好的教學(xué)效果.例如,學(xué)生在學(xué)習(xí)C#程序設(shè)計課程中“數(shù)據(jù)訪問技術(shù)ADO.NET”一章時,由于ADO.NET技術(shù)的多樣性,大部分教材在編排時通常為每個知識點單獨設(shè)計練習(xí)任務(wù),學(xué)生在學(xué)習(xí)完理論后進(jìn)行上機(jī)練習(xí),如,某教材在編排“增刪改”操作時設(shè)計了“添加學(xué)生信息”的任務(wù),在編排“數(shù)據(jù)查詢”時設(shè)計了“查詢圖書信息”的任務(wù),這種設(shè)計導(dǎo)致各知識點的任務(wù)較為分散,各任務(wù)在知識點和技能點上沒有形成聯(lián)系和連貫性,導(dǎo)致學(xué)生在學(xué)習(xí)時知識不系統(tǒng),從而影響學(xué)生的積極性.
2測試驅(qū)動與迭代開發(fā)的相關(guān)理論
測試驅(qū)動和迭代開發(fā)是目前常用的軟件開發(fā)方法.測試驅(qū)動開發(fā)是指在編寫功能代碼前先制定測試計劃、編寫測試代碼,通過測試來推動整個開發(fā)的進(jìn)行[1].采用測試驅(qū)動開發(fā)有助于提高代碼編寫的質(zhì)量和提高開發(fā)的進(jìn)度.測試計劃和測試代碼是編寫功能代碼的基準(zhǔn),開發(fā)者應(yīng)編寫可以通過測試的代碼[2].圖1展示了常規(guī)軟件開發(fā)和采用測試驅(qū)動開發(fā)流程的區(qū)別.
圖1 常規(guī)軟件開發(fā)和測試驅(qū)動開發(fā)流程
迭代開發(fā)也稱為迭代增量式開發(fā)[3].采用迭代開發(fā)方法時,將一個項目的開發(fā)工作劃分為多個小項目(開發(fā)周期),每一個小的項目稱為一次迭代.在每一次迭代中都包括問題定義、需求分析、概要設(shè)計、詳細(xì)設(shè)計、編碼和測試,是一個完整的軟件工程生命周期.采用迭代開發(fā)可以降低軟件開發(fā)的風(fēng)險、快速響應(yīng)產(chǎn)品需求的變更、保證開發(fā)進(jìn)度和提升軟件質(zhì)量.
本文針對目前程序設(shè)計類課程教學(xué)中存在的問題,結(jié)合測試驅(qū)動開發(fā)方法和迭代開發(fā)方法,以“數(shù)據(jù)訪問技術(shù)ADO.NET”章節(jié)為例,闡述基于測試驅(qū)動和迭代開發(fā)在程序設(shè)計課堂教學(xué)中的實施方法.
3基于測試驅(qū)動和迭代開發(fā)的程序設(shè)計類課程的課堂實施方法
C#程序設(shè)計課程中“數(shù)據(jù)訪問技術(shù)ADO.NET”在講解時知識點分為三部分:使用ADO.NET實現(xiàn)數(shù)據(jù)更新操作、使用ADO.NET實現(xiàn)數(shù)據(jù)查詢操作和數(shù)據(jù)集DataSet技術(shù).這些知識點之間的連續(xù)性不強(qiáng),彼此之間較為獨立.因此在設(shè)計各知識點練習(xí)案例時以“學(xué)生信息管理系統(tǒng)”為例,將三個知識點與“添加學(xué)生信息”“查詢單個學(xué)生信息”和“搜索學(xué)生信息”三個業(yè)務(wù)功能對應(yīng),學(xué)生每學(xué)習(xí)完一個知識點即完成對應(yīng)的功能.采用迭代開發(fā)方法要求在每次迭代時都從需求分析入手,一直到上線交付為止.在課堂教學(xué)中共分為5個環(huán)節(jié),實施過程見表1所示.
表1 課堂實施過程
(1)功能演示,需求分析
以任務(wù)驅(qū)動方式組織教學(xué),每次課設(shè)計完成一個獨立的任務(wù).首次講解知識點前,先演示事先設(shè)計的章節(jié)貫穿案例——“學(xué)生信息管理系統(tǒng)”,向?qū)W生講解系統(tǒng)功能,幫助學(xué)生進(jìn)行功能需求分析,向?qū)W生闡述迭代開發(fā)思想,讓學(xué)生明確系統(tǒng)開發(fā)的過程將拆分為多個迭代,在學(xué)習(xí)新知識的過程中逐步開發(fā)并完成各個功能模塊的設(shè)計.
(2)任務(wù)實現(xiàn)技術(shù)分析
在任務(wù)需求分析結(jié)束后,采用提問引導(dǎo)方式讓學(xué)生思考案例任務(wù)中關(guān)于數(shù)據(jù)的操作有哪些,繼而引出數(shù)據(jù)表的定義,分析數(shù)據(jù)表結(jié)構(gòu).引導(dǎo)學(xué)生思考如何將數(shù)據(jù)更新至數(shù)據(jù)表,如何查詢數(shù)據(jù)表中數(shù)據(jù)并顯示在界面上.本步驟主要是引出當(dāng)堂課所講技能點,引導(dǎo)學(xué)生積級思考任務(wù)實現(xiàn)的原理,幫助學(xué)生理清知識點.
(3)制定測試計劃
依據(jù)測試驅(qū)動的開發(fā)方法,在編碼實現(xiàn)前編寫測試計劃.測試計劃根據(jù)功能需求編寫,預(yù)先設(shè)計好測試路徑、測試數(shù)據(jù)、預(yù)期測試結(jié)果,并編寫測試計劃文檔.學(xué)生編寫測試計劃的過程也是再次梳理功能需求的過程.
(4)編碼實現(xiàn)
每堂課的知識點講解及學(xué)生練習(xí)在此階段完成.迭代開發(fā)方法在應(yīng)用中推薦敏捷開發(fā)和極限編程相結(jié)合方法,結(jié)對編程是極限編程中的一種,因此在教學(xué)中可采取結(jié)對編程形式并組織學(xué)生上機(jī)練習(xí).在教學(xué)實踐中采用結(jié)對編程和測試驅(qū)動開發(fā)模式,學(xué)生每兩人為一組,編碼時一人負(fù)責(zé)代碼錄入,一人負(fù)責(zé)代碼設(shè)計和錯誤查找,這種安排方式可有效減少學(xué)生在代碼編寫時的錯誤及提高代碼編寫的質(zhì)量.
(5)功能測試和版本化提交
采用結(jié)對方式進(jìn)行編碼.在進(jìn)行功能測試時,兩人進(jìn)行角色互換,即之前負(fù)責(zé)監(jiān)督和代碼設(shè)計、錯誤查找的學(xué)生負(fù)責(zé)根據(jù)測試計劃文檔進(jìn)行測試,另一位學(xué)生則輔助測試,填寫測試結(jié)果.
測試通過后,將本次任務(wù)進(jìn)行版本化提交至教師端.迭代化開發(fā)在軟件發(fā)布上的體現(xiàn)為將每一次發(fā)布獨立標(biāo)記版本.在進(jìn)行“數(shù)據(jù)訪問技術(shù)ADO.NET”授課時,將三次任務(wù)的版本化分別標(biāo)記為0.1~0.3,在全部任務(wù)完成且經(jīng)過系統(tǒng)測試后,最終發(fā)布為1.0版本.
4課堂教學(xué)效果分析
傳統(tǒng)的程序設(shè)計類課程課堂教學(xué)效果和實訓(xùn)類課堂教學(xué)效果以學(xué)生上機(jī)完成率為主要評價方式,學(xué)生上機(jī)完成率高則表明課堂教學(xué)效果好.但在實際教學(xué)中發(fā)現(xiàn),單純依靠學(xué)生上機(jī)完成率不能較準(zhǔn)確地說明學(xué)生對知識點的掌握程度,在教學(xué)中經(jīng)常發(fā)現(xiàn)學(xué)生有拷貝其他同學(xué)成果的現(xiàn)象,而這在最后提交內(nèi)容上教師并不容易區(qū)分.
在實施基于測試驅(qū)動和迭代開發(fā)的程序設(shè)計類課程課堂案例教學(xué)中總結(jié)發(fā)現(xiàn),將學(xué)生的上機(jī)完成率和學(xué)生的參與度結(jié)合能夠較好地表明課堂的整體教學(xué)效果,并且參與度與上機(jī)完成率這兩個因素是互相關(guān)聯(lián)的,即學(xué)生參與程度越高,其上機(jī)完成率也越高,反之亦然.
基于測試驅(qū)動和迭代開發(fā)的課堂教學(xué)[4],在實施中學(xué)生活動包括:學(xué)生編寫測試計劃文檔、編碼實現(xiàn)、進(jìn)行程序測試、完善測試計劃文檔、補(bǔ)充測試結(jié)果、程序版本化提交,每一個活動都需要學(xué)生全部投入,因此,根據(jù)學(xué)生提交的測試計劃文檔的詳細(xì)與否、提交代碼審查、測試結(jié)果的正確性和準(zhǔn)確性、程序版本化提交結(jié)果等多個因素對學(xué)生的參與度進(jìn)行量化,最終將全班學(xué)生的數(shù)據(jù)匯總?cè)∑淦骄?,并根?jù)數(shù)據(jù)曲線進(jìn)行教學(xué)效果評估,分析學(xué)生在各環(huán)節(jié)執(zhí)行上存在的問題.圖2是實踐教學(xué)中獲取到的數(shù)據(jù)形成曲線圖,即課堂教學(xué)效果評估曲線圖.圖中的曲線說明了測試計劃編寫得越詳細(xì),測試數(shù)據(jù)設(shè)計越準(zhǔn)確、準(zhǔn)備越充分,在測試上出現(xiàn)的錯誤就越少,且大多數(shù)學(xué)生能夠達(dá)到此要求.少部分同學(xué)偏離了主要曲線路徑,說明在課堂上參與和投入程度不足,需要在以后教學(xué)中多加關(guān)注.
圖2 課堂教學(xué)效果評估曲線圖
5結(jié)語
測試驅(qū)動和迭代開發(fā)在軟件開發(fā)理論上雖然已經(jīng)發(fā)展成熟,但在軟件專業(yè)教學(xué)上的應(yīng)用還需進(jìn)一步嘗試和總結(jié).筆者雖經(jīng)過兩個學(xué)期的教學(xué)和實踐獲得了較好的教學(xué)效果,收獲了一些經(jīng)驗,但分析學(xué)生接受能力、課堂教學(xué)環(huán)境等多個內(nèi)外部因素發(fā)現(xiàn),軟件工程理論在軟件開發(fā)教學(xué)的應(yīng)用實踐還有很多地方需要調(diào)整.軟件技術(shù)人才的培養(yǎng)需要結(jié)合企業(yè)實際需求、開發(fā)環(huán)境和場景進(jìn)行改革和完善,廣大的教育工作者應(yīng)該在教學(xué)中不斷探索軟件工程理論與教學(xué)的結(jié)合點,以便于學(xué)生在畢業(yè)前能夠熟知企業(yè)開發(fā)場景和流程,提高學(xué)生在日益激烈的IT市場中的競爭力.
參考文獻(xiàn):
[1]伍鵬,謝凱.基于測試驅(qū)動開發(fā)的C語言教學(xué)研究[J].軟件,2012,33(5):103-104.
[2]陳翔,鞠小林,顧衛(wèi)江,等.測試驅(qū)動開發(fā)思想指導(dǎo)下的C++程序設(shè)計教學(xué)改革[J].計算機(jī)教育,2015(1):109-113.
[3]陸悠,奚雪峰,華澤,等.一種項目迭代開發(fā)驅(qū)動的計算機(jī)實踐類課程教學(xué)方法[J].大學(xué)教育,2013(8):55-56.
[4]季一木,劉允,宗平,等.軟件迭代開發(fā)模型在軟件人才培養(yǎng)中的應(yīng)用研究[J].計算機(jī)教育,2013(3):89-92.
責(zé)任編輯:吳瑞紅
Test-driven and iteractive development-bawed tyeaching of programming designing
XING Ru-yi
(Xuzhou Finance Branch, Jiangsu Union Vocational and Technical Institute, Xuzhou, Jiangsu 221008, China)
Abstract:This study begins with the existing problems in the teaching of programming designing, and describes the test-driven, iterative development and related theories, functional demonstration, requirement analysis, task achieved technical analysis, test planning, coding, function testing and version teaching that should be applied to teaching methodologies. Moreover, the evaluation may be achieved through classroom teaching assessment curves.
Key words:test-driven; iterative development; classroom teaching
收稿日期:2015-10-12
作者簡介:邢如意(1982-),男,江蘇徐州人,江蘇聯(lián)合職業(yè)技術(shù)學(xué)院講師,碩士,研究方向:軟件工程.
文章編號:1009-4873(2016)02-0057-04
中圖分類號:TP312
文獻(xiàn)標(biāo)志碼:A