技術(shù)頻道

娓娓工業(yè)
您現(xiàn)在的位置: 中國傳動(dòng)網(wǎng) > 技術(shù)頻道 > 應(yīng)用方案 > 極限編程在工控軟件開發(fā)中的應(yīng)用

極限編程在工控軟件開發(fā)中的應(yīng)用

時(shí)間:2008-09-09 15:11:00來源:ronggang

導(dǎo)語:?極限編程是一種新近提出的輕量級(jí)軟件工程方法,它的高效和實(shí)用很快就吸引了大批軟件人員的關(guān)注。本文對(duì)極限編程的概念和模式進(jìn)行了概要介紹,同時(shí)結(jié)合國內(nèi)工控軟件開發(fā)的特點(diǎn)
摘 要:極限編程是一種新近提出的輕量級(jí)軟件工程方法,它的高效和實(shí)用很快就吸引了大批軟件人員的關(guān)注。本文對(duì)極限編程的概念和模式進(jìn)行了概要介紹,同時(shí)結(jié)合國內(nèi)工控軟件開發(fā)的特點(diǎn),試圖將極限編程的概念引入到國內(nèi)的工控軟件領(lǐng)域。 關(guān)鍵詞:極限編程、實(shí)踐、UML、結(jié)對(duì)編程 一、極限編程   極限編程(eXtreme Programming,簡(jiǎn)稱XP)是Kent Beck在二十世紀(jì)九十年代提出的一種輕量級(jí)軟件工程方法。這種方法與傳統(tǒng)軟件工程方法幾乎背道而馳,其提出在業(yè)界產(chǎn)生了巨大的震動(dòng),甚至有人根本不相信其可行性。大量的實(shí)踐證明,極限編程是一種高效實(shí)用軟件工程方法。   軟件設(shè)計(jì)的方式可分為兩種:計(jì)劃式設(shè)計(jì)和演進(jìn)式設(shè)計(jì)。計(jì)劃式設(shè)計(jì)出現(xiàn)于20世紀(jì)70年代,它要求設(shè)計(jì)者事先仔細(xì)考慮所有的重大問題,不要求他們編寫代碼。設(shè)計(jì)者們使用一種能夠拋開編程細(xì)節(jié)的設(shè)計(jì)技術(shù)(如UML)在一個(gè)抽象的層次上工作。設(shè)計(jì)完成后被移交給程序員們進(jìn)行實(shí)際的構(gòu)建,因?yàn)槭穷A(yù)先考慮了幾乎所有的問題,所以只要程序員遵從設(shè)計(jì),就會(huì)構(gòu)建出良好的軟件。演進(jìn)式設(shè)計(jì)其實(shí)是最原始最普通的設(shè)計(jì)方法——編碼加修正,這意味著系統(tǒng)設(shè)計(jì)伴隨著系統(tǒng)實(shí)現(xiàn)而成長,設(shè)計(jì)是編程過程的一部分,而且隨著程序的演變,設(shè)計(jì)也在變化。普通的演進(jìn)設(shè)計(jì)是存在著致命缺陷的,由于設(shè)計(jì)的不斷變化,設(shè)計(jì)最終成為了一堆隨機(jī)應(yīng)變決策的拼湊。每種決策都使代碼更加難以改變,隨著時(shí)間的推移,軟件有效更改的能力不斷下降,而缺陷和漏洞卻越來越多且難以被發(fā)現(xiàn),設(shè)計(jì)者最后將遇到軟件失序的狀態(tài)。此時(shí)隨著項(xiàng)目的進(jìn)展,修正缺陷的代價(jià)會(huì)呈指數(shù)增長。   計(jì)劃設(shè)計(jì)使軟件設(shè)計(jì)成為了一種系統(tǒng)的工程方法,其在很多方面都要比演進(jìn)設(shè)計(jì)更好,但計(jì)劃設(shè)計(jì)也存在著問題。首先,計(jì)劃設(shè)計(jì)在計(jì)劃時(shí)不可能將編程時(shí)需要處理的所有問題都考慮到,這種編程和設(shè)計(jì)上的沖突將最終引入失序。其次,很多時(shí)候設(shè)計(jì)者本身也是編程者,當(dāng)設(shè)計(jì)者全身心投入設(shè)計(jì)時(shí),在編程方面必然會(huì)落后于軟件開發(fā)工具和資料的飛速發(fā)展,這就意味著設(shè)計(jì)上考慮不周的可能性會(huì)變大。而一個(gè)編程者必須要非常嫻熟才可能對(duì)設(shè)計(jì)者的設(shè)計(jì)產(chǎn)生質(zhì)疑,這種緊張關(guān)系將帶來隱患。再次,需求變化是計(jì)劃設(shè)計(jì)中最令人頭疼的問題,需求變化分為可預(yù)見的和不可預(yù)見的,可預(yù)見變化可以通過在設(shè)計(jì)中引入柔性來合理改變計(jì)劃,但不可預(yù)見變化的解決卻非常困難。雖然存在上述缺陷,但計(jì)劃設(shè)計(jì)因其相對(duì)演進(jìn)設(shè)計(jì)的優(yōu)越性而成為軟件開發(fā)的主流設(shè)計(jì)方法。   極限編程提倡演進(jìn)設(shè)計(jì)而不是計(jì)劃設(shè)計(jì),但是極限編程通過一套系統(tǒng)的實(shí)踐(Practice)彌補(bǔ)了演進(jìn)設(shè)計(jì)的致命缺陷。它將軟件項(xiàng)目分為多個(gè)迭代周期,每個(gè)周期實(shí)現(xiàn)部分軟件功能。在每個(gè)周期都進(jìn)行提出需求、架構(gòu)設(shè)計(jì)、編碼、測(cè)試和發(fā)布等幾個(gè)環(huán)節(jié),每個(gè)周期都進(jìn)行充分的測(cè)試和集成。這樣做可以不斷從客戶方面得到反饋,更逼近實(shí)際軟件需求。通過頻繁的重新編碼的過程,可以適應(yīng)需求的變化,也增加了易維護(hù)性。在不斷的迭代中,避免了架構(gòu)設(shè)計(jì)出現(xiàn)重大失誤所造成的風(fēng)險(xiǎn)。極限編程的實(shí)踐主要包括:計(jì)劃、小版本、隱喻、簡(jiǎn)單設(shè)計(jì)、測(cè)試、重構(gòu)、結(jié)對(duì)編程、集體所有權(quán)、持續(xù)集成、現(xiàn)場(chǎng)客戶和編碼標(biāo)準(zhǔn)等。   ● 計(jì)劃是指通過結(jié)合使用業(yè)務(wù)優(yōu)先級(jí)和技術(shù)評(píng)估來快速確定軟件下一個(gè)版本的范圍。當(dāng)計(jì)劃趕不上實(shí)際變化的時(shí)候就應(yīng)更新計(jì)劃。   ● 小版本是指將每個(gè)版本要實(shí)現(xiàn)的功能在符合需求的前提下盡可能的小,從而縮短每個(gè)版本的開發(fā)周期。   ● 隱喻是指對(duì)整個(gè)系統(tǒng)如何運(yùn)行所做的描述,用于幫助項(xiàng)目中的每個(gè)人理解項(xiàng)目的基本元素以及它們之間的關(guān)系。   ● 簡(jiǎn)單設(shè)計(jì)是指盡可能簡(jiǎn)單的進(jìn)行設(shè)計(jì),去掉任何不必要的復(fù)雜性。   ● 測(cè)試即指在開發(fā)的過程中,程序員必須不斷編寫單元測(cè)試,在這些測(cè)試都能正確運(yùn)行后才可以繼續(xù)開發(fā)??蛻粢惨帉憸y(cè)試來證明要求的功能已經(jīng)完成。   ● 重構(gòu)是指程序員為了去除重復(fù)、改善溝通、提高程序的柔性,在不更改系統(tǒng)行為的前提下對(duì)其進(jìn)行重新構(gòu)造。   ● 結(jié)對(duì)編程是指所有的代碼都是由兩個(gè)人使用同一臺(tái)計(jì)算機(jī)編寫的。結(jié)對(duì)的兩個(gè)人中正在使用鍵盤和鼠標(biāo)的人應(yīng)思考編寫當(dāng)前代碼的最佳途徑,另一個(gè)人則應(yīng)偏重于在戰(zhàn)略性的角度進(jìn)行思考。   ● 集體所有權(quán)是指代碼為集體所有,團(tuán)隊(duì)中的任何成員在任何時(shí)刻都可以在系統(tǒng)中的任何位置更改任何代碼。集體所有權(quán)的前提是XP團(tuán)隊(duì)中的任何成員都要團(tuán)結(jié)并有責(zé)任心。   ● 持續(xù)集成是指經(jīng)常性的對(duì)代碼進(jìn)行集成和測(cè)試。這樣做有利于檢查程序整體的可靠性以及在測(cè)試失敗時(shí),迅速確診存在錯(cuò)誤的代碼。   ● 現(xiàn)場(chǎng)客戶是指XP團(tuán)隊(duì)中必須存在一個(gè)客戶進(jìn)行業(yè)務(wù)配合,他將全職負(fù)責(zé)回答問題、解決爭(zhēng)端和確定優(yōu)先級(jí)。   ● 編碼標(biāo)準(zhǔn)是指代碼須按照整個(gè)團(tuán)隊(duì)都同意采納的標(biāo)準(zhǔn)進(jìn)行編寫,這樣才能確保結(jié)對(duì)程序員通過代碼進(jìn)行溝通。   極限編程的上述任何一個(gè)實(shí)踐都不是獨(dú)特或首創(chuàng)的,某些單獨(dú)的實(shí)踐甚至還存在缺陷,但XP要求在開發(fā)過程中各個(gè)實(shí)踐要相互支持,從而使整個(gè)開發(fā)過程走向成功。 二、國內(nèi)工控軟件開發(fā)的特點(diǎn)   國內(nèi)工控行業(yè)正處于發(fā)展階段,工控軟件的開發(fā)大多都具有研發(fā)性質(zhì)。而國內(nèi)的軟件行業(yè)也處于發(fā)展階段,缺少成熟的軟件團(tuán)隊(duì),缺少高素質(zhì)的開發(fā)人員和管理人員。在這種背景下,使得國內(nèi)工控軟件的開發(fā)具有如下特點(diǎn):   1、開發(fā)團(tuán)隊(duì)規(guī)模小。國內(nèi)工控行業(yè)的軟件多數(shù)都是具有研發(fā)性質(zhì)的長周期中小型軟件,如盲目投入大量的人力,往往無謂提高成本。另外國內(nèi)軟件行業(yè)缺少具有大規(guī)模團(tuán)隊(duì)管理經(jīng)驗(yàn)的人才,團(tuán)隊(duì)規(guī)模大了往往管理跟不上,反而使開發(fā)效率降低,產(chǎn)品質(zhì)量也很難保證,所以國內(nèi)工控軟件的團(tuán)隊(duì)多是十人甚至更少的規(guī)模。   2、需求模糊導(dǎo)致前期工作不充分。國內(nèi)工控行業(yè)多數(shù)軟件項(xiàng)目是對(duì)國外已有技術(shù)的研制,往往功能需求模糊。開發(fā)團(tuán)隊(duì)在進(jìn)行需求分析和概要設(shè)計(jì)時(shí),很難做出充分準(zhǔn)備并制定出完善的體系結(jié)構(gòu)。這類項(xiàng)目在開發(fā)中后期還經(jīng)常發(fā)生需求的變化。   3、團(tuán)隊(duì)的角色不完整。國內(nèi)工控軟件開發(fā)團(tuán)隊(duì)往往缺乏稱職的項(xiàng)目經(jīng)理,也很少在項(xiàng)目中專門安插一個(gè)領(lǐng)域?qū)<?,測(cè)試員往往由程序員兼任,客戶即使存在也很難做到良好的溝通和反饋。角色的缺乏和混淆使得管理難上加難,大大降低了工作效率。   4、程序員觀念陳舊,缺乏團(tuán)隊(duì)合作精神。到現(xiàn)在為止,國內(nèi)很多程序員仍然信奉著“個(gè)人英雄”主義。他們工作上個(gè)人能力很強(qiáng),但是長期的獨(dú)立工作,往往導(dǎo)致與他人的溝通與交流出現(xiàn)問題。這些顯然已經(jīng)不符合現(xiàn)代軟件開發(fā)的需求了。   5、“格子”式工作環(huán)境——把一間大辦公室用隔斷分隔成多個(gè)小格子,每個(gè)人都在自己的格子里工作。這種工作環(huán)境很不適合進(jìn)行研究開發(fā):較高的隔斷使得人們交流變得困難,狹窄的格子很難同時(shí)坐進(jìn)2到3個(gè)人,也很難放下較大的開發(fā)設(shè)備。 三、極限編程在工控軟件開發(fā)中的應(yīng)用   經(jīng)過國外近幾年的實(shí)踐證明,XP的確是一種優(yōu)秀的開發(fā)方法,但是因?yàn)閷?shí)際情況的不同,在國內(nèi)工控軟件的開發(fā)上全套照搬極限編程的模式是不現(xiàn)實(shí)的,這里面即存在著傳統(tǒng)觀念的阻力,也有著人員素質(zhì)的問題。要改變?nèi)藗冮L期以來習(xí)慣了的工作方式,必須循序漸進(jìn)的逐步更改。針對(duì)國內(nèi)工控軟件開發(fā)的上述特點(diǎn),可以考慮先在項(xiàng)目過程中引入XP的幾個(gè)較容易見到效果并被開發(fā)人員接受的實(shí)踐,待團(tuán)隊(duì)中的成員在進(jìn)行這些實(shí)踐中自己逐漸意識(shí)到問題所在后,再將XP的內(nèi)容進(jìn)一步引入,并根據(jù)實(shí)際情況進(jìn)行適當(dāng)調(diào)整。   第一是計(jì)劃實(shí)踐,通常情況下,開發(fā)團(tuán)隊(duì)的管理人員傾向于根據(jù)客戶的需要制定時(shí)間表,卻不去切實(shí)了解實(shí)現(xiàn)需求的過程細(xì)節(jié),此時(shí)所制定的時(shí)間表往往是不切實(shí)際的。而客戶的需求很少去考慮實(shí)際開發(fā)過程或者功能范圍的調(diào)整,只是期望在預(yù)期的時(shí)間拿到預(yù)期的成果。這樣所制定的計(jì)劃一旦實(shí)行,伴隨而來的會(huì)是大量的中期協(xié)商和觀點(diǎn)折衷,而最終產(chǎn)品很難按期交付。XP的計(jì)劃實(shí)踐要求客戶和開發(fā)團(tuán)隊(duì)的所有人員參與計(jì)劃的制定,首先要由客戶和開發(fā)人員一起確定項(xiàng)目要完成的所有任務(wù)及其優(yōu)先級(jí),然后由開發(fā)人員對(duì)這些任務(wù)進(jìn)行估計(jì)并制定時(shí)間表和給每個(gè)開發(fā)人員分配工作。在項(xiàng)目開發(fā)過程中對(duì)時(shí)間表的任何調(diào)整都要在問題出現(xiàn)的時(shí)候立即完成。   第二是結(jié)對(duì)編程,習(xí)慣上是反對(duì)兩個(gè)人一起開發(fā)代碼的。管理人員認(rèn)為開發(fā)代碼所需人數(shù)加倍是浪費(fèi)資源,程序員認(rèn)為編程在傳統(tǒng)上是作為一種孤立活動(dòng)進(jìn)行的。但定量的證據(jù)表明結(jié)對(duì)編程使設(shè)計(jì)的結(jié)果更好,生成的代碼更簡(jiǎn)單,更易于擴(kuò)展,老練的結(jié)對(duì)程序員認(rèn)為結(jié)對(duì)工作的速度要比單獨(dú)工作的速度快2倍以上。   第三是測(cè)試自動(dòng)化,一個(gè)全面的測(cè)試程序是一個(gè)項(xiàng)目成功的關(guān)鍵。一個(gè)項(xiàng)目的測(cè)試在剛剛開始的時(shí)候不可能有全面的測(cè)試,但必須先制定一個(gè)柔性測(cè)試框架。在每個(gè)單元的開發(fā)過程中產(chǎn)生相應(yīng)的樣本數(shù)據(jù)、單元測(cè)試和功能測(cè)試,然后集成到測(cè)試框架中,最后達(dá)到一個(gè)完整的測(cè)試覆蓋率。   第四是集成和發(fā)布,團(tuán)隊(duì)可考慮設(shè)置一臺(tái)專門的集成工作站,所有當(dāng)前代碼庫和測(cè)試程序都集中在該工作站上,每個(gè)開發(fā)人員都將自己的代碼與集成工作站的代碼庫進(jìn)行集成,并運(yùn)行所有的測(cè)試程序。在測(cè)試程序覆蓋率不足的時(shí)候,可將未測(cè)試部分羅列成表,每個(gè)人根據(jù)該表補(bǔ)充不足部分,并定期檢查更新該表。   第五是工作環(huán)境,XP的溝通是非常重要的。一個(gè)良好的工作環(huán)境可以改善人與人之間的溝通氛圍,提高人們交流的積極性。一個(gè)標(biāo)準(zhǔn)的XP團(tuán)隊(duì)工作環(huán)境應(yīng)該是一個(gè)大的通透空間,中間(公共區(qū)域)集中了所有的工作設(shè)備,每臺(tái)計(jì)算機(jī)前至少有夠坐下兩個(gè)人的空間,椅子是一定要方便移動(dòng)的。四壁要有大面積的白板,人們需要討論時(shí)可隨時(shí)隨地進(jìn)行。四周可以安排些小房間用作休息和處理私人事務(wù)。項(xiàng)目負(fù)責(zé)人可以有自己的辦公室,但在進(jìn)行開發(fā)時(shí)一定要進(jìn)入公共區(qū)域——這里沒有等級(jí)。   以上提到的都是基礎(chǔ)性的實(shí)踐,隨著這些實(shí)踐為團(tuán)隊(duì)所接受,每個(gè)成員會(huì)逐漸意識(shí)到XP的真髓。這個(gè)時(shí)候再一一引入其它實(shí)踐并檢驗(yàn)這些實(shí)踐的效果,適當(dāng)予以揚(yáng)棄,從而最終形成自己的軟件工程方法和一個(gè)成熟的團(tuán)隊(duì)。 四、結(jié)束語   XP是一個(gè)極具潛力的軟件工程方法,雖然XP的很多方法和道理都是早為人知的,但少有人去想把它們系統(tǒng)的結(jié)合起來,Kent Beck在這方面做了大膽的嘗試,并取得了驚人的成功。當(dāng)然,工控行業(yè)的軟件開發(fā)有著自己的特點(diǎn),XP的模式一定不會(huì)完全適合,但是XP所提倡的理念是非常值得我們深思和借鑒的。 參考文獻(xiàn)   [1] Kent Beck,《解析極限編程——擁抱變化》,人民郵電出版社,2002   [2] Kent Beck,《規(guī)劃極限編程》,人民郵電出版社,2002   [3] Kent Beck,《極限編程實(shí)施》,人民郵電出版社,2002   [4] Kent Beck,《極限編程實(shí)踐》,人民郵電出版社,2002   [5] 網(wǎng)站:Extreme Programming Online,http://www.extremeprogramming.org   [6] Brooks,《人月神話》,清華大學(xué)出版社,2002

