第07章 軟件體系結構設計_第1頁
第07章 軟件體系結構設計_第2頁
第07章 軟件體系結構設計_第3頁
第07章 軟件體系結構設計_第4頁
第07章 軟件體系結構設計_第5頁
已閱讀5頁,還剩137頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、馮元勇QQ: 462031289手機:州大學計算機科學與教育軟件學院QQ:4620312892課前思考課前思考n一級標題大?。?8,文字大?。?4l二級文字大小:24u最多三級,所有文字不得小于:20u成句時應應有句號等結束符u不成名時不帶句結束符QQ:4620312893大綱7.1 軟件體系結構的概念軟件體系結構的概念7.2 體系結構的表示體系結構的表示 包圖、構件圖、部署圖、對象圖包圖、構件圖、部署圖、對象圖7.3 體系結構設計的過程體系結構設計的過程7.4 體系結構設計模式體系結構設計模式7.5 概念設計概念設計7.6 體系結構精化體系結構精化7.7 基于構件的

2、體系結構基于構件的體系結構7.8 體系結構驗證體系結構驗證QQ:4620312894軟件體系結構的定義軟件體系結構的定義n軟件體系結構(architecture,也稱“架構”)從高層抽象的角度刻畫組成目標軟件系統的設計元素(包括子系統、構件及類)以及它們之間的邏輯關聯。QQ:46203128952022-4-195QQ:4620312896體系結構設計的任務體系結構設計的任務n建立滿足軟件需求的軟件體系結構l既要明確定義軟件各子系統、構件、關鍵類的職責職責劃分劃分及協作關系,也要描繪它們在物理運行環境下的部署模型l還必須針對軟件系統全局性、基礎性全局性、基礎性的技術問題給出技術解決方案,這種方

3、案構成目標軟件系統的技術基礎設施2022-4-197可信計算終端系統平臺安全體系結構可信計算終端系統平臺安全體系結構QQ:4620312898體系結構的重要性體系結構的重要性n軟件規模日益龐大復雜、交付時間日益緊迫、詳細設計和軟件實現技術日益成熟,體系結構設計已經成為軟件質量的瓶頸。n與詳細設計相比,體系結構設計對性能、靈活性、可修改性、可擴充性等質量需求的影響是全局性的、決定性的。n一旦啟動基于體系結構的詳細設計,對體系結構進行調優的代價將遠大于算法調優的代價。QQ:4620312899本章試圖回答的問題本章試圖回答的問題n如何合理劃分模塊?n如何確保體系結構滿足軟件需求?l在大型軟件項目中

4、,需求如此之多,如何基于需求推導體系結構,如何確保體系結構滿足軟件需求,尤其是非功能需求?n軟件體系結構設計的過程及方法學有哪些?QQ:462031289107.1 軟件體系結構的概念軟件體系結構的概念n本節介紹:n什么是軟件體系結構n體系結構與需求n體系結構設計與詳細設計的關系n從多種視角探討軟件體系結構的不同表現形式QQ:462031289117.1.1 何謂體系結構何謂體系結構n軟件體系結構包括三大要素:l組件(component)l連接件(connector)l約束(constraints)n連接件表示組件之間的連接和交互關系n約束表示組件中的元素應滿足的條件,以及組件經由連接件組裝成

5、更大模塊時應滿足的條件。QQ:46203128912圖圖7.12 家庭保安系統的體系結構雛形家庭保安系統的體系結構雛形QQ:46203128913軟件體系結構舉例:家庭保安系統軟件體系結構舉例:家庭保安系統n組件l劃分為界面、核心和物理設備接口三個層次l核心層(業務邏輯層)u負責存儲所有業務數據并提供業務邏輯處理功能l界面層u負責向用戶呈現家庭保安系統的操作界面,接收用戶的界面輸入并將其轉換為內部事件傳遞給核心層l物理設備接口層u應核心層的要求向傳感器、報警器、報警電話等物理設備發送必要的控制指令,也負責接收來自傳感器的監測數據QQ:46203128914軟件體系結構舉例:家庭保安系統軟件體系

6、結構舉例:家庭保安系統n約束l位于較高層次的軟件元素可以向低層元素發出服務請求,低層元素完成計算后向高層元素發送服務應答,反之不行;l每個軟件元素根據其職責位于最恰當的一個層次當中,不可錯置(如,核心層不能包含界面呈現和界面輸入接收職責,也不能直接與物理設備交互);l每個層次都可替換。即,一個層次可以被能實現同樣對外服務接口的層次所替代。QQ:46203128915體系結構與軟件需求的關系體系結構與軟件需求的關系n軟件需求是體系結構的基礎和導引l體系結構是以軟件需求的實現為目標的軟件設計藍圖,軟件需求是體系結構設計的基礎和驅動因素。l軟件需求,尤其是非功能需求,對軟件體系結構具有關鍵性的塑形作

7、用。QQ:46203128916體系結構設計與詳細設計的關系體系結構設計與詳細設計的關系n詳細設計是體系結構的實現l詳細設計是針對軟件體系結構中某個未展開模塊的局部設計,必須遵循體系結構中規定的原則、接口及約束l詳細設計只能實現、不能更改體系結構中規定的模塊的對外接口和外部行為;l軟件體系結構必須為詳細設計提供可操作的指導和充分的約束。QQ:462031289177.1.2 體系結構視圖體系結構視圖完整的軟件體系結構應該包含以下視圖:n邏輯視圖n開發視圖n物理視圖n運行視圖n數據視圖QQ:462031289187.1.2 體系結構視圖體系結構視圖完整的軟件體系結構應該包含以下視圖:n邏輯視圖n

