公務(wù)員期刊網(wǎng) 論文中心 正文

結(jié)對(duì)編程軟件工程論文

前言:想要寫出一篇引人入勝的文章?我們特意為您整理了結(jié)對(duì)編程軟件工程論文范文,希望能給你帶來(lái)靈感和參考,敬請(qǐng)閱讀。

結(jié)對(duì)編程軟件工程論文

1研究性教學(xué)

軟件工程研究性教學(xué)是一種實(shí)踐性較強(qiáng)的教育教學(xué)活動(dòng)。與現(xiàn)有的軟件工程教學(xué)不同,研究性學(xué)習(xí)不再局限于對(duì)學(xué)生進(jìn)行純粹書(shū)本知識(shí)的傳授,而是讓學(xué)生參加實(shí)踐活動(dòng),在實(shí)踐中學(xué)會(huì)學(xué)習(xí)和獲得各種能力。

1.1研究性教學(xué)作用

軟件工程研究性教學(xué)強(qiáng)調(diào)知識(shí)的聯(lián)系和運(yùn)用,不僅是軟件工程學(xué)科知識(shí)的綜合運(yùn)用,更是程序設(shè)計(jì)、數(shù)據(jù)庫(kù)、計(jì)算機(jī)網(wǎng)絡(luò)等領(lǐng)域知識(shí)的融會(huì)貫通。學(xué)生通過(guò)研究性學(xué)習(xí),不但知道如何綜合運(yùn)用學(xué)過(guò)的知識(shí),還會(huì)在已經(jīng)學(xué)過(guò)的知識(shí)之間建立一定的聯(lián)系,并主動(dòng)學(xué)習(xí)新的知識(shí)。軟件工程研究性教學(xué)能夠通過(guò)合理的選題充分調(diào)動(dòng)學(xué)生的學(xué)習(xí)興趣和積極性。研究性學(xué)習(xí)是一種帶有研究性質(zhì)的綜合性學(xué)習(xí)。軟件工程研究性學(xué)習(xí)主要與傳統(tǒng)的接受性學(xué)習(xí)相對(duì)。一般來(lái)講,該學(xué)習(xí)方式是學(xué)生通過(guò)自己觀察、調(diào)查、訪談、分析、設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試等方式獲取知識(shí)、得出結(jié)論、形成軟件產(chǎn)品,而不是由教師將現(xiàn)成的知識(shí)和結(jié)論傳遞式教給學(xué)生的學(xué)習(xí)方式。軟件工程研究性學(xué)習(xí)的本質(zhì)在于讓學(xué)生親歷軟件開(kāi)發(fā)問(wèn)題的產(chǎn)生與方案形成的過(guò)程,使學(xué)生學(xué)會(huì)獨(dú)立思考、實(shí)踐和分析,實(shí)現(xiàn)發(fā)現(xiàn)問(wèn)題、取得解決方案與學(xué)習(xí)三者之間的有機(jī)結(jié)合與高度統(tǒng)一。

研究性教學(xué)和學(xué)習(xí)有其獨(dú)特的好處與必要性。軟件工程課程包含了豐富的工程化思想和基本原理,然而,這些思想和原理需要通過(guò)實(shí)踐和探索使學(xué)生獲得切身體會(huì)。這種探究對(duì)學(xué)生的思維構(gòu)成了挑戰(zhàn),有利于思維能力的培養(yǎng)。探究過(guò)程要求綜合運(yùn)用已有的知識(shí)經(jīng)驗(yàn),有利于學(xué)生整合知識(shí)、學(xué)以致用,培養(yǎng)學(xué)生實(shí)事求是的科學(xué)精神和態(tài)度,促進(jìn)學(xué)生學(xué)會(huì)合作、交流、傾聽(tīng)、批判和反思。在探究過(guò)程中,學(xué)生經(jīng)歷挫折與失敗、曲折與迂回、成功與興奮,從而最終理解科學(xué)的本質(zhì)。軟件研究性學(xué)習(xí)引導(dǎo)學(xué)生自主獲得軟件開(kāi)發(fā)相關(guān)知識(shí)或信息,對(duì)學(xué)生學(xué)會(huì)思維與實(shí)踐、加強(qiáng)能力培養(yǎng)、踐行可持續(xù)發(fā)展具有重要意義。

2軟件工程研究性教學(xué)案例

