軟件復(fù)用技術(shù)的分析與應(yīng)用_第1頁(yè)
軟件復(fù)用技術(shù)的分析與應(yīng)用_第2頁(yè)
軟件復(fù)用技術(shù)的分析與應(yīng)用_第3頁(yè)
軟件復(fù)用技術(shù)的分析與應(yīng)用_第4頁(yè)
軟件復(fù)用技術(shù)的分析與應(yīng)用_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

龍?jiān)雌诳W(wǎng) 軟件復(fù)用技術(shù)的分析與應(yīng)用作者:饒建農(nóng)來(lái)源:電腦知識(shí)與技術(shù)2012年第31期摘要:軟件復(fù)用在軟件開(kāi)發(fā)過(guò)程中有著重要的意義,能夠降低軟件開(kāi)發(fā)與維護(hù)成本的費(fèi)用,提高開(kāi)發(fā)效率。簡(jiǎn)要分析了軟件復(fù)用技術(shù)中存在的相關(guān)問(wèn)題,總結(jié)了軟件復(fù)用的優(yōu)缺點(diǎn)。通過(guò)具體實(shí)例,提出了解決軟件復(fù)用過(guò)程中存在問(wèn)題的方法。關(guān)鍵詞:軟件復(fù)用;行動(dòng)研究;原型中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2012)31-7489-03隨著軟件公司投入越來(lái)越多的錢花在開(kāi)發(fā)新產(chǎn)品上,解決軟件復(fù)用就變得更有吸引力??蓮?fù)用的構(gòu)件在軟件公司被稱為軟件資產(chǎn),包括可執(zhí)行代碼、源代碼、需求規(guī)格、設(shè)計(jì)和架構(gòu)等等。軟件復(fù)用對(duì)于把代碼測(cè)試和代碼實(shí)現(xiàn)結(jié)合起來(lái)是一種很好的方法,同時(shí)可以幫助軟件公司快速地制定解決方案,因?yàn)槭聦?shí)上編寫和測(cè)試過(guò)的代碼已經(jīng)實(shí)現(xiàn)了一定的功能。引入新的軟件復(fù)用系統(tǒng)也可能存在風(fēng)險(xiǎn)。軟件復(fù)用是在新項(xiàng)目中使用老項(xiàng)目中的代碼的工作。這可能節(jié)省軟件公司開(kāi)發(fā)新產(chǎn)品的時(shí)間,但也可能浪費(fèi)時(shí)間,這一切都取決于代碼如何復(fù)用和使用的復(fù)用工具。復(fù)用代碼的開(kāi)發(fā)員必須很好地了解代碼能做什么,怎么做和為什么必須復(fù)用。許多代碼在編寫的過(guò)程中沒(méi)有考慮在以后的項(xiàng)目中能否使用,因此很難打破舊代碼的單一功能,而編寫的復(fù)用代碼需要包含更好的軟件文檔和描述性的變量名。大多數(shù)開(kāi)發(fā)員從老項(xiàng)目中復(fù)制代碼并粘貼到自己的項(xiàng)目中,這是一個(gè)非常簡(jiǎn)單的實(shí)現(xiàn)代碼復(fù)用的方式。代碼復(fù)用期間使用的工具也是影響花在尋找所需代碼的時(shí)間多少的重要因素。1軟件復(fù)用理論1.1軟件復(fù)用的概念目前,對(duì)于軟件復(fù)用還沒(méi)有一個(gè)形式化的概念,許多研究人員從各自不同的角度對(duì)軟件復(fù)用這個(gè)概念作了說(shuō)明。Biggerstaff和Ritcoher認(rèn)為軟件復(fù)用是在新的開(kāi)發(fā)項(xiàng)目中使用以前已獲得的概念和對(duì)象。Tracz認(rèn)為軟件具有事先性,復(fù)用特別為復(fù)用目的而設(shè)計(jì)的軟件過(guò)程,而把使用不是特別為復(fù)用目的的設(shè)計(jì)的軟件稱為軟件挽救。Gambhir把在多個(gè)應(yīng)用中使用相同的構(gòu)件稱作軟件復(fù)用,不區(qū)分軟件復(fù)用和軟件挽救之間的區(qū)別。軟件復(fù)用是一個(gè)系統(tǒng)到另一個(gè)系統(tǒng)的各種知識(shí)的重新應(yīng)用,為了減少開(kāi)發(fā)和維護(hù)成本的新的系統(tǒng)。可利用的現(xiàn)有軟件成分即復(fù)用成分是軟件復(fù)用的核心。1.2軟件復(fù)用的討論Mcilroy于1968年首次提出了軟件復(fù)用的概念,從那以后就不斷地被討論和運(yùn)用。軟件復(fù)用的想法是好的,但是實(shí)現(xiàn)起來(lái)卻是困難的,主要是由于軟件復(fù)用在軟件開(kāi)發(fā)中實(shí)現(xiàn)的復(fù)雜性。Krueger在他的研究中提出了為什么軟件復(fù)用從來(lái)沒(méi)有成為一個(gè)標(biāo)準(zhǔn)的軟件工程方法的原因。Larsen提出了大量有關(guān)老項(xiàng)目投入新項(xiàng)目的復(fù)用部分,這是首次展現(xiàn)軟件復(fù)用的前景。Tabatabai在他的文章中介紹了關(guān)于軟件復(fù)用更具體的問(wèn)題和項(xiàng)目,如在編譯器中復(fù)用代碼。1.3軟件復(fù)用的優(yōu)點(diǎn)軟件復(fù)用可以讓開(kāi)發(fā)公司受益良多。例如,當(dāng)在一個(gè)項(xiàng)目中需要一個(gè)公共函數(shù)時(shí),開(kāi)發(fā)人員可以導(dǎo)入經(jīng)過(guò)測(cè)試的能正常工作的這個(gè)函數(shù)。當(dāng)開(kāi)發(fā)一個(gè)新的系列產(chǎn)品時(shí)這是特別好的方法。軟件復(fù)用的主要優(yōu)點(diǎn):1)增加可靠性:以前使用的軟件往往缺陷更少。2)減少過(guò)程風(fēng)險(xiǎn):構(gòu)建一個(gè)新的組件可能比復(fù)用現(xiàn)有的組件更容易失敗。3)提高互操作性:通過(guò)使用同一個(gè)接口的實(shí)現(xiàn),系統(tǒng)將更為有效地實(shí)現(xiàn)與其它系統(tǒng)之間的互操作。4)促進(jìn)標(biāo)準(zhǔn)遵循:復(fù)用組件可以促進(jìn)開(kāi)發(fā)員遵循軟件的開(kāi)發(fā)標(biāo)準(zhǔn),提高組件的可用性。5)支持快速原型:可以快速構(gòu)造出系統(tǒng)可操作的模型,以獲得用戶對(duì)系統(tǒng)功能的反饋。1.4軟件復(fù)用的缺點(diǎn)Stephen在他的QualityImpactsofClandestineCommonCoupling一書中描述了軟件復(fù)用的危險(xiǎn)性。他們通過(guò)對(duì)跟蹤耦合和整個(gè)Linux內(nèi)核的代碼復(fù)用的研究,表明同一個(gè)模塊在許多版本中被不做更改地廣泛使用。示例表明代碼復(fù)用為什么會(huì)威脅到另一個(gè)項(xiàng)目:“假設(shè)程序員負(fù)責(zé)開(kāi)發(fā)和維護(hù)一個(gè)模塊M,如果意識(shí)到常見(jiàn)耦合的不良影響,那么他會(huì)想盡一切辦法來(lái)減少模塊M和產(chǎn)品其它部分之間的耦合。即使程序員不會(huì)以任何方式改變模塊M,開(kāi)發(fā)另一模塊的程序員的后續(xù)更改也會(huì)增加模塊M和產(chǎn)品其它部分的耦合?!痹谒麄兊慕榻B中描述了許多關(guān)于耦合的問(wèn)題,“雖然所有類型的耦合在設(shè)計(jì)時(shí)是有用的,但是也證明某些類型的耦合可能引起軟件存在更大的故障。人們普遍認(rèn)為,一些耦合類型應(yīng)該限制使用”。軟件復(fù)用的主要缺點(diǎn):1)增加維護(hù)成本:復(fù)用組件的外部更改可能會(huì)迫使改變復(fù)用軟件;更改一個(gè)復(fù)用組件比自定義一個(gè)組件難。2)缺乏工具支持:維護(hù)復(fù)用組件的目錄和尋找組件的支持較少;開(kāi)發(fā)工具不能較好地支持復(fù)用組件的開(kāi)發(fā)。3)非我發(fā)明綜合癥:許多軟件工程師更傾向于重寫一個(gè)組件而不是復(fù)用別人開(kāi)發(fā)的組件。4)復(fù)用的障礙:一個(gè)軟件開(kāi)發(fā)人員只會(huì)尋找一個(gè)他期望最合適的可復(fù)用的組件;尋找他能辨認(rèn)的提供了解決方案的組件;只會(huì)用他能夠理解的組件;如果組件能夠解決最緊要的問(wèn)題它才能被成功使用;只有開(kāi)發(fā)人員在初期認(rèn)為所有步驟是成功的復(fù)用過(guò)程才會(huì)開(kāi)始。5)復(fù)用適用于許多通用組件,但是不適用域名具體的組件。2案例實(shí)施與分析2.1研究目的軟件復(fù)用過(guò)程中存在的問(wèn)題是:如何使開(kāi)發(fā)人員很容易地尋找到他們所需要的特定代碼,并根據(jù)客戶的要求來(lái)完善它。本文的目的是識(shí)別并嘗試解決軟件復(fù)用的缺陷。軟件復(fù)用的想法已經(jīng)存在幾十年了,但尚未挖掘出它的全部潛力。由于沒(méi)有軟件復(fù)用的標(biāo)準(zhǔn)工具,所以本文試圖通過(guò)實(shí)現(xiàn)一個(gè)原型來(lái)解決軟件復(fù)用過(guò)程中存在的問(wèn)題,并且處理客戶提出的要求。2.2研究方法研究方法由行動(dòng)研究圖來(lái)描述,如圖1所示。在“識(shí)別問(wèn)題/問(wèn)題調(diào)查”階段,將識(shí)別最關(guān)鍵的問(wèn)題,是當(dāng)前周期中重點(diǎn)關(guān)注的對(duì)象。在“開(kāi)展研究”階段,將獲得解決問(wèn)題的一個(gè)好的方法。“制定行動(dòng)計(jì)劃”階段將包括“修復(fù)”第一階段中確定的問(wèn)題。“反思和評(píng)價(jià)行動(dòng)”階段,所做的更改將會(huì)評(píng)估對(duì)問(wèn)題的修改有多大的影響。“行動(dòng)研究可以被視為一個(gè)可變的案例研究,而案例研究員是一個(gè)獨(dú)立的觀察者,一個(gè)行動(dòng)研究者:在系統(tǒng)的實(shí)現(xiàn)中是一位參與者,同時(shí)要評(píng)估某些干預(yù)技術(shù)。行動(dòng)研究員不是一個(gè)獨(dú)立的觀察者,但是一個(gè)參與者。”選擇行動(dòng)研究是因?yàn)橐粋€(gè)原型是基于采訪和文檔資料的開(kāi)發(fā)。事實(shí)上,行動(dòng)研究是一個(gè)迭代,根據(jù)新的訪談和發(fā)現(xiàn)的文檔實(shí)現(xiàn)自然更新。每個(gè)研究周期將不超過(guò)兩周,因?yàn)槭聦?shí)上時(shí)間是至關(guān)重要的。2.3案例實(shí)施為了開(kāi)發(fā)出解決軟件復(fù)用中存在問(wèn)題的原型,本文以Reveny公司作為研究對(duì)象。RevenyAB公司是JeevesAB信息系統(tǒng)公司的子公司,大約20個(gè)開(kāi)發(fā)人員,是一個(gè)開(kāi)發(fā)商業(yè)系統(tǒng)的軟件公司。在實(shí)驗(yàn)過(guò)程中,處理軟件復(fù)用需要一個(gè)解決方案,使設(shè)計(jì)的原型能夠幫助Reveny公司管理代碼并使他們的代碼很容易搜索到。在構(gòu)造這個(gè)原型時(shí)許多因素都要考慮到。原型的實(shí)現(xiàn)必須把執(zhí)行速度和可用性作為主要考慮因素。因?yàn)槿绻绦驁?zhí)行緩慢,很難使用,就沒(méi)有人會(huì)用它,使得實(shí)現(xiàn)變得冗余,而且不能解決問(wèn)題。代碼還應(yīng)該易于維護(hù)。因此一個(gè)好的設(shè)計(jì)很有必要,代碼良好的層次結(jié)構(gòu)使得擴(kuò)展起來(lái)也更容易。原型以這樣一種方式工作:開(kāi)發(fā)人員通過(guò)某些關(guān)鍵字搜索一個(gè)指定的文件夾,文件列表包含這些關(guān)鍵字。在分析特定的文件后,開(kāi)發(fā)人員可以看到他正在尋找的代碼片段。所有的代碼存儲(chǔ)在同一個(gè)地方代碼庫(kù),它可以使所有的開(kāi)發(fā)人員擁有最新的文件。原型的目的是使開(kāi)發(fā)人員的工作更容易,讓他們通過(guò)訪問(wèn)代碼,找到他們所要尋找的功能。代碼庫(kù)可以設(shè)置,但它的本質(zhì)是在一個(gè)地方存儲(chǔ)所有代碼,使其可以讓每個(gè)需要訪問(wèn)的人訪問(wèn)它。設(shè)計(jì)原型的時(shí)候,時(shí)間和可用性是兩個(gè)主要因素。原型的第一個(gè)版本需要許多時(shí)間來(lái)顯示文件和文件夾。時(shí)間的問(wèn)題通過(guò)文件和文件夾數(shù)量的算法來(lái)解決。2.4案例分析解決軟件復(fù)用存在的問(wèn)題相當(dāng)簡(jiǎn)單的辦法是設(shè)置一個(gè)SVN(Subversion)服務(wù)器,這能夠使利用版本處理問(wèn)題變得可能。由于目前的原型沒(méi)有SVN功能,迫使Reveny公司讓所有開(kāi)發(fā)人員在安裝SVN客戶機(jī)的系統(tǒng)上工作。解決這個(gè)問(wèn)題的另一種方式是將代碼存儲(chǔ)在一個(gè)服務(wù)器上,讓開(kāi)發(fā)人員通過(guò)磁盤共享進(jìn)行訪問(wèn),這使得原型的使用非常容易,但是沒(méi)有版本處理問(wèn)題的優(yōu)勢(shì)。現(xiàn)在,這個(gè)原型用c#語(yǔ)言開(kāi)發(fā)。如果Reveny公司未來(lái)開(kāi)發(fā)這個(gè)系統(tǒng),它必須包含一個(gè)針對(duì)文件夾庫(kù)的“activedirectorylistener”的功能,通知其他的客戶機(jī)輪流更新資源庫(kù)。CVS(ConcurrentVersionsSystem)系統(tǒng)已經(jīng)實(shí)現(xiàn)的功能可以提醒開(kāi)發(fā)員,如果要添加新文件他必須把新文件提交到資源庫(kù)。3結(jié)束語(yǔ)雖然已經(jīng)有很多關(guān)于代碼復(fù)用的討論,但是仍然沒(méi)有通用的工具或過(guò)程應(yīng)用于代碼復(fù)用方面。一個(gè)正常工作的軟件復(fù)用工具能夠讓開(kāi)發(fā)公司受益:使開(kāi)發(fā)人員在單位時(shí)間內(nèi)能夠產(chǎn)生更多的代碼;確保插入的代碼能正常工作;節(jié)省開(kāi)發(fā)人員調(diào)試和測(cè)試的時(shí)間;創(chuàng)建一個(gè)代碼存儲(chǔ)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論