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