8、開發視圖n物理視圖n運行視圖n數據視圖表述體系結構中各軟件模塊的邏輯功能劃分(或曰職責分派),以及基于這種劃分的協作行為。邏輯視圖的示例見前文中的圖7.12。QQ:462031289197.1.2 體系結構視圖體系結構視圖完整的軟件體系結構應該包含以下視圖:n邏輯視圖n開發視圖n物理視圖n運行視圖n數據視圖表述軟件源代碼的程序分包及目錄結構,采用的類庫、中間件或框架(framework),以及它們與邏輯視圖中各模塊之間的映射關系。開發視圖的示例見后文中的圖7.19。QQ:462031289207.1.2 體系結構視圖體系結構視圖完整的軟件體系結構應該包含以下視圖:n邏輯視圖n開發視圖n物理視圖

9、n運行視圖n數據視圖表述系統中安裝部署的物理機器及其網絡連接,邏輯視圖及開發視圖中模塊或程序包的物理部署位置。開發視圖的示例見后文中的圖7.20。QQ:462031289217.1.2 體系結構視圖體系結構視圖完整的軟件體系結構應該包含以下視圖:n邏輯視圖n開發視圖n物理視圖n運行視圖n數據視圖軟件運行時進程、線程的劃分,它們之間的并發與同步,瞬時快照(軟件運行過程中某個特定時刻活躍的對象及其協作關系),以及它們與邏輯視圖和開發視圖之間的映射關系。QQ:462031289227.1.2 體系結構視圖體系結構視圖完整的軟件體系結構應該包含以下視圖:n邏輯視圖n開發視圖n物理視圖n運行視圖n數據視

10、圖持久數據的存儲方案,數據傳遞、備份、恢復、同步方案,與物理視圖之間的映射關系。QQ:46203128923大綱7.1 軟件體系結構的概念軟件體系結構的概念7.2 體系結構的表示體系結構的表示 包圖、構件圖、部署圖、對象圖包圖、構件圖、部署圖、對象圖7.3 體系結構設計的過程體系結構設計的過程7.4 體系結構設計模式體系結構設計模式7.5 概念設計概念設計7.6 體系結構精化體系結構精化7.7 基于構件的體系結構基于構件的體系結構7.8 體系結構驗證體系結構驗證QQ:462031289247.2 體系結構的表示體系結構的表示n邏輯視圖l主要為包圖和構件圖,有時還輔以類圖n開發視圖l可能會用到包

11、圖n物理視圖l顯然應表示為部署圖n運行視圖l因為涉及到并發、同步以及軟件運行過程中的瞬時快照,所以它應表示為活動圖與對象圖n數據視圖l一般表示為類圖或者實體-關系圖QQ:462031289257.2.1 包圖包圖n包l刻畫了包之間的構成和依賴關系。l可以包含一組具有邏輯關聯的UML模型元素(例如用例、類等)、模型圖(例如用例圖、類圖、交互圖、狀態圖、活動圖等),以及其他的包。l包是配置管理的基本單元,同時也為訪問控制提供基本手段。QQ:462031289267.2.1 包圖包圖n作用l在整個軟件開發過程中在整個軟件開發過程中,包圖用于以結構化、層次化的方式組織、管理大型軟件模型,使得分別處理不

12、同包的開發團隊之間相互干擾程度降至最低:u在業務分析和需求定義階段包圖可用于刻畫業務系統和用戶需求的結構u在設計和實現階段包圖可用于描述軟件系統的高層結構QQ:462031289272022-4-19圖圖7.19 包圖示例包圖示例QQ:46203128928包圖的布局規則包圖的布局規則n類包圖l采用垂直分層布局,即,沿垂直方向繪制依賴關系邊,位于同一層次的包水平對齊,最面向用戶的包位于頂層,面向系統內部后臺處理的包位于底層。n用例包圖l采用水平布局,主動執行者、被動執行者分置于圖的左、右兩側。QQ:46203128929包的劃分規則包的劃分規則n類包圖l在同一繼承結構中出現的類應位于同一包;l

13、存在聚合或組合關系的類應位于同一包;l相互間密切協作的類應位于同一包。n用例包圖l相互關聯的用例(擴展用例與被擴展用例,包含用例與被包含用例、泛化用例與特化用例)應位于同一包;l同類執行者使用的用例應盡量位于同一包。QQ:462031289307.2.2 構件圖構件圖n構件l是可分離的物理模塊,具有精確定義的對外接口,外界只能通過接口來訪問它QQ:462031289317.2.2 構件圖構件圖n構件的特點l構件是可分離的l構件是可替換的l構件是可配置的u部署至運行環境之后,外界可以通過配置機制修改構件的配置數據,影響構件的對外服務的功能或行為l構件一般具有較好的可復用潛力u可不經源代碼修改可不

14、經源代碼修改,即可應用于多個軟件項目或軟件產品u這是因為構件可通過配置信息來適應不同的應用場景u同時也因為構件創立時便考慮了不同應用場景下的復用圖7.2 某個軟件系統中主要構件之間關系的構件圖 圖7.3 其中Customer構件的內部結構圖2022-4-1932QQ:46203128933(一)(一) 構件及其表示構件及其表示n接口l是一組操作 和/或 屬性的說明(不含操作的實現),用作服務提供方和使用方之間的協議。l由類或構件實現。l構件最關鍵的特征通過接口體現,包括u對外提供的供給接口供給接口(provided interface),u請求其他類、構件或軟件模塊提供幫助時使用的需求接口需求