考慮到軟件工程的內(nèi)容復(fù)雜性,作者選擇敏捷開(kāi)發(fā)實(shí)踐的結(jié)對(duì)編程方法作為研究性教學(xué)的探究?jī)?nèi)容。敏捷開(kāi)發(fā)是一個(gè)新的思路,但不是軟件開(kāi)發(fā)的終極選擇。對(duì)于時(shí)間長(zhǎng)、人數(shù)多的大型應(yīng)用軟件的開(kāi)發(fā),文檔的管理與銜接作用是不可替代的。如何把敏捷的開(kāi)發(fā)思路與傳統(tǒng)的“流水線工廠式”管理有機(jī)結(jié)合,是軟件開(kāi)發(fā)組織者面臨的新課題。敏捷過(guò)程將整個(gè)軟件生命周期分解為若干個(gè)小的迭代周期,通過(guò)在每個(gè)迭代周期結(jié)束時(shí)交付階段性成果來(lái)獲取切實(shí)有效的客戶反饋,目的是希望通過(guò)建立及時(shí)的反饋機(jī)制,應(yīng)對(duì)隨時(shí)可能出現(xiàn)的需求變更,并做出相應(yīng)的調(diào)整,從而增強(qiáng)對(duì)軟件項(xiàng)目的控制能力。因此,敏捷過(guò)程對(duì)變化的環(huán)境具有更好的適應(yīng)能力,相比于經(jīng)典軟件開(kāi)發(fā)過(guò)程的計(jì)劃性特征,敏捷過(guò)程在適應(yīng)性上具有更大的優(yōu)勢(shì)。極限編程實(shí)踐中有一個(gè)非常重要的原則就是結(jié)對(duì)編程,這里所謂的結(jié)對(duì)編程并非是一個(gè)人在編程,另一個(gè)在看著,另外一個(gè)人同樣起著非常重要的作用,他需要幫助編碼的人找到低級(jí)的失誤,防止其編碼出現(xiàn)方向性的錯(cuò)誤,特別是當(dāng)出現(xiàn)編碼的人不擅長(zhǎng)解決的問(wèn)題的時(shí)候,他會(huì)直接替換編碼的人進(jìn)行編程。

結(jié)對(duì)編程(PairProgramming,PP)是一個(gè)非常直觀的概念,是指兩位程序員肩并肩地坐在同一臺(tái)電腦前,面對(duì)同一個(gè)顯示器,使用同一個(gè)鍵盤、同一個(gè)鼠標(biāo)一起工作。他們一起進(jìn)行分析、設(shè)計(jì)、寫測(cè)試用例、編碼、單元測(cè)試、集成測(cè)試、編寫文檔等工作,基本上所有的開(kāi)發(fā)環(huán)節(jié)都是面對(duì)面、平等、互補(bǔ)地進(jìn)行,并且兩人的角色可以隨時(shí)交換。結(jié)對(duì)編程的實(shí)施方式分為面對(duì)面結(jié)對(duì)和遠(yuǎn)程結(jié)對(duì)兩種方式。面對(duì)面結(jié)對(duì)編程是指兩個(gè)程序員肩并肩坐在同一臺(tái)電腦前、在同一個(gè)軟件制品上一起工作的軟件開(kāi)發(fā)方式。面對(duì)面結(jié)對(duì)編程的好處在于,程序員可以直接快速地交流,獲得高質(zhì)量的代碼并增強(qiáng)程序員工作的樂(lè)趣。面對(duì)面結(jié)對(duì)編程最大的優(yōu)勢(shì)就是交流非常方便,因?yàn)閮蓚€(gè)人靠得很近,言語(yǔ)和手勢(shì)的交流非常自然,效果非常好。面對(duì)面交流沒(méi)有隔閡,兩個(gè)人互相看到對(duì)方的表情,產(chǎn)生和諧的氣氛,合作也非常愉快。面對(duì)面結(jié)對(duì)編程效率較高,因?yàn)橐环娇粗硪环皆诠ぷ?,因此編程的一方就不?huì)想別的事情或停下來(lái)關(guān)注其他事情,因而能集中精力完成工作,即存在一種“結(jié)對(duì)壓力”。面對(duì)面結(jié)對(duì)編程需要不定期地進(jìn)行角色交換,以發(fā)揮兩個(gè)人的能力。當(dāng)面對(duì)面結(jié)對(duì)編程環(huán)境配置不當(dāng)?shù)臅r(shí)候,交換角色時(shí)需要雙方一同站起來(lái)互換位置,然后再繼續(xù)工作,這樣就會(huì)導(dǎo)致停頓,引起不便和不順暢,往往會(huì)打斷雙方的思路。這個(gè)問(wèn)題可以通過(guò)提供寬敞的結(jié)對(duì)環(huán)境來(lái)解決,例如,提供一個(gè)較大的電腦桌,雙方交換時(shí)只需要移動(dòng)鍵盤和鼠標(biāo)即可。環(huán)境受限的情況下,可以通過(guò)提供雙鍵盤和雙鼠標(biāo)的方式解決,結(jié)對(duì)者可以在各自的鍵盤上工作,可通過(guò)系統(tǒng)來(lái)控制鍵盤和鼠標(biāo)的切換。

