亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        極限編程在JAVA編程教學(xué)中的應(yīng)用

        2013-12-31 00:00:00葛憲強(qiáng)許杰

        摘 要:Java是計(jì)算機(jī)專業(yè)教學(xué)中使用的主要編程語言,針對(duì)Java語言教學(xué)的現(xiàn)狀,文中提出了一種將XP極限編程應(yīng)用到Java編程教學(xué)的方式,該教學(xué)方式提高了學(xué)生的程序編寫質(zhì)量,轉(zhuǎn)變了學(xué)生的編程習(xí)慣,取得了良好的教學(xué)效果。

        關(guān)鍵詞:極限編程;Java教學(xué);教學(xué)改革

        中圖分類號(hào):TP311.11-4

        1 當(dāng)前編程教學(xué)現(xiàn)狀

        Java是計(jì)算機(jī)軟件工程專業(yè)教學(xué)中使用的主要編程語言之一。在以往的Java編程教學(xué)中發(fā)現(xiàn),學(xué)生在學(xué)習(xí)過程中普遍存在如下問題:

        編寫出的程序錯(cuò)誤多,查找錯(cuò)誤、修改錯(cuò)誤占用了大量時(shí)間。程序設(shè)計(jì)和代碼的質(zhì)量比較差。編寫的程序即使能夠運(yùn)行,但也經(jīng)常出錯(cuò)。通過調(diào)查分析,究其原因主要是,每個(gè)學(xué)生都是傳統(tǒng)的“單打獨(dú)斗”編程方式,編程過程缺少與他人的溝通交流;遇到問題后,個(gè)人單獨(dú)解決,考慮不夠周全。二是,學(xué)生對(duì)編程質(zhì)量的認(rèn)識(shí)較弱,沒有養(yǎng)成編寫“良好運(yùn)行”的健壯程序的習(xí)慣。

        本文通過將XP極限編程的核心方法引入Java編程教學(xué),有利于幫助學(xué)生養(yǎng)成良好的編程習(xí)慣,增強(qiáng)了學(xué)生對(duì)編程質(zhì)量的認(rèn)識(shí),取得了良好的教學(xué)效果。

        2 極限編程(eXtreme Programming,XP)

        XP極限編程是近年來使用廣泛的軟件敏捷開發(fā)方法之一。與“一次性針對(duì)所有需求完成設(shè)計(jì)、實(shí)現(xiàn)、測試”的傳統(tǒng)開發(fā)模式不同,XP將開發(fā)過程分解為測試、編碼、設(shè)計(jì)/重構(gòu)三個(gè)短小周期,針對(duì)每一個(gè)需求模塊采用增量、迭代方式完成測試、編碼、重構(gòu),在迭代過程中優(yōu)化設(shè)計(jì)。如圖1所示。

        圖1 XP極限編程

        XP極限編程通過強(qiáng)調(diào)結(jié)對(duì)編程、測試驅(qū)動(dòng)、重構(gòu)、簡單設(shè)計(jì)核心方法,使整個(gè)開發(fā)流程簡單、高效,且是軟件質(zhì)量得到有效保證。

        2.1 結(jié)對(duì)編程

        結(jié)對(duì)編程是兩人一組連續(xù)協(xié)作共同完成軟件設(shè)計(jì)、實(shí)現(xiàn)和測試的開發(fā)方式。在文獻(xiàn)[1]指出,結(jié)對(duì)編程與單獨(dú)編程相比,完成的程序具有更好的設(shè)計(jì),更加簡短有效,且具有更少的錯(cuò)誤和缺陷。結(jié)對(duì)兩人工作時(shí),交流中彼此傳遞著知識(shí),分享知識(shí),并且互相學(xué)習(xí)編程技巧。因此,結(jié)對(duì)編程方式有利于結(jié)對(duì)的人充分溝通和交流,既能互相促進(jìn)和補(bǔ)充知識(shí)和技能、彼此受益;又能提高編程質(zhì)量和減少所用時(shí)間。

        2.2 測試驅(qū)動(dòng)開發(fā)

        與傳統(tǒng)開發(fā)方式不同,測試驅(qū)動(dòng)開發(fā)(Test Drived Development,TDD)提倡以測試為中心。在編寫任何實(shí)際功能的實(shí)現(xiàn)代碼前,先編寫該功能的測試;編寫功能的實(shí)現(xiàn)代碼是以通過該功能的所有測試為目標(biāo)。測試驅(qū)動(dòng)開發(fā)可以盡早地發(fā)現(xiàn)錯(cuò)誤和避免錯(cuò)誤,極大地降低了錯(cuò)誤的出現(xiàn)幾率和修改成本;從而保證最終軟件有可靠的質(zhì)量。

        2.3 重構(gòu)

        重構(gòu)(Refactor)是指在不改變功能的外部行為的前提下,對(duì)功能的內(nèi)部實(shí)現(xiàn)進(jìn)行優(yōu)化,去除冗余部分,提高代碼可讀性。增加新的測試和功能后,通過重構(gòu)對(duì)代碼進(jìn)行“重新”設(shè)計(jì),增進(jìn)內(nèi)部的清晰性和一致性。

        2.4 簡單設(shè)計(jì)

        簡單設(shè)計(jì)(Simple Design)以最簡單方式設(shè)計(jì)、實(shí)現(xiàn)每個(gè)功能,去除一切不必要的冗余部分,只要能通過當(dāng)前的預(yù)定的所有測試即可。并在后續(xù)的不斷重構(gòu)中,根據(jù)需求變化進(jìn)行修改和優(yōu)化。

        另外,在為每一個(gè)類和方法設(shè)計(jì)其功能職責(zé)時(shí),XP提倡所有的設(shè)計(jì)元素從命名和形式上能夠表述其承但的功能職責(zé),并且其承擔(dān)的功能職責(zé)應(yīng)盡可能簡單、單一,以符合單一職責(zé)原則。

        3 XP極限編程在Java教學(xué)中的應(yīng)用

        經(jīng)過實(shí)踐,按照以下步驟可以將XP編程方法有效應(yīng)用到Java編程教學(xué)過程中。把每一個(gè)編程實(shí)踐練習(xí)題目看作一個(gè)簡單的軟件項(xiàng)目,由指導(dǎo)老師向所有的學(xué)生講解練習(xí)題目并明確題目要求,完成需求分析。例如,在進(jìn)行“編寫一個(gè)計(jì)算器”的題目時(shí),指導(dǎo)老師講解并明確題目的具體的功能需求:實(shí)現(xiàn)給定兩個(gè)數(shù)值的加、減、乘、除的計(jì)算功能,以及計(jì)算結(jié)果的輸出。

        3.1 分組結(jié)對(duì)

        指導(dǎo)老師根據(jù)學(xué)生的以往成績以兩人一組進(jìn)行分組結(jié)對(duì)。分組結(jié)對(duì)時(shí),可以先按照以往成績對(duì)所有學(xué)生進(jìn)行排名,假如共有10名學(xué)生,從排序中間位置開始分組,讓1和6、2和7、3和8、4和9、5和10進(jìn)行結(jié)對(duì),如圖2所示。

        圖2 結(jié)對(duì)分組

        結(jié)對(duì)的兩名學(xué)生需要在整個(gè)過程中進(jìn)行大量的討論,彼此交換掌握的知識(shí)和技巧,如若遇到兩人都不善言語,交流困難等特殊情況,需要在此基礎(chǔ)上做少量調(diào)整,將其中一人調(diào)換為善于溝通交流的學(xué)生。

        3.2 為需求編寫測試列表

        首先,根據(jù)題目明確的需求功能,結(jié)對(duì)兩人在經(jīng)過討論后,以“望文生義”的方式為需求中的所有元素命名。比如,將計(jì)算器命名為Calculator,將計(jì)算器的加、減、乘、除、乘方運(yùn)算功能命名為add、sub、multi、divide和power;計(jì)算結(jié)果為result,輸出計(jì)算結(jié)果功能命名為printOut。

        然后,結(jié)對(duì)兩人根據(jù)題目明確的功能需求,通過討論的方式,共同為每一個(gè)功能需求編寫需通過的測試列表。結(jié)對(duì)兩人討論過程中,考慮越細(xì)致,測試覆蓋越全面,程序質(zhì)量越高。

        在編寫測試列表時(shí),指導(dǎo)學(xué)生注意每一個(gè)測試應(yīng)明確輸入以及預(yù)期的輸出。例如,為divide運(yùn)算功能編寫測試列表,可按如圖所示編寫。

        表1 divide運(yùn)算功能測試列表

        序號(hào)說明輸入輸出

        1Result為0.0,傳入?yún)?shù)2.02.0Result為0.0

        2Result為0.0,傳入?yún)?shù)0.00.0提示“除數(shù)為0”錯(cuò)誤

        3Result(非0)為10.0,傳入?yún)?shù)2.02.0Result為5.0

        4Result(非0)為10.0,傳入?yún)?shù)0.00.0提示“除數(shù)為0”錯(cuò)誤

        3.3 編寫測試用例

        測試用例是對(duì)功能需求的具體體現(xiàn),根據(jù)TDD測試驅(qū)動(dòng)開發(fā)原則,在編寫功能實(shí)現(xiàn)代碼前,需先編寫測試該功能的用例。為了方便編寫測試用例,可提前向?qū)W生介紹xUnit、TestNG類測試工具的使用。

        結(jié)對(duì)兩人根據(jù)已明確的需求,編寫測試用例。比如,定義計(jì)算器的測試用例類為CaculatorTest,并根據(jù)需求列表中的第1個(gè)需求,編寫第一個(gè)測試方法。

        public void testZeroDivide(){

        //getResult()返回0.0

        calculator.divide(2.0);

        assertEquals(0.0, calculator.getResult());

        }

        3.4 編寫實(shí)現(xiàn)代碼

        結(jié)對(duì)兩人共同編寫能夠通過當(dāng)前所有測試的實(shí)現(xiàn)代碼。在該環(huán)節(jié),學(xué)生最容易犯的錯(cuò)誤是,編寫實(shí)現(xiàn)代碼時(shí),主觀隨意、即興發(fā)揮,實(shí)現(xiàn)代碼并非都是為了通過當(dāng)前所有測試而編寫。與通過測試不相關(guān)的代碼部分,無法進(jìn)行測試驗(yàn)證其正確性,所以,根據(jù)簡單設(shè)計(jì)原則,應(yīng)該避免和去除與當(dāng)前測試無關(guān)的部分。

        另外,編寫代碼時(shí),可由一人進(jìn)行代碼編寫,同時(shí)另一人在邊上觀看,并且兩人時(shí)常交換。一方面,兩人可以及時(shí)發(fā)現(xiàn)代碼錯(cuò)誤,并減少錯(cuò)誤出現(xiàn)的幾率,保證代碼的編寫質(zhì)量;二是,代碼編寫過程中,兩人在查找代碼錯(cuò)誤、修改錯(cuò)誤及盡力避免錯(cuò)誤的大量討論,彼此的知識(shí)、技巧和經(jīng)驗(yàn)得到了充分的交換和補(bǔ)充,是對(duì)已學(xué)的書本內(nèi)容進(jìn)行了又一次生動(dòng)而深刻學(xué)習(xí)。

        3.5 運(yùn)行測試、重構(gòu)

        運(yùn)行當(dāng)前所有測試,驗(yàn)證實(shí)現(xiàn)代碼的正確性。如果實(shí)現(xiàn)代碼存在錯(cuò)誤,未通過所有測試,則返回步驟4檢查實(shí)現(xiàn)代碼,修改錯(cuò)誤。修改后,并再次運(yùn)行測試。在多次的“修改代碼-運(yùn)行測試”的迭代中,如發(fā)現(xiàn)冗余的、無關(guān)的代碼,應(yīng)重構(gòu)當(dāng)前程序,優(yōu)化和修改設(shè)計(jì),及時(shí)去除冗余部分,從而提高代碼質(zhì)量。

        實(shí)現(xiàn)代碼能夠通過當(dāng)前所有測試后,跳回步驟3,按照測試列表,在測試用例中編寫增加一個(gè)新的測試,繼續(xù)編寫實(shí)現(xiàn)代碼、運(yùn)行測試,直到通過所有測試。

        這種增量的、迭代方式的過程中,程序不斷地被重構(gòu),既可以根據(jù)變化進(jìn)行修改,又可以通過優(yōu)化提高質(zhì)量,使得最終的程序具有良好的質(zhì)量和健壯性。

        在基于XP極限編程的這種增量的、迭代方式的過程中,學(xué)生的知識(shí)和技巧不斷地得到了強(qiáng)化學(xué)習(xí)和提高,并且學(xué)生養(yǎng)成了良好的軟件開發(fā)習(xí)慣,提高了對(duì)軟件開發(fā)的質(zhì)量意識(shí),為后續(xù)課程的學(xué)習(xí)奠定了堅(jiān)實(shí)的基礎(chǔ)。

        4 結(jié)論

        經(jīng)過實(shí)踐發(fā)現(xiàn),按照上述方法將XP極限編程應(yīng)用到Java編程教學(xué)中,教學(xué)效果有了明顯的改善:

        (1)提高了學(xué)生編寫程序的質(zhì)量和健壯性。學(xué)生的程序代碼中,隨意命名“a1,b1”的情況和冗余代碼明顯減少,程序編碼的規(guī)范性和質(zhì)量有了較大提高。程序運(yùn)行不再頻繁出錯(cuò),程序具有了一定的健壯性。

        (2)增強(qiáng)了對(duì)軟件開發(fā)的質(zhì)量意識(shí)。學(xué)生不再只是以程序能夠運(yùn)行為目標(biāo),在開發(fā)過程中,能夠主動(dòng)通過多次迭代、重構(gòu)來優(yōu)化程序,提高程序質(zhì)量,質(zhì)量意識(shí)有了明顯增強(qiáng)。

        (3)軟件開發(fā)習(xí)慣有了明顯改變。學(xué)生逐漸熟悉了“測試驅(qū)動(dòng)、結(jié)對(duì)編程”的增量、迭代開發(fā)方式,以前的“單打獨(dú)斗”編程習(xí)慣有了明顯的轉(zhuǎn)變。

        參考文獻(xiàn):

        [1]W.Laurie,K.Robert,結(jié)對(duì)編程技術(shù)[M].北京:機(jī)械工業(yè)出版社,2004.

        [2]Kent Beck.解析極限編程—擁抱變化[M].北京:機(jī)械工業(yè)出版社,2011.

        [3]A.Cockburn,L.Williams,The Costs and Benefits of Pair Programming[J].Proceedings of the First International Conference,2000.

        [4]W.Laurie.K. Robert.測試驅(qū)動(dòng)開發(fā)藝術(shù)[M].北京:人民郵電出版社,2010.

        作者簡介:葛憲強(qiáng),男,講師,碩士,研究方向:軟件工程、圖形處理;許杰,女,中級(jí),碩士,研究方向:教育管理。

        作者單位:聊城大學(xué)計(jì)算機(jī)學(xué)院,山東聊城 252059;聊城高級(jí)財(cái)經(jīng)學(xué)校工程系,山東聊城 252000

        青青草免费激情自拍视频| 永久免费av无码入口国语片| 无码人妻精品一区二区三18禁| 精品一区二区三区久久久| 亚洲精品综合一区二区 | 精品高清国产乱子伦| 美腿丝袜视频在线观看| 美女扒开屁股让男人桶| 爱情岛永久地址www成人| 亚色中文字幕| 日本国产一区在线观看| 加勒比一本heyzo高清视频| 国产在线精品一区二区| 亚洲综合伦理| 一区二区精品天堂亚洲av| 欧美黑人又粗又大xxxx| 欧美日本国产va高清cabal| 2021久久精品国产99国产| 亚洲一区二区三区在线最新| 国产69精品久久久久app下载| 欧美 日韩 国产 成人 在线观看| 国产三级精品美女三级| 婷婷开心五月亚洲综合| 亚洲亚洲人成综合丝袜图片| 亚洲精品无码人妻无码| 精品黄色av一区二区三区| 日本一本一道久久香蕉男人的天堂| 国产 麻豆 日韩 欧美 久久| 久久精品无码鲁网中文电影| 一片内射视频在线观看| 日韩精品在线视频一二三| 天码人妻一区二区三区| 久久青草国产精品一区| 久久国产精品色av免费看| 亚洲av无码成人精品区狼人影院| 日韩精品成人一区二区三区| 好爽要高潮了在线观看| 国产白浆一区二区三区性色| 18禁黄网站禁片免费观看| 一本大道在线一久道一区二区| 中文字幕一区二区三区综合网|