郭亞鋒
(江蘇警官學院 現代教育技術中心,江蘇 南京 210012)
軟件體系結構(Software Architecture)是20世紀90年代軟件工程領域出現的一個重要研究方向,通過對系統最高層次的抽象,闡明系統的整體設計,協作構件之間的依賴關系、責任分配和控制流程,表現為一組抽象類及其實例之間協作的方法,為構件復用提供系統環境約束。目前軟件體系結構研究得到廣泛的關注與重視,主要是由于軟件體系結構的相關研究不僅提供了一種在較高層次觀察、設計系統并推理系統行為和性質的方式,而且提供了在分布式多層系統開發中對各組成構件開發、組裝、部署的途徑。軟件體系結構描述語言ADL(Architecture Description Language)以形式化方法為基礎,能為軟件建立精確的體系結構模型,有效的支持對系統的分解學習、分析和驗證,以便于對軟件系統的重構和優化。統一建模語言UML(Unified Modeling Language)是利用圖形表示法的軟件系統模型描述語言,可以從不同的角度為系統建模,是可視化建模語言。基于這兩種語言有很強的互補性,UML和ADL協同描述軟件體系結構的研究日益成為研究熱點。
使用建模是解決大型復雜軟件設計和研究的一個有效的方法。通過對系統的軟件體系結構建??梢栽谳^高的抽象層次上描述全局結構,對系統的控制結構和高層元素交互關系的部署設計具有指導性幫助。體系結構建模主要包含以下4方面:
(1)體系結構的結構模型,該模型主要包括體系結構的組件,連接件和其他概念,包括系統的配置、約束、隱含的假設條件、風格和性質。
(2)體系結構的行為模型,反映體系結構的動態屬性,是對結構模型的補充,包括系統總體結構的配置、演化、并發和分布等行為。
(3)體系結構視圖,除了系統的總體結構和行為之外,體系結構還關注用法、功能、性能、復用、可理解性等方面。不同的參與者從不同的角度、不同的生命周期所獲得的視圖也不盡相同。
(4)體系結構過程,只有以體系結構為中心才能獲得一個健壯且有彈性的體系結構。
UML是一種通用的標準建模語言,由著名的面向對象技術專家Jim Rumbaugh、Ivar Jacobson和Grady Booch綜合各自的方法幾經修改完成的,已被OMG采納為標準,是面向對象軟件開發方法的一部分。UML不是一種程序設計語言或語言實現系統,UML是建立系統模型的描述語言,建立的模型可以用Java、C++或任何一種程序語言來實現。UML提供了可視化的圖符表示方法及語義化的元模型描述規范,提供了靜態和動態兩種建模機制,以及概念層、邏輯層和物理層的模型描述體系。UML具有十種模型圖并分為四類,使用UML描述軟件體系結構可以使用5個互連的UML視圖包括用例視圖、設計視圖、進程視圖、實現視圖和分布視圖來描述軟件體系結構的觀點。其中:(1)用例視圖由專門描述被最終用戶、分析人員和測試人員看到的系統行為的用例組成,它描述了形成系統體系結構的動力;(2)邏輯視圖包含了類、接口和協作,這些視圖主要支持系統的功能需求,即系統最終提供給用戶的服務;(3)過程視圖包含了形成系統并發與同步機制的線程和進程,側重于描述進程的主動類;(4)實現視圖包含了用于裝配與發布物理系統的構成和文件;部署視圖包含系統硬件拓撲結構的節點,描述物理系統部件的分布和安裝。每一個視圖都是在一個特定的方面對系統組織和結構的投影。
對校園網運維管理系統進行需求分析,表1列出了校園網運維管理系統用例和角色的關系,以此為基礎可以構建頂層用例如圖1所示。

表1 校園網運維管理系統角色及用例表

圖1 校園網運維管理系統用例視圖
(1)靜態視圖
借用UML中類圖對系統中主要的類進行建模,在較高的層面上對系統體系結構的邏輯結構進行描述。如圖2所示,主要類有值班登記單、關鍵設備監測、郵件系統監測、網站防篡改、報警等,其中各類監測參數以來各自的參數類,如設備清單等。通過對報警類進行繼承可以擴展新的報警方式,目前主要可以考慮郵件報警號短信平臺報警。值班登記單中需要處理的各項任務通過聚合的方式匯總。圖中菱形方塊線條表示類之間的組成關聯,三角型線條表示類之間的泛化關聯,虛線表示類之間的依賴關聯。

圖2 邏輯視圖(靜態)
(2)動態視圖
作為靜態視圖的補充描述,用序列圖建立主要業務對象的行為視圖。如圖3所示,用序列圖描述將參與協作的類和對象之間進行過程建模。校園網運維管理系統中值班工作相關流程如下:首先用戶激活值班登記單對象,然后值班登記單包含了關鍵設備監測、郵件系統監測和網站防篡改三方面工作,通過各系統的監測,如果發現異常情況通過值班登記單提供的警報類型發出警報。