鑒于全球化軟件發(fā)展趨勢(shì)的繼續(xù),要求兩名開(kāi)發(fā)者進(jìn)行面對(duì)面的交流并不符合全球化軟件發(fā)展的需求。這就要求兩名程序員雖然在不同的地點(diǎn),但是他們還能一起合作使用結(jié)對(duì)編程編寫代碼,這種方法被稱為分布式結(jié)對(duì)編程。

分布式結(jié)對(duì)編程是一種編程風(fēng)格,兩個(gè)程序員在地理上是分布的,通過(guò)網(wǎng)絡(luò)在同一個(gè)軟件制品上同步工作。分布式結(jié)對(duì)編程可以克服面對(duì)面結(jié)對(duì)的一些不足,結(jié)對(duì)者通過(guò)網(wǎng)絡(luò)可以隨時(shí)隨地結(jié)對(duì)工作,提高了結(jié)對(duì)的機(jī)會(huì)。為了進(jìn)行分布式結(jié)對(duì)編程,需要功能較為強(qiáng)大的結(jié)對(duì)工具支持結(jié)對(duì)者高效地工作。首先,需要共享的代碼編輯工具支持,一方的編輯工作能夠被另一方實(shí)時(shí)地看到,同時(shí),代碼能夠進(jìn)行編譯,以便能夠檢查語(yǔ)法錯(cuò)誤,因此需要與現(xiàn)有的開(kāi)發(fā)環(huán)境集成。第二,結(jié)對(duì)者需要充分地交流由于雙方在不同的地方,合適的交流工具是必要的,基本的交流工具包括基于文本的交流和基于語(yǔ)音的交流?;谖谋镜慕涣鞅容^容易實(shí)施,但由于一方在編程,文本交流會(huì)造成干擾。語(yǔ)音交流是一個(gè)必然選擇,交流起來(lái)也比較自然,只是對(duì)網(wǎng)絡(luò)帶寬有一定的要求。語(yǔ)音交流只能聽(tīng)到聲音,看不到對(duì)方的表情,影響進(jìn)一步的了解。隨著網(wǎng)絡(luò)技術(shù)的發(fā)展,基于視頻的交流是今后的必然選擇。第三,角色交換支持。結(jié)對(duì)雙方經(jīng)過(guò)一段時(shí)間交換角色,這是結(jié)對(duì)編程的特定要求。分布式結(jié)對(duì)編程的角色交換本質(zhì)上就是對(duì)編輯器的控制,允許一方處于編輯狀態(tài),另一方則處于察看狀態(tài)。第四,分布式結(jié)對(duì)編程還要支持用戶管理、發(fā)起結(jié)對(duì)等功能基于上述的內(nèi)容分析,筆者將軟件工程研究性教學(xué)內(nèi)容確定為結(jié)對(duì)編程方法與實(shí)踐的探索內(nèi)容。首先,要求學(xué)生從理論上理解結(jié)對(duì)編程的特點(diǎn)、優(yōu)勢(shì)和不足,然后,通過(guò)親身結(jié)對(duì)活動(dòng)體會(huì)其中存在的不足和影響結(jié)對(duì)的重要因素,進(jìn)而提出解決結(jié)對(duì)過(guò)程中的問(wèn)題和設(shè)計(jì)方案,最后,通過(guò)軟件來(lái)實(shí)現(xiàn)這些方案。

3軟件工程研究性教學(xué)實(shí)施過(guò)程

根據(jù)以上的思路,筆者設(shè)計(jì)了軟件工程研究性教學(xué)的實(shí)施步驟。