標(biāo)簽:

點(diǎn)贊

分享到:

上一篇:西門子自動(dòng)化產(chǎn)品在城市供水...

下一篇:微能WIN-V63矢量控制變頻器在...

中國傳動(dòng)網(wǎng)版權(quán)與免責(zé)聲明:凡本網(wǎng)注明[來源:中國傳動(dòng)網(wǎng)]的所有文字、圖片、音視和視頻文件,版權(quán)均為中國傳動(dòng)網(wǎng)(www.treenowplaneincome.com)獨(dú)家所有。如需轉(zhuǎn)載請(qǐng)與0755-82949061聯(lián)系。任何媒體、網(wǎng)站或個(gè)人轉(zhuǎn)載使用時(shí)須注明來源“中國傳動(dòng)網(wǎng)”,違反者本網(wǎng)將追究其法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明其他來源的稿件,均來自互聯(lián)網(wǎng)或業(yè)內(nèi)投稿人士,版權(quán)屬于原版權(quán)人。轉(zhuǎn)載請(qǐng)保留稿件來源及作者,禁止擅自篡改,違者自負(fù)版權(quán)法律責(zé)任。

相關(guān)資訊

網(wǎng)站簡(jiǎn)介|會(huì)員服務(wù)|聯(lián)系方式|幫助信息|版權(quán)信息|網(wǎng)站地圖|友情鏈接|法律支持|意見反饋|sitemap

中國傳動(dòng)網(wǎng)-工業(yè)自動(dòng)化與智能制造的全媒體“互聯(lián)網(wǎng)+”創(chuàng)新服務(wù)平臺(tái)

網(wǎng)站客服服務(wù)咨詢采購咨詢媒體合作

Chuandong.com Copyright ?2005 - 2024 ,All Rights Reserved 版權(quán)所有 粵ICP備 14004826號(hào) | 營業(yè)執(zhí)照證書 | 不良信息舉報(bào)中心 | 粵公網(wǎng)安備 44030402000946號(hào)