劉淑艷 吳 鵬
摘要:本文針對(duì)高職學(xué)院“數(shù)據(jù)結(jié)構(gòu)”課程實(shí)踐教學(xué)環(huán)節(jié),提出基于迭代化的增量軟件開(kāi)發(fā)方式開(kāi)放實(shí)踐教學(xué)課堂學(xué)習(xí)情境,設(shè)計(jì)了具有實(shí)用價(jià)值的工作任務(wù)來(lái)覆蓋全部課程的知識(shí)體系,使學(xué)生能夠親身體驗(yàn)實(shí)際軟件項(xiàng)目開(kāi)發(fā)工作開(kāi)展的步驟和方法,在工程實(shí)踐中有效地應(yīng)用算法及數(shù)據(jù)結(jié)構(gòu)知識(shí)來(lái)分析及解決問(wèn)題。
關(guān)鍵詞:迭代增化增量模型;工作任務(wù);數(shù)據(jù)結(jié)構(gòu)
中圖分類號(hào):G642 文獻(xiàn)標(biāo)識(shí)碼:B
1引言
“數(shù)據(jù)結(jié)構(gòu)”是高職學(xué)院計(jì)算機(jī)專業(yè)的核心課程,是程序設(shè)計(jì)的重要理論技術(shù)基礎(chǔ),為后繼專業(yè)課的學(xué)習(xí)提供必要的基礎(chǔ)知識(shí)、基本理論和方法。教學(xué)目的包括:熟練掌握基本的數(shù)據(jù)結(jié)構(gòu)和算法;能應(yīng)用重要的算法策略和分析方法;在實(shí)際的工程設(shè)計(jì)中應(yīng)用算法。
“數(shù)據(jù)結(jié)構(gòu)”是一門(mén)技術(shù)性很強(qiáng)的課程,以高職學(xué)生的思維習(xí)慣和抽象思維能力,在有限的時(shí)間里很難對(duì)課程的原理和方法的應(yīng)用有清楚的認(rèn)識(shí)。他們學(xué)習(xí)更注重知識(shí)和理論的應(yīng)用性,而傳統(tǒng)的實(shí)驗(yàn)課缺少有實(shí)用價(jià)值的工程應(yīng)用設(shè)計(jì),內(nèi)容枯燥而缺乏創(chuàng)造性,學(xué)生的主動(dòng)性和積極性不高。
為了將嚴(yán)謹(jǐn)抽象的理論教學(xué)延伸至現(xiàn)實(shí)生活中的問(wèn)題情境,提高學(xué)生將數(shù)據(jù)結(jié)構(gòu)中的知識(shí)應(yīng)用于實(shí)際問(wèn)題的能力,本文首先提出了基于迭代增量的開(kāi)發(fā)方式設(shè)計(jì)實(shí)踐學(xué)習(xí)情境,從接受任務(wù)到任務(wù)完成都遵循“需求分析→數(shù)據(jù)結(jié)構(gòu)/算法設(shè)計(jì)→編碼實(shí)現(xiàn)→測(cè)試”這一基本的工作流程,然后根據(jù)數(shù)據(jù)結(jié)構(gòu)課程知識(shí)體系結(jié)構(gòu)設(shè)計(jì)了具有連續(xù)性和序列性的實(shí)驗(yàn)任務(wù),進(jìn)而分析各個(gè)任務(wù)如何在迭代增量過(guò)程具體實(shí)施操作,最后對(duì)比傳統(tǒng)的實(shí)驗(yàn)教學(xué)來(lái)評(píng)價(jià)該實(shí)踐方法的有效性。
2實(shí)驗(yàn)教學(xué)過(guò)程設(shè)計(jì)
迭代增量模型是軟件開(kāi)發(fā)過(guò)程中常用的開(kāi)發(fā)模型,將其引入數(shù)據(jù)結(jié)構(gòu)的實(shí)踐教學(xué)中設(shè)置教學(xué)場(chǎng)景,使實(shí)踐教學(xué)處于開(kāi)放狀態(tài),不拘泥課堂內(nèi)外的界限,也不受制于數(shù)據(jù)結(jié)構(gòu)課程通常的總課時(shí)數(shù)。將設(shè)計(jì)的30個(gè)實(shí)驗(yàn)任務(wù)平鋪于整個(gè)學(xué)期,每個(gè)任務(wù)從接受到任務(wù)完成都遵循“需求分析→數(shù)據(jù)結(jié)構(gòu)/算法設(shè)計(jì)→編碼實(shí)現(xiàn)→測(cè)試”這一基本的工作流程,如圖1所示。
從圖中可知,迭代增量的迭代是通過(guò)對(duì)核心開(kāi)發(fā)活動(dòng)的重復(fù)應(yīng)用,包括了對(duì)問(wèn)題解決方案定義以及解決方案實(shí)現(xiàn)的連續(xù)細(xì)化,其中的增量是指:軟件開(kāi)發(fā)過(guò)程中,隨著數(shù)據(jù)結(jié)構(gòu)理論課程知識(shí)由少至多的學(xué)習(xí),在一次迭代運(yùn)行的周期中,學(xué)生對(duì)問(wèn)題的理解以及解決方案提供的功能均會(huì)增長(zhǎng),先開(kāi)發(fā)每個(gè)實(shí)驗(yàn)任務(wù)的主要功能模塊,再開(kāi)發(fā)次要功能模塊,逐步完善,最終開(kāi)發(fā)出相對(duì)完整的符合需求的軟件作品。這樣將整個(gè)實(shí)踐的全過(guò)程都融入在一系列的工程任務(wù)中,在實(shí)踐開(kāi)發(fā)中,其中連續(xù)地組織起來(lái)數(shù)個(gè)或更多的應(yīng)用,以構(gòu)成一個(gè)完整的項(xiàng)目。
學(xué)生按照上面的開(kāi)發(fā)模型,在實(shí)驗(yàn)課程中引入軟件工程的原理,按照規(guī)范的開(kāi)發(fā)過(guò)程學(xué)習(xí)和應(yīng)用數(shù)據(jù)結(jié)構(gòu)原理和方法,故而開(kāi)展小規(guī)模軟件數(shù)據(jù)管理系統(tǒng)調(diào)研,設(shè)計(jì),編碼測(cè)試工作。另外根據(jù)“軟件技術(shù)應(yīng)用崗位職業(yè)標(biāo)準(zhǔn)”,分析工作過(guò)程中的一系列真實(shí)職業(yè)角色,指導(dǎo)學(xué)生按照“需求分析員→架構(gòu)架構(gòu)師→編碼員→測(cè)試員”等不同角色的轉(zhuǎn)換在迭代增量過(guò)程中完成任務(wù),著力培養(yǎng)學(xué)生的職業(yè)能力。
3實(shí)驗(yàn)教學(xué)內(nèi)容的組織與設(shè)計(jì)
本課程實(shí)踐教學(xué)內(nèi)容的組織、安排的基本思路是遵循迭代增量的開(kāi)發(fā)基本流程,以真實(shí)工作任務(wù)及其工作過(guò)程為依據(jù)整合、序化教學(xué)內(nèi)容,精心設(shè)計(jì)了30個(gè)學(xué)習(xí)性工作任務(wù)。從課程教學(xué)內(nèi)容組織而言,考慮對(duì)于正在發(fā)生迅速變革的計(jì)算機(jī)領(lǐng)域,選擇那些相對(duì)穩(wěn)定、長(zhǎng)期有用的、對(duì)應(yīng)用領(lǐng)域必不可少的知識(shí)結(jié)構(gòu)作為實(shí)驗(yàn)任務(wù)設(shè)計(jì)的內(nèi)容。課程教學(xué)內(nèi)容和學(xué)習(xí)工作任務(wù)的總體組織安排如圖2所示。
其中,課程教學(xué)內(nèi)容共計(jì)14個(gè)專題模塊與30個(gè)學(xué)習(xí)工作任務(wù)交叉對(duì)應(yīng),全部任務(wù)將所有知識(shí)結(jié)構(gòu)迭代覆蓋,各個(gè)工作任務(wù)按教學(xué)內(nèi)容的先后依照進(jìn)度逐一展開(kāi)。30個(gè)
結(jié)合具體問(wèn)題構(gòu)造的軟件設(shè)計(jì)工作任務(wù)經(jīng)常會(huì)要求學(xué)生“用特定的數(shù)據(jù)結(jié)構(gòu)/算法”來(lái)解決某個(gè)問(wèn)題,學(xué)生需要撰寫(xiě)詳細(xì)的設(shè)計(jì),描述現(xiàn)在要解決的問(wèn)題和最后的結(jié)果。對(duì)于算法的描述,應(yīng)該按照4點(diǎn)要求執(zhí)行:
(1) 算法的中英文描述,提供偽代碼(pseudocode)。
(2) 最少以一個(gè)工作例子或圖表來(lái)更明確的顯示算法怎樣運(yùn)作。
(3) 算法正確性的一個(gè)證明(或表示)。
(4) 算法執(zhí)行時(shí)間的分析。
這樣數(shù)據(jù)結(jié)構(gòu)和算法設(shè)計(jì)這一核心工作流程尤為重要,教師必須加強(qiáng)的指導(dǎo)力度,做到邊講邊練、邊學(xué)邊做。而在需求分析過(guò)程中,教師帶領(lǐng)學(xué)生深入現(xiàn)實(shí)實(shí)際獲取和調(diào)研需求,學(xué)生會(huì)跟隨理論課知識(shí)進(jìn)一步學(xué)習(xí)和調(diào)研,增加需求,迭代需求分析這一核心工作過(guò)程。每個(gè)任務(wù)持續(xù)的時(shí)間和任務(wù)本身的規(guī)模有關(guān),如某個(gè)超市購(gòu)物系統(tǒng)會(huì)持續(xù)到學(xué)期末,如后期學(xué)習(xí)的排序,查找會(huì)在系統(tǒng)中得到應(yīng)用設(shè)計(jì),整個(gè)迭代的過(guò)程會(huì)持續(xù)至數(shù)據(jù)結(jié)構(gòu)課程全部結(jié)束,這樣基于迭代增量過(guò)程就能發(fā)揮更大作用。而編碼和測(cè)試過(guò)程則以學(xué)生為主導(dǎo),自主自覺(jué)地根據(jù)前期的分析和設(shè)計(jì)展開(kāi)具體的實(shí)現(xiàn)過(guò)程。在此過(guò)程中,學(xué)生覺(jué)得編碼過(guò)程不再困難,而有想早點(diǎn)實(shí)現(xiàn)以見(jiàn)其效的積極想法。對(duì)每個(gè)任務(wù),以軟件工程流程或者角色為軸線的迭代,學(xué)生在教師的指導(dǎo)下參與所有的工作活動(dòng),按照如圖3進(jìn)行多次迭代開(kāi)發(fā)設(shè)計(jì)。
根據(jù)迭代增量的工程流程,我們篩選了主要的項(xiàng)目活動(dòng):需求分析、分析設(shè)計(jì)、編碼實(shí)現(xiàn)、測(cè)試、項(xiàng)目管理。理論上,每種軟件工程流程都會(huì)對(duì)應(yīng)一個(gè)單獨(dú)的計(jì)劃,而且每個(gè)軟件工程流程會(huì)定義自己的迭代周期和迭代次數(shù)。教師的重要職責(zé)之一就是識(shí)別和管理各個(gè)任務(wù)與知識(shí)結(jié)構(gòu)的依賴關(guān)系,保證各個(gè)設(shè)計(jì)任務(wù)的順利進(jìn)行。此外,在考核方面重點(diǎn)放在過(guò)程考核,強(qiáng)調(diào)素質(zhì)與能力,不再進(jìn)行單獨(dú)的課程考核,按照工作任務(wù)評(píng)估表對(duì)學(xué)生的工作過(guò)程進(jìn)行評(píng)價(jià),課程成績(jī)計(jì)算按任務(wù)的難度工作量規(guī)模大小分配權(quán)重,進(jìn)行最后總評(píng),直至完成整個(gè)工作任務(wù)的實(shí)施。
4實(shí)踐教學(xué)評(píng)價(jià)與結(jié)論
我院從2005年開(kāi)始在計(jì)算機(jī)專業(yè)采用基于迭代化的增量軟件開(kāi)發(fā)方式開(kāi)放數(shù)據(jù)結(jié)構(gòu)的實(shí)驗(yàn)教學(xué),通過(guò)實(shí)驗(yàn)對(duì)比方法,將3年制計(jì)算機(jī)專業(yè)學(xué)生分為實(shí)驗(yàn)組和對(duì)照組,從定性和定量?jī)蓚€(gè)方面科學(xué)地觀察實(shí)踐課程的教學(xué)效果。通過(guò)學(xué)生數(shù)據(jù)結(jié)構(gòu)課程考試成績(jī)的對(duì)比分析、問(wèn)卷調(diào)查以及實(shí)踐成果的對(duì)比分析,匯總情況如表1所示:
從上表可知,實(shí)驗(yàn)組學(xué)生在基礎(chǔ)數(shù)據(jù)結(jié)構(gòu)系統(tǒng)知識(shí)學(xué)習(xí)、分析問(wèn)題和解決問(wèn)題能力以及后期專業(yè)知識(shí)的學(xué)習(xí)方面均具有更好的效果。此外,后期的問(wèn)卷調(diào)查結(jié)果也表明,實(shí)驗(yàn)班學(xué)生對(duì)課程的總體印象在優(yōu)良以上的占83%,教師對(duì)“實(shí)施基于迭代增量的實(shí)踐課程總體印象”表示“較好”以上的為81%。
目前,數(shù)據(jù)結(jié)構(gòu)課程實(shí)驗(yàn)課程的設(shè)計(jì)和實(shí)施還存在著一定問(wèn)題,如同一任務(wù)體系間的相互融合貫通還不夠,在教學(xué)方法上的改革還不足等;將來(lái)還需要進(jìn)一步改進(jìn)迭代增量法在教學(xué)情境的實(shí)施應(yīng)用,研究和開(kāi)發(fā)更多實(shí)用性實(shí)踐課程工作任務(wù),發(fā)揮其在后期專業(yè)課程學(xué)習(xí)中的延伸效果,持續(xù)提高高職計(jì)算機(jī)學(xué)生的專業(yè)和工程應(yīng)用設(shè)計(jì)能力。
參考文獻(xiàn):
[1] [美]沙赫查. 面向?qū)ο筌浖こ蘙M]. 黃林鵬,俆小輝,伍建焜,譯. 北京:機(jī)械工業(yè)出版社,2009.
[2] 殷人昆. 數(shù)據(jù)結(jié)構(gòu)(用面向?qū)ο蠓椒ㄅcC++語(yǔ)言描述)[M]. 北京:機(jī)械工業(yè)出版社,2007.
[3] [美]B.S.布盧姆. 教育目標(biāo)分類學(xué)[M]. 羅黎輝,譯. 上海:華東師范大學(xué)出版社,1986.
[4] 劉韶濤,王寧生. 軟件體系結(jié)構(gòu)的迭代增量構(gòu)建方法[J]. 計(jì)算機(jī)應(yīng)用研究,2003(20).
[5] 羅偉,張翠英. 對(duì)高職院校實(shí)踐教學(xué)中“關(guān)鍵能力”培養(yǎng)的探討[J]. 職業(yè)教育研究,2008(3).
[6] [美]普雷斯曼. 軟件工程:實(shí)踐者的研究方法[M]. 鄭人杰,等譯. 北京:機(jī)械工業(yè)出版社,2007.
[7] 盛群力,鄭淑貞. 合作學(xué)習(xí)設(shè)計(jì)[M]. 浙江:浙江教育出版社,2007.