版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、馮元勇QQ: 462031289手機(jī):州大學(xué)計算機(jī)科學(xué)與教育軟件學(xué)院QQ:4620312892課前思考課前思考n一級標(biāo)題大?。?8,文字大?。?4l二級文字大?。?4u最多三級,所有文字不得小于:20u成句時應(yīng)應(yīng)有句號等結(jié)束符u不成名時不帶句結(jié)束符QQ:4620312893大綱7.1 軟件體系結(jié)構(gòu)的概念軟件體系結(jié)構(gòu)的概念7.2 體系結(jié)構(gòu)的表示體系結(jié)構(gòu)的表示 包圖、構(gòu)件圖、部署圖、對象圖包圖、構(gòu)件圖、部署圖、對象圖7.3 體系結(jié)構(gòu)設(shè)計的過程體系結(jié)構(gòu)設(shè)計的過程7.4 體系結(jié)構(gòu)設(shè)計模式體系結(jié)構(gòu)設(shè)計模式7.5 概念設(shè)計概念設(shè)計7.6 體系結(jié)構(gòu)精化體系結(jié)構(gòu)精化7.7 基于構(gòu)件的
2、體系結(jié)構(gòu)基于構(gòu)件的體系結(jié)構(gòu)7.8 體系結(jié)構(gòu)驗證體系結(jié)構(gòu)驗證QQ:4620312894軟件體系結(jié)構(gòu)的定義軟件體系結(jié)構(gòu)的定義n軟件體系結(jié)構(gòu)(architecture,也稱“架構(gòu)”)從高層抽象的角度刻畫組成目標(biāo)軟件系統(tǒng)的設(shè)計元素(包括子系統(tǒng)、構(gòu)件及類)以及它們之間的邏輯關(guān)聯(lián)。QQ:46203128952022-3-245QQ:4620312896體系結(jié)構(gòu)設(shè)計的任務(wù)體系結(jié)構(gòu)設(shè)計的任務(wù)n建立滿足軟件需求的軟件體系結(jié)構(gòu)l既要明確定義軟件各子系統(tǒng)、構(gòu)件、關(guān)鍵類的職責(zé)職責(zé)劃分劃分及協(xié)作關(guān)系,也要描繪它們在物理運(yùn)行環(huán)境下的部署模型l還必須針對軟件系統(tǒng)全局性、基礎(chǔ)性全局性、基礎(chǔ)性的技術(shù)問題給出技術(shù)解決方案,這種方
3、案構(gòu)成目標(biāo)軟件系統(tǒng)的技術(shù)基礎(chǔ)設(shè)施2022-3-247可信計算終端系統(tǒng)平臺安全體系結(jié)構(gòu)可信計算終端系統(tǒng)平臺安全體系結(jié)構(gòu)QQ:4620312898體系結(jié)構(gòu)的重要性體系結(jié)構(gòu)的重要性n軟件規(guī)模日益龐大復(fù)雜、交付時間日益緊迫、詳細(xì)設(shè)計和軟件實現(xiàn)技術(shù)日益成熟,體系結(jié)構(gòu)設(shè)計已經(jīng)成為軟件質(zhì)量的瓶頸。n與詳細(xì)設(shè)計相比,體系結(jié)構(gòu)設(shè)計對性能、靈活性、可修改性、可擴(kuò)充性等質(zhì)量需求的影響是全局性的、決定性的。n一旦啟動基于體系結(jié)構(gòu)的詳細(xì)設(shè)計,對體系結(jié)構(gòu)進(jìn)行調(diào)優(yōu)的代價將遠(yuǎn)大于算法調(diào)優(yōu)的代價。QQ:4620312899本章試圖回答的問題本章試圖回答的問題n如何合理劃分模塊?n如何確保體系結(jié)構(gòu)滿足軟件需求?l在大型軟件項目中
4、,需求如此之多,如何基于需求推導(dǎo)體系結(jié)構(gòu),如何確保體系結(jié)構(gòu)滿足軟件需求,尤其是非功能需求?n軟件體系結(jié)構(gòu)設(shè)計的過程及方法學(xué)有哪些?QQ:462031289107.1 軟件體系結(jié)構(gòu)的概念軟件體系結(jié)構(gòu)的概念n本節(jié)介紹:n什么是軟件體系結(jié)構(gòu)n體系結(jié)構(gòu)與需求n體系結(jié)構(gòu)設(shè)計與詳細(xì)設(shè)計的關(guān)系n從多種視角探討軟件體系結(jié)構(gòu)的不同表現(xiàn)形式QQ:462031289117.1.1 何謂體系結(jié)構(gòu)何謂體系結(jié)構(gòu)n軟件體系結(jié)構(gòu)包括三大要素:l組件(component)l連接件(connector)l約束(constraints)n連接件表示組件之間的連接和交互關(guān)系n約束表示組件中的元素應(yīng)滿足的條件,以及組件經(jīng)由連接件組裝成
5、更大模塊時應(yīng)滿足的條件。QQ:46203128912圖圖7.12 家庭保安系統(tǒng)的體系結(jié)構(gòu)雛形家庭保安系統(tǒng)的體系結(jié)構(gòu)雛形QQ:46203128913軟件體系結(jié)構(gòu)舉例:家庭保安系統(tǒng)軟件體系結(jié)構(gòu)舉例:家庭保安系統(tǒng)n組件l劃分為界面、核心和物理設(shè)備接口三個層次l核心層(業(yè)務(wù)邏輯層)u負(fù)責(zé)存儲所有業(yè)務(wù)數(shù)據(jù)并提供業(yè)務(wù)邏輯處理功能l界面層u負(fù)責(zé)向用戶呈現(xiàn)家庭保安系統(tǒng)的操作界面,接收用戶的界面輸入并將其轉(zhuǎn)換為內(nèi)部事件傳遞給核心層l物理設(shè)備接口層u應(yīng)核心層的要求向傳感器、報警器、報警電話等物理設(shè)備發(fā)送必要的控制指令,也負(fù)責(zé)接收來自傳感器的監(jiān)測數(shù)據(jù)QQ:46203128914軟件體系結(jié)構(gòu)舉例:家庭保安系統(tǒng)軟件體系
6、結(jié)構(gòu)舉例:家庭保安系統(tǒng)n約束l位于較高層次的軟件元素可以向低層元素發(fā)出服務(wù)請求,低層元素完成計算后向高層元素發(fā)送服務(wù)應(yīng)答,反之不行;l每個軟件元素根據(jù)其職責(zé)位于最恰當(dāng)?shù)囊粋€層次當(dāng)中,不可錯置(如,核心層不能包含界面呈現(xiàn)和界面輸入接收職責(zé),也不能直接與物理設(shè)備交互);l每個層次都可替換。即,一個層次可以被能實現(xiàn)同樣對外服務(wù)接口的層次所替代。QQ:46203128915體系結(jié)構(gòu)與軟件需求的關(guān)系體系結(jié)構(gòu)與軟件需求的關(guān)系n軟件需求是體系結(jié)構(gòu)的基礎(chǔ)和導(dǎo)引l體系結(jié)構(gòu)是以軟件需求的實現(xiàn)為目標(biāo)的軟件設(shè)計藍(lán)圖,軟件需求是體系結(jié)構(gòu)設(shè)計的基礎(chǔ)和驅(qū)動因素。l軟件需求,尤其是非功能需求,對軟件體系結(jié)構(gòu)具有關(guān)鍵性的塑形作
7、用。QQ:46203128916體系結(jié)構(gòu)設(shè)計與詳細(xì)設(shè)計的關(guān)系體系結(jié)構(gòu)設(shè)計與詳細(xì)設(shè)計的關(guān)系n詳細(xì)設(shè)計是體系結(jié)構(gòu)的實現(xiàn)l詳細(xì)設(shè)計是針對軟件體系結(jié)構(gòu)中某個未展開模塊的局部設(shè)計,必須遵循體系結(jié)構(gòu)中規(guī)定的原則、接口及約束l詳細(xì)設(shè)計只能實現(xiàn)、不能更改體系結(jié)構(gòu)中規(guī)定的模塊的對外接口和外部行為;l軟件體系結(jié)構(gòu)必須為詳細(xì)設(shè)計提供可操作的指導(dǎo)和充分的約束。QQ:462031289177.1.2 體系結(jié)構(gòu)視圖體系結(jié)構(gòu)視圖完整的軟件體系結(jié)構(gòu)應(yīng)該包含以下視圖:n邏輯視圖n開發(fā)視圖n物理視圖n運(yùn)行視圖n數(shù)據(jù)視圖QQ:462031289187.1.2 體系結(jié)構(gòu)視圖體系結(jié)構(gòu)視圖完整的軟件體系結(jié)構(gòu)應(yīng)該包含以下視圖:n邏輯視圖n
8、開發(fā)視圖n物理視圖n運(yùn)行視圖n數(shù)據(jù)視圖表述體系結(jié)構(gòu)中各軟件模塊的邏輯功能劃分(或曰職責(zé)分派),以及基于這種劃分的協(xié)作行為。邏輯視圖的示例見前文中的圖7.12。QQ:462031289197.1.2 體系結(jié)構(gòu)視圖體系結(jié)構(gòu)視圖完整的軟件體系結(jié)構(gòu)應(yīng)該包含以下視圖:n邏輯視圖n開發(fā)視圖n物理視圖n運(yùn)行視圖n數(shù)據(jù)視圖表述軟件源代碼的程序分包及目錄結(jié)構(gòu),采用的類庫、中間件或框架(framework),以及它們與邏輯視圖中各模塊之間的映射關(guān)系。開發(fā)視圖的示例見后文中的圖7.19。QQ:462031289207.1.2 體系結(jié)構(gòu)視圖體系結(jié)構(gòu)視圖完整的軟件體系結(jié)構(gòu)應(yīng)該包含以下視圖:n邏輯視圖n開發(fā)視圖n物理視圖
9、n運(yùn)行視圖n數(shù)據(jù)視圖表述系統(tǒng)中安裝部署的物理機(jī)器及其網(wǎng)絡(luò)連接,邏輯視圖及開發(fā)視圖中模塊或程序包的物理部署位置。開發(fā)視圖的示例見后文中的圖7.20。QQ:462031289217.1.2 體系結(jié)構(gòu)視圖體系結(jié)構(gòu)視圖完整的軟件體系結(jié)構(gòu)應(yīng)該包含以下視圖:n邏輯視圖n開發(fā)視圖n物理視圖n運(yùn)行視圖n數(shù)據(jù)視圖軟件運(yùn)行時進(jìn)程、線程的劃分,它們之間的并發(fā)與同步,瞬時快照(軟件運(yùn)行過程中某個特定時刻活躍的對象及其協(xié)作關(guān)系),以及它們與邏輯視圖和開發(fā)視圖之間的映射關(guān)系。QQ:462031289227.1.2 體系結(jié)構(gòu)視圖體系結(jié)構(gòu)視圖完整的軟件體系結(jié)構(gòu)應(yīng)該包含以下視圖:n邏輯視圖n開發(fā)視圖n物理視圖n運(yùn)行視圖n數(shù)據(jù)視
10、圖持久數(shù)據(jù)的存儲方案,數(shù)據(jù)傳遞、備份、恢復(fù)、同步方案,與物理視圖之間的映射關(guān)系。QQ:46203128923大綱7.1 軟件體系結(jié)構(gòu)的概念軟件體系結(jié)構(gòu)的概念7.2 體系結(jié)構(gòu)的表示體系結(jié)構(gòu)的表示 包圖、構(gòu)件圖、部署圖、對象圖包圖、構(gòu)件圖、部署圖、對象圖7.3 體系結(jié)構(gòu)設(shè)計的過程體系結(jié)構(gòu)設(shè)計的過程7.4 體系結(jié)構(gòu)設(shè)計模式體系結(jié)構(gòu)設(shè)計模式7.5 概念設(shè)計概念設(shè)計7.6 體系結(jié)構(gòu)精化體系結(jié)構(gòu)精化7.7 基于構(gòu)件的體系結(jié)構(gòu)基于構(gòu)件的體系結(jié)構(gòu)7.8 體系結(jié)構(gòu)驗證體系結(jié)構(gòu)驗證QQ:462031289247.2 體系結(jié)構(gòu)的表示體系結(jié)構(gòu)的表示n邏輯視圖l主要為包圖和構(gòu)件圖,有時還輔以類圖n開發(fā)視圖l可能會用到包
11、圖n物理視圖l顯然應(yīng)表示為部署圖n運(yùn)行視圖l因為涉及到并發(fā)、同步以及軟件運(yùn)行過程中的瞬時快照,所以它應(yīng)表示為活動圖與對象圖n數(shù)據(jù)視圖l一般表示為類圖或者實體-關(guān)系圖QQ:462031289257.2.1 包圖包圖n包l刻畫了包之間的構(gòu)成和依賴關(guān)系。l可以包含一組具有邏輯關(guān)聯(lián)的UML模型元素(例如用例、類等)、模型圖(例如用例圖、類圖、交互圖、狀態(tài)圖、活動圖等),以及其他的包。l包是配置管理的基本單元,同時也為訪問控制提供基本手段。QQ:462031289267.2.1 包圖包圖n作用l在整個軟件開發(fā)過程中在整個軟件開發(fā)過程中,包圖用于以結(jié)構(gòu)化、層次化的方式組織、管理大型軟件模型,使得分別處理不
12、同包的開發(fā)團(tuán)隊之間相互干擾程度降至最低:u在業(yè)務(wù)分析和需求定義階段包圖可用于刻畫業(yè)務(wù)系統(tǒng)和用戶需求的結(jié)構(gòu)u在設(shè)計和實現(xiàn)階段包圖可用于描述軟件系統(tǒng)的高層結(jié)構(gòu)QQ:462031289272022-3-24圖圖7.19 包圖示例包圖示例QQ:46203128928包圖的布局規(guī)則包圖的布局規(guī)則n類包圖l采用垂直分層布局,即,沿垂直方向繪制依賴關(guān)系邊,位于同一層次的包水平對齊,最面向用戶的包位于頂層,面向系統(tǒng)內(nèi)部后臺處理的包位于底層。n用例包圖l采用水平布局,主動執(zhí)行者、被動執(zhí)行者分置于圖的左、右兩側(cè)。QQ:46203128929包的劃分規(guī)則包的劃分規(guī)則n類包圖l在同一繼承結(jié)構(gòu)中出現(xiàn)的類應(yīng)位于同一包;l
13、存在聚合或組合關(guān)系的類應(yīng)位于同一包;l相互間密切協(xié)作的類應(yīng)位于同一包。n用例包圖l相互關(guān)聯(lián)的用例(擴(kuò)展用例與被擴(kuò)展用例,包含用例與被包含用例、泛化用例與特化用例)應(yīng)位于同一包;l同類執(zhí)行者使用的用例應(yīng)盡量位于同一包。QQ:462031289307.2.2 構(gòu)件圖構(gòu)件圖n構(gòu)件l是可分離的物理模塊,具有精確定義的對外接口,外界只能通過接口來訪問它QQ:462031289317.2.2 構(gòu)件圖構(gòu)件圖n構(gòu)件的特點(diǎn)l構(gòu)件是可分離的l構(gòu)件是可替換的l構(gòu)件是可配置的u部署至運(yùn)行環(huán)境之后,外界可以通過配置機(jī)制修改構(gòu)件的配置數(shù)據(jù),影響構(gòu)件的對外服務(wù)的功能或行為l構(gòu)件一般具有較好的可復(fù)用潛力u可不經(jīng)源代碼修改可不
14、經(jīng)源代碼修改,即可應(yīng)用于多個軟件項目或軟件產(chǎn)品u這是因為構(gòu)件可通過配置信息來適應(yīng)不同的應(yīng)用場景u同時也因為構(gòu)件創(chuàng)立時便考慮了不同應(yīng)用場景下的復(fù)用圖7.2 某個軟件系統(tǒng)中主要構(gòu)件之間關(guān)系的構(gòu)件圖 圖7.3 其中Customer構(gòu)件的內(nèi)部結(jié)構(gòu)圖2022-3-2432QQ:46203128933(一)(一) 構(gòu)件及其表示構(gòu)件及其表示n接口l是一組操作 和/或 屬性的說明(不含操作的實現(xiàn)),用作服務(wù)提供方和使用方之間的協(xié)議。l由類或構(gòu)件實現(xiàn)。l構(gòu)件最關(guān)鍵的特征通過接口體現(xiàn),包括u對外提供的供給接口供給接口(provided interface),u請求其他類、構(gòu)件或軟件模塊提供幫助時使用的需求接口需求
15、接口(required interface)。QQ:46203128934(一)(一) 構(gòu)件及其表示構(gòu)件及其表示n通過接口實現(xiàn)信息隱藏l構(gòu)件的實現(xiàn)者可以自由選擇實現(xiàn)方法,只要它完整地實現(xiàn)了供給接口中規(guī)定的操作及屬性即可l其他軟件模塊對它的訪問必須通過它的供給接口來進(jìn)行l(wèi)構(gòu)件的使用者只需要了解其供給接口,構(gòu)件的服務(wù)提供者只需要了解其需求接口,決不需要了解構(gòu)件的內(nèi)部實現(xiàn)l只要構(gòu)件的兩種實現(xiàn)遵循相同的接口定義,那么它們就一定是可自由替換的QQ:46203128935(一)(一) 構(gòu)件及其表示構(gòu)件及其表示n端口l構(gòu)件還可以定義一些端口,每個端口綁定了一組一組供給接口和/或需求接口l對于具有端口的構(gòu)件,
16、它通過端口與外部世界交互通過端口與外部世界交互u當(dāng)外部請求到達(dá)端口時,構(gòu)件的端口知道如何將外部請求路由至合適的接口的實現(xiàn)體u當(dāng)構(gòu)件通過端口請求外部服務(wù)時,端口也知道如何分辨該請求所對應(yīng)的需求接口l針對構(gòu)件的每個接口和端口,可以通過自然語言描述、用例圖或狀態(tài)圖來定義其使用方法QQ:46203128936圖圖7.4 構(gòu)件的表示圖元構(gòu)件的表示圖元(a)最簡化的三種圖元 (隱藏接口部分)(b)構(gòu)件及其接口的兩種表示方法2022-3-2436(c)構(gòu)件端口的表示方法QQ:46203128937(二)構(gòu)件圖(二)構(gòu)件圖n構(gòu)件圖的結(jié)點(diǎn):構(gòu)件、類和包n構(gòu)件圖的邊:與普通類圖的邊沒有嚴(yán)格區(qū)分n構(gòu)件圖的關(guān)系:構(gòu)件
17、、類和包之間的依賴關(guān)系,偶爾也可以出現(xiàn)繼承關(guān)系和實現(xiàn)關(guān)系n構(gòu)件間依賴關(guān)系的實現(xiàn):l可以直接搭建于這兩個構(gòu)件之間l也可以搭建于一個構(gòu)件與另一構(gòu)件的供給接口之間l還可以描述成一個構(gòu)件的需求接口與另一構(gòu)件的供給接口之間的依賴關(guān)系,見圖7.2。QQ:46203128938(三)(三) 構(gòu)件定義圖構(gòu)件定義圖n描述一個構(gòu)件的內(nèi)部結(jié)構(gòu)。l它可以包含多個子構(gòu)件,每個子構(gòu)件的需求接口u要么由另一子構(gòu)件的供給接口負(fù)責(zé)實現(xiàn)u要么經(jīng)由父構(gòu)件的需求接口請求外部支援u示例見圖7.3l一個子構(gòu)件的供給接口對另一子構(gòu)件的需求接口的實現(xiàn)通過兩種圖元之間的銜接來表示。l在構(gòu)件定義圖中,父構(gòu)件的端口與其外部接口之間的無向邊表示端口
18、是由哪些接口構(gòu)成的。QQ:46203128939(三)(三) 構(gòu)件定義圖構(gòu)件定義圖n委托連接器l指子構(gòu)件端口與父構(gòu)件端口之間的有向邊有向邊l當(dāng)子構(gòu)件未定義端口時,委托連接器表現(xiàn)為子構(gòu)件的圖元與父構(gòu)件端口之間的有向邊l委托連接器指明了構(gòu)件與外部世界之間的交互信息如何經(jīng)由父構(gòu)件的端口到達(dá)內(nèi)部子構(gòu)件的接口或端口,也指明了內(nèi)部子構(gòu)件的服務(wù)請求如何經(jīng)由父構(gòu)件的端口到達(dá)外部世界中的服務(wù)提供方。QQ:462031289407.2.3 部署圖部署圖n部署圖l表示軟件系統(tǒng)的可執(zhí)行工件(artifact)在運(yùn)行環(huán)境中的分布情況l工件是指軟件系統(tǒng)中相對獨(dú)立的物理實現(xiàn)單元,例如Windows平臺下的動態(tài)鏈接庫(DLL
19、)文件、Java系統(tǒng)中的類庫(jar)文件n部署圖的作用l為軟件配置管理工程師確定軟件發(fā)布版本的封包方法提供依據(jù)l是軟件安裝、維護(hù)工程師了解系統(tǒng)部署狀況的主要信息源l也是軟件設(shè)計、實現(xiàn)人員理解軟件運(yùn)行環(huán)境、確定軟構(gòu)件劃分的重要參考QQ:46203128941兩種部署圖兩種部署圖n描述性部署圖l描述軟件的邏輯布局l示例見圖7.5 描述性部署圖示例n實例性部署圖l在描述性部署圖的基礎(chǔ)上針對具體的運(yùn)行環(huán)境和特定的系統(tǒng)配置描述軟件系統(tǒng)的物理部署情況l示例見圖7.6 實例性部署圖示例QQ:462031289422022-3-2442圖圖7.5 描述性部署圖示例描述性部署圖示例QQ:46203128943
20、2022-3-2443圖圖7.6 實例性部署圖示例實例性部署圖示例QQ:46203128944(一)(一) 描述性部署圖描述性部署圖n描述性部署圖的四種結(jié)點(diǎn)l計算資源(結(jié)點(diǎn))u軟件運(yùn)行環(huán)境中的一組計算資源u如,客戶端計算機(jī)、Web服務(wù)器、應(yīng)用服務(wù)器u軟件工件駐留其中,依賴基礎(chǔ)服務(wù)來實現(xiàn)工件的功能l工件u以構(gòu)造型標(biāo)識l構(gòu)件u不需要將所有的構(gòu)件引入至部署圖,僅顯示相關(guān)的、重要的構(gòu)件即可l用例執(zhí)行者u意在強(qiáng)調(diào)執(zhí)行者與工件之間的使用關(guān)系及信息交互QQ:46203128945(一)(一) 描述性部署圖描述性部署圖n描述性部署圖的四種邊l結(jié)點(diǎn)之間的通信關(guān)聯(lián)u表示兩個結(jié)點(diǎn)間的通信連接u可以在通信關(guān)聯(lián)邊上以構(gòu)
21、造型說明通信協(xié)議及其他約束,還可以標(biāo)注結(jié)點(diǎn)之間的數(shù)量對應(yīng)關(guān)系l工件之間的依賴關(guān)系u如果工件定義了對外接口,那么軟件設(shè)計人員應(yīng)確保工件之間的依賴關(guān)系表現(xiàn)為工件接口上的依賴關(guān)系l工件與構(gòu)件之間的依賴關(guān)系u表示工件具體實現(xiàn)了構(gòu)件u在該依賴關(guān)系之上需標(biāo)注構(gòu)造型l用例執(zhí)行者與工件之間的依賴關(guān)系u表示執(zhí)行者使用工件提供的服務(wù)(從執(zhí)行者指向工件)u或工件使用執(zhí)行者提供的服務(wù)(從工件指向執(zhí)行者)QQ:46203128946(二)(二) 實例性部署圖實例性部署圖n實例性部署圖與描述性部署圖之間的關(guān)系可類比為對象圖與類圖之間的關(guān)系。n在實例性部署圖中結(jié)點(diǎn)的命名方式為n “結(jié)點(diǎn)名: 類型名”n 其中類型名為描述性部
22、署圖中的結(jié)點(diǎn)名。n如果實例性部署圖中的結(jié)點(diǎn)包含了描述性部署相應(yīng)結(jié)點(diǎn)中的所有工件,則不必在該結(jié)點(diǎn)中再列舉這些工件。n實例性部署圖的結(jié)點(diǎn)還可包含對工件的具體配置信息的描述,見圖7.6中的結(jié)點(diǎn)“customerDeploy.xml”。QQ:462031289477.2.4 對象圖對象圖n對象圖是軟件系統(tǒng)中某些對象在運(yùn)行過程中的瞬時快照QQ:46203128948大綱7.1 軟件體系結(jié)構(gòu)的概念軟件體系結(jié)構(gòu)的概念7.2 體系結(jié)構(gòu)的表示體系結(jié)構(gòu)的表示 包圖、構(gòu)件圖、部署圖、對象圖包圖、構(gòu)件圖、部署圖、對象圖7.3 體系結(jié)構(gòu)設(shè)計的過程體系結(jié)構(gòu)設(shè)計的過程7.4 體系結(jié)構(gòu)設(shè)計模式體系結(jié)構(gòu)設(shè)計模式7.5 概念設(shè)計
23、概念設(shè)計7.6 體系結(jié)構(gòu)精化體系結(jié)構(gòu)精化7.7 基于構(gòu)件的體系結(jié)構(gòu)基于構(gòu)件的體系結(jié)構(gòu)7.8 體系結(jié)構(gòu)驗證體系結(jié)構(gòu)驗證QQ:462031289497.3 體系結(jié)構(gòu)設(shè)計的過程模型體系結(jié)構(gòu)設(shè)計的過程模型n任務(wù)l建立高層結(jié)構(gòu),確定u所有重要模塊重要模塊u模塊職責(zé)劃分及協(xié)作關(guān)系職責(zé)劃分及協(xié)作關(guān)系n目標(biāo)l具有優(yōu)良的性能u包括正確性、可擴(kuò)展性、可伸縮性、可行性等方面QQ:46203128950體系結(jié)構(gòu)設(shè)計的過程模型體系結(jié)構(gòu)設(shè)計的過程模型分為兩個階段n初步設(shè)計l僅針對軟件需求模型中的部分關(guān)鍵需求項部分關(guān)鍵需求項來構(gòu)思體系結(jié)構(gòu)的雛形l關(guān)鍵需求項是指對用戶滿意度及軟件結(jié)構(gòu)均有重要影響的需求項l“20-80規(guī)則”
24、:20%的關(guān)鍵需求項決定80%的體系結(jié)構(gòu)形態(tài)n精化l全面地考慮全面地考慮所有的軟件需求項、豐富體系結(jié)構(gòu)雛形的細(xì)節(jié)并且對其進(jìn)行調(diào)優(yōu)QQ:46203128951體系結(jié)構(gòu)設(shè)計過程的主要活動體系結(jié)構(gòu)設(shè)計過程的主要活動n概念設(shè)計l選擇一種體系結(jié)構(gòu),合理、充分優(yōu)化地實現(xiàn)關(guān)鍵需求n體系結(jié)構(gòu)精化l精化體系結(jié)構(gòu)u并用邏輯視圖表達(dá)u根據(jù)具體情況,還應(yīng)從開發(fā)視圖、運(yùn)行視圖、物理視圖、數(shù)據(jù)視圖等多視角描述l該過程也是需求導(dǎo)向的u應(yīng)合理、充分優(yōu)化的方式完整地實現(xiàn)軟件需求模型n體系結(jié)構(gòu)驗證l重新審視所有軟件需求項的實現(xiàn)方案,研究如何化解迄今標(biāo)識出來的所有重要的全局風(fēng)險,在此過程中驗證體系結(jié)構(gòu)的合理性和充分優(yōu)化性QQ:46
25、203128952圖圖7.8 體系結(jié)構(gòu)設(shè)計工作流體系結(jié)構(gòu)設(shè)計工作流n同樣地,大型軟件體系結(jié)構(gòu)可迭代設(shè)計:l驗證中發(fā)現(xiàn)的問題要返工返工u返至概念設(shè)計或精化階段l重要的需求項優(yōu)先設(shè)計u分別針對不同的需求項針對不同的需求項依次進(jìn)行概念設(shè)計、體系結(jié)構(gòu)精化和驗證,然后進(jìn)行體系結(jié)構(gòu)的集成QQ:46203128953大綱7.1 軟件體系結(jié)構(gòu)的概念軟件體系結(jié)構(gòu)的概念7.2 體系結(jié)構(gòu)的表示體系結(jié)構(gòu)的表示 包圖、構(gòu)件圖、部署圖、對象圖包圖、構(gòu)件圖、部署圖、對象圖7.3 體系結(jié)構(gòu)設(shè)計的過程體系結(jié)構(gòu)設(shè)計的過程7.4 體系結(jié)構(gòu)設(shè)計模式體系結(jié)構(gòu)設(shè)計模式7.5 概念設(shè)計概念設(shè)計7.6 體系結(jié)構(gòu)精化體系結(jié)構(gòu)精化7.7 基于構(gòu)
26、件的體系結(jié)構(gòu)基于構(gòu)件的體系結(jié)構(gòu)7.8 體系結(jié)構(gòu)驗證體系結(jié)構(gòu)驗證QQ:462031289547.4 體系結(jié)構(gòu)設(shè)計模式體系結(jié)構(gòu)設(shè)計模式7.4.1 何謂設(shè)計模式何謂設(shè)計模式n設(shè)計模式l以設(shè)計復(fù)用復(fù)用為目的,采用一種良好定義的、正規(guī)的、一致的方式記錄的軟件設(shè)計經(jīng)驗。l它是某種成熟的解決方案u每條模式關(guān)注在一般或特定設(shè)計環(huán)境中可能重復(fù)出現(xiàn)的設(shè)計問題,并給出經(jīng)過充分實踐考驗的軟件解決方案。n設(shè)計模式的意義和價值l以標(biāo)準(zhǔn)并且規(guī)范的方式記錄軟件設(shè)計經(jīng)驗,支持軟件設(shè)計級復(fù)用QQ:46203128955設(shè)計模式包含的內(nèi)容設(shè)計模式包含的內(nèi)容n名稱l要反映模式蘊(yùn)含的設(shè)計經(jīng)驗,體現(xiàn)與其它已有模式的關(guān)系n問題l描述模式解
27、決的設(shè)計問題,包括問題的背景n施用條件l描述在何種條件下才推薦使用該模式解決上述問題,以及在使用本模式之前必須考慮的約束條件n解決方案l設(shè)計模式的主體部分,描述問題的軟件解決方案QQ:46203128956設(shè)計模式包含的內(nèi)容設(shè)計模式包含的內(nèi)容(2)n效果l描述該方案導(dǎo)致的正面及負(fù)面的設(shè)計效果n示例代碼l應(yīng)用本模式的示例代碼n關(guān)聯(lián)模式l說明本模式繼承或擴(kuò)展了哪些模式,與哪些模式關(guān)聯(lián)n可視情況適當(dāng)取舍l但名稱、解決方案和效果名稱、解決方案和效果是不可或缺的QQ:46203128957設(shè)計模式的分類設(shè)計模式的分類n按解決方案的抽象程度來分(高至低)l體系結(jié)構(gòu)設(shè)計模式u面向整個軟件系統(tǒng)或規(guī)模較大的軟件
28、子系統(tǒng)u定義子系統(tǒng)或構(gòu)件的職責(zé)、協(xié)作方式的規(guī)則或指南l軟件子系統(tǒng)或構(gòu)件設(shè)計模式u面向中等規(guī)模的軟件子系統(tǒng)或構(gòu)件,獨(dú)立于程序設(shè)計語言,給出內(nèi)部的軟件元素的結(jié)構(gòu)化組織方式u在面向?qū)ο蟓h(huán)境中,類圖表示關(guān)系、交互圖表示協(xié)作途徑l面向軟件實現(xiàn)的設(shè)計模式u針對軟件子系統(tǒng)或構(gòu)件中的某個特定問題,描述如何利用特定的程序設(shè)計語言的具體特征來解決此問題。u此類模式不影響軟件結(jié)構(gòu)QQ:46203128958設(shè)計模式的分類設(shè)計模式的分類n(2)按模式解決的設(shè)計問題的類別來分l創(chuàng)建型模式(工廠方法模式、生成器模式)u專門解決復(fù)雜對象的創(chuàng)建問題l結(jié)構(gòu)型模式(adpter適配器模式、Bridge橋接模式)u分解為粒度更小的
29、軟件元素,規(guī)定其職責(zé)和協(xié)作方式l行為型模式(Interpreter解釋器、Iterator迭代)u側(cè)重描述軟件元素間的通信及控制流模式l分布型模式(客戶機(jī)/服務(wù)器構(gòu)架)u為分布于網(wǎng)絡(luò)中的軟件系統(tǒng)提供系統(tǒng)結(jié)構(gòu)和遠(yuǎn)程互操作方法l適應(yīng)性模式(微核模式)u針對擴(kuò)展、改進(jìn)、演進(jìn)、變更等設(shè)計問題提供軟件解決方案l訪問控制模式(MVC)u針對構(gòu)件、軟件服務(wù)或共享資源的訪問控制問題提供軟件解決方案QQ:46203128959設(shè)計模式的分類設(shè)計模式的分類n(3)按照模式基于的計算平臺類別來分l獨(dú)立于計算平臺的設(shè)計模式l面向特定計算平臺的設(shè)計模式u如J2EE、.NET等QQ:462031289607.4.2 通用
30、的體系結(jié)構(gòu)模式通用的體系結(jié)構(gòu)模式n體系結(jié)構(gòu)模式是專門針對體系結(jié)構(gòu)設(shè)計問題的設(shè)計模式,是軟件體系結(jié)構(gòu)設(shè)計的經(jīng)驗結(jié)晶。本節(jié)內(nèi)容:n分層模式n管道與過濾器模式n黑板模式QQ:46203128961(一)分層模式(一)分層模式n逐層抽象遞減或北增n上層使用下層提供的服務(wù)n一般而言l頂層:直接面向用戶提供交互界面l底層:負(fù)責(zé)提供基礎(chǔ)性、公共性的技術(shù)服務(wù)u比較接近于硬件計算環(huán)境、操作系統(tǒng)或數(shù)據(jù)庫管理系統(tǒng)QQ:46203128962層次之間的連接有兩種形態(tài)層次之間的連接有兩種形態(tài)n高層構(gòu)件向低層構(gòu)件發(fā)出服務(wù)請求l低層構(gòu)件在計算完成后向請求者發(fā)送服務(wù)應(yīng)答l在此過程中,低層構(gòu)件可能向更低層構(gòu)件發(fā)送抽象級別更低、
31、粒度更細(xì)的服務(wù)請求n低層構(gòu)件主動通知高層構(gòu)件l低層構(gòu)件在主動探測或被動獲知計算環(huán)境的變化事件后通知高層構(gòu)件l這種通知鏈可能一直延伸到最高層以便軟件系統(tǒng)向用戶報告,也可能中止于某個中間層次。QQ:46203128963層次間服務(wù)接口的兩種組織方式層次間服務(wù)接口的兩種組織方式n 層次中的每個提供服務(wù)的構(gòu)件公開其接口n 將這些接口封裝于層次的內(nèi)部,每個層次提供統(tǒng)一的、整合的服務(wù)接口n前一種方式對上層服務(wù)請求者更直接,服務(wù)提供者所在層次的透明度也較高n后一種方式降低了兩個層次之間的耦合度n合理地確立一系列抽象級別是采用分層模式進(jìn)行體系結(jié)構(gòu)設(shè)計的關(guān)鍵QQ:46203128964分層模式的優(yōu)點(diǎn)分層模式的優(yōu)
32、點(diǎn)n松耦合n易替換n易復(fù)用n易標(biāo)準(zhǔn)化l例如,ISO七層網(wǎng)絡(luò)協(xié)議模型、POSIX接口標(biāo)準(zhǔn)、 Java虛擬機(jī)(JVM)標(biāo)準(zhǔn)在各自領(lǐng)域的標(biāo)準(zhǔn)化進(jìn)程中發(fā)揮了關(guān)鍵性作用QQ:46203128965分層模式的缺點(diǎn)分層模式的缺點(diǎn)n會引起性能方面的開銷l高層功能可能需要逐層調(diào)用下層服務(wù),返回值、報錯信息又需逐級上傳,這種過程一般會比直接實現(xiàn)高層功能更耗時l如果低層服務(wù)還完成了最初的服務(wù)請求者所不需要的冗余功能,那么性能損耗就會更嚴(yán)重QQ:46203128966(二)管道與過濾器模式(二)管道與過濾器模式n將軟件系統(tǒng)功能實現(xiàn)為一系列處理步驟l每個步驟封裝在一個過濾器構(gòu)件中n相鄰過濾器之間以管道連接l一個過濾器的
33、輸出數(shù)據(jù)借助管道流向后續(xù)過濾器,作為其輸入數(shù)據(jù)QQ:46203128967過濾器與管道之間的協(xié)作方式過濾器與管道之間的協(xié)作方式n主動過濾器l過濾器不斷從管道中提取輸入數(shù)據(jù),并將輸出數(shù)據(jù)壓入管道n被動過濾器l管道將數(shù)據(jù)壓入位于過濾器,過濾器被動地等待輸入數(shù)據(jù)n管道負(fù)責(zé)提取位于其源端的過濾器的輸出數(shù)據(jù)n過濾器的連接l如果管道連接的兩端均為主動過濾器,那么管道必須負(fù)責(zé)它們之間的同步,典型的同步方法是先進(jìn)先出緩沖器l如果管道的一端為主動過濾器,另一端為被動過濾器,那么管道的數(shù)據(jù)流轉(zhuǎn)功能可通過前者直接調(diào)用后者來實現(xiàn)QQ:46203128968管道和過濾器模式的特點(diǎn)管道和過濾器模式的特點(diǎn)n長處l可以通過升
34、級、更換部分過濾器構(gòu)件,及處理步驟的重組,實現(xiàn)軟件系統(tǒng)的擴(kuò)展和進(jìn)化n不足l僅適合采用批處理方式的軟件系統(tǒng),不適合交互式、事件驅(qū)動式系統(tǒng)QQ:46203128969(三)黑板模式(三)黑板模式n將軟件系統(tǒng)劃分為黑板、知識源和控制器三類構(gòu)件黑板負(fù)責(zé)保存問題求解過程中的狀態(tài)數(shù)據(jù),并提供這些數(shù)據(jù)的讀寫服務(wù)知識源負(fù)責(zé)根據(jù)黑板中存儲的問題求解狀態(tài)評價其自身的可應(yīng)用性,進(jìn)行部分問題求解工作,并將此工作的結(jié)果數(shù)據(jù)寫入黑板控制器負(fù)責(zé)監(jiān)視黑板中不斷更新的狀態(tài)數(shù)據(jù),安排(多個)知識源的活動QQ:46203128970黑板模式的典型動作過程黑板模式的典型動作過程n根據(jù)狀態(tài)選取知識源l控制構(gòu)件觀察黑板中的狀態(tài)數(shù)據(jù),決定
35、哪些知識源對后續(xù)的問題求解可能有貢獻(xiàn),然后調(diào)用這些知識源的評價功能,進(jìn)一步選取參與下一步求解活動的知識源。n問題求解,更新狀態(tài)l被選中的知識源基于黑板中的狀態(tài)數(shù)據(jù)將問題求解工作向前推進(jìn)一步,并根據(jù)此步驟的結(jié)果更新黑板中的狀態(tài)數(shù)據(jù)n重復(fù),直到問題解決l控制構(gòu)件不斷重復(fù)上述控制過程,直至獲得滿意或比較滿意的結(jié)果QQ:46203128971黑板模式的特點(diǎn)黑板模式的特點(diǎn)n適合于沒有確定的求解方法的復(fù)雜問題n長處l黑板模式的知識源和控制構(gòu)件可靈活更換可靈活更換、升級,支持采用不同的知識源、不同控制算法來試驗各種問題求解方法l知識源之間沒有互操作,知識源與控制構(gòu)件和黑板之間均通過良好定義的接口進(jìn)行交互,知
36、識源的復(fù)用性較好知識源的復(fù)用性較好l知識源的問題求解動作是探索性的問題求解動作是探索性的,允許失敗和試錯,采用此模式的軟件系統(tǒng)具有較好的容錯性和健壯性n不足l問題求解性能較低性能較低、有時無法預(yù)測求解時間l不能確保獲得最優(yōu)解l知識源和控制器兩種構(gòu)件的開發(fā)困難l問題求解路徑不確定,軟件測試?yán)щy軟件測試?yán)щyQQ:46203128972大綱7.1 軟件體系結(jié)構(gòu)的概念軟件體系結(jié)構(gòu)的概念7.2 體系結(jié)構(gòu)的表示體系結(jié)構(gòu)的表示 包圖、構(gòu)件圖、部署圖、對象圖包圖、構(gòu)件圖、部署圖、對象圖7.3 體系結(jié)構(gòu)設(shè)計的過程體系結(jié)構(gòu)設(shè)計的過程7.4 體系結(jié)構(gòu)設(shè)計模式體系結(jié)構(gòu)設(shè)計模式7.5 概念設(shè)計概念設(shè)計7.6 體系結(jié)構(gòu)精
37、化體系結(jié)構(gòu)精化7.7 基于構(gòu)件的體系結(jié)構(gòu)基于構(gòu)件的體系結(jié)構(gòu)7.8 體系結(jié)構(gòu)驗證體系結(jié)構(gòu)驗證QQ:462031289737.5 概念設(shè)計概念設(shè)計n主要目標(biāo)l根據(jù)關(guān)鍵需求確定初始的軟件體系結(jié)構(gòu)雛形n方法l首先從軟件需求模型中甄別出關(guān)鍵的軟件需求項l然后借鑒體系結(jié)構(gòu)模式確定適合于實現(xiàn)這些需求項的體系結(jié)構(gòu)雛形QQ:462031289747.5.1 關(guān)鍵需求辨識關(guān)鍵需求辨識n辨識關(guān)鍵功能需求項關(guān)鍵功能需求項的主要方法l確定核心或基礎(chǔ)性功能u其它功能依賴于這些功能,或僅當(dāng)這些功能實現(xiàn)之后其它功能才有意義l確定為實現(xiàn)對外接口所必需的支持功能l標(biāo)識實現(xiàn)難度較大、實現(xiàn)風(fēng)險較高的功能l確定最能體現(xiàn)待開發(fā)軟件特色的
38、功能需求l確定前述類別沒有覆蓋,但對用戶滿意度影響甚巨的功能需求l剔除對體系結(jié)構(gòu)塑形無貢獻(xiàn)的功能需求項QQ:462031289757.5.1 關(guān)鍵需求辨識關(guān)鍵需求辨識n辨識關(guān)鍵質(zhì)量需求項關(guān)鍵質(zhì)量需求項的主要方法l標(biāo)識影響用戶認(rèn)可、接受本軟件系統(tǒng)的質(zhì)量需求l標(biāo)識實現(xiàn)難度較大、實現(xiàn)風(fēng)險較高的質(zhì)量需求u但是,并非所有高風(fēng)險、高難度的質(zhì)量需求項均須納入關(guān)鍵需求集。體系結(jié)構(gòu)設(shè)計師必須決定,在給定的時間和成本約束前提下重點(diǎn)支持哪些質(zhì)量需求項l權(quán)衡沖突的質(zhì)量需求項u要么僅將優(yōu)先支持的質(zhì)量需求項納入關(guān)鍵集u要么將二者均納入u要么均不納入關(guān)鍵集QQ:46203128976辨識關(guān)鍵需求的注意事項辨識關(guān)鍵需求的注意
39、事項n高優(yōu)先級并不完全等同于高關(guān)鍵性l雖然優(yōu)先級較高的功能需求和質(zhì)量需求項非常有可能進(jìn)入關(guān)鍵集,但并不必然進(jìn)入n關(guān)鍵質(zhì)量需求項優(yōu)先于關(guān)鍵功能占比l因為質(zhì)量需求對體系結(jié)構(gòu)初始塑形的影響力比功能需求更大n對軟件體系結(jié)構(gòu)有影響,就必須納入關(guān)鍵集l這是由于由于軟件的開發(fā)過程和軟件產(chǎn)品必須滿足所有的約束性需求項l那些與軟件體系結(jié)構(gòu)無關(guān)的約束,例如編程語言限制等,則不應(yīng)進(jìn)入關(guān)鍵集QQ:46203128977例例7.1 辨識關(guān)鍵需求項辨識關(guān)鍵需求項(家庭保安系統(tǒng)家庭保安系統(tǒng))n關(guān)鍵功能性需求l除“日志查詢”外的所有用例,包括“開關(guān)機(jī)及復(fù)位處理”、 “配置管理”和“傳感器監(jiān)測”,均屬核心基礎(chǔ)性功能,納入關(guān)鍵需
40、求集l由于家庭保安系統(tǒng)的規(guī)模很小,所以關(guān)鍵的功能需求項所占比例很高是可以理解的n關(guān)鍵質(zhì)量需求l基于該系統(tǒng)的市場定位和競爭力要求,我們將安全性、可靠性、性能和可配置性納入關(guān)鍵需求集QQ:462031289787.5.2 體系結(jié)構(gòu)初創(chuàng)體系結(jié)構(gòu)初創(chuàng)n任務(wù)l建立初始的軟件體系結(jié)構(gòu)雛形l屬于軟件體系結(jié)構(gòu)邏輯視圖,與具體的實現(xiàn)技術(shù)無關(guān)n依據(jù)l主要是關(guān)鍵需求集l還必須考慮運(yùn)行環(huán)境,以考慮到對體系結(jié)構(gòu)的影響u例如,單機(jī)軟件、運(yùn)行于局域網(wǎng)內(nèi)部的客戶/服務(wù)器軟件與運(yùn)行于Internet之上的Web軟件的體系結(jié)構(gòu)大不相同n形式l以某一體系結(jié)構(gòu)模式為主l可適量調(diào)整QQ:46203128979體系結(jié)構(gòu)模式速查清單體系結(jié)
41、構(gòu)模式速查清單類別類別名稱名稱特點(diǎn)特點(diǎn)典型應(yīng)用示例典型應(yīng)用示例 企業(yè)應(yīng)用企業(yè)應(yīng)用(數(shù)據(jù)密集(數(shù)據(jù)密集 型應(yīng)用)型應(yīng)用)分層分層(1) 分級抽象分級抽象(2) 依賴關(guān)系局部化、簡單化依賴關(guān)系局部化、簡單化(3) 層可復(fù)用、可替換層可復(fù)用、可替換大部分應(yīng)用軟件大部分應(yīng)用軟件管道與過濾器管道與過濾器(1) 適于批處理、數(shù)據(jù)密集型處理適于批處理、數(shù)據(jù)密集型處理(2) Filter可復(fù)用可復(fù)用(3) 支持處理流程重組支持處理流程重組(1) 編譯器編譯器(2) HTTP請求處理請求處理 MVC(見(見14.3節(jié))節(jié))(1) 職責(zé)分工明晰、合理職責(zé)分工明晰、合理(2) 依賴關(guān)系局部化、簡單化依賴關(guān)系局部化、
42、簡單化(3) Model可復(fù)用可復(fù)用(4) View可替換可替換大部分大部分Web應(yīng)用軟件應(yīng)用軟件智能問題求解智能問題求解 黑板黑板(1) 知識源和控制構(gòu)件可復(fù)用、可替換知識源和控制構(gòu)件可復(fù)用、可替換(2) 較好的容錯性和健壯性較好的容錯性和健壯性(3) 不能確保獲得最優(yōu)解不能確保獲得最優(yōu)解(4) 性能較低、有時甚至無法預(yù)測求解時間性能較低、有時甚至無法預(yù)測求解時間沒有已知算法的復(fù)雜問沒有已知算法的復(fù)雜問題求解軟件題求解軟件QQ:46203128980例例7.2 建立體系結(jié)構(gòu)雛形建立體系結(jié)構(gòu)雛形n對家庭保安系統(tǒng),可選用分層模式l針對系統(tǒng)需求和運(yùn)行環(huán)境,對圖7.9所示的體系結(jié)構(gòu)進(jìn)行了具體化和適應(yīng)
43、性改造,見圖7.12l第1層(最外層)負(fù)責(zé)顯示用戶界面l第2層(中間層)負(fù)責(zé)核心業(yè)務(wù)邏輯處理l第3層(最內(nèi)層)專門負(fù)責(zé)與外部物理設(shè)備進(jìn)行交互QQ:46203128981圖圖7.12 家庭保安系統(tǒng)的體系結(jié)構(gòu)雛形家庭保安系統(tǒng)的體系結(jié)構(gòu)雛形2022-3-2481QQ:46203128982大綱7.1 軟件體系結(jié)構(gòu)的概念軟件體系結(jié)構(gòu)的概念7.2 體系結(jié)構(gòu)的表示體系結(jié)構(gòu)的表示 包圖、構(gòu)件圖、部署圖、對象圖包圖、構(gòu)件圖、部署圖、對象圖7.3 體系結(jié)構(gòu)設(shè)計的過程體系結(jié)構(gòu)設(shè)計的過程7.4 體系結(jié)構(gòu)設(shè)計模式體系結(jié)構(gòu)設(shè)計模式7.5 概念設(shè)計概念設(shè)計7.6 體系結(jié)構(gòu)精化體系結(jié)構(gòu)精化7.7 基于構(gòu)件的體系結(jié)構(gòu)基于構(gòu)件
44、的體系結(jié)構(gòu)7.8 體系結(jié)構(gòu)驗證體系結(jié)構(gòu)驗證QQ:462031289837.6 體系結(jié)構(gòu)精化體系結(jié)構(gòu)精化n主要目標(biāo)l將概念體系結(jié)構(gòu)精化成為全面的、設(shè)計適度的軟件體系結(jié)構(gòu)n主要工作l圍繞邏輯、運(yùn)行、數(shù)據(jù)、物理、開發(fā)五種視圖的精化或創(chuàng)立展開l重點(diǎn)是邏輯視圖的精化QQ:462031289847.6.1 邏輯視圖體系結(jié)構(gòu)的精化邏輯視圖體系結(jié)構(gòu)的精化n概念體系結(jié)構(gòu)與精化的體系結(jié)構(gòu)的區(qū)別:l精化體系結(jié)構(gòu)必須有明確的接口定義u而概念體系結(jié)構(gòu)中的模塊僅代表邏輯職責(zé)l精化體系結(jié)構(gòu)必須受到多方面的約束u包括可用的設(shè)計資產(chǎn)(如開源構(gòu)件、開源框架)、技術(shù)支撐設(shè)施、分布部署、開發(fā)技能等因素u而概念體系結(jié)構(gòu)中的模塊劃分主要
45、是職責(zé)的邏輯分組l更重要的是,精化的體系結(jié)構(gòu)必須具備設(shè)計充分性u最終的邏輯體系結(jié)構(gòu)不僅要支持關(guān)鍵需求項,還應(yīng)該比較完整地支持其他需求項的實現(xiàn)u應(yīng)該合理復(fù)用現(xiàn)有的軟件資產(chǎn)u應(yīng)該為詳細(xì)設(shè)計和編程實現(xiàn)提供足夠的指導(dǎo)和充分的約束QQ:46203128985邏輯視圖體系結(jié)構(gòu)的精化過程邏輯視圖體系結(jié)構(gòu)的精化過程n搜索并選取可用的設(shè)計資產(chǎn);n設(shè)計技術(shù)支撐設(shè)施;n確立設(shè)計元素;n整合設(shè)計元素。n對于大中型軟件項目而言,非關(guān)鍵需求項可以逐次引入,即,這些設(shè)計活動可以迭代地進(jìn)行QQ:46203128986(一)搜索并選取可用的設(shè)計資產(chǎn)(一)搜索并選取可用的設(shè)計資產(chǎn)n“可用”的設(shè)計資產(chǎn):指在當(dāng)前項目中直接可供復(fù)用或
46、借鑒的設(shè)計資產(chǎn)。包括:現(xiàn)成的軟件系統(tǒng)或子系統(tǒng),開發(fā)機(jī)構(gòu)自身積累的構(gòu)件庫、服務(wù)庫,業(yè)界廣泛采用的類庫、中間件或框架,以及Internet上開源的軟件資產(chǎn)。n如,針對課程注冊管理系統(tǒng),可以直接借用現(xiàn)成的學(xué)籍管理系統(tǒng)和教師信息管理系統(tǒng)來實現(xiàn)對用戶身份的認(rèn)證,借用現(xiàn)成的計費(fèi)系統(tǒng)來確定學(xué)生應(yīng)繳的選課費(fèi)用。2022-3-2486QQ:46203128987搜索并選取可用的設(shè)計資產(chǎn)搜索并選取可用的設(shè)計資產(chǎn)n對于必須與當(dāng)前軟件系統(tǒng)交互的可復(fù)用設(shè)計資產(chǎn),必須清晰地定義它們與當(dāng)前軟件系統(tǒng)之間的交互接口,包括數(shù)據(jù)交換的格式、互操作協(xié)議等。n對于雖不能直接使用,但具有復(fù)用潛力的設(shè)計資產(chǎn),應(yīng)考慮采用接口重構(gòu)、適配器等方
47、法將其引入到當(dāng)前體系結(jié)構(gòu)之中。l接口重構(gòu)指,調(diào)整當(dāng)前體系結(jié)構(gòu)中面向可復(fù)用設(shè)計資產(chǎn)的調(diào)用接口,使之與其提供的服務(wù)接口相匹配。n在決定引入供復(fù)用的設(shè)計資產(chǎn)之后,應(yīng)對當(dāng)前的邏輯體系結(jié)構(gòu)進(jìn)行相應(yīng)的調(diào)整和精化。2022-3-2487QQ:46203128988搜索并選取可用的設(shè)計資產(chǎn)搜索并選取可用的設(shè)計資產(chǎn)n在7.5.2節(jié)所述的針對UML包圖的擴(kuò)充的基礎(chǔ)上,進(jìn)一步添加以下擴(kuò)充: 允許在包圖中出現(xiàn)構(gòu)件、類和接口,允許在包圖中表示子系統(tǒng)和構(gòu)件的服務(wù)接口,采用構(gòu)造型 、 依次標(biāo)示(內(nèi)部)子系統(tǒng)、外部子系統(tǒng)和外部構(gòu)件,見圖7.13。2022-3-2488QQ:46203128989圖圖7.13 可復(fù)用的設(shè)計資產(chǎn)
48、與可復(fù)用的設(shè)計資產(chǎn)與軟件體系結(jié)構(gòu)的整合軟件體系結(jié)構(gòu)的整合2022-3-2489QQ:46203128990例例7.3 搜索并選取可用的設(shè)計資產(chǎn)搜索并選取可用的設(shè)計資產(chǎn)n對家庭保安系統(tǒng),設(shè)可供復(fù)用的設(shè)計資產(chǎn)有視頻監(jiān)控構(gòu)件、電話撥號構(gòu)件、文本朗讀構(gòu)件(text-to-speech)。n前者基于視頻判斷是否有移動的物體,后者將文本轉(zhuǎn)換成為語音。n假設(shè)這三個構(gòu)件提供的對外接口依次是: MovingObjectMonitor: void openMonitor(VideoStream stream, int nSensitivity, MovingObjectNotifier notifier); vo
49、id closeMonitor();2022-3-2490QQ:46203128991例例7.3 搜索并選取可用的設(shè)計資產(chǎn)(續(xù)搜索并選取可用的設(shè)計資產(chǎn)(續(xù)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函數(shù)openMon
50、itor的參數(shù)stream表示輸入的視頻流;n參數(shù)nSensitivity表示監(jiān)控靈敏度(以百分?jǐn)?shù)表示);n一旦發(fā)現(xiàn)移動物體,notifier對象將獲得通知。n函數(shù)dial的參數(shù)ePort表示用以發(fā)送撥號命令的端口;n參數(shù)strTelNo表示電話號碼;n參數(shù)nMaxRedialNum表示最大重?fù)艽螖?shù);2022-3-2491QQ:46203128992例例7.3 搜索并選取可用的設(shè)計資產(chǎn)(續(xù)搜索并選取可用的設(shè)計資產(chǎn)(續(xù)2)n一旦電話接通或者撥號失敗,notifier對象將獲得通知。nMovingObjectNotifier接口包含以下函數(shù):nvoid onMovingObjectDetected
51、(ENUM_Direction eDirection, float fSpeed);n參數(shù)eDirection表示物體的移動方向;n參數(shù)fSpeed表示物體的移動速度。nTelephoneNotifier接口包含以下函數(shù):nvoid onTelephoneConnected();nvoid onDialFailed(int nErrorCode);n參數(shù)nErrorCode表示撥號失敗的原因碼2022-3-2492QQ:46203128993(二)設(shè)計技術(shù)支撐設(shè)施(二)設(shè)計技術(shù)支撐設(shè)施n體系結(jié)構(gòu)師必須研究公共的基礎(chǔ)性軟件技術(shù)問題,設(shè)計技術(shù)支撐設(shè)施。u如,對企業(yè)應(yīng)用軟件(包括電子商務(wù)應(yīng)用、企業(yè)管
52、理信息系統(tǒng)等),需要數(shù)據(jù)持久存儲服務(wù)、安全控制服務(wù)等。2022-3-2493QQ:46203128994(1)數(shù)據(jù)持久存儲服務(wù))數(shù)據(jù)持久存儲服務(wù)n數(shù)據(jù)持久存儲:是指在目標(biāo)軟件系統(tǒng)結(jié)束一次運(yùn)行之后,其產(chǎn)生的部分?jǐn)?shù)據(jù)能夠留存于系統(tǒng)的存儲介質(zhì)中,以供本軟件下次運(yùn)行時使用,或者供其他軟件系統(tǒng)使用。n數(shù)據(jù)持久存儲服務(wù)的功能包括數(shù)據(jù)的持久存儲、查詢(選擇性讀?。?、更新、刪除等。n設(shè)置數(shù)據(jù)持久存儲服務(wù)的目的:將目標(biāo)軟件系統(tǒng)中依賴于系統(tǒng)運(yùn)行環(huán)境的數(shù)據(jù)存取部分與其他部分相分離。2022-3-2494QQ:46203128995數(shù)據(jù)持久存儲服務(wù)數(shù)據(jù)持久存儲服務(wù)n數(shù)據(jù)存取通過一般的數(shù)據(jù)管理系統(tǒng)(如文件系統(tǒng)、關(guān)系數(shù)據(jù)
53、庫或面向?qū)ο髷?shù)據(jù)庫)實現(xiàn)n實現(xiàn)細(xì)節(jié)因數(shù)據(jù)存儲介質(zhì)的種類而異n這些細(xì)節(jié)被集中在數(shù)據(jù)持久存儲服務(wù)中,系統(tǒng)的其他部分只需訪問數(shù)據(jù)持久服務(wù)即可,與存儲介質(zhì)的種類、數(shù)據(jù)在介質(zhì)中的組織方式、數(shù)據(jù)存儲的實現(xiàn)方法無關(guān)。2022-3-2495QQ:46203128996數(shù)據(jù)持久存儲服務(wù)數(shù)據(jù)持久存儲服務(wù)n原因:一旦存儲介質(zhì)發(fā)生變化或者存儲格式發(fā)生變化,僅修改數(shù)據(jù)持久存儲服務(wù)即可適應(yīng)這些變化,目標(biāo)軟件系統(tǒng)的其余部分不需修改。l如,從文件系統(tǒng)改變?yōu)殛P(guān)系數(shù)據(jù)庫,從一種數(shù)據(jù)庫改為另一種數(shù)據(jù)庫,數(shù)據(jù)庫表格結(jié)構(gòu)變化等,n優(yōu)點(diǎn):設(shè)置相對獨(dú)立的數(shù)據(jù)持久存儲服務(wù)簡化了后續(xù)的軟件設(shè)計、編碼和測試的過程,有利于軟件的擴(kuò)充、移植和維護(hù)。
54、n作法:一般將數(shù)據(jù)持久存儲服務(wù)實現(xiàn)為一個構(gòu)件,接口定義通常包括基本的、通用的數(shù)據(jù)持久操作,如存儲、查詢、更新、刪除等,見例7.42022-3-2496QQ:46203128997數(shù)據(jù)持久存儲服務(wù)數(shù)據(jù)持久存儲服務(wù)n如果希望該服務(wù)承擔(dān)的職責(zé)非常多,也可以考慮將其實現(xiàn)為一個子系統(tǒng),其典型結(jié)構(gòu)如圖7.14所示。n該子系統(tǒng)通常包含一個通用構(gòu)件,利用它為若干面向不同業(yè)務(wù)數(shù)據(jù)的持久存儲服務(wù)構(gòu)件提供基礎(chǔ)性的數(shù)據(jù)持久服務(wù)。圖7.14 數(shù)據(jù)持久存儲服務(wù)子系統(tǒng)子系統(tǒng)的結(jié)構(gòu)2022-3-2497QQ:46203128998例例7.4 設(shè)計數(shù)據(jù)持久存儲服務(wù)設(shè)計數(shù)據(jù)持久存儲服務(wù)n對家庭保安系統(tǒng),本例決定在體系結(jié)構(gòu)中設(shè)置專
55、門負(fù)責(zé)提供數(shù)據(jù)持久服務(wù)的構(gòu)件 “Data Service”,如圖7.15所示。該構(gòu)件的接口函數(shù)依次為: openConnection:與數(shù)據(jù)源建立邏輯連接 closeConnection:關(guān)閉與數(shù)據(jù)源間的邏輯連接 insert:執(zhí)行SQL插入語句n如果存在與數(shù)據(jù)源之間的邏輯連接,則直接使用此連接執(zhí)行SQL插入語句;n否則,使用 openConnection 創(chuàng)建連接,在此連接上執(zhí)行SQL插入語句,執(zhí)行后再用 closeConnection 關(guān)閉連接。2022-3-2498QQ:46203128999設(shè)計數(shù)據(jù)持久存儲服務(wù)設(shè)計數(shù)據(jù)持久存儲服務(wù)n下面三個接口函數(shù)的工作模式與此相似。 update:執(zhí)
56、行SQL更新語句 delete:執(zhí)行SQL刪除語句 query:執(zhí)行SQL查詢語句2022-3-2499QQ:462031289100圖7.15 數(shù)據(jù)持久存儲服務(wù)及其與軟件體系結(jié)構(gòu)的整合2022-3-24100QQ:462031289101(2)安全控制服務(wù))安全控制服務(wù)n設(shè)置安全控制服務(wù)的目的:是將目標(biāo)軟件系統(tǒng)中有關(guān)安全控制的功能集中起來,以便統(tǒng)一管理安全策略,提高安全策略的可配置性。n安全控制服務(wù)包含用戶身份認(rèn)證和授權(quán)控制兩種功能,前者驗證用戶是否具有合法身份,后者判斷用戶在請求某種類型的服務(wù)時是否具有相應(yīng)的權(quán)限。2022-3-24101QQ:462031289102例例7.5 設(shè)計安全控
57、制服務(wù)設(shè)計安全控制服務(wù)n如圖7.16所示,家庭保安系統(tǒng)中核心層的軟件元素在接獲用戶命令后,首先由安全控制服務(wù)構(gòu)件“Security Service”驗證用戶的身份,在驗證通過后才調(diào)用核心層中的業(yè)務(wù)邏輯處理功能。n“Security Service”的接口僅包含verifyUserIdentity函數(shù),它負(fù)責(zé)驗證用戶輸入的密碼是否正確。2022-3-24102QQ:462031289103圖圖7.16 安全控制服務(wù)安全控制服務(wù)及其與及其與軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)的整合的整合2022-3-24103QQ:462031289104(三)確立設(shè)計元素(三)確立設(shè)計元素n設(shè)計元素包括子系統(tǒng)、構(gòu)件、設(shè)計類
58、。n目的:本活動以概念體系結(jié)構(gòu)中的模塊(職責(zé))為基礎(chǔ),以軟件需求的實現(xiàn)為目標(biāo),探索如何將概念模塊組織為設(shè)計元素。進(jìn)一步研究這些設(shè)計元素的職責(zé)劃分和協(xié)同工作。n注意:確定設(shè)計元素的接口和相互協(xié)作關(guān)系,不需要給出設(shè)計元素的內(nèi)部結(jié)構(gòu)和實現(xiàn)途徑,此項工作留給子系統(tǒng)設(shè)計、構(gòu)件設(shè)計和類設(shè)計再進(jìn)行。2022-3-24104QQ:462031289105(1)確定子系統(tǒng)及其接口)確定子系統(tǒng)及其接口確定子系統(tǒng)的基本方法有:n對用例按照業(yè)務(wù)上的相關(guān)性或相似性進(jìn)行分組,每組用例歸為一個子系統(tǒng),參與這些用例實現(xiàn)的分析類的職責(zé)綜合成為此子系統(tǒng)的職責(zé)n研究軟件需求的分析模型中基于分析類的用例實現(xiàn)途徑(如,交互圖),將具有
59、相關(guān)或相似的業(yè)務(wù)處理職責(zé)的控制類歸為一個子系統(tǒng),或?qū)⑺羞@些控制類的職責(zé)歸并后按照業(yè)務(wù)上的某種相關(guān)性或相似性進(jìn)行分組,每組職責(zé)歸為一個子系統(tǒng)。n將分析模型中的實體類分組,每組屬于一個子系統(tǒng),這些子系統(tǒng)負(fù)責(zé)對其中的實體類實施管理和控制。2022-3-24105QQ:462031289106確定子系統(tǒng)及其接口確定子系統(tǒng)及其接口n在分析模型中,如果參與用例實現(xiàn)的執(zhí)行者是外部設(shè)備或外部軟件系統(tǒng),那么它對應(yīng)的設(shè)計元素應(yīng)該是子系統(tǒng)。p職責(zé)可能包括向目標(biāo)軟件系統(tǒng)提供信息,以及響應(yīng)來自目標(biāo)軟件系統(tǒng)的消息。p這些職責(zé)應(yīng)該體現(xiàn)在子系統(tǒng)的接口定義中。p針對這種子系統(tǒng)只需定義其面向目標(biāo)軟件系統(tǒng)的接口,勿需在后續(xù)的設(shè)計
60、過程中精化出子系統(tǒng)內(nèi)部的構(gòu)件或類,因為當(dāng)前軟件項目并不關(guān)心這種子系統(tǒng)的具體實現(xiàn),只要通過接口與它們交互即可。2022-3-24106QQ:462031289107例例7.6 確定子系統(tǒng)及其接口確定子系統(tǒng)及其接口n針對家庭保安系統(tǒng),首先研究其用例模型(見例4-9p114)和分析模型(見例5-10p151),發(fā)現(xiàn)其業(yè)務(wù)邏輯功能可歸納為傳感器監(jiān)測、配置管理和日志管理。n假設(shè)希望日志管理功能未來可被復(fù)用,所以僅針對前兩種功能設(shè)置子系統(tǒng),而將最后一種功能封裝成構(gòu)件(見例7.13)。n傳感器監(jiān)測子系統(tǒng)的職責(zé)主要來源于“開關(guān)機(jī)及復(fù)位處理” 用例、“傳感器監(jiān)測”用例及其擴(kuò)展用例“報警電話未接通”。n為了完成這
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年文化創(chuàng)意產(chǎn)業(yè)貨款合同退款及知識產(chǎn)權(quán)保護(hù)協(xié)議3篇
- 二零二五年度排水管道安裝與水質(zhì)監(jiān)測服務(wù)合同3篇
- 二零二五年度農(nóng)藥研發(fā)成果轉(zhuǎn)化與應(yīng)用合同3篇
- 2025年度個人投資理財顧問委托合同3篇
- 2025版特色商業(yè)街區(qū)門面店裝修施工合同2篇
- 2025年度民品典當(dāng)借款合同標(biāo)準(zhǔn)化文本4篇
- 2025年敬老院護(hù)理員專業(yè)成長與聘用合同3篇
- 二零二五版門頭廣告內(nèi)容創(chuàng)意策劃合同4篇
- 2025年度個人挖掘機(jī)械租賃質(zhì)量保證合同4篇
- 2025版高標(biāo)準(zhǔn)建筑施工現(xiàn)場專用木方、木跳板租賃合同4篇
- 有砟軌道施工工藝課件
- 兩辦意見八硬措施煤礦安全生產(chǎn)條例宣貫學(xué)習(xí)課件
- 40篇短文搞定高中英語3500單詞
- 人教版高中數(shù)學(xué)必修二《第九章 統(tǒng)計》同步練習(xí)及答案解析
- 兒科護(hù)理安全警示教育課件
- 三年級下冊口算天天100題
- 國家中英文名稱及代碼縮寫(三位)
- 人員密集場所消防安全培訓(xùn)
- 液晶高壓芯片去保護(hù)方法
- 使用AVF血液透析患者的護(hù)理查房
- 拜太歲科儀文檔
評論
0/150
提交評論