15、接口(required interface)。QQ:46203128934(一)(一) 構件及其表示構件及其表示n通過接口實現信息隱藏l構件的實現者可以自由選擇實現方法,只要它完整地實現了供給接口中規定的操作及屬性即可l其他軟件模塊對它的訪問必須通過它的供給接口來進行l構件的使用者只需要了解其供給接口,構件的服務提供者只需要了解其需求接口,決不需要了解構件的內部實現l只要構件的兩種實現遵循相同的接口定義,那么它們就一定是可自由替換的QQ:46203128935(一)(一) 構件及其表示構件及其表示n端口l構件還可以定義一些端口,每個端口綁定了一組一組供給接口和/或需求接口l對于具有端口的構件,

16、它通過端口與外部世界交互通過端口與外部世界交互u當外部請求到達端口時,構件的端口知道如何將外部請求路由至合適的接口的實現體u當構件通過端口請求外部服務時,端口也知道如何分辨該請求所對應的需求接口l針對構件的每個接口和端口,可以通過自然語言描述、用例圖或狀態圖來定義其使用方法QQ:46203128936圖圖7.4 構件的表示圖元構件的表示圖元(a)最簡化的三種圖元 (隱藏接口部分)(b)構件及其接口的兩種表示方法2022-4-1936(c)構件端口的表示方法QQ:46203128937(二)構件圖(二)構件圖n構件圖的結點:構件、類和包n構件圖的邊:與普通類圖的邊沒有嚴格區分n構件圖的關系:構件

17、、類和包之間的依賴關系,偶爾也可以出現繼承關系和實現關系n構件間依賴關系的實現:l可以直接搭建于這兩個構件之間l也可以搭建于一個構件與另一構件的供給接口之間l還可以描述成一個構件的需求接口與另一構件的供給接口之間的依賴關系,見圖7.2。QQ:46203128938(三)(三) 構件定義圖構件定義圖n描述一個構件的內部結構。l它可以包含多個子構件,每個子構件的需求接口u要么由另一子構件的供給接口負責實現u要么經由父構件的需求接口請求外部支援u示例見圖7.3l一個子構件的供給接口對另一子構件的需求接口的實現通過兩種圖元之間的銜接來表示。l在構件定義圖中,父構件的端口與其外部接口之間的無向邊表示端口

18、是由哪些接口構成的。QQ:46203128939(三)(三) 構件定義圖構件定義圖n委托連接器l指子構件端口與父構件端口之間的有向邊有向邊l當子構件未定義端口時,委托連接器表現為子構件的圖元與父構件端口之間的有向邊l委托連接器指明了構件與外部世界之間的交互信息如何經由父構件的端口到達內部子構件的接口或端口,也指明了內部子構件的服務請求如何經由父構件的端口到達外部世界中的服務提供方。QQ:462031289407.2.3 部署圖部署圖n部署圖l表示軟件系統的可執行工件(artifact)在運行環境中的分布情況l工件是指軟件系統中相對獨立的物理實現單元,例如Windows平臺下的動態鏈接庫(DLL

19、)文件、Java系統中的類庫(jar)文件n部署圖的作用l為軟件配置管理工程師確定軟件發布版本的封包方法提供依據l是軟件安裝、維護工程師了解系統部署狀況的主要信息源l也是軟件設計、實現人員理解軟件運行環境、確定軟構件劃分的重要參考QQ:46203128941兩種部署圖兩種部署圖n描述性部署圖l描述軟件的邏輯布局l示例見圖7.5 描述性部署圖示例n實例性部署圖l在描述性部署圖的基礎上針對具體的運行環境和特定的系統配置描述軟件系統的物理部署情況l示例見圖7.6 實例性部署圖示例QQ:462031289422022-4-1942圖圖7.5 描述性部署圖示例描述性部署圖示例QQ:46203128943

20、2022-4-1943圖圖7.6 實例性部署圖示例實例性部署圖示例QQ:46203128944(一)(一) 描述性部署圖描述性部署圖n描述性部署圖的四種結點l計算資源(結點)u軟件運行環境中的一組計算資源u如,客戶端計算機、Web服務器、應用服務器u軟件工件駐留其中,依賴基礎服務來實現工件的功能l工件u以構造型標識l構件u不需要將所有的構件引入至部署圖,僅顯示相關的、重要的構件即可l用例執行者u意在強調執行者與工件之間的使用關系及信息交互QQ:46203128945(一)(一) 描述性部署圖描述性部署圖n描述性部署圖的四種邊l結點之間的通信關聯u表示兩個結點間的通信連接u可以在通信關聯邊上以構

21、造型說明通信協議及其他約束,還可以標注結點之間的數量對應關系l工件之間的依賴關系u如果工件定義了對外接口,那么軟件設計人員應確保工件之間的依賴關系表現為工件接口上的依賴關系l工件與構件之間的依賴關系u表示工件具體實現了構件u在該依賴關系之上需標注構造型l用例執行者與工件之間的依賴關系u表示執行者使用工件提供的服務(從執行者指向工件)u或工件使用執行者提供的服務(從工件指向執行者)QQ:46203128946(二)(二) 實例性部署圖實例性部署圖n實例性部署圖與描述性部署圖之間的關系可類比為對象圖與類圖之間的關系。n在實例性部署圖中結點的命名方式為n “結點名: 類型名”n 其中類型名為描述性部

22、署圖中的結點名。n如果實例性部署圖中的結點包含了描述性部署相應結點中的所有工件,則不必在該結點中再列舉這些工件。n實例性部署圖的結點還可包含對工件的具體配置信息的描述,見圖7.6中的結點“customerDeploy.xml”。QQ:462031289477.2.4 對象圖對象圖n對象圖是軟件系統中某些對象在運行過程中的瞬時快照QQ:46203128948大綱7.1 軟件體系結構的概念軟件體系結構的概念7.2 體系結構的表示體系結構的表示 包圖、構件圖、部署圖、對象圖包圖、構件圖、部署圖、對象圖7.3 體系結構設計的過程體系結構設計的過程7.4 體系結構設計模式體系結構設計模式7.5 概念設計