圖3 邏輯視圖(動態)
ACME是一種體系結構互換語言,支持體系結構的規格說明在不同ADL之間的轉換??梢园阉鳛轶w系結構設計工具的通用交換格式,也可以作為開發新的體系結構設計和分析工具的基礎。ACME項目開始于1995年,由卡梅隆大學的David Garlan負責,當時的目標是在不同的體系結構開發工具之間提供一種能夠相互交互體系結構描述的公共語言。目前的ACME語言和ACME工具開發庫(Acme Tool Developer’s Library,AcmeLib)為軟件體系結構的描述、表示、生成和分析,提供了一種通用的、可擴展的基礎設施。
ACME語言和開發工具包提供3種基本功能:
①體系結構的相互交互。通過提供一種體系結構設計的交換格式,ACME允許各種開發工具與其它補充工具協同工作。
②為新的體系結構設計和分析工具提供了可擴展的基礎。許多體系結構設計和分析工具需要一個用于描述、存儲、操縱體系結構設計的表示法。但開發好的表示法往往需要很高的時間和經濟成本。使用ACME可以有效減少這方面的成本,因為可以用它提供的語言和用于工具開發的函數庫作為基礎。使用ACME還使得所開發的工具能夠有更好的通用性,因為它可以與其它使用ACME格式的工具交流設計,協作開發。
③體系結構描述。ACME本身是一個很好的開發語言。盡管不是適合于所有的應用系統,ACME體系結構描述語言能夠讓開發者很好地認識體系結構建模,提供了一個相對容易的對簡單軟件系統的描述方法。
ACME通過定義七種體系結構實體建模:構件、連接件、系統、端口、角色、表述和表述映射,各部門功能如表2所示,其中最基本的實體是構建、連接件和系統。

表2 ACME/ADL描述體系結構元素表
(1)總體架構描述
ACME提供了基本體系結構元素和擴展機制來描述系統的軟件體系結構。對于軟件體系結構中的構件和連接件,可以分別使用ACME中的Component和Connector與外部的數據交換。對于軟件體系結構中的配置,可用ACME中的System類型描述。本項目中可以使用ACME的擴展機制來實現,在基于ACME的軟件體系結構設計環境ACMEStudio中集成了預定義的軟件體系風格,如Pipes And Filter Fam、Client And Server Fam和Layered Fam等。圖4是用ACME描述的基于Client And erver Fam的體系機構描述。
(2)構件動態交互模型
運用ACME/ADL描述構件交互狀態模型,首先在一個相對較粗的粒度上提取系統的主要邏輯構件,這個逐步抽象的過程可以參考UML所描述的視圖,然后對主要構件的接口和屬性、連接件的角色和屬性以及它們之間的交互關系進行描述。以下為基于客戶服務器模板的系統體系結構ADL。

圖4 校園網運維管理系統體系結構


以上代碼中,首先使用服務器描述模板,實例化SNMP代理、Web防篡改代理、報警中心、應用程序服務器和數據庫服務器構件,并按照業務需求搭建相互之間的連接關系,然后利用客戶機模板描述實例化工作臺構件。工作臺構件主要是系統人際接口界面,通過該構件向應用服務器構件發送各種管理需求指令,應用服務器將具管理功能轉發給各應用代理構件。
應用服務器和各代理之間連接件通訊協議主要依賴代理各自的系統特點,如報警中心可以使用基于Web服務的方式和應用程序服務器進行耦合,而SNMP代理則使用SNMP協議進行通訊。系統運行參數和歷史數據都將使用數據庫構件管理。
本文通過使用UML和ACME對校園網絡運維管理系統的建模分析得出以下結論:
(1)UML是一種可視化建模語言,由于其可視化的特點,更適合高層次的對系統的架構進行建模。通過使用可視化建模方法能直觀的表示復雜的系統,但容易屏蔽關鍵細節。從實際建模效果上,UML適合對靜態對象以及相互直接的結構關系的描述,但是對于具有復雜的動態和引用關系描述較困難。UML不能直接支持軟件體系結構風格的描述,需要配合其他的建模方式運用。
(2)ACMCE/ADL是形式化的建模描述,形式化語言能夠精確的對模型描述,接近底層的實現。
(3)UML建模方法以高層次的軟件復用建立基礎,ACME/ADL更貼近細節和層次的實現,使建模與實現接近。因此采用UML和ACME/ADL相結合可以在軟件體系結構描述中互為補充,取長補短。
[1]劉長林,張廣泉,黃靜.一種基于ACME的面向方面的軟件體系結構設計方法[J].蘇州大學學報(工科版),2011,31(2):6-12.
[2]張玲紅,戎玫,張廣泉.UML與ACME/ADL在運輸業務管理系統體系結構建模中的應用[J].蘇州大學學報(工科版),2004,24(4):8-13.
[3]戎玫,張廣泉.軟件體系結構求精方法研究[J].計算機科學,2003,30(4):108—110.
[4]覃征,何堅,謝國彤等.軟件體系結構[M].西安:西安交通大學出版社,2002.
[5]施吳華,張朝輝.UML面向對象結構設計與應用[M].北京:國防工業出版社,2003.
[6]焦允.UML與ACME/ADL在體系結構建模中的應用[J].河南廣播電視大學學報,2006,19(2):62-64.
[7]毛春華,萬麟瑞,郁春波.基于UML-ADL集成建模方法的集成計劃模型研究[J].計算機應用研究,2003(7):38-45.