1. 程式人生 > >軟體架構設計---構件及其複用

軟體架構設計---構件及其複用

    軟體企業為了提高開發效率,越來越注重軟體元素的複用(也稱重用),因此,架構設計師在進行架構設計時,必須關注複用,例如,考慮豐富企業構件和充分使用已有的構件。本節從構件角度研究如何使用軟體複用技術,下一節重點討論基於產品線的軟體複用。

    與複用技術密切相關的概念是構件(component,元件),業界對構件還沒有公認的定義,如下為幾種常見的定義。

    定義 1:構件是指軟體系統中可以明確辨識的構成成分。而可複用構件(reusable component)是指具有相對獨立的功能和可複用價值的構件。

    定義 2:構件是一個組裝單元,它具有約定式規範的介面及明確的依賴環境。

    定義 3:構件是軟體系統中具有相對獨立功能、可以明確辨識、介面由契約指定、和語境有明顯依賴關係、可獨立部署的可組裝軟體實體。

    對構件更廣義的理解是把所有種類的工作成品(例如,各類文件、方案、計劃、測試案例、程式碼)都看成是可複用的構件。

1 商用構件標準規範

    當前,主流的商用構件標準規範包括 OMG(Object Management Group,物件管理組織)的 CORBA、SUN 的 J2EE 和 Microsoft 的 DNA。

    1.CORBA 

    CORBA(Common ObjectRequest Broker Architecture,公共物件請求代理架構)主要分為3 個層次:物件請求代理、公共物件服務和公共設施。最底層的物件請求代理(Object Request Broker,ORB),規定了分佈物件的定義(介面)和語言對映,實現物件間的通訊和互操作,是分佈物件系統中的“軟匯流排”;在 ORB 之上定義了很多公共服務,可以提供諸如併發服務、名字服務、事務(交易)服務、安全服務等各種各樣的服務;最上層的公共設施則定義了構件框架,提供可直接為業務物件使用的服務,規定業務物件有效協作所需的協定規則。

    CORBA CCM(CORBA ComponentModel,CORBA 構件模型)是 OMG 組織制定的一個用於開發和配置分散式應用的伺服器端構件模型規範,它主要包括如下 3 項內容。

    (1)抽象構件模型:用以描述伺服器端構件結構及構件間互操作的結構。

    (2)構件容器結構:用以提供通用的構件執行和管理環境,並支援對安全、事務、持久狀態等系統服務的整合。

    (3)構件的配置和打包規範:CCM 使用打包技術來管理構件的二進位制、多語言版本的可執行程式碼和配置資訊,並制定了構件包的具體內容和文件內容標準。

     2.J2EE

    在 J2EE 中,SUN 給出了完整的基於 Java 語言開發面向企業分佈的應用規範,其中,在分散式互操作協議上,J2EE 同時支援 RMI(Remote Method Invocation,遠端方法呼叫)和IIOP(Internet Inter-ORB Protocol,網際網路內部物件請求代理協議),而在伺服器端分散式應用的構造形式,則包括了 Java  Servlet、JSP、EJB 等多種形式,以支援不同的業務需求,而且 Java 應用程式具有跨平臺的特性,使得 J2EE 技術在釋出計算領域得到了快速發展。其中,EJB 給出了系統的伺服器端分佈構件規範,這包括了構件、構件容器的介面規範,以及構件打包、構件配置等的標準規範內容。EJB 技術的推出,使得用 Java 基於構件方法開發伺服器端分散式應用成為可能。從企業應用多層結構的角度,EJB 是業務邏輯層的中介軟體技術,與 JavaBeans 不同,它提供了事務處理的能力,自從三層結構提出以後,中間層,也就是業務邏輯層,是處理事務的核心,從資料儲存層分離,取代了儲存層的大部分地位。從 Internet 技術應用的角度,EJB 和 Servlet,JSP 一起成為新一代應用伺服器的技術標準,EJB 中的 Bean 可以分為會話 Bean 和實體 Bean,前者維護會話,後者處理事務,通常由 Servlet 負責與客戶端通訊,訪問 EJB,並把結果通過 JSP 產生頁面傳回客戶端。

    3.DNA 2000

    Microsoft DNA 2000 是 Microsoft 在推出 Windows 2000 系列作業系統平臺的基礎上,在擴充套件了分佈計算模型,以及改造 Back Office 系列伺服器端分佈計算產品後釋出的新的分佈計算架構和規範。在伺服器端,DNA 2000 提供了 ASP、COM、Cluster 等的應用支援。

    DNA 2000 融合了當今最先進的分佈計算理論和思想,例如,事務處理、可伸縮性、非同步訊息佇列、叢集等內容。DNA 可以開發基於 Microsoft 平臺的伺服器構件應用,其中,如資料庫事務服務、非同步通訊服務和安全服務等,都由底層的分佈物件系統提供。

    Microsoft 的 DCOM/COM/COM+技術,在 DNA 2000 分佈計算結構基礎上,展現了一個全新的分佈構件應用模型。首先,DCOM/COM/COM+的構件仍然採用普通的 COM(Component Object Model,構件物件模型)模型。COM 最初作為 Microsoft 桌面系統的構件技術,主要為本地的 OLE(Object Linking and Embedding,物件連線與嵌入)應用服務,但是隨著 Microsoft 伺服器作業系統 Windows NT 和 DCOM(Distributed Component Object Model,分散式構件物件模型)的釋出,COM 通過底層的遠端支援使得構件技術延伸到了分佈應用領域。DCOM/COM/COM+更將其擴充為面向伺服器端分佈應用的業務邏輯中介軟體。通過 COM+的相關服務設施,如負載均衡、記憶體資料庫、物件池、構件管理與配置等,DCOM/COM/COM+將COM、DCOM、MTS(Microsoft Transaction Server,微軟事物處理伺服器)的功能有機地統一在一起,形成了一個概念、功能強的構件應用架構。

    通過購買商用構件(平臺)並遵循其開發標準來進行應用開發,是提高應用軟體開發效率的常見選擇

