国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

軟件復用技術(shù)的分析與應用

2012-12-31 00:00:00饒建農(nóng)
電腦知識與技術(shù) 2012年31期

摘要:軟件復用在軟件開發(fā)過程中有著重要的意義,能夠降低軟件開發(fā)與維護成本的費用,提高開發(fā)效率。簡要分析了軟件復用技術(shù)中存在的相關(guān)問題,總結(jié)了軟件復用的優(yōu)缺點。通過具體實例,提出了解決軟件復用過程中存在問題的方法。

關(guān)鍵詞:軟件復用;行動研究;原型

中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2012)31-7489-03

隨著軟件公司投入越來越多的錢花在開發(fā)新產(chǎn)品上,解決軟件復用就變得更有吸引力??蓮陀玫臉?gòu)件在軟件公司被稱為軟件資產(chǎn),包括可執(zhí)行代碼、源代碼、需求規(guī)格、設(shè)計和架構(gòu)等等。軟件復用對于把代碼測試和代碼實現(xiàn)結(jié)合起來是一種很好的方法,同時可以幫助軟件公司快速地制定解決方案,因為事實上編寫和測試過的代碼已經(jīng)實現(xiàn)了一定的功能。

引入新的軟件復用系統(tǒng)也可能存在風險。軟件復用是在新項目中使用老項目中的代碼的工作。這可能節(jié)省軟件公司開發(fā)新產(chǎn)品的時間,但也可能浪費時間,這一切都取決于代碼如何復用和使用的復用工具。復用代碼的開發(fā)員必須很好地了解代碼能做什么,怎么做和為什么必須復用。許多代碼在編寫的過程中沒有考慮在以后的項目中能否使用,因此很難打破舊代碼的單一功能,而編寫的復用代碼需要包含更好的軟件文檔和描述性的變量名。大多數(shù)開發(fā)員從老項目中復制代碼并粘貼到自己的項目中,這是一個非常簡單的實現(xiàn)代碼復用的方式。代碼復用期間使用的工具也是影響花在尋找所需代碼的時間多少的重要因素。

1 軟件復用理論

1.1 軟件復用的概念

目前,對于軟件復用還沒有一個形式化的概念,許多研究人員從各自不同的角度對軟件復用這個概念作了說明。Biggerstaff和Ritcoher認為軟件復用是在新的開發(fā)項目中使用以前已獲得的概念和對象。Tracz認為軟件具有事先性,復用特別為復用目的而設(shè)計的軟件過程,而把使用不是特別為復用目的的設(shè)計的軟件稱為軟件挽救。Gambhir把在多個應用中使用相同的構(gòu)件稱作軟件復用,不區(qū)分軟件復用和軟件挽救之間的區(qū)別。

軟件復用是一個系統(tǒng)到另一個系統(tǒng)的各種知識的重新應用,為了減少開發(fā)和維護成本的新的系統(tǒng)??衫玫默F(xiàn)有軟件成分即復用成分是軟件復用的核心。

1.2 軟件復用的討論

Mcilroy于1968年首次提出了軟件復用的概念,從那以后就不斷地被討論和運用。軟件復用的想法是好的,但是實現(xiàn)起來卻是困難的,主要是由于軟件復用在軟件開發(fā)中實現(xiàn)的復雜性。Krueger在他的研究中提出了為什么軟件復用從來沒有成為一個標準的軟件工程方法的原因。Larsen提出了大量有關(guān)老項目投入新項目的復用部分,這是首次展現(xiàn)軟件復用的前景。Tabatabai在他的文章中介紹了關(guān)于軟件復用更具體的問題和項目,如在編譯器中復用代碼。

1.3 軟件復用的優(yōu)點

軟件復用可以讓開發(fā)公司受益良多。例如,當在一個項目中需要一個公共函數(shù)時,開發(fā)人員可以導入經(jīng)過測試的能正常工作的這個函數(shù)。當開發(fā)一個新的系列產(chǎn)品時這是特別好的方法。

軟件復用的主要優(yōu)點:

1)增加可靠性:以前使用的軟件往往缺陷更少。

2)減少過程風險:構(gòu)建一個新的組件可能比復用現(xiàn)有的組件更容易失敗。