(1)要求學(xué)生分析敏捷方法相比傳統(tǒng)的軟件過(guò)程方法的優(yōu)勢(shì),進(jìn)而理解結(jié)對(duì)編程式敏捷方法的重要實(shí)踐原則。分發(fā)材料讓學(xué)生深入理解結(jié)對(duì)編程的優(yōu)勢(shì)和實(shí)施過(guò)程。

(2)要求學(xué)生親身體驗(yàn)結(jié)對(duì)過(guò)程,通過(guò)不同的學(xué)生結(jié)對(duì)編程,發(fā)現(xiàn)存在的問(wèn)題和影響結(jié)對(duì)效果的因素

閱讀有關(guān)結(jié)對(duì)編程的文獻(xiàn),了解影響結(jié)對(duì)效果的因素。學(xué)生通過(guò)個(gè)性、能力和性別等因素進(jìn)行結(jié)對(duì),發(fā)現(xiàn)存在的問(wèn)題,例如,交換角色的不便因素和結(jié)對(duì)模式效率影響因素等。

(3)學(xué)生針對(duì)存在的問(wèn)題提出解決方案。例如,根據(jù)不同的影響因素,可以開(kāi)發(fā)結(jié)對(duì)模式評(píng)測(cè)軟件系統(tǒng),匹配最佳的結(jié)對(duì)組合;結(jié)對(duì)環(huán)境擁擠帶來(lái)交換角色的不便,可以設(shè)計(jì)合適的設(shè)備環(huán)境,如采用雙顯示器、雙鍵盤和雙鼠標(biāo)的硬件結(jié)構(gòu),開(kāi)發(fā)相應(yīng)的控制系統(tǒng)。在后續(xù)的教學(xué)中,利用軟件工程開(kāi)發(fā)過(guò)程與方法來(lái)開(kāi)發(fā)學(xué)生提出的結(jié)對(duì)系統(tǒng)。在分析階段,學(xué)生根據(jù)自己的體會(huì)提出軟件系統(tǒng)的需求;在設(shè)計(jì)階段,設(shè)計(jì)該系統(tǒng)的結(jié)構(gòu)和算法;在實(shí)現(xiàn)階段,進(jìn)行編碼和測(cè)試;在部署階段,進(jìn)行安裝運(yùn)行和修改不足。

(4)總結(jié)研究性學(xué)習(xí)效果。進(jìn)行結(jié)對(duì)對(duì)比實(shí)驗(yàn),分析效果。學(xué)生總結(jié)一個(gè)學(xué)期的研究性學(xué)習(xí)過(guò)程,通過(guò)提出問(wèn)題和解決問(wèn)題的過(guò)程來(lái)理解軟件工程的方法和工程化思想,理解如何分析軟件的需求、設(shè)計(jì)、實(shí)現(xiàn)和部署。

4結(jié)語(yǔ)

從2011年開(kāi)始,在本科生三年級(jí)的軟件工程課程教學(xué)中實(shí)施了軟件工程研究性教學(xué)。學(xué)生通過(guò)分組進(jìn)行結(jié)對(duì)編程的實(shí)驗(yàn),發(fā)現(xiàn)實(shí)施過(guò)程中的問(wèn)題,提出改進(jìn)方案,并設(shè)計(jì)了軟件系統(tǒng)。在實(shí)施過(guò)程中,教師提供了研究資料,并給予了啟發(fā)式引導(dǎo)。學(xué)生積極性非常高,積極參與個(gè)性評(píng)測(cè),總結(jié)結(jié)對(duì)組合模式,提出許多建設(shè)性的意見(jiàn)和系統(tǒng)方案。有部分組最終完成了系統(tǒng)的開(kāi)發(fā)和軟件部署工作,開(kāi)發(fā)的軟件入選結(jié)對(duì)實(shí)驗(yàn)室的示范系統(tǒng)中,并被后續(xù)的學(xué)生使用,效果非常好。學(xué)生的一些工作被作者寫入軟件工程方法與實(shí)踐教材中。今后工作室將把這些經(jīng)驗(yàn)進(jìn)一步擴(kuò)展到其他課程(如程序設(shè)計(jì)課程、計(jì)算機(jī)基礎(chǔ)實(shí)驗(yàn)課程)的教學(xué)實(shí)踐當(dāng)中。

作者:竇萬(wàn)峰 吉根林 單位:南京師范大學(xué)計(jì)算機(jī)學(xué)院

相關(guān)文章閱讀