軟件構造-軟件複用技術

軟件複用的定義

  • 軟件複用是指利用現有的軟件成分構造出高質量、高效率的新的軟件系統。
  • 軟件複用不只包括程序的複用,還包括每個活動所產生的製成品的複用。
  • 軟件複用技術目前面臨的難點是:如何能夠將軟件複用技術準確地、合理地運用到軟件開發中。並將軟件複用技術的優勢充分發揮出來。

內容

   應用軟件系統的開發過程包含以下幾個階段:領域和需求分析、設計、編碼、測試以及維護等,各個階段的工作中均存在重複,而這些重複都可以作爲軟件複用的內容。
   複用一般可以分四個層次:
   1.領域和需求分析階段的複用。這個層主要包括對領域知識、軟件總體框架結構、項目計劃、成本估計等的複用;
   2.設計階段的複用。這個層主要包括對分析建模方法、領域模型、軟件功能模型等的複用;
   3.編碼階段的複用。這個層主要包括對功能模塊、用戶和技術文檔、用戶界面風格等的複用;
   4.測試階段的複用。這個層主要包括對測試方法、測試用例等的複用。

優勢

   軟件複用的優勢主要表現在以下幾個方面:
   (1)提高軟件生產效率。因爲可複用構件經過了高度的優化,並且在實踐中經受過考驗,用可複用的構件構造系統可以提高系統的性能和可靠性,減少開發代價。
   (2)減少系統的維護代價。由於使用經過檢驗的構件,減少了可能的錯誤,同時軟件中需要維護的部分也減少了。
   (3)提高系統間的互操作性。通過使用統一的接口,系統將更爲有效地實現與其他系統之間的互操作性。
   (4)支持快速原型設計。利用可複用構件可以快速有效地構造出應用程序的原型,以獲得用戶對系統功能的反饋。
   (5)減少培訓開銷。如同硬件工程師可以使用相同的集成電路塊設計不同類型的系統一樣,軟件工程師將使用一個可複用構件庫來構造不同的應用系統,而其中的構件都是他們所熟悉和精通的。

範疇

   依據複用的對象,可以將軟件複用分爲產品複用和過程複用。

  • 產品複用是指複用已有的軟件構件,通過構件集成組裝得到新系統。
  • 過程複用是指複用已有的軟件開發過程,使用可複用的應用生成器來自動或半自動地生成所需系統。

   過程複用依賴於軟件自動化技術的發展,目前只適用於一些特殊的應用領域,而產品複用則是目前現實的、主流的途徑。

方式

   依據對可複用信息進行復用的方式,可以將軟件複用分爲黑盒複用和白盒複用。

  • 黑盒複用是指對已有構件不需做任何修改,直接複用。這是理想的方式。
  • 白盒複用是指已有構件並不能完全符合用戶需求,要根據用戶需求進行適應性修改後纔可使用。而在大多數應用的組裝過程中,構件的適應性修改是必需的。

關鍵技術

1.軟件構件技術

   軟件構件技術是軟件複用的核心。
   構件是系統中可以明確辨識的構成成分;而軟件構件則是軟件系統中具有一定意義的相對獨立的構成成分;可複用構件是指在具有獨立功能的基礎上,實現複用功能的構件。
   隨着人們對軟件複用技術研究越來越深入,構件的概念也得到了延伸。它們應用於各個不同的開發過程,目前,主要關注的構件是代碼級構件,它可以直接由工具進行支持。
   代碼級構件主要分爲源代碼和二進制代碼構件兩種,其源代碼所採用的複用方式也有兩種,即黑盒複用和白盒複用兩種方式;而二進制代碼構件的複用方式主要就是一種,即黑盒複用方式,通常也只能對構件的接口和屬性等信息進行了解。
   軟件構件技術的研究內容主要包括:

  • 構件獲取。構件生產是有目的的,其構件是從已有的系統中挖掘出來的;
  • 構件模型。在對構件本質特徵研究的基礎上,充分認識構件間的關係;
  • 構件描述語言。此目的就是爲了使構件的精確描述、理解和組裝問題進行解決;
  • 構件分類和檢索。對構件分類和檢索策略進行研究,爲構件庫系統的構建創造良好的條件;
  • 構件複合組裝。對構件組裝機制進行研究且在構件模型的基礎上進行;
  • 標準化。這裏的標準化主要是構件模型和構件庫系統的標準化。