23、概念設計7.6 體系結構精化體系結構精化7.7 基于構件的體系結構基于構件的體系結構7.8 體系結構驗證體系結構驗證QQ:462031289497.3 體系結構設計的過程模型體系結構設計的過程模型n任務l建立高層結構,確定u所有重要模塊重要模塊u模塊職責劃分及協作關系職責劃分及協作關系n目標l具有優良的性能u包括正確性、可擴展性、可伸縮性、可行性等方面QQ:46203128950體系結構設計的過程模型體系結構設計的過程模型分為兩個階段n初步設計l僅針對軟件需求模型中的部分關鍵需求項部分關鍵需求項來構思體系結構的雛形l關鍵需求項是指對用戶滿意度及軟件結構均有重要影響的需求項l“20-80規則”

24、:20%的關鍵需求項決定80%的體系結構形態n精化l全面地考慮全面地考慮所有的軟件需求項、豐富體系結構雛形的細節并且對其進行調優QQ:46203128951體系結構設計過程的主要活動體系結構設計過程的主要活動n概念設計l選擇一種體系結構,合理、充分優化地實現關鍵需求n體系結構精化l精化體系結構u并用邏輯視圖表達u根據具體情況,還應從開發視圖、運行視圖、物理視圖、數據視圖等多視角描述l該過程也是需求導向的u應合理、充分優化的方式完整地實現軟件需求模型n體系結構驗證l重新審視所有軟件需求項的實現方案,研究如何化解迄今標識出來的所有重要的全局風險,在此過程中驗證體系結構的合理性和充分優化性QQ:46

25、203128952圖圖7.8 體系結構設計工作流體系結構設計工作流n同樣地,大型軟件體系結構可迭代設計:l驗證中發現的問題要返工返工u返至概念設計或精化階段l重要的需求項優先設計u分別針對不同的需求項針對不同的需求項依次進行概念設計、體系結構精化和驗證,然后進行體系結構的集成QQ:46203128953大綱7.1 軟件體系結構的概念軟件體系結構的概念7.2 體系結構的表示體系結構的表示 包圖、構件圖、部署圖、對象圖包圖、構件圖、部署圖、對象圖7.3 體系結構設計的過程體系結構設計的過程7.4 體系結構設計模式體系結構設計模式7.5 概念設計概念設計7.6 體系結構精化體系結構精化7.7 基于構

26、件的體系結構基于構件的體系結構7.8 體系結構驗證體系結構驗證QQ:462031289547.4 體系結構設計模式體系結構設計模式7.4.1 何謂設計模式何謂設計模式n設計模式l以設計復用復用為目的,采用一種良好定義的、正規的、一致的方式記錄的軟件設計經驗。l它是某種成熟的解決方案u每條模式關注在一般或特定設計環境中可能重復出現的設計問題,并給出經過充分實踐考驗的軟件解決方案。n設計模式的意義和價值l以標準并且規范的方式記錄軟件設計經驗,支持軟件設計級復用QQ:46203128955設計模式包含的內容設計模式包含的內容n名稱l要反映模式蘊含的設計經驗,體現與其它已有模式的關系n問題l描述模式解

27、決的設計問題,包括問題的背景n施用條件l描述在何種條件下才推薦使用該模式解決上述問題,以及在使用本模式之前必須考慮的約束條件n解決方案l設計模式的主體部分,描述問題的軟件解決方案QQ:46203128956設計模式包含的內容設計模式包含的內容(2)n效果l描述該方案導致的正面及負面的設計效果n示例代碼l應用本模式的示例代碼n關聯模式l說明本模式繼承或擴展了哪些模式,與哪些模式關聯n可視情況適當取舍l但名稱、解決方案和效果名稱、解決方案和效果是不可或缺的QQ:46203128957設計模式的分類設計模式的分類n按解決方案的抽象程度來分(高至低)l體系結構設計模式u面向整個軟件系統或規模較大的軟件

28、子系統u定義子系統或構件的職責、協作方式的規則或指南l軟件子系統或構件設計模式u面向中等規模的軟件子系統或構件,獨立于程序設計語言,給出內部的軟件元素的結構化組織方式u在面向對象環境中,類圖表示關系、交互圖表示協作途徑l面向軟件實現的設計模式u針對軟件子系統或構件中的某個特定問題,描述如何利用特定的程序設計語言的具體特征來解決此問題。u此類模式不影響軟件結構QQ:46203128958設計模式的分類設計模式的分類n(2)按模式解決的設計問題的類別來分l創建型模式(工廠方法模式、生成器模式)u專門解決復雜對象的創建問題l結構型模式(adpter適配器模式、Bridge橋接模式)u分解為粒度更小的

29、軟件元素,規定其職責和協作方式l行為型模式(Interpreter解釋器、Iterator迭代)u側重描述軟件元素間的通信及控制流模式l分布型模式(客戶機/服務器構架)u為分布于網絡中的軟件系統提供系統結構和遠程互操作方法l適應性模式(微核模式)u針對擴展、改進、演進、變更等設計問題提供軟件解決方案l訪問控制模式(MVC)u針對構件、軟件服務或共享資源的訪問控制問題提供軟件解決方案QQ:46203128959設計模式的分類設計模式的分類n(3)按照模式基于的計算平臺類別來分l獨立于計算平臺的設計模式l面向特定計算平臺的設計模式u如J2EE、.NET等QQ:462031289607.4.2 通用

