基於元件的架構
基於元件的架構側重於將設計分解成表示定義良好的通訊介面的獨立功能或邏輯元件,這些介面包含方法、事件和屬性。它提供了更高層次的抽象,並將問題分解成子問題,每個子問題都與元件分割槽相關聯。
基於元件架構的主要目標是確保**元件的可重用性**。元件將軟體元素的功能和行為封裝到一個可重用且自部署的二進位制單元中。有許多標準的元件框架,例如COM/DCOM、JavaBean、EJB、CORBA、.NET、Web服務和網格服務。這些技術廣泛應用於本地桌面GUI應用程式設計,例如圖形JavaBean元件、MS ActiveX元件和COM元件,只需簡單的拖放操作即可重用這些元件。
與傳統的面向物件方法相比,面向元件的軟體設計具有許多優勢,例如:
透過重用現有元件縮短上市時間並降低開發成本。
透過重用現有元件提高可靠性。
什麼是元件?
元件是一組定義良好的功能的模組化、可移植、可替換和可重用的集合,它封裝其實現並將其匯出為更高級別的介面。
元件是一個軟體物件,旨在與其他元件互動,封裝某些功能或一組功能。它具有明確定義的介面,並符合架構中所有元件共有的推薦行為。
軟體元件可以定義為具有契約指定的介面和僅顯式上下文依賴項的組合單元。也就是說,軟體元件可以獨立部署,並受第三方組合。
元件的檢視
元件可以具有三種不同的檢視:面向物件檢視、傳統檢視和與流程相關的檢視。
面向物件檢視
元件被視為一組一個或多個協作類。解釋每個問題域類(分析)和基礎結構類(設計),以識別適用於其實現的所有屬性和操作。它還涉及定義允許類通訊和協作的介面。
傳統檢視
它被視為程式的功能元素或模組,該模組集成了處理邏輯、實現處理邏輯所需的內部資料結構以及允許呼叫元件並將資料傳遞給它的介面。
與流程相關的檢視
在此檢視中,系統不是從頭開始建立每個元件,而是從庫中維護的現有元件構建。在制定軟體架構時,從庫中選擇元件並用於填充架構。
使用者介面 (UI) 元件包括稱為控制元件的網格、按鈕,以及公開了其他元件中使用的特定功能子集的實用程式元件。
其他常見型別的元件是那些資源密集型、不經常訪問且必須使用即時 (JIT) 方法啟用的元件。
許多元件是不可見的,它們分佈在企業業務應用程式和網際網路Web應用程式中,例如Enterprise JavaBean (EJB)、.NET元件和CORBA元件。
元件的特徵
**可重用性** - 元件通常設計為在不同情況下在不同的應用程式中重用。但是,某些元件可能是為特定任務設計的。
**可替換性** - 元件可以自由地用其他類似的元件替換。
**不特定於上下文** - 元件旨在在不同的環境和上下文中執行。
**可擴充套件性** - 可以從現有元件擴充套件元件以提供新的行為。
**封裝性** - 元件描述了介面,這些介面允許呼叫者使用其功能,並且不公開內部程序或任何內部變數或狀態的詳細資訊。
**獨立性** - 元件設計為對其他元件的依賴性最小。
基於元件的設計原則
可以使用一些中間表示(例如圖形、表格或基於文字的表示)來表示元件級設計,這些表示可以轉換為原始碼。資料結構、介面和演算法的設計應符合完善的指南,以幫助我們避免引入錯誤。
軟體系統被分解成可重用、內聚和封裝的元件單元。
每個元件都有自己的介面,該介面指定所需的埠和提供的埠;每個元件都隱藏其詳細的實現。
應該擴充套件元件,而無需對元件現有部分進行內部程式碼或設計修改。
依賴於抽象元件不依賴於其他具體元件,這會增加可擴充套件性的難度。
聯結器連線元件,指定和控制組件之間的互動。互動型別由元件的介面指定。
元件互動可以採用方法呼叫、非同步呼叫、廣播、訊息驅動的互動、資料流通訊和其他特定於協議的互動的形式。
對於伺服器類,應建立專門的介面來服務主要類別的客戶端。只有與特定類別客戶端相關的操作應在介面中指定。
元件可以擴充套件到其他元件,並且仍然提供自己的擴充套件點。這是基於外掛的架構的概念。這允許外掛提供另一個外掛 API。
元件級設計指南
建立元件的命名約定,這些約定指定為架構模型的一部分,然後在元件級模型的一部分中進行細化或詳細說明。
從問題域獲取架構元件名稱,並確保它們對檢視架構模型的所有利益相關者都有意義。
提取可以獨立存在而沒有任何與其他實體相關聯的依賴關係的業務流程實體。
識別並發現這些獨立實體作為新元件。
使用反映其特定於實現的含義的基礎結構元件名稱。
從左到右建模任何依賴項,並從上(基類)到下(派生類)建模繼承。
將任何元件依賴項建模為介面,而不是將其表示為直接的元件到元件的依賴項。
進行元件級設計
識別與分析模型和架構模型中定義的問題域相對應的所有設計類。
識別與基礎結構域相對應的所有設計類。
描述所有未作為可重用元件獲取的設計類,並指定訊息詳細資訊。
為每個元件識別合適的介面,並詳細說明屬性並定義實現它們所需的資料型別和資料結構。
透過虛擬碼或UML活動圖詳細描述每個操作中的處理流程。
描述永續性資料來源(資料庫和檔案),並識別管理它們所需的類。
開發和詳細說明類的行為表示或元件。這可以透過詳細說明為分析模型建立的UML狀態圖並檢查與設計類相關的所有用例來完成。
詳細說明部署圖以提供其他實現細節。
透過使用類例項並指定特定的硬體和作業系統環境,演示系統中元件的關鍵包或類的位置。
可以使用既定的設計原則和指南做出最終決定。經驗豐富的設計師在確定最終設計模型之前會考慮所有(或大多數)替代設計解決方案。
優點
**易於部署** - 隨著新相容版本的可用,更容易用新版本替換現有版本,而不會影響其他元件或整個系統。
**降低成本** - 使用第三方元件允許您分攤開發和維護成本。
**易於開發** - 元件實現眾所周知的介面以提供定義的功能,從而允許開發而不會影響系統的其他部分。
**可重用性** - 可重用元件的使用意味著它們可以用於在多個應用程式或系統中分攤開發和維護成本。
**技術複雜性的修改** - 元件透過使用元件容器及其服務來修改複雜性。
**可靠性** - 由於每個元件的可靠性都透過重用增強了整個系統的可靠性,因此整體系統可靠性提高。
**系統維護和演變** - 易於更改和更新實現,而不會影響系統的其餘部分。
**獨立性** - 元件的獨立性和靈活連線。不同組並行獨立開發元件。提高軟體開發和未來軟體開發的生產力。