3)提高互操作性:通過使用同一個接口的實現(xiàn),系統(tǒng)將更為有效地實現(xiàn)與其它系統(tǒng)之間的互操作。

4)促進標準遵循:復用組件可以促進開發(fā)員遵循軟件的開發(fā)標準,提高組件的可用性。

5)支持快速原型:可以快速構(gòu)造出系統(tǒng)可操作的模型,以獲得用戶對系統(tǒng)功能的反饋。

1.4 軟件復用的缺點

Stephen在他的《Quality Impacts of Clandestine Common Coupling》一書中描述了軟件復用的危險性。他們通過對跟蹤耦合和整個Linux內(nèi)核的代碼復用的研究,表明同一個模塊在許多版本中被不做更改地廣泛使用。示例表明代碼復用為什么會威脅到另一個項目:“假設(shè)程序員負責開發(fā)和維護一個模塊M,如果意識到常見耦合的不良影響,那么他會想盡一切辦法來減少模塊M和產(chǎn)品其它部分之間的耦合。即使程序員不會以任何方式改變模塊M,開發(fā)另一模塊的程序員的后續(xù)更改也會增加模塊M和產(chǎn)品其它部分的耦合?!?/p>

在他們的介紹中描述了許多關(guān)于耦合的問題,“雖然所有類型的耦合在設(shè)計時是有用的,但是也證明某些類型的耦合可能引起軟件存在更大的故障。人們普遍認為,一些耦合類型應該限制使用”。

軟件復用的主要缺點:

1)增加維護成本:復用組件的外部更改可能會迫使改變復用軟件;更改一個復用組件比自定義一個組件難。

2)缺乏工具支持:維護復用組件的目錄和尋找組件的支持較少;開發(fā)工具不能較好地支持復用組件的開發(fā)。

3)非我發(fā)明綜合癥:許多軟件工程師更傾向于重寫一個組件而不是復用別人開發(fā)的組件。

4)復用的障礙:一個軟件開發(fā)人員只會尋找一個他期望最合適的可復用的組件;尋找他能辨認的提供了解決方案的組件;只會用他能夠理解的組件;如果組件能夠解決最緊要的問題它才能被成功使用;只有開發(fā)人員在初期認為所有步驟是成功的復用過程才會開始。

5)復用適用于許多通用組件,但是不適用域名具體的組件。

2 案例實施與分析

2.1 研究目的

軟件復用過程中存在的問題是:如何使開發(fā)人員很容易地尋找到他們所需要的特定代碼,并根據(jù)客戶的要求來完善它。

本文的目的是識別并嘗試解決軟件復用的缺陷。軟件復用的想法已經(jīng)存在幾十年了,但尚未挖掘出它的全部潛力。由于沒有軟件復用的標準工具,所以本文試圖通過實現(xiàn)一個原型來解決軟件復用過程中存在的問題,并且處理客戶提出的要求。

2.2 研究方法

研究方法由行動研究圖來描述,如圖1所示。

在“識別問題/問題調(diào)查”階段,將識別最關(guān)鍵的問題,是當前周期中重點關(guān)注的對象。在“開展研究”階段,將獲得解決問題的一個好的方法?!爸贫ㄐ袆佑媱潯彪A段將包括 “修復”第一階段中確定的問題?!胺此己驮u價行動”階段,所做的更改將會評估對問題的修改有多大的影響。

“行動研究可以被視為一個可變的案例研究,而案例研究員是一個獨立的觀察者,一個行動研究者:在系統(tǒng)的實現(xiàn)中是一位參與者,同時要評估某些干預技術(shù)。行動研究員不是一個獨立的觀察者,但是一個參與者?!?/p>

選擇行動研究是因為一個原型是基于采訪和文檔資料的開發(fā)。事實上,行動研究是一個迭代,根據(jù)新的訪談和發(fā)現(xiàn)的文檔實現(xiàn)自然更新。每個研究周期將不超過兩周,因為事實上時間是至關(guān)重要的。

honJdk5ngEKM1IQPfmB/Vw==

2.3 案例實施

為了開發(fā)出解決軟件復用中存在問題的原型,本文以Reveny公司作為研究對象。Reveny AB公司是JeevesAB信息系統(tǒng)公司的子公司,大約20個開發(fā)人員,是一個開發(fā)商業(yè)系統(tǒng)的軟件公司。