30、的體系結構模式通用的體系結構模式n體系結構模式是專門針對體系結構設計問題的設計模式,是軟件體系結構設計的經驗結晶。本節內容:n分層模式n管道與過濾器模式n黑板模式QQ:46203128961(一)分層模式(一)分層模式n逐層抽象遞減或北增n上層使用下層提供的服務n一般而言l頂層:直接面向用戶提供交互界面l底層:負責提供基礎性、公共性的技術服務u比較接近于硬件計算環境、操作系統或數據庫管理系統QQ:46203128962層次之間的連接有兩種形態層次之間的連接有兩種形態n高層構件向低層構件發出服務請求l低層構件在計算完成后向請求者發送服務應答l在此過程中,低層構件可能向更低層構件發送抽象級別更低、

31、粒度更細的服務請求n低層構件主動通知高層構件l低層構件在主動探測或被動獲知計算環境的變化事件后通知高層構件l這種通知鏈可能一直延伸到最高層以便軟件系統向用戶報告,也可能中止于某個中間層次。QQ:46203128963層次間服務接口的兩種組織方式層次間服務接口的兩種組織方式n 層次中的每個提供服務的構件公開其接口n 將這些接口封裝于層次的內部,每個層次提供統一的、整合的服務接口n前一種方式對上層服務請求者更直接,服務提供者所在層次的透明度也較高n后一種方式降低了兩個層次之間的耦合度n合理地確立一系列抽象級別是采用分層模式進行體系結構設計的關鍵QQ:46203128964分層模式的優點分層模式的優

32、點n松耦合n易替換n易復用n易標準化l例如,ISO七層網絡協議模型、POSIX接口標準、 Java虛擬機(JVM)標準在各自領域的標準化進程中發揮了關鍵性作用QQ:46203128965分層模式的缺點分層模式的缺點n會引起性能方面的開銷l高層功能可能需要逐層調用下層服務,返回值、報錯信息又需逐級上傳,這種過程一般會比直接實現高層功能更耗時l如果低層服務還完成了最初的服務請求者所不需要的冗余功能,那么性能損耗就會更嚴重QQ:46203128966(二)管道與過濾器模式(二)管道與過濾器模式n將軟件系統功能實現為一系列處理步驟l每個步驟封裝在一個過濾器構件中n相鄰過濾器之間以管道連接l一個過濾器的

33、輸出數據借助管道流向后續過濾器,作為其輸入數據QQ:46203128967過濾器與管道之間的協作方式過濾器與管道之間的協作方式n主動過濾器l過濾器不斷從管道中提取輸入數據,并將輸出數據壓入管道n被動過濾器l管道將數據壓入位于過濾器,過濾器被動地等待輸入數據n管道負責提取位于其源端的過濾器的輸出數據n過濾器的連接l如果管道連接的兩端均為主動過濾器,那么管道必須負責它們之間的同步,典型的同步方法是先進先出緩沖器l如果管道的一端為主動過濾器,另一端為被動過濾器,那么管道的數據流轉功能可通過前者直接調用后者來實現QQ:46203128968管道和過濾器模式的特點管道和過濾器模式的特點n長處l可以通過升

34、級、更換部分過濾器構件,及處理步驟的重組,實現軟件系統的擴展和進化n不足l僅適合采用批處理方式的軟件系統,不適合交互式、事件驅動式系統QQ:46203128969(三)黑板模式(三)黑板模式n將軟件系統劃分為黑板、知識源和控制器三類構件黑板負責保存問題求解過程中的狀態數據,并提供這些數據的讀寫服務知識源負責根據黑板中存儲的問題求解狀態評價其自身的可應用性,進行部分問題求解工作,并將此工作的結果數據寫入黑板控制器負責監視黑板中不斷更新的狀態數據,安排(多個)知識源的活動QQ:46203128970黑板模式的典型動作過程黑板模式的典型動作過程n根據狀態選取知識源l控制構件觀察黑板中的狀態數據,決定

35、哪些知識源對后續的問題求解可能有貢獻,然后調用這些知識源的評價功能,進一步選取參與下一步求解活動的知識源。n問題求解,更新狀態l被選中的知識源基于黑板中的狀態數據將問題求解工作向前推進一步,并根據此步驟的結果更新黑板中的狀態數據n重復,直到問題解決l控制構件不斷重復上述控制過程,直至獲得滿意或比較滿意的結果QQ:46203128971黑板模式的特點黑板模式的特點n適合于沒有確定的求解方法的復雜問題n長處l黑板模式的知識源和控制構件可靈活更換可靈活更換、升級,支持采用不同的知識源、不同控制算法來試驗各種問題求解方法l知識源之間沒有互操作,知識源與控制構件和黑板之間均通過良好定義的接口進行交互,知

36、識源的復用性較好知識源的復用性較好l知識源的問題求解動作是探索性的問題求解動作是探索性的,允許失敗和試錯,采用此模式的軟件系統具有較好的容錯性和健壯性n不足l問題求解性能較低性能較低、有時無法預測求解時間l不能確保獲得最優解l知識源和控制器兩種構件的開發困難l問題求解路徑不確定,軟件測試困難軟件測試困難QQ:46203128972大綱7.1 軟件體系結構的概念軟件體系結構的概念7.2 體系結構的表示體系結構的表示 包圖、構件圖、部署圖、對象圖包圖、構件圖、部署圖、對象圖7.3 體系結構設計的過程體系結構設計的過程7.4 體系結構設計模式體系結構設計模式7.5 概念設計概念設計7.6 體系結構精

