軟件體系結構集成開發環境基於體系結構形式化描述從系統框架的角度關注軟件開發。體系結構開發工具是體系結構研究和分析的工具,給軟件系統提供了形式化和可視化的描述。它不但提供了圖形用戶界面、文本編輯器、圖形編輯器等可視化工具,還集成了編譯器、解析器、校驗器、仿真器等工具;不但能夠針對每一個系統元素,還支持從較高的構件層次分析和設計系統,這樣能夠有效地支持構件重用。具體來講,軟件體系結構集成開發環境的功能能夠分爲如下5類。編程
1.輔助體系結構建模api
創建體系結構模型是體系結構集成開發環境最重要的功能之一。集成開發環境的出現增長了軟件體系結構描述方法的多樣性,摒棄了描述能力低的非形式化方法,擺脫了擁有繁雜語法和語義規則的形式化方法。開發者只須要通過簡單的操做就能夠完成之前需耗費大量時間和精力的工做。形式化時期建模是將軟件系統分解爲相應的組成成分,如構件、鏈接件等,用形式化方法嚴格地描述這些組成成分及它們之間的關係,而後經過推理驗證結果是否符合需求,最後提供量化的分析結果。瀏覽器
而集成開發環境提供了一套支持自動建模的機制完成體系結構模型分析、設計、創建、驗證等過程。用戶根據不一樣的實際需求、應用領域和體系結構風格等因素選擇不一樣的開發工具。服務器
2.支持層次結構的描述數據結構
隨着軟件系統規模愈來愈大、愈來愈複雜,只使用簡單結構沒法表達,這時就須要層次結構的支持,所以開發工具也須要提供層次機制。圖10-1描述了一個簡單的具備層次結構的客戶端/服務器系統。架構
圖10-1 層次構件框架
系統由客戶端和服務器兩個構件組成,客戶端能夠向服務器傳輸信息。服務器是一個包含了3個構件的複雜元素,內部構件之間相互關聯造成了一個具備獨立功能的子系統,子系統經過接口與外界交互。體系結構集成開發環境提供了子類型和子體系結構等機制來實現層次結構。用戶還能夠根據須要自定義類型,只需將這種類型實例化爲具體的子系統便可。相似構件、鏈接件也能夠經過定義新類型表達更復雜的信息。異步
3.提供自動驗證機制編輯器
幾乎全部的體系結構集成開發環境都提供了體系結構驗證的功能。體系結構描述語言解析器和編譯器是集成開發環境中必不可少的模塊。除此以外,不一樣的集成開發環境根據不一樣的要求會支持特定的檢驗機制。ide
Wright提供模型檢測器來測試構件和鏈接件死鎖等屬性,它經過一組靜態檢查來判斷系統結構規格說明的一致性和完整性,同時還支持針對某一特定體系結構風格的檢查;C2經過約束構件和鏈接件的結構和組織方式來檢查一致性和完整性; SADL利用體系結構求精模式概念保證使用求精模式的實例的每一步求精過程都正確,採用這種方式可以有效地減小體系結構設計的錯誤;ArchStudio中的Archlight不但支持系統的一致性和完整性檢查,還支持軟件產品線的檢測。
集成開發環境的校驗方式可分爲主動型和被動型兩種。主動型是指在錯誤出現以前採起預防措施,是保證系統不出現錯誤狀態的動態策略。它根據系統當前的狀態選擇恰當的設計決策保證系統正常運行。例如,在開發過程當中阻止開發者選擇接口不匹配的構件;集成開發環境不容許不完整的體系結構調用分析工具。被動型是指容許錯誤暫時存在,但最終要保證系統的正確性。被動型有兩種執行方式,一種容許預先保留提示錯誤稍後再做修改,另外一種必須強制改正錯誤後系統才能繼續運行。例如,在MetaH的圖形編輯器中,啓動「應用」按鈕以前必須保證系統是正確的。
4.提供圖形和文本操做環境
體系結構集成開發環境是開發者研究體系結構的可視化工具和展現平臺,它具備友好的圖形用戶界面和便捷的操做環境。體如今如下4個方面:
(1) 集成開發環境提供了包含多種界面元素的圖形用戶界面,例如工具欄、菜單欄、導航器視圖、大綱視圖等。工具欄顯示了經常使用命令和操做;視圖以列表或者樹狀結構的形式對信息進行顯示和管理。
(2) 集成開發環境提供了圖形化的編輯器,它用形象的圖形符號表明含義豐富的系統元素,用戶只需選擇須要的圖形符號,設置元素的屬性和行爲並創建元素之間的關聯就能夠描繪系統了。例如,Darwin系統提供基本圖元表明體系結構的基本元素,用空心矩形表示構件,直線表示關聯,圓圈表示接口;每一個圖元都有本身的屬性頁,經過編輯構件、關聯和接口的屬性頁來設置體系結構的屬性值。
(3) 集成開發環境利用文本編輯器幫助開發者記錄和更新體系結構配置和規格說明。一般,集成開發環境會根據模型描述的系統結構自動生成配置文檔。當模型被修改時,它的文本描述也會發生相應的變化,這種同步機制保證了系統的一致性和完整性。
(4) 集成開發環境還支持系統運行狀態和系統檢測信息的實時記錄,這些信息對分析、改進和維護系統都頗有價值。
5.支持多視圖
多視圖做爲一種描述軟件體系結構的重要途徑,是近年來軟件體系結構研究領域的重要方向之一。隨着軟件系統規模不斷增大,多視圖變得更爲重要。每一個視圖都反映了系統內相關人員關注的特定方面。多視圖體現了關注點分離的思想,把體系結構描述語言和多視圖結合起來描述系統的體系結構,能使系統更易於理解,方便系統相關人員之間相互交流,還有利於系統的一致性檢測以及系統質量屬性的評估。
圖形視圖和文本視圖是兩種常見的視圖。圖形視圖是指用圖形圖像的形式將系統的某個側面表達出來。它是一個抽象概念,不是指具體的哪種視圖。邏輯視圖、物理視圖、開發視圖等都屬於圖形視圖。一樣,文本視圖是指用文字形式記錄系統信息的視圖。此外,還存在不少特殊的體系結構集成開發環境特有的視圖,例如Darwin系統中的分層系統視圖、ArchStudio的文件管理視圖、Aesop支持特定風格形象化的視圖等。
10.2 體系結構IDE原型
如今出現了愈來愈多的體系結構集成開發環境來知足種類繁多的體系結構和靈活多變的需求。儘管這些集成開發環境針對不一樣的應用領域,適用不一樣體系結構,可是它們都依賴類似的核心框架和實現機制。把這些本質的東西抽象出來能夠總結出一個體繫結構集成開發環境原型。該原型只是一個通用的框架,並不能執行任何實際的操做,但它能夠幫助開發人員深刻理解開發工具的結構和工做原理。下面結合XArch(eXtensible Architecture Research System)系統來介紹原型。
從集成開發環境的工做機制看,原型是三層結構的系統。最上層是用戶界面層,它是系統和外界交互的接口。中間層是模型層,它是系統的核心部分,系統重要的功能都被封裝在該層。這層經過接口向用戶界面層傳輸數據,用戶界面層要依賴這一層提供的服務才能正常運行。底層是基礎層,它覆蓋了系統運行所必需的基本條件和環境,是系統正常運行的基礎保障。此外,模型層和用戶界面層的正常運行還須要映射模塊的有效支持,映射文件將指導和約束這兩層的行爲(如圖10-2所示)。
圖10-2 原型框架
10.2.1 用戶界面層
用戶界面層是用戶和系統交互的惟一渠道,用戶須要的操做都被集成到這一層。這些操做能夠經過編輯器和視圖來實現。編輯器是開發環境中的可視構件,它一般用於編輯或瀏覽資源,容許用戶打開、編輯、保存處理對象,相似其餘的文件系統應用工具,如Microsoft Word,執行的操做遵循「打開—保存—關閉」這一輩子命週期模型。
同一時刻工做臺窗口容許一個編輯器類型的多個實例存在。視圖也是開發環境中的可視構件,它一般用來瀏覽分層信息、打開編輯器或顯示當前活動編輯器的屬性。與編輯器不一樣的是,同一時刻只容許特定視圖類型的一個實例在工做臺存在。編輯器和視圖能夠是活動的或者不活動的,但任什麼時候刻只容許一個視圖或編輯器是活動的。
XArch系統的工做臺是一個獨立的應用窗口,包含了一系列視圖和編輯器。工做臺基於富客戶端平臺(Rich Client Platform),它最大的特色是支持用戶創建和擴展本身的客戶應用程序。若是現有的編輯器不能知足需求,用戶能夠靈活地在接口上擴展新的功能。
圖10-3顯示了XArch系統的部分編輯器和視圖。左側的資源管理器視圖將系統全部的信息以樹狀結構顯示出來;右邊的屬性視圖顯示了考察對象的屬性和屬性值;下面是記錄系統重要狀態的日誌視圖。佔據工做臺最大區域的是中間的編輯器,是主要的操做場所。爲了知足相關人員不一樣的需求,系統支持多視圖。系統用標籤對多個視圖進行區分和管理,用戶可經過選擇標籤在不一樣視圖間轉換。
圖10-3 XArch系統
10.2.2 模型層
模型層是系統的核心層,系統的大部分功能都在這一層定義和實現,它主要的任務是輔助體系結構集成開發環境創建體系結構模型。
體系結構描述語言文檔是系統的輸入源。有的體系結構集成開發環境對描述語言的語法有限制或約束,這就須要修改語言的語法與其兼容。輸入的體系結構文檔是否合法有效,是由專門的工具來檢驗的。此處的編譯器不一樣於往常的把高級程序設計語言轉化爲低級語言(彙編語言或機器語言)的編譯器,它是一個將體系結構描述轉化爲體系結構模型的工具。爲實現此功能,編譯器通常要完成下列操做:詞法分析、解析、語義分析、映射、模型構造。
詞法分析是遵循語言的詞法規則,掃描源文件的字符串,識別每個單詞,並將其表示成所謂的機內token形式,即構成一個token序列;解析過程也叫語法分析,是指根據語法規則,將token序列分解成各種語法短語,肯定整個輸入串是否構成一個語法上正確的程序,它是一個檢查源文件是否符合語法規範的過程;語義分析過程將語義信息附加給語法分析的結果,並根據規則執行語義檢查;映射是根據特定的規則,如映射文檔,將體系結構描述語言符號轉換成對應的模型元素的過程;模型構造緊跟着映射過程,它把映射獲得的構件、鏈接件、接口等模型元素按語義和配置說明構形成一個有機總體。
在編譯器工做的過程當中會有一些隱式約束的限制,例如類型信息、構件屬性、模塊間的關係等。校驗器是系統最主要的檢查測試工具,採用顯示檢驗機制檢查語法語義、類型不一致性、系統描述二義性、死鎖等錯誤,以保證程序正常運行;模式是一組約束文檔結構和數據結構的規則,它是判斷文檔、數據是否有效的標準;映射模塊是抽象了體系結構描述語言元素和屬性的一組規則,這組規則在模型層和用戶界面層擔任了不一樣的角色。在模型層,它根據映射規則和輔助信息,將開發環境沒法識別的體系結構描述語言符號映射成能夠被工具識別的另外一種形式的抽象元素。在用戶界面層支持模型顯示,它詳細定義了描述語言符號如何在模型中表示,如何描繪模型元素以及它們之間的關係。
創建體系結構模型是這層的最終目標,模型層用樹或圖結構抽象出系統,形象地描述了系統的各構件及它們之間的關係。一般,一個系統用一個體繫結構模型表示。對於一個規模龐大、關係複雜的模型,不一樣的系統相關人員只需側重瞭解他們關注的局部信息,而這些信息之間具備很強的內聚性,能夠相對獨立地存在。針對某一觀察角度和分析目的,提取一系列相互關聯且與其餘內容相對獨立的信息,就能夠構成軟件體系結構視圖。一個模型能夠構形成多種視圖,經過不一樣的視角細緻全面地研究系統。
XArch系統只處理基於XML的可擴展的體系結構描述語言,即FEAL兼容的體系結構描述語言,若是不符合這一要求,則能夠適當調整語法結構來知足FEAL的規範。軟件體系結構描述不只是XML結構良好的,還必須是符合模式規定的有效的文檔。該系統不但支持對系統的分析、驗證和序列化等操做,還支持視圖和模型之間的相互轉化。
XArch系統不只僅是一個體繫結構開發環境,仍是一個擴展工具的平臺。它的擴展性主要體如今兩個方面:
(1) 能夠靈活地建立和增長一種新的軟件體系結構描述語言或語言的新特性,以知足新功能和新需求。如圖10-4所示,系統經過引入一箇中間介質FEAL,使模型脫離與體系結構描述語言的直接聯繫,從而拓展了體系結構描述語言符號到模型元素固定的對應關係。體系結構描述語言的元素首先根據映射規則被映射爲FEAL元素(FEC)的形式,FEC再對應到相應的模型的構件。所以,只要體系結構描述語言符號到FEC的映射是有效的,那麼不管哪一種體系結構描述語言均可以構造對應的體系結構模型。當新的體系結構描述語言或新的語言特性出現時,只需修改映射規則就能有效地支持。
(2) Arch系統提供了一系列可擴展的可視化編輯接口,支持定義新界面元素。
圖10-4 ADL、FEAL和MODEL的關係
10.2.3 基礎層
基礎層是系統的基本保障,涵蓋了系統運行所需的軟/硬件支撐環境,它還對系統運行時所用的資源進行管理和調度。一般,普通的簡單配置就能夠知足系統運行需求,可是有的體系結構集成開發環境須要更多的支持環境。例如,ArchStudio 4 做爲Eclipse的插件,必須在Java和Eclipse環境下運行。
10.2.4 體系結構集成開發環境設計策略
目前,集成開發環境都很注重體系結構的可視化和分析,有的也在體系結構求精、實現和動態性上具備強大的功能。體系結構開發環境原型提供了一個可供參考的概念框架,它的設計和實現須要開發人員的集體努力。下面是體系結構集成開發環境設計的3條策略。
(1) 體系結構集成開發環境的設計必須以目標爲嚮導。
集成開發環境的開發遵循軟件開發的生命週期,需求分析是必需且很是重要的階段。開發者只有明確了實際需求,才能準確無誤地設計。不管是軟件自己仍是最終用戶都有不少因素須要確認。例如,集成開發環境能夠執行什麼操做?怎麼執行?它的結構怎樣?哪種體系結構描述語言和體系結構風格最適合它?哪些用戶適合使用該系統?怎樣解決系統的改進和升級?這些問題給設計者提供了指導和方向。
(2) 爲了設計一個支持高度擴展的體系結構集成開發環境,必須區分通用和專用的系統模塊。
通用模塊部分是全部集成開發環境都必備的基礎設施,例如支撐環境、用戶界面等。可是不一樣的體系結構集成開發環境針對不一樣的領域須要解決千差萬別的問題,所以每種體系結構集成開發環境都有本身的特色。例如,Rapide的開發環境創建一個可執行的仿真系統並提供檢查和過濾事件的功能,以此來容許體系結構執行行爲的可視化;SADL的支持工具支持多層次抽象和具備可組合性的體系結構的求精。
它要求在抽象和具體的體系結構之間創建名字映射和風格映射,兩種映射經過嚴格的驗證後,才能保證兩個體系結構在求精意義上的正確性。這樣能夠有效地減小體系結構設計的錯誤,而且可以普遍、系統地實現對設計和正確性證實的重用。
(3) 合理使用體系結構集成開發環境原型。
原型框架爲可擴展性開發工具的設計提供了良好的接口。例如XArch系統能夠經過添加語言符號或定義FEAL兼容的體系結構描述語言來擴展示有的功能。這樣,體系結構專用的功能就能夠做爲動態插件應用到集成開發環境中,加強開發工具的功能,擴大它的使用範圍。
10.3 基於軟件體系結構的開發
環境ArchStudio 4
10.3.1 ArchStudio 4的做用
ArchStudio 4 是美國加州大學歐文分校的軟件研究院開發的面向體系結構的基於xADL2.0的開源集成開發環境。它除了具有普通體系結構建模功能外,還提供了對系統運行時刻和設計時刻的元素的建模支持,相似版本、選項和變量等更高級的配置管理觀念,以及對軟件產品線體系結構的建模支持。
ArchStudio 4在前一版的基礎上添加了新的特性和功能,在可擴展性、系統實施和工程性上有新的發展。ArchStudio 4的做用主要體如今基本功能和擴展功能兩方面。它不但實現了建模、可視化、檢測和系統實施等基本功能,還良好地支持這些功能的擴展。
(1) 建模。做爲軟件體系結構開發輔助工具,ArchStudio 4最主要的功能就是幫助用戶用文檔或者圖形方式表達設計思想。模型像建築藍圖同樣從較高的角度把系統抽象成一個框架,抽象的結果將以XML的形式存儲和操做。用戶能夠利用系統多個視角對該模型進行考察和研究。此外,ArchStudio 4還支持體系結構分層建模、軟件產品線建模,並且能夠時刻監視變化的體系結構。
(2) 可視化。ArchStudio 4提供了多種可視化的構件,例如視圖和編輯器。視圖和編輯器用文本或圖形方式形象化體系結構描述,例如Archipelago、ArchEdit、Type Wright等工具,同時也給系統涉衆提供了交互和理解的平臺。
(3) 檢測。ArchStudio 4集成了功能強大的體系結構分析和測試工具Schematron。它經過運行一系列預約的或用戶定義的測試來檢查系統。Archlight根據標準來自動測試體系結構描述的正確性、一致性和完整性等。檢查出來的錯誤會顯示出來,同時幫助用戶定位出錯的地方並提供修改途徑和方法。
(4) 實施。它幫助將體系結構運用到實施的系統中。ArchStudio使用本身的體系結構設計思想和方法來實現自身。ArchStudio自己的體系結構是用xADL2.0詳細描述的,這些文件都是實施的一部分。一旦ArchStudio在機器上運行,它的體系結構描述將被解析,這些信息將被實例化並鏈接到預約的構件和鏈接件上。
除此之外,ArchStudio 4對上述的功能提供了良好的擴展機制。它基於xADL2.0,而xADL2.0是模塊化的,不是一個獨立的總體。它沒有將全部詞法和語法一塊兒定義,而是採用根據XML模式分解模塊的方式。如圖10-5所示,每一個模塊相互分裂,側重實現系統的某一功能,4個模塊都與中間的模塊交互,5個模塊共同組成了一個有機的系統。例如,可將構件和鏈接件分解爲多個相互關聯的模塊。
目前,模塊技術已經能處理構件和鏈接件等低層次的構件,還能處理軟件產品線、實施映射、體系結構狀態。ArchStudio 4根據模式自動生成一個數據綁定庫以便爲別的工具提供共享功能。這樣,用戶就能夠擴展xADL語言的新特性並自動生成支持新特性交互的庫。總之,ArchStudio在xADL2.0的支持下容許開發者定義新的語義和規則去獲取更多的數據信息來知足新的需求(如圖10-6所示)。
圖10-5 xADL2.0結構
圖10-6 ArchStudio 4的工具
(5) 可擴展的建模。開發ArchStudio 4的目標就是要實現體系結構建模的可擴展性。它基於可擴展的體系結構描述語言xADL2.0,利用添加新的XML模式來支持模型擴展。
(6) 可擴展的可視化。可視化編輯器利用可擴展的插件機制添加對新體系結構描述語言元素編輯的功能。
(7) 可擴展的檢測。用戶能夠在Schematron中設計新的測試,也能夠集成新的分析引擎來知足高要求的檢驗。在ArchStudio 4中,全部的檢測工具都做爲Archlight插件使用,所以用戶能夠經過添加插件完成新的測試。 Archlight集成了功能強大的Schematron XML分析引擎,別的測試引擎也能夠無縫地集成到Archlight中(如圖10-7所示)。
圖10-7 可擴展的檢測工具
(8) 可擴展的實施。用戶能夠靈活地把體系結構與Myx框架綁定起來。Myx是在ArchStudio 4創建的體系結構風格。此風格適合開發高性能的、靈活的集成開發環境。Myx-whitepaper定義了一套構件和鏈接件的構建規則, 提供了定義構件同步和異步交互的模式,同時還規定了哪些構件能夠相互約束,肯定了構件間直接的或者分層的關係。在Myx風格的約束下,構件之間的相對獨立有利於構件重用,構件只能經過顯示接口與外界傳遞消息,所以不需對構件從新編碼就能夠在不一樣配置的構件間創建聯繫。此外,動態代理和事件處理機制支持在運行時刻控制鏈接狀態。
10.3.2 安裝ArchStudio 4
1.硬件配置需求
硬件配置取決於具體的實際應用需求,例如程序規模、程序預期的運行時間等。對於ArchStudio 4來講,使用x86體系結構兼容的計算機,Pentiun Ⅲ處理器,128 MB內存以上的配置便可。
2.軟件配置需求
ArchStudio 4是開源開發工具Eclipse的插件。 它能夠在任何支持Eclipse的系統上運行。不過,必須有JRE1.5或者更高版本和Eclipse3.2.1或者更高版本的支持。
3.安裝ArchStudio 4
安裝過程只需按照安裝嚮導進行便可,具體的步驟以下:
(1) 在「Eclipse」菜單欄上單擊「Help」按鈕,在菜單列表中選擇「Software Updates」→「Find and Install」命令。
(2) 在彈出的「Install/Updates」窗口中選擇「Search for new features to install」選項,單擊「Next」按鈕。
(3) 在彈出的「Install」對話框中單擊「New Remote Site」按鈕;分別在「Name」文本框中輸入一個名字標識,在URL文本框中填寫「http://www.isr.uci.edu/projects/archstudioupdate」,確認這些信息後單擊「Finish」按鈕。
(4) 在彈出的「Updates」窗口中,選擇須要安裝的屬性,這裏把全部的屬性都選中。而後在許可確認對話框中,單擊「贊成」按鈕繼續後面的安裝。
等待Eclipse下載ArchStudio 4和相關工具,下載完成後在彈出的確認下載對話框中確認信息完成安裝。從新啓動Eclipse後,在Eclipse的菜單欄上單擊「Windows」按鈕,選擇
「Open perspective」→「other」→「ArchStudio」命令,確認後就能夠開始使用ArchStudio 4了。ArchStudio 4的界面如圖10-8所示。
圖10-8 ArchStudio 4界面
10.3.3 ArchStudio 4概述
根據分工不一樣,把ArchStudio 4分爲兩部分:項目、文件夾、文件等資源管理器和完成絕大部分操做的工做臺。
1.資源管理器
工做臺的資源有3種基本類型:項目、文件夾和文件。文件與文件系統中的文件相似。文件夾與文件系統中的目錄相似,文件夾包含在項目或其餘文件夾中,文件夾也可包含文件和其餘文件夾;項目包含文件夾和文件。與文件夾類似,項目映射爲文件系統中的目錄。建立項目時,系統會爲項目在文件系統中指定一個存放位置。安裝了Eclipse以後,在安裝目錄下會建立一個workspace文件夾,每當Eclipse新生成一個項目時,默認狀況下會在workspace中產生和項目同名的文件夾,該文件夾將存放該項目所用到的所有文件。可使用Windows資源管理器直接訪問或維護這些文件。
2.ArchStudio 4的工做臺
ArchStudio 4的工做臺經過建立、管理和導航資源來支持無縫的工具集成,它能夠被劃分爲3個模塊:視圖、編輯器、菜單和工具條。
1) 視圖
打開ArchStudio 4的工做窗口發現有4個主要窗格,它們擁有特定的屬性,表明了不一樣的視圖。主要的視圖有:導航器視圖、大綱視圖和ArchStudio 4視圖。
(1) 導航器視圖如圖10-9所示。導航器視圖是系統資源的導航,以層次結構形象地顯示了工程、文件夾、文件以及它們之間的關係。用戶能夠選擇某個文檔對其進行查看、編輯或管理等操做,同時也能夠選擇多個對象進行集合操做。
(2) 大綱視圖如圖10-10所示。大綱視圖以樹狀結構顯示了在導航器視圖中被選擇的系統的內容。該視圖按體系結構實例、類型、架構、測試等內容對系統信息進行分類和管理。
圖10-9 導航器視圖
圖10-10 大綱視圖
(3) rchStudio 4視圖如圖10-11所示。深色背景的窗格顯示的是ArchStudio 4視圖。標籤欄和顯示區域將窗格分爲兩部分。標籤欄將6種ArchStudio 4視圖有效地集合在一塊兒:ArchStudio 4 Laucher、File Tracker View、Archlight Issues、Archlight Notices、Tasks和File Manager View。顯示區域將活動視圖的具體內容和信息展現出來。
圖10-11 ArchStudio 4視圖
(4) rchStudio 4 Launcher。此視圖的主要任務是提供打開文檔並激活相應的工具。它不執行任何編輯、運行或者檢查工做,只是幫助文件導航到須要的操做環境中。任何對文檔的操做都委託給編輯器。在窗口的右上角有3個快捷按鈕,給用戶操做提供了便利。第一個按鈕上面有文檔圖標,用於建立一個新的體系結構描述文檔;第二個按鈕是連接ISR網站的快捷方式;第三個按鈕是訪問ArchStudio 4網站的快捷方式。左邊ArchStudio 4圖標下面排列了一組編輯器:ArchEdit、Archipelago、Archlight、Selector和Type Wrangler。有兩種方式選用編輯器處理文檔:用戶能夠將被處理的文檔從導航器視圖拖到相應的編輯器上,也能夠先單擊編輯器再選擇要處理的文檔。
(5) rchlight Issuses。ArchStudio 4使用Schematron做爲體系結構分析測試工具,測試的結果和相關信息將在Archlight Issuses視圖中顯示。如圖10-12所示,該視圖的第一列是錯誤圖標。第二列簡要敘述了檢測出的語法錯誤、語義錯誤、不一致等錯誤信息。若用戶但願更詳細地瞭解和追蹤錯誤能夠右擊提示信息,在彈出的信息窗口中有更詳細的描述。ArchStudio 4提供了4種處理錯誤的方式:selector dialog box、type wrangler dialog box、ArchEdit view和Archipelago view。第三列顯示了檢查工具的名稱。Schematron支持定義XML格式的xADL文檔的約束管理,運行時它將按其列篩選出錯誤。
圖10-12 Archlight Issuses
(6) rchlight Notices。該視圖(如圖10-13所示)記錄了Schematron啓動後的活動狀況。每次啓動系統時,Schematron都會初始化,每執行一次校驗也會有相應的信息被記錄。
(7) asks。任務視圖(如圖10-14所示)標記了系統生成的錯誤、警告和問題,當ArchStudio 4發生錯誤時會自動添加到任務視圖中。經過任務視圖,能夠查看與特定文件及特定文件中的相關聯的任務。用戶能夠新增任務並設置它們的優先級。視圖將要執行的任務、所用的資源、路徑和位置等信息簡要地描述出來,它是管理系統任務簡捷的方式。
圖10-13 Archlight Notices
圖10-14 Tasks
2) 編輯器
(1) ArchEdit。ArchEdit是語法驅動的編輯器,將體系結構用樹狀結構非代碼的方式描述出來。系統遵循xADL模式並提供了建模框架。這些現成的建模元素被封裝在模塊中,對開發人員隱藏了具體的實現細節。雖然有固定的框架,但同時它也能靈活地支持新元素。ArchEdit不關心元素的語義,只是按照XML模式創建行爲和接口。所以當新模式加入或原有模式改變時它不須改變,即自動支持新模式。
(2) rchipelago。Archipelago是語義驅動的編輯器,像Rational Rose同樣能夠用方框和箭頭將信息描繪出來。與之不一樣的是,Archipelago中的每個圖形元素都賦予了豐富的含義,元素和元素間的關係必須知足一些規範和約束,全部元素有機地組合造成一個總體。
Archipelago編輯器提供了即點即到的操做方式,雙擊大綱視圖中樹狀結構的節點,在右邊的編輯器中就會以圖形方式顯示該元素。右擊編輯器的空白處能夠建立新的圖形元素,也能夠對選中的元素進行屬性編輯和修改。
窗格中的圖形能夠經過滾動條進行縮放。Archipelago還能夠與ArchEdit或其餘編輯器結合使用。例如,用Archipelago描繪的體系結構能夠用ArchEdit對其求精;ArchEdit能夠對某些Archipelago不能直接支持的模式元素進行操做;在ArchEdit中建立的元素都會在Archipelago編輯器中用圖形形象地表示出來,其中的每一個細微的修改都能立刻在ArchEdit中反映出來。
(3) rchlight。Archlight是ArchStudio 4的分析工具框架,提供了一個統一的用戶界面,使用戶能夠選擇測試體系結構的各類屬性。全部的測試將以樹狀結構在大綱視圖中顯示出來,樹的每一個節點都表明了一個測試。因爲體系結構和體系結構風格的多樣性以及開發階段的不一樣,有時並不須要對整個系統的全部細節進行檢測。Archlight提供了一種可供選擇的局部測試機制,用戶能夠根據具體須要定製測試方案並限制範圍。爲支持這種機制的運行,系統提供了3種測試狀態,用戶只需選擇不一樣的狀態就能夠方便地更改測試方案,如圖10-15所示。
圖10-15 Archlight
● 應用/可以使用的測試:這種測試是可以使用的,當測試應用到文檔中時,用戶但願文檔經過測試。當全部的測試運行時,這種測試將對文檔進行檢測。
● 應用/不可以使用的測試:這種測試是不可以使用的,當測試應用到文檔中時,用戶也但願文檔經過測試。但與第一種不一樣的是,只有該文檔沒有其餘測試運行時,這種測試纔會運行,而檢測出來的問題直到測試被從新使能後纔會報告。
● 不可應用的測試:這種測試不容許被應用到文檔中。意味着用戶不但願文檔經過此測試,就算當別的測試都運行,這種測試也不會起做用。
測試是否有效取決於測試的工具和測試的狀態,文檔屬於哪種測試狀態直接決定了測試的效果。每種測試工具都但願執行一個或多個測試,每一個文檔都存儲了一系列應用和不可以使用的測試。系統爲每一個測試分配了一個惟一的字符串標識符,用UID表示。由測試開發人員建立和管理的標識符對Archlight用戶是不可見的。測試由標識符惟一標記,即便測試的名稱、目的或者位置在樹狀結構中發生變化,標識符也不會改變。每一個文檔都存儲了每次測試的標識符和測試的狀態,若是出現了無效的測試、沒有工具支持的測試或者標識符沒法識別的測試,那麼這些測試將被列入到未知測試中,而且不被執行。可是未知測試仍然與文檔保持關聯,除非把它們的測試狀態改成不可應用的狀態。
(4) elector。選擇器的全稱是軟件產品線選擇器,首先介紹一下軟件產品線的概念。軟件產品線是一族相關的軟件產品,它們的體系結構中有不少的部分是共享的,但各自又有特定的變異點。一個產品線中的各個產品多是爲不一樣地區定製化的,或者是因市場緣由實現不一樣的特徵集。而利用Sclector能夠在須要時把某個產品線體系結構簡化成另外一個小型產品線,或者從整個體系結構中抽取出一部分造成某具體產品的體系結構。
選擇器提供了3種選擇方式:Select、Prune和Version Prune,如圖10-16所示。用戶根據實際需求選擇其中一種或多種方式執行。
圖10-16 Product-Line Selector
ArchStudio支持對體系結構版本的記錄和選擇。體系結構模型的各個版本均可以在ArchStudio中打開並編輯,也能夠經過提供WebDAV統一資源定位器給ArchStudio來實例化。體系結構模型在ArchStudio中由xADL2.0文件描述和記錄。它的最新版本將被記錄在樹幹目錄中,舊版本被標記後存放到樹枝目錄中。同一時刻,工做臺只容許一個體繫結構的目錄組織顯示出來,而實際上,Subversion的存儲庫能夠爲不一樣的系統保存多個體繫結構。
(5) ype Wrangler。Type Wrangler如圖10-17所示。Type Wrangler爲考察體系結構類型提供了幫助和支持,方便用戶分析體系結構中的全部類型。可利用它添加或移除接口和簽名,並判斷構件和鏈接件是否符合類型一致性要求。
圖10-17 Type Wrangler
3) 菜單欄和工具欄
除了視圖和編輯器外,菜單欄、工具欄和其餘快捷工具也給用戶提供了操做便利。相似視圖和編輯器,工做臺的菜單欄和工具欄也會根據當前窗口的屬性和任務發生變化。
菜單欄包含了集成開發環境中幾乎全部的命令,它爲用戶提供了文檔操做、安裝腳本程序的編譯、調試、窗口操做等一系列的功能。菜單欄位於工做臺的頂部、標題的下面。用戶能夠單擊菜單或子菜單完成大部分操做。在菜單下是工具欄,因爲工具欄比菜單操做更爲便捷,故經常將一些經常使用菜單命令也同時安排在工具欄上。除了工做臺的菜單欄和工具欄,某些視圖和編輯器也有它們專用的菜單。菜單欄和工具欄爲用戶提供了一個方便且迅速的操做方法。
10.3.4 ArchStudio 4的使用
本小節將介紹在開發過程當中怎樣有效地使用ArchStudio 4。經過對一個簡單的電視機啓動應用程序(體系結構如圖10-18所示)的分析和建模來說解整個過程。首先必須明確系統的用戶需求,而後分析系統體系結構,接着繪出系統構件和拓撲結構爲系統創建模型,最後對模型進行校驗。若是用戶須要還能夠對某些功能和屬性進行擴展。
圖10-18 電視機驅動應用系統的體系結構
電視機驅動系統的基本需求以下:
● 系統有兩個調諧器程序:TV調諧器和畫中畫調諧器,它們都有通訊接口,經此傳輸全部信息和數據。
● 系統有一個驅動紅外接收探測器的驅動子系統,來拾取遙控器發出的信號。
● 上面3個子系統之間的交互須要一箇中間媒介,經過它可使紅外接收探測器同時給兩個調諧器發送信號。
清楚了實際需求以後,開始分析系統的體系結構。選擇適當的體系結構風格成爲最重要的任務之一。因爲該系統只涉及簡單信息的發送和接收,用C2風格比較合適。C2風格對系統元素的組建方式和行爲有明確的限制和約束。 此係統包括TV調諧器、畫中畫調諧器、紅外接收器3個構件實例和一個TV鏈接器實例。按照C2風格的系統組織規則,每一個構件和鏈接件都有一個限制交互方式的頂端和底端。構件的頂端應鏈接到某鏈接器的底端,構件的底端則應鏈接到某鏈接器的頂端,而構件與構件之間不容許直接鏈接;一個鏈接器能夠和任意數目的構件和鏈接件鏈接。
選擇了體系結構風格後就能夠利用ArchStudio 4爲系統建模了。首先要建立一個新的ArchStudio工程,而後按照嚮導添加一個體繫結構描述文檔。下面是該過程的詳細步驟:
(1) 單擊「File」→「New」命令,或者右擊導航器視圖,在彈出的快捷菜單中選擇「Project」命令。
(2) 在「New Project」對話框中選擇「a general project」選項併爲它命名,而後單擊「Finish」按鈕。
(3) 單擊「File」→「New」→「Other」命令,或者右擊導航器視圖,在彈出的快捷菜單中選擇「ArchStudio Architecture Description」命令。
(4) 在「New Architecture Description」對話框中選擇相應的工程並給新文檔命名,最後單擊「Finish」按鈕。
如今能夠開始爲系統體系結構建模了。用ArchEdit打開建立的新文件,發現大綱視圖中有一個名爲「XArch」的空文件夾。右擊該文件夾能夠看見系統提供了一些符合XML模式的建模符號。 用戶能夠根據須要利用這些符號來描繪系統。設計ArchTypes時要考慮構件、鏈接件和接口三種類型。每種體系結構類型都有一個惟一的標識符、文字描述和一組簽名。簽名是定義的接口,兩個相同類型的構件或鏈接件應該有相同的接口;構件和鏈接件的接口應該用相同的接口類型做爲簽名。
此電視機系統中,三個構件實例分爲兩種類型:調諧器類型和紅外接收器類型;將TV鏈接器定義爲鏈接件類型;因爲每一個構件和鏈接件都有頂端和底端,因此必須將接口類型的頂端與底端區分開。設計ArchStructures時須要從多個角度來考察。Structure & TYPES和Instance各有本身的XML模式,它們支持以下特性:
● 構件:每一個構件都有惟一的標識符和簡單的文字敘述,構件有本身的構件類型和接口,不一樣的構件能夠共享同一種類型。
● 鏈接件:每一個鏈接件也有惟一的標識符、文字描述、接口和本身的類型。
● 接口:在這兩種模式中,接口有惟一的標識符、文字描述和特定的方向。
● 鏈接:在體系結構符號中,鏈接表示接口之間的關聯,每一個鏈接都有兩個端點用於綁定接口。
● 子體系結構:構件和鏈接件均可以集成爲一個複雜的總體,構件和鏈接件構建了內部聯繫並封裝功能後成爲一個功能獨立的單元體。
● 通用集合:一組類似的體系結構描述元素的集合。在這兩種模式中,一個集合沒有任何語義,能夠用擴展的模式來描述特定含義的集合。
用TV調諧器構件來講明如何設計ArchStructures。構件建模須要考慮標識符、描述、接口、類型等屬性。TV調諧器屬於調諧器類型;它的接口是底端接口;接口的簽名必須與它的構件類型的簽名一致。類型實例化是個極容易被忽視的步驟,只需將元素所屬的類型綁定到具體的類型上便可。因爲定義了構件和鏈接器類型,當類型的屬性發生變化時,該類型的全部實例都會自動更新。 其他的體系結構元素均可以按照TV調諧器構件的設計方式操做。利用ArchStudio 4使複雜的設計變得簡單,用戶只需將設計思想利用ArchStudio 4提供的框架實現便可。
具體的實現能夠依據下面的步驟完成:
(1) 用ArchEdit打開文檔,在大綱視圖中,給根節點XArch添加第一層子節點,至少必須添加ArchTypes和ArchStructures兩類屬性。
(2) 按照前面的分析,分別對ArchStructure和ArchTypes進行設計。在ArchStructure中設計TV調諧器、畫中畫調諧器、紅外接收器、TV鏈接器、TV調諧器與TV鏈接器的鏈接、畫中畫調諧器與TV鏈接器的鏈接、紅外接收器與TV鏈接器的鏈接。在ArchTypes進行類型設計,系統包括兩種構件類型——調諧器與紅外接收器類型,一種鏈接件類型——TV鏈接器類型和一種接口類型——信道類型。
(3) 爲上面的元素添加必要的屬性並設置元素之間的鏈接。鏈接只能關聯方向兼容的接口,如輸入和輸出,不能是輸入和輸入或輸出和輸出。一旦用戶肯定了系統的拓撲結構,一個名爲RendingHints3的文件夾就會自動生成,裏面包含了全部有關聯的元素的信息。
最後一個不可忽視的步驟是校驗模型。該體系結構模型是否知足完整性、類型的一致性、接口的鏈接是否正確、兩個元素是否有相同的標識等問題都須要校驗。ArchStudio 4提供了一個有效的校驗工具Archlight。用Archlight打開文檔,選擇校驗類型,完成任務後系統會給用戶提供報告。用戶根據報告中的信息能夠快速定位和改正錯誤。此外,它還支持體系結構實時修改和動態載入。假設在電視機驅動系統中,Archlight檢測出來的錯誤如圖10-19所示,應該如何修改呢?
圖10-19 Archlight校驗圖
首先,用戶須要獲取一份更詳盡的錯誤報告,右擊系統提示的錯誤信息,彈出的信息提示窗口對錯誤有更詳細的描述。該錯誤在信息提示窗口中提示爲:the interface type of Interface TV Tuner Component on Component TV ArchStructure must be the same as the interface type of its signature。因爲此問題牽涉到構件和接口,能夠選擇接口或者構件爲切入點進一步追溯問題。這兩條解決途徑都提供了4種方式:selector dialog box、type wrangler dialog box、ArchEdit view和Archipelago view,用戶能夠選擇最佳方式。例如,若是選擇Type Wrangler,系統將用紅叉標記出錯的地方(如圖10-20所示)。
圖10-20 Type Wrangler校驗圖
若是選擇ArchEdit,用戶將會被系統智能地導航到出錯的元素;若是採用Archipelago,系統將動態地將有錯誤的元素顯示出來並用紅色標記(如圖10-21所示)。這樣,用戶能夠直觀便捷地定位錯誤。
圖10-21 Archipelago校驗圖
一旦用戶運行了校驗程序,系統就會自動添加一個ArchAnalysis文件夾,其中的文檔詳細記錄了全部校驗信息和細節。模型經過校驗後,用戶就能夠經過視圖和編輯器研究它了。例如,利用Archipelago將系統以圖形的形式顯示出來;利用Type Wrangler對全部類型進行分析;利用Selector選擇體系結構的任何子集,甚至是最簡單的構件和鏈接件。若是用戶須要,還能夠對該系統進行功能擴展。
10.4 Acme工具和AcmeStudio環境
Acme工具是由卡耐基梅隆大學計算機科學學院(School of Computer Science,Carnegie Mellon University)的ABLE
(Architecture Based Languages and Environments)項目組開發的。該項目的主要內容包括開發描述和利用體系結構風格的方法,爲軟件體系結構實踐提供工具,爲軟件體系結構和體系結構風格的定義與分析建立形式化的基礎。本書第4章介紹過的體系結構描述語言ACME和Wright都是由該項目組建立的。
咱們已經在前面介紹過ACME體系結構描述語言。下面,咱們將介紹Acme工具的特色和使用。能夠經過ABLE項目的網站(http://www.cs.cmu.edu/~acme/)免費下載這些工具。
10.4.1 Acme工具開發人員庫(Acme Tool Developer’s Library)
Acme工具開發人員庫(簡稱爲AcmeLib)是一個可重用的類庫,用於表示和操做Acme的設計。AcmeLib包括Java AcmeLib和C++ AcmeLib兩種具體實現。
1.AcmeLib概述
首先介紹AcmeLib提供的基本功能以及它所面向的應用。
AcmeLib能夠讀、寫、操做用Acme體系結構描述語言定義的軟件體系結構設計。AcmeLib框架是爲支持兩類應用程序的快速開發而設計的。
(1) 在ADL之間進行轉換的工具(好比Rapide、Wright、UniCon和Aesop)。
Acme體系結構描述語言的最初目的是把用一種ADL(如Aesop)描述的體系結構轉換成用另外一種不一樣的ADL(如UniCon)描述的體系結構。AcmeLib框架可被用做開發這類在Acme和其餘靜態體系結構描述語言之間進行轉換的工具的基礎。
(2) 以Acme爲基礎的體系結構設計和分析工具。
除了開發轉換工具,使用Acme框架還能夠快速建立具備體系結構分析、操做和可視化等功能的應用程序。這些工具直接以Acme體系結構描述語言爲目標,並能針對特定的應用或特定的體系結構風格進行定製。
AcmeLib工具包中提供一套可重用的構件,它可以幫助軟件體系結構工具開發人員下降開發難度,在付出儘量少的代價的狀況下開發定製基於Acme的工具。AcmeLib工具包具備以下基本功能和特色:
● 爲Acme體系結構描述提供了一個通用的、可擴展的、面向對象的二進制表示框架。這一框架包括一個編程接口工具,能夠經過它來完成對Acme設計的操做。
● 提供了一個Acme語法分析器。該分析器把文本化的Acme描述轉換成AcmeLib的二進制對象表示。能夠方便地擴展該分析器,使它可以支持對目標ADL定義的語義豐富的Acme屬性類型的分析。
● 提供了一個反語法分析器(導出器),用於把AcmeLib的二進制對象表示轉換成文本化的Acme描述。
● 提供了一個轉換輔助程序。
2.開發定製的基於Acme的應用
典型的基於AcmeLib的應用程序是這樣的:對一個基於AcmeLib的應用程序來講,所設想的標準操做模式是調用語法分析器處理文本形式的Acme描述,對分析器返回的體系結構設計的二進制對象表示進行一系列的操做。操做結果的輸出有兩種方式,即向調用工具返回結果,或使用AcmeLib的反語法分析器輸出修改後的文本形式的Acme描述。
工具開發人員建立本身定製的基於AcmeLib的應用時能夠選擇使用兩種方法:使用AcmeLib提供的通用API,或使用自定義的接口類集合。
若是隻是使用AcmeLib的通用API,開發人員在建立新的體系結構工具(或與現有工具相連接)時須要按照如下步驟進行:
(1) 決定該工具將要操做的特定應用程序的Acme類型集合,爲這些類型編寫Acme規格說明。
(2) 使用通用的AcmeLib API構造對Acme表述進行操做的體系結構設計工具。
(3) 把任何所需的用戶語法分析器連接起來,用來解析屬性或外部體系結構描述語言。
(4) 把開發人員的新工具和AcmeLib相連接。
若是要使用自定義的接口類集合建立基於AcmeLib的應用程序,須要完成如下步驟:
(1) 決定所要開發的工具要操做的特定應用程序的類型集合,爲這些類型編寫Acme規格說明。
(2) 經過子類化AcmeLib的體系結構元素類型(構件、鏈接件等)爲特定應用程序的Acme類型建立接口,這些接口類將爲直接在特定應用程序Acme類型提供的屬性和結構上進行操做提供方法。
(3) 使用這些接口類和其他的AcmeLib提供的通用API建立所要的體系結構設計工具。
(4) 把任何所需的用戶語法分析器連接起來,用來解析屬性或外部體系結構描述語言。
(5) 把開發人員的新工具和AcmeLib相連接。
3.Acme設計結構
這裏咱們概要介紹用於描述體系結構設計的Acme類,這些類爲基於Acme模型操做體系結構設計定義了通用的API,並對錶示體系結構設計的結構進行了總結,概述了重要的設計對象類及其關聯。
一個Acme設計的對象模型和用文本化的Acme語言描述的設計結構很相近。一個AcmeDesign包括一個全局體系結構元素類型集合、存儲在全局類型空間AcmeTypeSpace中的屬性類型定義(AcmeElementType和AcmePropertyType類的實例)。它還包括一個AcmeFamily類的實例的集合,其中的每個與一個Family定義相關。Family定義是一組類型定義,是最終的模板定義。最後,一個AcmeDesign還包括一組AcmeSystem對象,它們描述了最高層的設計拓撲結構。
一個AcmeDesign還含有一個AcmeTypeManager。 類型管理器實例以元素類型和屬性類型爲基礎,提供一個用來進行查找、實例化和檢查元素實例及屬性的類型的接口。一個AcmeTypeManager對象並非設計的一部分,而是爲對體系結構設計進行操做提供了一個接口。
一個AcmeSystem包括一個由構件、鏈接件、端口和角色實例(即AcmeComponents、AcmeConnectors、AcmePorts、AcmeRoles)構成的集合,它們分別與Acme體系結構描述語言中的構件、鏈接件、端口和角色相對應。AcmeComponent包含AcmePort,而AcmeConnector包含AcmeRole。一個AcmeSystem還包括一組鏈接(AcmeAttachment),用於表示端口和角色之間的接口關係。
每一個AcmeSystem實例能夠包括一個到AcmeFamily對象集合的參照表,這些對象是在系統中定義的全局對象。AcmeFamily對象定義了一個類型集合,以及全部系統都須要的缺省結構。
10.4.2 AcmeStudio環境
AcmeStudio是一個圖形化用戶界面的軟件體系結構開發環境。它既提供了Linux平臺下的版本,也提供了Windows平臺下的版本。
儘管使用AcmeStudio開發環境和編輯器至關簡單,但在設計具體應用時,使用者應當熟悉軟件體系結構的建模方法,並熟悉Acme體系結構描述語言。
AcmeStudio以Acme通用體系結構描述語言爲基礎。它能夠打開任何用Acme描述的體系結構設計。一般,這些Acme描述被存儲在擴展名爲 .acme的文件中。
能夠從http://www.cs.cmu.edu/~acme網站獲得AcmeStudio和其餘Acme工具的最新版本,還能獲得關於Acme和AcmeStudio的詳細信息。但同時須要指出的是,AcmeStudio是一個研究用的原型系統而非商用產品,所以網站所提供的資源頗有限。
1.用戶界面概述
下面咱們簡單介紹AcmeStudio用戶界面的組織。AcmeStudio的圖形用戶界面採用的是Windows風格的多文檔界面(MDI)模型,如圖10-22所示。
圖10-22 AcmeStudio環境
1) 設計瀏覽器窗口
使用AcmeStudio的第一步是打開一個現存的設計或建立一個新的設計。在AcmeStudio中打開的每一個設計都會顯示在單獨的瀏覽器窗口中。瀏覽器窗口由多個不一樣的編輯視圖組成,它們中的每一個都顯示在單獨的、可調整大小的面板上。這些視圖是同步的,即在一個視圖上所作的更改會立刻在其餘相關視圖中顯示出來。
2) esign Navigator
Design Navigator窗口用樹形結構顯示了整個設計的層次體系。它包括體系結構描述中定義的全部類型和族,以及設計及其子結構中表示的全部系統。這個窗口的內容直接與文本形式的Acme描述的結構相關。
經過選擇此窗口中的樹的不一樣條目,使用者能夠訪問設計中的不一樣元素。一旦選擇了某個或某些元素,它們就會在Diagram View窗口或Element Workshop窗口顯示出來。
界面的操做有點相似於Windows操做系統中經常使用的文件瀏覽器:選擇一個「構件」對象,Diagram View窗口將顯示這一構件以及包含這一構件的系統。而後,能夠經過Diagram View窗口和Element Workshop窗口進行查看和編輯。
某些編輯操做還能夠經過在樹中選擇元素並操做右鍵彈出菜單來完成。對於當前選中的元素,操做主菜單中的相關菜單項也能實現一樣的功能。
能夠對Design Navigator窗口中顯示的元素進行選擇:單擊「Look in」按鈕,或者在應用程序菜單中選擇「View」→「Browser Options…」菜單項,所彈出的對話框窗口中提供了許多對樹形顯示結構的過濾選項。
在樹形顯示上面,有一個組合框,它反映了當前所瀏覽的環境(當前顯示元素的父元素和祖父元素)。這一組合框相似於Windows操做系統中的典型文件對話框中的下拉組合框。操做者經過選擇父元素就能夠向上層瀏覽。
在樹形顯示和組合框的上面,是一個縮略圖,它描述了當前Diagram View所顯示元素的父系統。若是當前Diagram View窗口顯示的是元素類型,縮略圖描述的是該類型。實際上,這一視圖顯示的就是上下文環境,能夠經過雙擊縮略圖轉入上層系統。
3) iagram View
Diagram View顯示一個簡單的圖形編輯器,能夠用一般的方式對構件、鏈接件、端口和角色進行選中、調整大小、移動等操做。可是,不一樣於大多數圖形工具,Diagram View在顯示系統圖形時,使用的顯示規範是在當前選擇的圖形風格(Diagram Style)中定義的,經過在圖形風格列表中進行選擇就能夠用新的風格查看系統。每一個元素的顯示方式是以該元素的類型和屬性爲基礎的。經過視覺外觀咱們就能夠知道所選擇元素的一些信息。
使用菜單項「View」→「Diagram」→「Diagram Styles…」能夠建立新的圖形風格,或編輯現有的風格。
Element Workshop可以顯示更多的當前選中對象的詳細信息。咱們將在下面介紹。
4) ype Platte
Type Platte顯示體系結構元素類型的集合。這些類型構成的詞彙表能用於編輯在Diagram View窗口中所選擇的系統的設計。它不只包括系統具備的各類族的類型,並且包括全部的全局類型的定義。在編輯一個系統時,Platte窗口顯示4個列表:構件類型列表、鏈接件類型列表、端口類型列表和角色類型列表。在編輯一個構件類型時,Platte只顯示端口類型。相似地,在編輯一個鏈接件類型時,只顯示角色類型。
經過選擇一個類型並把它拖入Diagram View窗口,能夠向系統中加入新的構件和鏈接件。同時,要向構件或鏈接件中拖入端口類型或角色類型來添加新的端口或角色。要注意的是,經過選擇適當的菜單項,也能夠向系統添加新的結構。
5) lement Workshop
Element Workshop顯示當前選中對象的細節信息, 包括對象的子結構以及元素的各類屬性和表述。對於系統,子結構包括系統中的構件和鏈接件;對於構件,列出與此構件相關聯的端口;對於鏈接件,列出與此鏈接件相關聯的角色。
雙擊一個元素或表述將導航到該條目上,並在Diagram View窗口中顯示它。雙擊一個屬性將顯示屬性編輯器,使用者能夠用它來編輯屬性值。
2.執行基本任務
下面咱們介紹怎樣在AcmeStudio中執行一些基本任務。與大多數應用程序相似,每每可使用多種操做完成同一個任務。例如,可使用右鍵彈出菜單執行一個命令,也能夠經過應用程序的主菜單完成相應的任務,或經過拖拽操做完成該任務。
1) 與設計有關的任務
相似於大多數Windows應用程序,能夠經過「File」菜單完成打開和保存操做。
若是要建立新的設計,則按如下步驟進行:
(1) 從菜單中選取「File」→「New Design…」。
(2) 選擇族,新的設計中的頂層系統將在所選的族中建立。在對話框中將顯示AcmeStudio\Families目錄下全部的族。經過把新的包含族描述的*.acme文件拷貝到該目錄中,就能夠向庫中加入新的族。
若是要打開現存的設計,則選擇「File」→「Open Design…」,而後選擇打開一個Acme描述文件。這樣就能夠對設計進行編輯了,好比向系統中加入新的構件或鏈接件,修改這些元素的結構。
若是要添加新的構件或鏈接件,則按如下步驟進行:
(1) 經過單擊構件/鏈接件類型並把它拖拽到圖形中,在Type Palette中選擇類型。
(2) 在設計上釋放鼠標。這樣,就在該系統中建立了一個該類型的構件或鏈接件的新的實例。缺省狀況下,系統會根據類型名自動爲該實例分配一個名稱。
或者,也能夠按如下步驟進行:
(1) 從應用程序菜單中選擇「Insert」→「New Component…」或者「Insert」→「New Connector…」,而後,系統會提示對新元素的其餘信息進行選擇。
(2) 爲新元素提供一個名稱,併爲其選擇一個類型。
經過相似的操做,還能夠爲構件添加新的端口,或爲鏈接件添加新的角色。
若是要編輯一個元素的屬性,則按如下步驟進行:
(1) 在圖形中選擇一個元素。
(2) 雙擊Element Workshop窗口中想要編輯的屬性。
若是要建立一個新的屬性,則按如下步驟進行:
(1) 在圖形中選擇一個元素。
(2) 單擊鼠標右鍵並從彈出菜單中選擇「New Property…」菜單項,或者從主菜單中選擇「Elements」→「New Property…」。
還能夠添加或編輯與元素相關的Acme表述。Acme表述可被用於描述元素的詳細分解信息,或描述系統及元素的其餘視圖。
2) 與表述有關的任務
在Acme中,系統、構件、鏈接件、端口或角色均可以有一個表述(Acme Representation)。在當前版本中,能夠查看並編輯系統、構件和鏈接件的表述,也能夠打開包含端口表述和角色表述的系統設計,但不能經過編輯環境訪問它們。
若是要爲構件或鏈接件添加一個新的表述,則按如下步驟進行:
(1) 在系統視圖中選擇一個構件或鏈接件。
(2) 在主菜單中選擇「Insert」→「New Representation…」。
或者,也可使用右鍵菜單中的「New Representation」完成一樣的操做。
若是要導航到一個現有的表述並在系統視圖中把它顯示出來,則按如下步驟進行:
(1) 在系統視圖中選擇一個構件或鏈接件。
(2) 從主菜單中選擇「View」→「Open Representation」,或從元素的右鍵彈出菜單中選擇「Open Representation」。
3) 使用剪貼板進行復制、剪切和粘貼操做
能夠對系統結構(即一些構件和鏈接件及其關聯構成的集合)進行各類剪貼板操做。在當前版本中,可以在Diagram View窗口中對構件和鏈接件的圖形表示(以及它們所包含的端口和角色)進行剪切和粘貼操做。預計在未來的版本中會提供更爲豐富的功能。
若是要剪切/複製構件或鏈接件的集合,則按如下步驟進行:
(1) 在圖中選擇想要剪切或複製的構件和鏈接件組成的子圖。
(2) 選擇「Edit」→「Copy」或「Edit」→「Cut」菜單項。
若是要粘貼元素集合,則按如下步驟進行:
(1) 導航到要把子圖粘貼到的那個系統。
(2) 選擇「Edit」→「Paste」菜單項。
這很是簡單,與通常的編輯器中的操做基本是相同的。但須要注意,也能夠用文本的形式把元素粘貼到設計中去。這裏要使用「Edit」→「Paste Acme Text」菜單項。這些文本應當包括對構件、鏈接件或系統的Acme描述。例如,能夠在其餘文本編輯器中輸入以下文本:
System s={
Component c;
Component d;
};
而後,把這些文本複製下來,返回到AcmeStudio中。這時,選擇「Edit」→「Paste Acme Text」,就會在當前系統中加入兩個名稱分別爲「c」和「d」的構件。
4) 與族和類型有關的任務
經過在主菜單中選擇「Type」→「Families…」或經過Design Browse窗口訪問族和類型的目錄,能夠執行與族和類型有關的操做。
在Acme中,一個體繫結構設計描述包括一組族,可在設計中使用它們。在設計中爲了定義一個屬於某個特定族的系統,必須先要把這個族添加到設計中。能夠採用兩種操做方式:從頭開始建立一個新的族,或者導入一個現有的族。
若是要向設計中加入新的族,則按如下步驟進行:
(1) 在「Type」菜單中選擇「Families…」。這將打開一個對話框,其中列出了與當前設計有關的全部的族,而不是隻有當前被編輯的系統所指定的族。
(2) 單擊「New…」按鈕,打開另外一個對話框,在這裏爲新建的族命名。
若是要向設計中導入一個族,則單擊「Import…」按鈕,而後選擇一個Acme描述文件。
若是要指定一個系統的族,則能夠從「Families」對話框中選擇當前系統的族。這樣作就把當前系統和這個族關聯了起來。另外一種辦法是,在Design Browser窗口中或在Diagram View窗口中使用右鍵菜單,選擇「Assign Families…」菜單項。
若是要爲族添加一個新的類型,則在AcmeStudio中能夠這樣建立一個新的元素類型:首先在設計中建立一個構件、鏈接件、端口或角色,而後使用「Type…」→「Create type from prototype…」把它轉換成一個類型。使用「Create type in current family」選項,能夠在與當前編輯的系統相關的族中建立一個新的類型;使用「Create type in global type space」選項,能夠在一個設計的全局類型那個空間中建立一個新的類型。
須要注意的是,當前的AcmeStudio版本提供的類型編輯功能還頗有限。例如,若是須要建立一個新的屬性類型,則必須直接編輯文本形式的Acme描述。
若是要編輯一個類型的描述,則在Browser View窗口選中它,而後就能夠經過Diagram和Workshop窗口對它進行編輯。
5) 與圖形風格(Diagram Style)有關的任務
經過選擇主菜單中的「View」→「Diagram」→「Diagram Styles…」,能夠對圖形風格進行編輯,並添加新的風格。通常狀況下,能夠爲所要使用的每一個族定義一種圖形風格。在每種圖形風格中,定義了該族中各種型的視覺效果。
若是要爲當前系統選擇一種圖形風格,則經過在圖形風格工具條的下拉框中進行選擇。另外一種方法是使用主菜單的「View」→「Diagram Styles…」選項,而後單擊「Assign Style to Current System」按鈕。
若是要建立新的圖形風格,則在「View」→「Diagram Styles…」所打開的對話框中單擊「New…」按鈕便可。
若是要爲一個圖形風格添加新的視覺效果,則按如下步驟進行:
(1) 從主菜單中選擇「View」→「Diagram」→「Diagram Styles…」菜單項,並使用圖形風格對話框選擇所要編輯的圖形風格;或者選擇「View」→「Diagram」→「Edit Current Diagram Style…」菜單項,編輯當前系統所使用的圖形風格。
(2) 單擊「New…」按鈕,選擇是否建立新的構件、鏈接件、端口或角色的視覺效果。
10.5 本 章 小 結
本章詳細介紹了軟件體系結構開發過程的輔助工具——體系結構集成開發環境,它在系統設計思想和系統實現之間搭起了一座橋樑。在體系結構集成開發環境出現之前,開發人員只能利用非形式化或形式化方法描述軟件的體系結構,缺少有效的體系結構分析、設計、仿真、驗證等支持工具。同時,這些方式表達的結果也不夠形象和靈活。體系結構集成開發環境的出現解決了這一系列問題。它提升了軟件體系結構的生產效率,下降了開發和維護成本。
本章首先從5個方面介紹軟件體系結構集成開發環境的做用,而後介紹了體系結構集成開發環境的原型,以幫助用戶深刻理解開發工具的結構和工做機理。原型是三層結構的系統:最上層是用戶界面層,中間層是模型層,底層是基礎層。
最後以兩個較爲著名的軟件體系結構集成開發環境爲例來介紹其具體功能。其中:
(1) rchStudio 4採用基於XML的體系結構描述語言xADL2.0爲基礎,支持C2體系結構風格。它除了具有普通體系結構建模功能外,還提供了對系統運行時刻和設計時刻元素的建模支持,以及對軟件產品線體系結構的建模支持。
(2) cme工具以Acme體系結構描述語言爲基礎,提供了Acme工具開發人員庫(簡稱爲AcmeLib),用於表示和操做Acme的設計,並提供了一個圖形化用戶界面的軟件體系結構開發環境AcmeStudio。
習 題
1.下載本章介紹的兩種軟件工具,瀏覽其文檔,對工具所附帶的例子進行簡單操做。
2.經過文獻檢索或互聯網搜索,瞭解2~3個其餘的體系結構支持工具。它們都提供了什麼功能?具備哪些特色?