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