2 應用系統簇與構件系統

    除專門開發構件的企業外,開發應用系統的企業也會發展自己的構件應用體系:通常是隨著企業的不斷成熟,逐步從已開發的應用系統中整理出來一些構件,反過來,將這些構件複用到優化與整合已有應用系統中或複用於開發新的應用系統。

    一個應用系統中的複用率畢竟有限,通常在應用系統簇中進行軟體構件複用。當要開發若干相關的應用系統時,可以先按複用的要求,界定這一組應用系統的共同“特性”,根據這些共同特性,建立模型,並按照複用的要求,將模型分解成恰當規模和結構的構件,對這些構件進行設計、實現、打包、編寫文件,形成方便使用的可複用構件。這批可複用構件將用於支援該應用簇的各個應用系統的開發工作。這裡的構件特指一個封裝的程式碼模組或大粒度的執行模組。

    軟體企業將相關的構件有機地組織在一起,形成構件系統(較構件庫層次更高),實施複用的軟體企業通常擁有多個構件系統,有的是購置的,有的是自己開發的。

    應用系統和構件系統都是系統產品(而不是工作產品)。它們都可以採用模型和結構的型別定義出來。一般情況下,構件系統只在開發單位內部使用,而應用系統提供給外部客戶,與應用系統相比,構件系統具有通用性,可複用性,這就要求構件系統的開發過程應當實施更為嚴格的工程規範。

    一個構件系統是能提供一系列可複用特性的系統產品。構件系統中的構件應當是高內聚、低耦合的,但構件之間應有若干種關係;可以傳送訊息給其他構件;可以與其他構件聯合,支援協同工作。構件系統應當是易於理解和易於使用的,對構件應當是仔細地進行建模、實現、製作文件、測試等,便於以後的有效維護和改進。通常為支援構件的複用,應開發與構件系統相配的工具箱。

   應用系統可以向構件系統輸入構件(構件的需求源於應用系統或應用系統中的模組),反過來,構件系統嚮應用系統輸出構件。這就是構件系統如何獲得構件和如何提供構件的方式。

3 基於複用開發的組織結構

    基於複用的開發組織與傳統的開發組織結構不同,它需要有一部分用於開發可複用資產的資源,這部分資源應同具體應用系統的開發資源分開,以確保不被佔用。

    一種較平衡的組織結構如圖 9-21 所示,它有三類職能部門:一是構件系統開發部門,它開發可複用資產;二是應用系統專案開發部(多個),它複用資產;三是支援部門,這個部門是可選的,它進一步隔離上述兩主體部門,雖然犧牲了一些效率,但保證了構件的規範性。它的主要職責是對構件開發部門所提供的可複用資產進行確認、對構件庫進行分類編目、向開發應用系統的工程師們發通告和分發可複用資產、提供必要的文件、從複用者處收集反饋資訊和缺陷報告。可以這樣理解:構件系統開發部門開發的構件系統由支援部門嚮應用開發部門推廣,即支援部門是企業內的推广部。外部購買的商用構件也由支援部門維護與管理。

    這三個平行部門之上有一個高層經理(複用經理),他關注總目標,協調相互關係。

    一方面,構件開發者應當儘量接近應用開發者,以使其開發出的構件能儘量符合實際需要;另一方面,構件開發者與應用開發者分屬兩個並列的部門,使構件開發者能擺脫應用專案的日常壓力,保證可複用資產的開發和持續改進。複用經理應當在構件開發和應用

專案開發利益之間進行權衡,保證長期目標不受近期專案壓力的影響。