在實驗過程中,處理軟件復用需要一個解決方案,使設(shè)計的原型能夠幫助Reveny公司管理代碼并使他們的代碼很容易搜索到。在構(gòu)造這個原型時許多因素都要考慮到。原型的實現(xiàn)必須把執(zhí)行速度和可用性作為主要考慮因素。因為如果程序執(zhí)行緩慢,很難使用,就沒有人會用它,使得實現(xiàn)變得冗余,而且不能解決問題。代碼還應該易于維護。因此一個好的設(shè)計很有必要,代碼良好的層次結(jié)構(gòu)使得擴展起來也更容易。

原型以這樣一種方式工作:開發(fā)人員通過某些關(guān)鍵字搜索一個指定的文件夾,文件列表包含這些關(guān)鍵字。在分析特定的文件后,開發(fā)人員可以看到他正在尋找的代碼片段。所有的代碼存儲在同一個地方——代碼庫,它可以使所有的開發(fā)人員擁有最新的文件。原型的目的是使開發(fā)人員的工作更容易,讓他們通過訪問代碼,找到他們所要尋找的功能。代碼庫可以設(shè)置,但它的本質(zhì)是在一個地方存儲所有代碼,使其可以讓每個需要訪問的人訪問它。設(shè)計原型的時候,時間和可用性是兩個主要因素。原型的第一個版本需要許多時間來顯示文件和文件夾。時間的問題通過文件和文件夾數(shù)量的算法來解決。

2.4 案例分析

解決軟件復用存在的問題相當簡單的辦法是設(shè)置一個SVN(Subversion)服務器,這能夠使利用版本處理問題變得可能。由于目前的原型沒有SVN功能,迫使Reveny公司讓所有開發(fā)人員在安裝SVN客戶機的系統(tǒng)上工作。解決這個問題的另一種方式是將代碼存儲在一個服務器上,讓開發(fā)人員通過磁盤共享進行訪問,這使得原型的使用非常容易,但是沒有版本處理問題的優(yōu)勢。

現(xiàn)在,這個原型用c#語言開發(fā)。如果Reveny公司未來開發(fā)這個系統(tǒng),它必須包含一個針對文件夾庫的“active directory listener”的功能,通知其他的客戶機輪流更新資源庫。CVS(Concurrent Versions System)系統(tǒng)已經(jīng)實現(xiàn)的功能可以提醒開發(fā)員,如果要添加新文件他必須把新文件提交到資源庫。

3 結(jié)束語

雖然已經(jīng)有很多關(guān)于代碼復用的討論,但是仍然沒有通用的工具或過程應用于代碼復用方面。一個正常工作的軟件復用工具能夠讓開發(fā)公司受益:使開發(fā)人員在單位時間內(nèi)能夠產(chǎn)生更多的代碼;確保插入的代碼能正常工作;節(jié)省開發(fā)人員調(diào)試和測試的時間;創(chuàng)建一個代碼存儲的標準過程;如果使用SVN,開發(fā)公司可以獲取版本修訂的好處。

參考文獻:

[1] Krueger C W.Software Reuse[J]. ACM Computing Surveys, 1991,41(2).

[2] 鄭明春,張家重,王巖冰.關(guān)于軟件復用[J].計算機科學,1994,21(4).

[3] 陳東升.軟件復用技術(shù)研究[J].硅谷,2008(18).

[4] 杜銀霞.軟件復用技術(shù)的探討[J].電腦知識與技術(shù),2011(12).

莎车县| 高邮市| 吉安县| 南丰县| 蚌埠市| 维西| 海阳市| 多伦县| 庆城县| 临颍县| 丹凤县| 大城县| 海盐县| 邵阳市| 年辖:市辖区| 阿拉善盟| 清水河县| 泸州市| 昌吉市| 苗栗县| 永宁县| 贵州省| 加查县| 阿拉尔市| 双江| 西乡县| 南城县| 卓资县| 延边| 卫辉市| 山阳县| 靖江市| 宜昌市| 阿拉善左旗| 托克逊县| 遂昌县| 色达县| 南京市| 定南县| 建阳市| 黄石市|