軟件工程筆記:軟件複用綜述

軟件複用綜述

— 筆記整理自 北京理工大學 計算機學院

重複無處不在

  • 代碼拷貝是複用還是Bad Smells?
    • 代碼壞味道排名第一的就是代碼拷貝
    • 代碼拷貝不是良好的複用方法,也足以說明我們對軟件複用的需求
    • 系統在從頭開發的時候一定會存在多多少少重複勞動
  • 軟件開發活動中存在大量的重複
    • 需求獲取重複
    • 設計重複
    • 編碼重複
    • 測試重複
    • 文檔重複
  • 避免重複勞動的解決方案?
    • 面向對象
    • 構建技術

軟件複用的概念

  • 1968年的一篇論文“大量生產的軟件構件”
  • 軟件複用:重複使用“爲了複用目的而設計的軟件”的過程
  • 可複用軟件:爲了複用目的而設計的軟件
  • 軟件挽救和代碼沿用
    • 軟件挽救:重複使用並非爲了複用而設計的軟件那些活動
    • 代碼沿用:在一個系統不同版本之間的代碼重複的活動
    • 這麼區分是爲了避免使用複用這個詞,免得把複用狹義、廣義概念混淆
  • 重複行爲發生的維度
    • 時間維—軟件維護:使用以前軟件的版本作爲新版本的基礎加入新的功能,適應新的需求
    • 平臺維—軟件移植:以某個平臺的軟件作爲基礎,修改和運行和平臺相關的部分,使其能夠運行在新的平臺下,這就是軟件移植
    • 應用維—真正的軟件複用:將某個軟件或軟件中的某些部件應用到其他系統中去,新的系統具有不同的功能和用途,這是真正意義上的軟件複用

軟件複用的分類

  • 按複用對象分類
    • 產品複用(主流的複用途徑)
      • 狹義上來說:複用哪些已有的軟件構建,通過構建集成得到新的系統
      • 廣義上來說,包括以下幾類:
        • 數據複用
        • 體系結構複用
        • 設計複用
        • 程序複用
    • 過程複用
      • 複用已有的軟件開發過程
      • 使用可複用的應用生成器來生成或半自動生成我們所需要的系統
      • 依賴於軟件自動化技術的發展,只適用於一些特定的應用領域
  • 按複用方式分類
    • 黑盒複用:對已有的構件不做修改,可直接使用,理想的複用方式
    • 白盒複用:已有的構建不能完全符合業務需求, 需要根據業務的需求適應性修改(大多數情況下,適應性修改往往是必須的)
  • 軟件複用三個基本原則:
    • 必須有可複用的對象
    • 被複用的對象必須是有用的
    • 複用者需要知道如何使用被複用的對象
  • 軟件複用包括兩個相關的過程
    • 可複用軟件的開發
    • 基於可複用軟件應用系統的構造

實現複用的關鍵因素


備註:圖片託管於github,請確保網絡的可訪問性

  • 軟件構建技術領域工程
  • 軟件架構技術
  • 軟件再工程
  • 開放系統技術
  • 軟件過程
  • CASE技術
  • 以及各種非技術因素

軟件構件技術

  • 構件是可組裝的軟件實體
    • 具有相對獨立功能
    • 可以明確辨識
    • 接口由契約指定
    • 和語境有明顯依賴關係
    • 可獨立部署
    • 多由第三方提供
  • 可複用構件
  • 構件概念的擴展

軟件架構技術

  • 架構與體系結構
  • 架構是對系統整體結構設計的刻畫
    • 全局組織與控制結構
    • 構件間通訊
    • 同步和數據訪問的協議
  • 軟件架構研究內容
  • 研究和應用熱點:SOA(面向服務的體系結構)

領域工程

  • 一組具有相似或相近軟件需求的應用系統所覆蓋的功能區域
  • 特定領域的軟件複用比較容易成功
    • 內聚性:保證領域有足夠的共性
    • 穩定性:保證領域工程的投資可獲得足夠的回報
  • 領域工程的三個主要階段
    • 領域分析 -> 建立領域模型
      • 領域模型描述了領域當中系統之間的共同需求
      • 這階段的主要活動包括:確定領域邊界, 識別信息源,分析領域當中的系統需求
      • 確定哪些需求是可以廣泛共享的,哪些需求是可以改變的,從而建立領域模型
    • 領域設計 -> 獲得領域架構
      • 領域架構描述了在領域模型當中的解決方案
      • 它不是單個系統表示,而是一個高層次的設計
      • 能夠適應領域中多個系統的需求
    • 領域實現 -> 定義翻譯機制
      • 可以把需求翻譯成由可複用構件所創建的應用系統
      • 根據所採用的複用策略和領域的成熟和穩定程度的不同
      • 這種機制可能是一組與模型和領域架構相關的可複用構件
      • 也可能是應用系統的生成器

軟件再工程

  • 軟件再工程是指對原有的軟件系統進行調查,分析將其重構爲新系統的開發過程
  • 最特色是:最大限度的重用原有系統的各種資源
  • 軟件再過程是一個工程過程
  • 組合了逆向工程、重構和正向工程
  • 再工程的基礎是對原有系統的理解,包括:運行系統,源代碼,設計,分析,文檔等的全面理解
    • 很多情況下是文檔的丟失,只能對源代碼進行再理解

備註:圖片託管於github,請確保網絡的可訪問性

其他因素

  • 開放系統技術
    • 使用標準接口
    • 分佈對象技術
  • 基於構件複用的軟件過程
    • 對軟件質量和開發效率的影響
    • 不同於傳統的軟件過程
  • CASE技術
    • 與軟件複用相關的研究內容:可複用構件的提取,描述,分類,存儲,檢索,組裝,度量等等
  • 非技術因素
    • 機構組織和管理方法如何適應複用的要求
    • 開發人員知識更新和心理障礙的克服
    • 知識的產權問題,標準化問題等等
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章