2.軟件構架

   對於軟件架構,目前還沒有一個統一的定義。一個典型的定義是:一個程序或計算系統的軟件構架是系統的一個或多個結構,包含軟件構件、這些構件的對外可見的性質以及它們之間的關係。
   體系結構描繪的是系統的藍圖,是溝通軟件需求與軟件設計的一座橋樑。體系結構的研究,使軟件複用從代碼複用發展到設計複用和過程複用。在基於構件和體系結構的軟件開發方法下,程序開發模式也相應地發生了根本變化。軟件開發不再是”算法+數據結構”,而是”構件開發+基於體系結構的構件組裝”。
   軟件構架包括全局組織與控制結構,構件間通訊、同步和數據訪問的協議,設計元素間的功能分配,物理分佈,設計元素集成,伸縮性和性能,設計選擇等。軟件構架研究如何快速、可靠地從可複用構件構造系統的方式,着重於軟件系統自身的整體結構和構件間的互聯。其中主要包括:軟件構架原理和風格、軟件構架的描述和規約、特定領域軟件構架、構件向軟件構架的集成機制等。

3.領域工程

   領域工程是針對一組相似或相近應用的共同領域及用戶需求進行分析,識別這些應用的共同特徵和可變特徵,進行面向複用的開發,產生出特定領域的構件和構架。
   它覆蓋了建立可重用構件的所有活動:主要過程分爲領域分析(定義”問題空間”)、領域設計(提出”解決問題的框架")和領域實現(實現所提出的”解決空間”)三個階段。
   它以領域分析爲出發點,對領域中的系統進行分析,包括識別、蒐集、組織、分析和表示領域中相關的共性和個性信息,形成領域定義和領域模型。其中領域模型確定了該領域系統的公共功能和數據;依據領域模型,設計面向特定領域的軟件構架DSSA,包括系統中各種構件間交互關係的共性和差異,並以此領域構架爲中心,識別、開發和組織可重用構件,供應用工程師使用。這樣,當開發同一領域中新的應用時,可以根據領域分析模型,確定新應用的需求規約;根據特定領域的軟件構架形成新應用的設計,並以此爲基礎選擇可複用構件進行組裝,從而形成新系統。

4.軟件再工程

   隨着軟件技術的不斷開發,一些遺產軟件系統已經不能再滿足現今的要求,慢慢地退出軟件舞臺,如果能夠從這些系統中獲取有用的軟件構件,再對它們進行維護,使其系統軟件生命週期得以延長,而這個過程就是軟件再工程所要解決的問題,從而構造出新的系統來。如果沒有對其進行維護,即使獲取了有用的軟件構件,那麼這些軟件構件隨着技術的發展最終還是被淘汰。

5.開放系統技術

   使用接口標準是開放系統技術的基本原則。
   開放系統技術能夠爲系統開發的決策設計提供良好的依據,尤其是爲系統的演化提供了穩定的基礎,同時也進一步保證了各子系統間的互操作。
   開放系統技術不僅能夠確保系統效率的穩定進行,而且在此基礎上,能夠使開發成本得以降低以及開發週期得以縮短。系統依賴穩定的接口標準促進了開發系統更容易適應技術。

6.軟件過程

   軟件過程就是從軟件需求定義開始,直至軟件使用後廢棄爲止,針對系統開發、運作和維護所實施的全部過程、活動和任務的結構。
   隨着軟件工程的快速發展,軟件過程也發生了一些變化。軟件過程又稱軟件生存週期過程,軟件生存週期主要可劃分爲三個時期,第一時期就是計劃、分析時期,第二時期就是設計、實現時期,第三時期就是運行、維護時期。當前,軟件工程研究的熱點就是軟件過程及其完善。

7.CASE技術

   軟件工程思想已經在人們心中有了更深入的滲透,其已經越來越受到廣大軟件開發者的歡迎,CASE 工具和CASE環境得到越來越廣泛的應用。
   對於軟件工程而言,CASE技術是非常重要的,它能夠支持軟件工程,並且使軟件開發的複雜性有所降低,也就是說,能夠促使軟件開發人員有效控制軟件開發的複雜性,進而使軟件開發的效率和質量得以提高。
   同理,CASE技術也能夠有效地支持軟件複用。其主要內容包括:在面向複用的軟件開發中,可複用構件的抽取、描述、分類和存儲;在基於複用的軟件開發中,可複用構件的檢索、提取和組裝;可複用構件的度量等。

總結

   面對軟件危機的發生,軟件複用技術起到了非常重要的作用。
   軟件複用技術是緩解軟件危機的重要手段,它不僅能夠提高軟件開發效率,而且還能夠提高軟件的可靠性,以及能夠降低軟件開發成本,在軟件測試和維護方面也有一定的優勢。
   因此,軟件複用技術已經成爲現在軟件工程方面的研究熱點。

參考:

軟件複用技術
基於可複用構件的軟件複用技術

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章