37、化體系結構精化7.7 基于構件的體系結構基于構件的體系結構7.8 體系結構驗證體系結構驗證QQ:462031289737.5 概念設計概念設計n主要目標l根據關鍵需求確定初始的軟件體系結構雛形n方法l首先從軟件需求模型中甄別出關鍵的軟件需求項l然后借鑒體系結構模式確定適合于實現這些需求項的體系結構雛形QQ:462031289747.5.1 關鍵需求辨識關鍵需求辨識n辨識關鍵功能需求項關鍵功能需求項的主要方法l確定核心或基礎性功能u其它功能依賴于這些功能,或僅當這些功能實現之后其它功能才有意義l確定為實現對外接口所必需的支持功能l標識實現難度較大、實現風險較高的功能l確定最能體現待開發軟件特色的

38、功能需求l確定前述類別沒有覆蓋,但對用戶滿意度影響甚巨的功能需求l剔除對體系結構塑形無貢獻的功能需求項QQ:462031289757.5.1 關鍵需求辨識關鍵需求辨識n辨識關鍵質量需求項關鍵質量需求項的主要方法l標識影響用戶認可、接受本軟件系統的質量需求l標識實現難度較大、實現風險較高的質量需求u但是,并非所有高風險、高難度的質量需求項均須納入關鍵需求集。體系結構設計師必須決定,在給定的時間和成本約束前提下重點支持哪些質量需求項l權衡沖突的質量需求項u要么僅將優先支持的質量需求項納入關鍵集u要么將二者均納入u要么均不納入關鍵集QQ:46203128976辨識關鍵需求的注意事項辨識關鍵需求的注意

39、事項n高優先級并不完全等同于高關鍵性l雖然優先級較高的功能需求和質量需求項非常有可能進入關鍵集,但并不必然進入n關鍵質量需求項優先于關鍵功能占比l因為質量需求對體系結構初始塑形的影響力比功能需求更大n對軟件體系結構有影響,就必須納入關鍵集l這是由于由于軟件的開發過程和軟件產品必須滿足所有的約束性需求項l那些與軟件體系結構無關的約束,例如編程語言限制等,則不應進入關鍵集QQ:46203128977例例7.1 辨識關鍵需求項辨識關鍵需求項(家庭保安系統家庭保安系統)n關鍵功能性需求l除“日志查詢”外的所有用例,包括“開關機及復位處理”、 “配置管理”和“傳感器監測”,均屬核心基礎性功能,納入關鍵需

40、求集l由于家庭保安系統的規模很小,所以關鍵的功能需求項所占比例很高是可以理解的n關鍵質量需求l基于該系統的市場定位和競爭力要求,我們將安全性、可靠性、性能和可配置性納入關鍵需求集QQ:462031289787.5.2 體系結構初創體系結構初創n任務l建立初始的軟件體系結構雛形l屬于軟件體系結構邏輯視圖,與具體的實現技術無關n依據l主要是關鍵需求集l還必須考慮運行環境,以考慮到對體系結構的影響u例如,單機軟件、運行于局域網內部的客戶/服務器軟件與運行于Internet之上的Web軟件的體系結構大不相同n形式l以某一體系結構模式為主l可適量調整QQ:46203128979體系結構模式速查清單體系結

41、構模式速查清單類別類別名稱名稱特點特點典型應用示例典型應用示例 企業應用企業應用(數據密集(數據密集 型應用)型應用)分層分層(1) 分級抽象分級抽象(2) 依賴關系局部化、簡單化依賴關系局部化、簡單化(3) 層可復用、可替換層可復用、可替換大部分應用軟件大部分應用軟件管道與過濾器管道與過濾器(1) 適于批處理、數據密集型處理適于批處理、數據密集型處理(2) Filter可復用可復用(3) 支持處理流程重組支持處理流程重組(1) 編譯器編譯器(2) HTTP請求處理請求處理 MVC(見(見14.3節)節)(1) 職責分工明晰、合理職責分工明晰、合理(2) 依賴關系局部化、簡單化依賴關系局部化、

42、簡單化(3) Model可復用可復用(4) View可替換可替換大部分大部分Web應用軟件應用軟件智能問題求解智能問題求解 黑板黑板(1) 知識源和控制構件可復用、可替換知識源和控制構件可復用、可替換(2) 較好的容錯性和健壯性較好的容錯性和健壯性(3) 不能確保獲得最優解不能確保獲得最優解(4) 性能較低、有時甚至無法預測求解時間性能較低、有時甚至無法預測求解時間沒有已知算法的復雜問沒有已知算法的復雜問題求解軟件題求解軟件QQ:46203128980例例7.2 建立體系結構雛形建立體系結構雛形n對家庭保安系統,可選用分層模式l針對系統需求和運行環境,對圖7.9所示的體系結構進行了具體化和適應

43、性改造,見圖7.12l第1層(最外層)負責顯示用戶界面l第2層(中間層)負責核心業務邏輯處理l第3層(最內層)專門負責與外部物理設備進行交互QQ:46203128981圖圖7.12 家庭保安系統的體系結構雛形家庭保安系統的體系結構雛形2022-4-1981QQ:46203128982大綱7.1 軟件體系結構的概念軟件體系結構的概念7.2 體系結構的表示體系結構的表示 包圖、構件圖、部署圖、對象圖包圖、構件圖、部署圖、對象圖7.3 體系結構設計的過程體系結構設計的過程7.4 體系結構設計模式體系結構設計模式7.5 概念設計概念設計7.6 體系結構精化體系結構精化7.7 基于構件的體系結構基于構件

44、的體系結構7.8 體系結構驗證體系結構驗證QQ:462031289837.6 體系結構精化體系結構精化n主要目標l將概念體系結構精化成為全面的、設計適度的軟件體系結構n主要工作l圍繞邏輯、運行、數據、物理、開發五種視圖的精化或創立展開l重點是邏輯視圖的精化QQ:462031289847.6.1 邏輯視圖體系結構的精化邏輯視圖體系結構的精化n概念體系結構與精化的體系結構的區別:l精化體系結構必須有明確的接口定義u而概念體系結構中的模塊僅代表邏輯職責l精化體系結構必須受到多方面的約束u包括可用的設計資產(如開源構件、開源框架)、技術支撐設施、分布部署、開發技能等因素u而概念體系結構中的模塊劃分主要

