- 相關(guān)推薦
結(jié)對編程軟件的論文
1研究性教學(xué)
軟件工程研究性教學(xué)是一種實踐性較強的教育教學(xué)活動。與現(xiàn)有的軟件工程教學(xué)不同,研究性學(xué)習(xí)不再局限于對學(xué)生進(jìn)行純粹書本知識的傳授,而是讓學(xué)生參加實踐活動,在實踐中學(xué)會學(xué)習(xí)和獲得各種能力。
1.1研究性教學(xué)作用
軟件工程研究性教學(xué)強調(diào)知識的聯(lián)系和運用,不僅是軟件工程學(xué)科知識的綜合運用,更是程序設(shè)計、數(shù)據(jù)庫、計算機網(wǎng)絡(luò)等領(lǐng)域知識的融會貫通。學(xué)生通過研究性學(xué)習(xí),不但知道如何綜合運用學(xué)過的知識,還會在已經(jīng)學(xué)過的知識之間建立一定的聯(lián)系,并主動學(xué)習(xí)新的知識。軟件工程研究性教學(xué)能夠通過合理的選題充分調(diào)動學(xué)生的學(xué)習(xí)興趣和積極性。研究性學(xué)習(xí)是一種帶有研究性質(zhì)的綜合性學(xué)習(xí)。軟件工程研究性學(xué)習(xí)主要與傳統(tǒng)的接受性學(xué)習(xí)相對。一般來講,該學(xué)習(xí)方式是學(xué)生通過自己觀察、調(diào)查、訪談、分析、設(shè)計、實現(xiàn)、測試等方式獲取知識、得出結(jié)論、形成軟件產(chǎn)品,而不是由教師將現(xiàn)成的知識和結(jié)論傳遞式教給學(xué)生的學(xué)習(xí)方式。軟件工程研究性學(xué)習(xí)的本質(zhì)在于讓學(xué)生親歷軟件開發(fā)問題的產(chǎn)生與方案形成的過程,使學(xué)生學(xué)會獨立思考、實踐和分析,實現(xiàn)發(fā)現(xiàn)問題、取得解決方案與學(xué)習(xí)三者之間的有機結(jié)合與高度統(tǒng)一。
研究性教學(xué)和學(xué)習(xí)有其獨特的好處與必要性。軟件工程課程包含了豐富的工程化思想和基本原理,然而,這些思想和原理需要通過實踐和探索使學(xué)生獲得切身體會。這種探究對學(xué)生的思維構(gòu)成了挑戰(zhàn),有利于思維能力的培養(yǎng)。探究過程要求綜合運用已有的知識經(jīng)驗,有利于學(xué)生整合知識、學(xué)以致用,培養(yǎng)學(xué)生實事求是的科學(xué)精神和態(tài)度,促進(jìn)學(xué)生學(xué)會合作、交流、傾聽、批判和反思。在探究過程中,學(xué)生經(jīng)歷挫折與失敗、曲折與迂回、成功與興奮,從而最終理解科學(xué)的本質(zhì)。軟件研究性學(xué)習(xí)引導(dǎo)學(xué)生自主獲得軟件開發(fā)相關(guān)知識或信息,對學(xué)生學(xué)會思維與實踐、加強能力培養(yǎng)、踐行可持續(xù)發(fā)展具有重要意義。
2軟件工程研究性教學(xué)案例
考慮到軟件工程的內(nèi)容復(fù)雜性,作者選擇敏捷開發(fā)實踐的結(jié)對編程方法作為研究性教學(xué)的探究內(nèi)容。敏捷開發(fā)是一個新的思路,但不是軟件開發(fā)的終極選擇。對于時間長、人數(shù)多的大型應(yīng)用軟件的開發(fā),文檔的管理與銜接作用是不可替代的。如何把敏捷的開發(fā)思路與傳統(tǒng)的“流水線工廠式”管理有機結(jié)合,是軟件開發(fā)組織者面臨的新課題。敏捷過程將整個軟件生命周期分解為若干個小的迭代周期,通過在每個迭代周期結(jié)束時交付階段性成果來獲取切實有效的客戶反饋,目的是希望通過建立及時的反饋機制,應(yīng)對隨時可能出現(xiàn)的需求變更,并做出相應(yīng)的調(diào)整,從而增強對軟件項目的控制能力。因此,敏捷過程對變化的環(huán)境具有更好的適應(yīng)能力,相比于經(jīng)典軟件開發(fā)過程的計劃性特征,敏捷過程在適應(yīng)性上具有更大的優(yōu)勢。極限編程實踐中有一個非常重要的原則就是結(jié)對編程,這里所謂的結(jié)對編程并非是一個人在編程,另一個在看著,另外一個人同樣起著非常重要的作用,他需要幫助編碼的人找到低級的失誤,防止其編碼出現(xiàn)方向性的錯誤,特別是當(dāng)出現(xiàn)編碼的人不擅長解決的問題的時候,他會直接替換編碼的人進(jìn)行編程。
結(jié)對編程(PairProgramming,PP)是一個非常直觀的概念,是指兩位程序員肩并肩地坐在同一臺電腦前,面對同一個顯示器,使用同一個鍵盤、同一個鼠標(biāo)一起工作。他們一起進(jìn)行分析、設(shè)計、寫測試用例、編碼、單元測試、集成測試、編寫文檔等工作,基本上所有的開發(fā)環(huán)節(jié)都是面對面、平等、互補地進(jìn)行,并且兩人的角色可以隨時交換。結(jié)對編程的實施方式分為面對面結(jié)對和遠(yuǎn)程結(jié)對兩種方式。面對面結(jié)對編程是指兩個程序員肩并肩坐在同一臺電腦前、在同一個軟件制品上一起工作的軟件開發(fā)方式。面對面結(jié)對編程的好處在于,程序員可以直接快速地交流,獲得高質(zhì)量的代碼并增強程序員工作的樂趣。面對面結(jié)對編程最大的優(yōu)勢就是交流非常方便,因為兩個人靠得很近,言語和手勢的交流非常自然,效果非常好。面對面交流沒有隔閡,兩個人互相看到對方的表情,產(chǎn)生和諧的氣氛,合作也非常愉快。面對面結(jié)對編程效率較高,因為一方看著另一方在工作,因此編程的一方就不會想別的事情或停下來關(guān)注其他事情,因而能集中精力完成工作,即存在一種“結(jié)對壓力”。面對面結(jié)對編程需要不定期地進(jìn)行角色交換,以發(fā)揮兩個人的能力。當(dāng)面對面結(jié)對編程環(huán)境配置不當(dāng)?shù)臅r候,交換角色時需要雙方一同站起來互換位置,然后再繼續(xù)工作,這樣就會導(dǎo)致停頓,引起不便和不順暢,往往會打斷雙方的思路。這個問題可以通過提供寬敞的結(jié)對環(huán)境來解決,例如,提供一個較大的電腦桌,雙方交換時只需要移動鍵盤和鼠標(biāo)即可。環(huán)境受限的情況下,可以通過提供雙鍵盤和雙鼠標(biāo)的方式解決,結(jié)對者可以在各自的鍵盤上工作,可通過系統(tǒng)來控制鍵盤和鼠標(biāo)的切換。
鑒于全球化軟件發(fā)展趨勢的繼續(xù),要求兩名開發(fā)者進(jìn)行面對面的交流并不符合全球化軟件發(fā)展的需求。這就要求兩名程序員雖然在不同的地點,但是他們還能一起合作使用結(jié)對編程編寫代碼,這種方法被稱為分布式結(jié)對編程。
分布式結(jié)對編程是一種編程風(fēng)格,兩個程序員在地理上是分布的,通過網(wǎng)絡(luò)在同一個軟件制品上同步工作。分布式結(jié)對編程可以克服面對面結(jié)對的一些不足,結(jié)對者通過網(wǎng)絡(luò)可以隨時隨地結(jié)對工作,提高了結(jié)對的機會。為了進(jìn)行分布式結(jié)對編程,需要功能較為強大的結(jié)對工具支持結(jié)對者高效地工作。首先,需要共享的代碼編輯工具支持,一方的編輯工作能夠被另一方實時地看到,同時,代碼能夠進(jìn)行編譯,以便能夠檢查語法錯誤,因此需要與現(xiàn)有的開發(fā)環(huán)境集成。第二,結(jié)對者需要充分地交流由于雙方在不同的地方,合適的交流工具是必要的,基本的交流工具包括基于文本的交流和基于語音的交流;谖谋镜慕涣鞅容^容易實施,但由于一方在編程,文本交流會造成干擾。語音交流是一個必然選擇,交流起來也比較自然,只是對網(wǎng)絡(luò)帶寬有一定的要求。語音交流只能聽到聲音,看不到對方的表情,影響進(jìn)一步的了解。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,基于視頻的交流是今后的必然選擇。第三,角色交換支持。結(jié)對雙方經(jīng)過一段時間交換角色,這是結(jié)對編程的特定要求。分布式結(jié)對編程的角色交換本質(zhì)上就是對編輯器的控制,允許一方處于編輯狀態(tài),另一方則處于察看狀態(tài)。第四,分布式結(jié)對編程還要支持用戶管理、發(fā)起結(jié)對等功能基于上述的內(nèi)容分析,筆者將軟件工程研究性教學(xué)內(nèi)容確定為結(jié)對編程方法與實踐的探索內(nèi)容。首先,要求學(xué)生從理論上理解結(jié)對編程的特點、優(yōu)勢和不足,然后,通過親身結(jié)對活動體會其中存在的不足和影響結(jié)對的重要因素,進(jìn)而提出解決結(jié)對過程中的問題和設(shè)計方案,最后,通過軟件來實現(xiàn)這些方案。
3軟件工程研究性教學(xué)實施過程
根據(jù)以上的思路,筆者設(shè)計了軟件工程研究性教學(xué)的實施步驟。
。1)要求學(xué)生分析敏捷方法相比傳統(tǒng)的軟件過程方法的優(yōu)勢,進(jìn)而理解結(jié)對編程式敏捷方法的重要實踐原則。分發(fā)材料讓學(xué)生深入理解結(jié)對編程的優(yōu)勢和實施過程。
(2)要求學(xué)生親身體驗結(jié)對過程,通過不同的學(xué)生結(jié)對編程,發(fā)現(xiàn)存在的問題和影響結(jié)對效果的因素
閱讀有關(guān)結(jié)對編程的文獻(xiàn),了解影響結(jié)對效果的因素。學(xué)生通過個性、能力和性別等因素進(jìn)行結(jié)對,發(fā)現(xiàn)存在的問題,例如,交換角色的不便因素和結(jié)對模式效率影響因素等。
。3)學(xué)生針對存在的問題提出解決方案。例如,根據(jù)不同的影響因素,可以開發(fā)結(jié)對模式評測軟件系統(tǒng),匹配最佳的結(jié)對組合;結(jié)對環(huán)境擁擠帶來交換角色的不便,可以設(shè)計合適的設(shè)備環(huán)境,如采用雙顯示器、雙鍵盤和雙鼠標(biāo)的硬件結(jié)構(gòu),開發(fā)相應(yīng)的控制系統(tǒng)。在后續(xù)的教學(xué)中,利用軟件工程開發(fā)過程與方法來開發(fā)學(xué)生提出的結(jié)對系統(tǒng)。在分析階段,學(xué)生根據(jù)自己的體會提出軟件系統(tǒng)的需求;在設(shè)計階段,設(shè)計該系統(tǒng)的結(jié)構(gòu)和算法;在實現(xiàn)階段,進(jìn)行編碼和測試;在部署階段,進(jìn)行安裝運行和修改不足。
(4)總結(jié)研究性學(xué)習(xí)效果。進(jìn)行結(jié)對對比實驗,分析效果。學(xué)生總結(jié)一個學(xué)期的研究性學(xué)習(xí)過程,通過提出問題和解決問題的過程來理解軟件工程的方法和工程化思想,理解如何分析軟件的需求、設(shè)計、實現(xiàn)和部署。
4結(jié)語
從2011年開始,在本科生三年級的軟件工程課程教學(xué)中實施了軟件工程研究性教學(xué)。學(xué)生通過分組進(jìn)行結(jié)對編程的實驗,發(fā)現(xiàn)實施過程中的問題,提出改進(jìn)方案,并設(shè)計了軟件系統(tǒng)。在實施過程中,教師提供了研究資料,并給予了啟發(fā)式引導(dǎo)。學(xué)生積極性非常高,積極參與個性評測,總結(jié)結(jié)對組合模式,提出許多建設(shè)性的意見和系統(tǒng)方案。有部分組最終完成了系統(tǒng)的開發(fā)和軟件部署工作,開發(fā)的軟件入選結(jié)對實驗室的示范系統(tǒng)中,并被后續(xù)的學(xué)生使用,效果非常好。學(xué)生的一些工作被作者寫入軟件工程方法與實踐教材中。今后工作室將把這些經(jīng)驗進(jìn)一步擴展到其他課程(如程序設(shè)計課程、計算機基礎(chǔ)實驗課程)的教學(xué)實踐當(dāng)中。
【結(jié)對編程軟件的論文】相關(guān)文章:
軟件工程論文發(fā)表的論文04-29
軟件工程論文的開題報告01-04
編程的心得03-14
數(shù)控編程心得05-07
編程語言排名04-29
有趣的編程課作文04-20
編程學(xué)習(xí)心得04-25
編程師崗位職責(zé)02-28
基于ArcObjects的組件化編程04-28
編程個人求職信05-03