石研 哈爾濱學(xué)院數(shù)學(xué)與計算機(jī)學(xué)院150086
淺談重用技術(shù)在軟件工程中的應(yīng)用
石研 哈爾濱學(xué)院數(shù)學(xué)與計算機(jī)學(xué)院150086
本文從重用的概念出發(fā),簡要的介紹在軟件工程領(lǐng)域中重用的對象、過程和障礙。
重用;軟件工程
軟件不斷增長的成本要求找到一些方法來降低費(fèi)用、節(jié)約成本,重用就是這樣的一種方法。軟件重用是解決軟件危機(jī)、提高軟件生產(chǎn)效率和質(zhì)量的途徑。在軟件工程中,軟件重用的思想體現(xiàn)在軟件生存周期的各個階段。
重用也叫再用或復(fù)用,是指同一事物不作修改或稍加改動就多次重復(fù)使用。在軟件工程中,重用是指使用一個產(chǎn)品中的組件來簡化另一個不同的產(chǎn)品的開發(fā)。可重用的組件可以是一個模塊,一段代碼,一個設(shè)計,一個用戶手冊的一部分等,就是對軟件的成分進(jìn)行重用。軟件重用是提高軟件開發(fā)生產(chǎn)率和目標(biāo)系統(tǒng)質(zhì)量的重要途徑。
重用不但可以縮短開發(fā)過程、降低開發(fā)成本、提高軟件產(chǎn)品的質(zhì)量,還可以減少維護(hù)的時間和降低維護(hù)成本。重用的主要影響是對維護(hù),因為重用的組件通常經(jīng)過了良好的設(shè)計、全面測試并形成完整的文檔,簡化了相關(guān)的維護(hù)工作。因此,重用對維護(hù)的影響多于對開發(fā)的影響。大量使用可重用的組件來開發(fā)軟件,可以從下述兩個方面提高軟件的可維護(hù)性:
第一方面,通??芍赜玫慕M件在開發(fā)時經(jīng)過很嚴(yán)格的測試,可靠性比較高,且在每次重用過程中都會發(fā)現(xiàn)并清除一些錯誤,隨著時間推移,這樣的組件將變成實質(zhì)上無錯誤的。
第二方面,很容易修改可重用的組件使之再次應(yīng)用在新環(huán)境中,因此,軟件中使用的可重用的組件越多,維護(hù)也就越容易。
具體地說,可能被重用的軟件成分主要有以下幾種:
(1)項目計劃??珥椖恐赜密浖椖坑媱澋幕窘Y(jié)構(gòu)和許多內(nèi)容,可以減少用于制訂計劃的時間,降低與建立進(jìn)度表和進(jìn)行風(fēng)險分析等活動相關(guān)聯(lián)的不確定性。
(2)成本估計。在不同項目中經(jīng)常含有類似的功能,可以只做極少修改或根本不做修改就重用對該功能的成本估計結(jié)果。
(3)體系結(jié)構(gòu)。即使在考慮不同的應(yīng)用領(lǐng)域時,也很少有截然不同的程序和數(shù)據(jù)體系結(jié)構(gòu)。因此,有可能創(chuàng)建一組類屬的體系結(jié)構(gòu)模板(例如,事務(wù)處理體系結(jié)構(gòu)),并把那些模板作為可重用的設(shè)計框架。
(4)需求模型和規(guī)格說明。用傳統(tǒng)軟件工程方法開發(fā)的分析模型(例如,數(shù)據(jù)流圖),是可重用的。面向?qū)ο箝_發(fā)方法中,類和對象的模型及規(guī)格說明也是經(jīng)常被重用的對象。
(5)設(shè)計。用傳統(tǒng)方法開發(fā)的體系結(jié)構(gòu)、數(shù)據(jù)、接口和過程設(shè)計結(jié)果,是重用的候選者;系統(tǒng)和對象設(shè)計也是可重用的。
(6)源代碼。用兼容的程序設(shè)計語言書寫的、經(jīng)過驗證的程序構(gòu)件,是重用的候選者。
(7)用戶文檔和技術(shù)文檔。即使針對不同的應(yīng)用,也有可能重用用戶文檔和技術(shù)文檔的大部分。
(8)用戶界面。G U I(圖形用戶界面)軟件可占到一個應(yīng)用程序的60%代碼量,經(jīng)常被重用,重用的效果非常顯著,這可能是最廣泛被重用的軟件成分。
圖1 軟件重用的一般過程
(9)數(shù)據(jù)。在大多數(shù)被重用的軟件成分中,被重用的數(shù)據(jù)包括:內(nèi)部表、列表和記錄結(jié)構(gòu),以及文件和完整的數(shù)據(jù)庫。
(10)測試用例。如果設(shè)計或代碼構(gòu)件被重用,相關(guān)的測試用例也會一同被重用。
軟件成分重用的過程如圖1所示。
從圖中可以看出,軟件重用的一般過程分成以下幾步:
抽象:對一個可重用的軟件成分,首先要對其進(jìn)行“抽象”概括,即描述該軟件成分的本質(zhì)、功能、適用范圍和特點(diǎn),以此作為關(guān)鍵字,方便使用者在調(diào)用時進(jìn)行檢索;
存儲:以關(guān)鍵字作為索引,放置在“可重用的軟件成分庫”中備用;
檢索:在組建(集成)新系統(tǒng)時,利用關(guān)鍵字,根據(jù)需要從可重用的軟件成分庫檢索挑選適合新系統(tǒng)功能要求的軟件成分;
實例化:對選取的軟件成分進(jìn)行簡單的修改調(diào)試,變成完全適合新系統(tǒng)要求的軟件成分;
系統(tǒng)集成:最后進(jìn)行系統(tǒng)集成,完成新系統(tǒng)的組建。
如果實例化(修改、調(diào)整)的軟件成分經(jīng)過實際運(yùn)行檢驗后,被確認(rèn)可以成為新的可重用的軟件成分時,因及時對其進(jìn)行抽象概括,作為新的可重用的軟件成分放置到可重用的軟件成分庫備用。
軟件重用是一項比較吸引人的技術(shù),如果重用已存在的組件,就不需要再去設(shè)計、實現(xiàn)、測試該組件。平均來說,軟件產(chǎn)品只有大約15%真正符合最初的意圖,另外的85%理論上是可以標(biāo)準(zhǔn)化的,并且可以被在別的產(chǎn)品中重用。85%基本是重用率的一個理論上限,但在實際中只能實現(xiàn)40%左右的重用率。
這是因為重用會面臨這樣的一些障礙:
(1)很多軟件專業(yè)人員都相信“一個程序只有自己編的才是好的”,寧可自己從頭編寫一個程序,也不愿重用別人編寫的程序。對此,可以從管理方面入手,采取相關(guān)措施提倡重用。
(2)重用的對象最好是一個自身沒有錯誤也不會給相關(guān)程序帶來錯誤的程序。為達(dá)到這一目標(biāo),應(yīng)該在重用之前,對要重用的目標(biāo)進(jìn)行詳盡的測試。
(3)可重用的組件很多,如何去進(jìn)行存儲和管理以便進(jìn)行檢索去重用?可以使用相應(yīng)的數(shù)據(jù)庫技術(shù)去解決這個問題。
(4)對于合同軟件會產(chǎn)生司法問題。按照軟件開發(fā)組織和用戶之間簽訂的合同,軟件產(chǎn)品是屬于用戶的。因此,在為不同用戶開發(fā)的軟件產(chǎn)品中進(jìn)行重用會構(gòu)成侵權(quán)。
(5)重用的對象是現(xiàn)成的軟件產(chǎn)品組件時,由于相應(yīng)的源代碼對軟件開發(fā)組織來說是保密的,因此相應(yīng)的使用這種重用組件的軟件就被限制了可擴(kuò)展性和可修改性。
(6)重用會增加成本。重用時需要考慮三個成本:建造可重用組件的成本、重用它的成本以及定義和實現(xiàn)一個重用過程的成本。僅僅建造可重用組件就將增加至少60%的成本。
這些障礙只是一些主要的障礙,在原則上是可以克服的,重用技術(shù)正在被不同的軟件開發(fā)組織應(yīng)用到軟件開發(fā)和維護(hù)過程中。
經(jīng)過近年來軟件產(chǎn)業(yè)界的實踐,通過積極的軟件重用可以獲得可觀的商業(yè)效益,并且產(chǎn)品質(zhì)量、開發(fā)生產(chǎn)率和整體成本都得到改善。在軟件工程領(lǐng)域中,重用技術(shù)正在逐步被人們重視,其應(yīng)用也會越來越廣泛。
[1]張海藩.軟件工程導(dǎo)論.清華大學(xué)出版社. 2005
[2]梁穎紅.軟件工程理論與實踐.哈爾濱工業(yè)大學(xué)出版社.2008