45、是職責的邏輯分組l更重要的是,精化的體系結構必須具備設計充分性u最終的邏輯體系結構不僅要支持關鍵需求項,還應該比較完整地支持其他需求項的實現u應該合理復用現有的軟件資產u應該為詳細設計和編程實現提供足夠的指導和充分的約束QQ:46203128985邏輯視圖體系結構的精化過程邏輯視圖體系結構的精化過程n搜索并選取可用的設計資產;n設計技術支撐設施;n確立設計元素;n整合設計元素。n對于大中型軟件項目而言,非關鍵需求項可以逐次引入,即,這些設計活動可以迭代地進行QQ:46203128986(一)搜索并選取可用的設計資產(一)搜索并選取可用的設計資產n“可用”的設計資產:指在當前項目中直接可供復用或

46、借鑒的設計資產。包括:現成的軟件系統或子系統,開發機構自身積累的構件庫、服務庫,業界廣泛采用的類庫、中間件或框架,以及Internet上開源的軟件資產。n如,針對課程注冊管理系統,可以直接借用現成的學籍管理系統和教師信息管理系統來實現對用戶身份的認證,借用現成的計費系統來確定學生應繳的選課費用。2022-4-1986QQ:46203128987搜索并選取可用的設計資產搜索并選取可用的設計資產n對于必須與當前軟件系統交互的可復用設計資產,必須清晰地定義它們與當前軟件系統之間的交互接口,包括數據交換的格式、互操作協議等。n對于雖不能直接使用,但具有復用潛力的設計資產,應考慮采用接口重構、適配器等方

47、法將其引入到當前體系結構之中。l接口重構指,調整當前體系結構中面向可復用設計資產的調用接口,使之與其提供的服務接口相匹配。n在決定引入供復用的設計資產之后,應對當前的邏輯體系結構進行相應的調整和精化。2022-4-1987QQ:46203128988搜索并選取可用的設計資產搜索并選取可用的設計資產n在7.5.2節所述的針對UML包圖的擴充的基礎上,進一步添加以下擴充: 允許在包圖中出現構件、類和接口,允許在包圖中表示子系統和構件的服務接口,采用構造型 、 依次標示(內部)子系統、外部子系統和外部構件,見圖7.13。2022-4-1988QQ:46203128989圖圖7.13 可復用的設計資產

48、與可復用的設計資產與軟件體系結構的整合軟件體系結構的整合2022-4-1989QQ:46203128990例例7.3 搜索并選取可用的設計資產搜索并選取可用的設計資產n對家庭保安系統,設可供復用的設計資產有視頻監控構件、電話撥號構件、文本朗讀構件(text-to-speech)。n前者基于視頻判斷是否有移動的物體,后者將文本轉換成為語音。n假設這三個構件提供的對外接口依次是: MovingObjectMonitor: void openMonitor(VideoStream stream, int nSensitivity, MovingObjectNotifier notifier); vo

49、id closeMonitor();2022-4-1990QQ:46203128991例例7.3 搜索并選取可用的設計資產(續搜索并選取可用的設計資產(續1) TelephoneDialer: void dial(ENUM_Port ePort, String strTelNo, int nMaxRedialNum, TelephoneNotifier notifier); void hangUp();void playVoice(SoundStream stream); TextToSpeech: SoundStream toSpeech(String strText);n函數openMon

50、itor的參數stream表示輸入的視頻流;n參數nSensitivity表示監控靈敏度(以百分數表示);n一旦發現移動物體,notifier對象將獲得通知。n函數dial的參數ePort表示用以發送撥號命令的端口;n參數strTelNo表示電話號碼;n參數nMaxRedialNum表示最大重撥次數;2022-4-1991QQ:46203128992例例7.3 搜索并選取可用的設計資產(續搜索并選取可用的設計資產(續2)n一旦電話接通或者撥號失敗,notifier對象將獲得通知。nMovingObjectNotifier接口包含以下函數:nvoid onMovingObjectDetected

51、(ENUM_Direction eDirection, float fSpeed);n參數eDirection表示物體的移動方向;n參數fSpeed表示物體的移動速度。nTelephoneNotifier接口包含以下函數:nvoid onTelephoneConnected();nvoid onDialFailed(int nErrorCode);n參數nErrorCode表示撥號失敗的原因碼2022-4-1992QQ:46203128993(二)設計技術支撐設施(二)設計技術支撐設施n體系結構師必須研究公共的基礎性軟件技術問題,設計技術支撐設施。u如,對企業應用軟件(包括電子商務應用、企業管

52、理信息系統等),需要數據持久存儲服務、安全控制服務等。2022-4-1993QQ:46203128994(1)數據持久存儲服務)數據持久存儲服務n數據持久存儲:是指在目標軟件系統結束一次運行之后,其產生的部分數據能夠留存于系統的存儲介質中,以供本軟件下次運行時使用,或者供其他軟件系統使用。n數據持久存儲服務的功能包括數據的持久存儲、查詢(選擇性讀取)、更新、刪除等。n設置數據持久存儲服務的目的:將目標軟件系統中依賴于系統運行環境的數據存取部分與其他部分相分離。2022-4-1994QQ:46203128995數據持久存儲服務數據持久存儲服務n數據存取通過一般的數據管理系統(如文件系統、關系數據

53、庫或面向對象數據庫)實現n實現細節因數據存儲介質的種類而異n這些細節被集中在數據持久存儲服務中,系統的其他部分只需訪問數據持久服務即可,與存儲介質的種類、數據在介質中的組織方式、數據存儲的實現方法無關。2022-4-1995QQ:46203128996數據持久存儲服務數據持久存儲服務n原因:一旦存儲介質發生變化或者存儲格式發生變化,僅修改數據持久存儲服務即可適應這些變化,目標軟件系統的其余部分不需修改。l如,從文件系統改變為關系數據庫,從一種數據庫改為另一種數據庫,數據庫表格結構變化等,n優點:設置相對獨立的數據持久存儲服務簡化了后續的軟件設計、編碼和測試的過程,有利于軟件的擴充、移植和維護。

54、n作法:一般將數據持久存儲服務實現為一個構件,接口定義通常包括基本的、通用的數據持久操作,如存儲、查詢、更新、刪除等,見例7.42022-4-1996QQ:46203128997數據持久存儲服務數據持久存儲服務n如果希望該服務承擔的職責非常多,也可以考慮將其實現為一個子系統,其典型結構如圖7.14所示。n該子系統通常包含一個通用構件,利用它為若干面向不同業務數據的持久存儲服務構件提供基礎性的數據持久服務。圖7.14 數據持久存儲服務子系統子系統的結構2022-4-1997QQ:46203128998例例7.4 設計數據持久存儲服務設計數據持久存儲服務n對家庭保安系統,本例決定在體系結構中設置專

55、門負責提供數據持久服務的構件 “Data Service”,如圖7.15所示。該構件的接口函數依次為: openConnection:與數據源建立邏輯連接 closeConnection:關閉與數據源間的邏輯連接 insert:執行SQL插入語句n如果存在與數據源之間的邏輯連接,則直接使用此連接執行SQL插入語句;n否則,使用 openConnection 創建連接,在此連接上執行SQL插入語句,執行后再用 closeConnection 關閉連接。2022-4-1998QQ:46203128999設計數據持久存儲服務設計數據持久存儲服務n下面三個接口函數的工作模式與此相似。 update:執

56、行SQL更新語句 delete:執行SQL刪除語句 query:執行SQL查詢語句2022-4-1999QQ:462031289100圖7.15 數據持久存儲服務及其與軟件體系結構的整合2022-4-19100QQ:462031289101(2)安全控制服務)安全控制服務n設置安全控制服務的目的:是將目標軟件系統中有關安全控制的功能集中起來,以便統一管理安全策略,提高安全策略的可配置性。n安全控制服務包含用戶身份認證和授權控制兩種功能,前者驗證用戶是否具有合法身份,后者判斷用戶在請求某種類型的服務時是否具有相應的權限。2022-4-19101QQ:462031289102例例7.5 設計安全控

57、制服務設計安全控制服務n如圖7.16所示,家庭保安系統中核心層的軟件元素在接獲用戶命令后,首先由安全控制服務構件“Security Service”驗證用戶的身份,在驗證通過后才調用核心層中的業務邏輯處理功能。n“Security Service”的接口僅包含verifyUserIdentity函數,它負責驗證用戶輸入的密碼是否正確。2022-4-19102QQ:462031289103圖圖7.16 安全控制服務安全控制服務及其與及其與軟件體系結構軟件體系結構的整合的整合2022-4-19103QQ:462031289104(三)確立設計元素(三)確立設計元素n設計元素包括子系統、構件、設計類

58、。n目的:本活動以概念體系結構中的模塊(職責)為基礎,以軟件需求的實現為目標,探索如何將概念模塊組織為設計元素。進一步研究這些設計元素的職責劃分和協同工作。n注意:確定設計元素的接口和相互協作關系,不需要給出設計元素的內部結構和實現途徑,此項工作留給子系統設計、構件設計和類設計再進行。2022-4-19104QQ:462031289105(1)確定子系統及其接口)確定子系統及其接口確定子系統的基本方法有:n對用例按照業務上的相關性或相似性進行分組,每組用例歸為一個子系統,參與這些用例實現的分析類的職責綜合成為此子系統的職責n研究軟件需求的分析模型中基于分析類的用例實現途徑(如,交互圖),將具有

59、相關或相似的業務處理職責的控制類歸為一個子系統,或將所有這些控制類的職責歸并后按照業務上的某種相關性或相似性進行分組,每組職責歸為一個子系統。n將分析模型中的實體類分組,每組屬于一個子系統,這些子系統負責對其中的實體類實施管理和控制。2022-4-19105QQ:462031289106確定子系統及其接口確定子系統及其接口n在分析模型中,如果參與用例實現的執行者是外部設備或外部軟件系統,那么它對應的設計元素應該是子系統。p職責可能包括向目標軟件系統提供信息,以及響應來自目標軟件系統的消息。p這些職責應該體現在子系統的接口定義中。p針對這種子系統只需定義其面向目標軟件系統的接口,勿需在后續的設計

60、過程中精化出子系統內部的構件或類,因為當前軟件項目并不關心這種子系統的具體實現,只要通過接口與它們交互即可。2022-4-19106QQ:462031289107例例7.6 確定子系統及其接口確定子系統及其接口n針對家庭保安系統,首先研究其用例模型(見例4-9p114)和分析模型(見例5-10p151),發現其業務邏輯功能可歸納為傳感器監測、配置管理和日志管理。n假設希望日志管理功能未來可被復用,所以僅針對前兩種功能設置子系統,而將最后一種功能封裝成構件(見例7.13)。n傳感器監測子系統的職責主要來源于“開關機及復位處理” 用例、“傳感器監測”用例及其擴展用例“報警電話未接通”。n為了完成這

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論