《52浙江大學(xué)王燦《軟件體系結(jié)構(gòu)》視頻課程PPT7_構(gòu)架設(shè)計(jì)案例(1)》由會(huì)員分享,可在線閱讀,更多相關(guān)《52浙江大學(xué)王燦《軟件體系結(jié)構(gòu)》視頻課程PPT7_構(gòu)架設(shè)計(jì)案例(1)(25頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、設(shè)計(jì)構(gòu)架 (1)簡(jiǎn)短回顧n在前幾節(jié)課我們學(xué)習(xí)了q構(gòu)架的商業(yè)性方面q構(gòu)架視圖和結(jié)構(gòu)q質(zhì)量屬性q實(shí)現(xiàn)質(zhì)量屬性的構(gòu)架戰(zhàn)術(shù)和模式n這些構(gòu)成了我們進(jìn)行構(gòu)架設(shè)計(jì)的背景知識(shí)q生命周期中的構(gòu)架q設(shè)計(jì)構(gòu)架q形成團(tuán)隊(duì)結(jié)構(gòu)q創(chuàng)建骨架系統(tǒng)軟件生命周期n常見(jiàn)的軟件生命周期模型q瀑布模型n瀑布模型將軟件生命周期的各項(xiàng)活動(dòng)規(guī)定為依固定順序聯(lián)接的若干階段工作,形如瀑布流水,最終得到軟件產(chǎn)品q演化模型n用戶(hù)可以給出待開(kāi)發(fā)系統(tǒng)的核心需求,并且當(dāng)看到核心需求實(shí)現(xiàn)后,能夠有效地提出反饋,以支持系統(tǒng)的最終設(shè)計(jì)和實(shí)現(xiàn)。q螺旋模型 n瀑布模型與演化模型相結(jié)合,并加入兩者所忽略的風(fēng)險(xiǎn)分析所建立的一種軟件開(kāi)發(fā)模型。n構(gòu)架在軟件生命周期中處于一
2、個(gè)什么位置?演化模型生命周期軟件概念初步的需求分析構(gòu)架和系統(tǒng)核心的設(shè)計(jì)交付最終版本獲取客戶(hù)反饋開(kāi)發(fā)一個(gè)版本匯總客戶(hù)反饋交付該版本何時(shí)可以開(kāi)始構(gòu)架設(shè)計(jì)n首先要有需求q但我們并不需要太多的需求來(lái)開(kāi)始構(gòu)架設(shè)計(jì)n形成構(gòu)架的因素包括q功能需求q質(zhì)量需求q商業(yè)需求n這些需求我們成為構(gòu)架驅(qū)動(dòng)因素q例如:第三章案例中介紹的A-7E航空電子系統(tǒng)的可修改性和性能需求q第六章案例中的空中交通管制系統(tǒng)的可用性需求決定構(gòu)架驅(qū)動(dòng)因素n識(shí)別構(gòu)架驅(qū)動(dòng)因素q識(shí)別最高優(yōu)先級(jí)的商業(yè)目標(biāo)n應(yīng)該只有幾個(gè)q將這些商業(yè)目標(biāo)轉(zhuǎn)化為質(zhì)量屬性場(chǎng)景或使用案例q從中選擇對(duì)構(gòu)架產(chǎn)生最大影響的部分n這些就是構(gòu)架驅(qū)動(dòng)因素n應(yīng)該不多于10個(gè)使用案例是對(duì)一個(gè)
3、系統(tǒng)所執(zhí)行的一系列動(dòng)作的描述,通常功能屬性的需求都可以由用戶(hù)案例表達(dá)屬性驅(qū)動(dòng)的設(shè)計(jì) (ADD)n ADD是一種設(shè)計(jì)軟件構(gòu)架的方法,該方法根據(jù)軟件的質(zhì)量屬性需求對(duì)系統(tǒng)進(jìn)行分解q一個(gè)遞歸的分解過(guò)程q系統(tǒng)分解基于系統(tǒng)必須滿(mǎn)足的質(zhì)量屬性q每個(gè)階段都選擇戰(zhàn)術(shù)和構(gòu)架模式來(lái)滿(mǎn)足一組質(zhì)量屬性的場(chǎng)景,然后對(duì)功能進(jìn)行分配,以實(shí)例化由該模塊所提供的模塊類(lèi)型n ADD結(jié)果:得到一種粗粒度的劃分,即模塊分解視圖和其他視圖的最初的幾個(gè)層次q系統(tǒng)被描述為功能和功能之間交互的一組容器案例分析車(chē)庫(kù)門(mén)開(kāi)關(guān)器 (1)n目標(biāo):為家庭信息系統(tǒng)(HIS)中的車(chē)庫(kù)門(mén)開(kāi)關(guān)器設(shè)計(jì)一個(gè)產(chǎn)品線構(gòu)架q開(kāi)關(guān)器負(fù)責(zé)通過(guò)開(kāi)關(guān)、遠(yuǎn)程控制或家庭信息系統(tǒng)來(lái)實(shí)現(xiàn)
4、車(chē)門(mén)的升起或下降n ADD的輸入:一組需求q使用用戶(hù)案例表達(dá)的功能需求q限制q使用質(zhì)量屬性場(chǎng)景表達(dá)的質(zhì)量需求案例分析車(chē)庫(kù)門(mén)開(kāi)關(guān)器 (2)n車(chē)庫(kù)門(mén)系統(tǒng)的質(zhì)量屬性場(chǎng)景q對(duì)于產(chǎn)品線中的各種產(chǎn)品而言,用于開(kāi)門(mén)和關(guān)門(mén)的設(shè)備和控制裝置是不同的q不同的產(chǎn)品中使用的處理器不同q如果車(chē)庫(kù)門(mén)在下降的過(guò)程中檢測(cè)到一個(gè)障礙物,它必須在0.1秒內(nèi)停止q可以在家庭信息系統(tǒng)內(nèi)使用產(chǎn)品相關(guān)的診斷協(xié)議來(lái)診斷和管理車(chē)庫(kù)門(mén)開(kāi)關(guān)器。因改可以直接產(chǎn)生一個(gè)反應(yīng)該協(xié)議的構(gòu)架ADD步驟n 1. 選擇要分解的模塊q從整個(gè)系統(tǒng)開(kāi)始q進(jìn)行分解時(shí),要求所有輸入都是可獲得的n限制條件、功能需求、質(zhì)量需求n 2. 根據(jù)這些步驟對(duì)模塊進(jìn)行求精q從具體的質(zhì)
5、量場(chǎng)景和功能需求集合中選擇構(gòu)架驅(qū)動(dòng)因素q選擇或創(chuàng)建滿(mǎn)足構(gòu)架驅(qū)動(dòng)因素的構(gòu)架模式,確定所用戰(zhàn)術(shù)需要的子模塊q實(shí)例化模塊并根據(jù)使用案例分配功能,使用多個(gè)視圖進(jìn)行表示q定義子模塊的接口q驗(yàn)證使用案例和質(zhì)量場(chǎng)景并對(duì)其進(jìn)行求精,使它們成為子模塊的限制n 3. 對(duì)需要進(jìn)一步分解的每個(gè)模塊重復(fù)上述步驟選擇要分解的模塊n系統(tǒng)分解的步驟:系統(tǒng)子系統(tǒng)子模塊n示例中,系統(tǒng)指的是車(chē)庫(kù)門(mén)開(kāi)關(guān)器q在這個(gè)級(jí)別的一個(gè)限制是:開(kāi)關(guān)器必須能與家庭信息系統(tǒng)進(jìn)行交互2.a 選擇構(gòu)架驅(qū)動(dòng)因素n進(jìn)行分解時(shí),需要從質(zhì)量屬性場(chǎng)景和功能需求中選擇相應(yīng)的構(gòu)架驅(qū)動(dòng)因素q構(gòu)架驅(qū)動(dòng)因素在模塊的高優(yōu)先級(jí)需求中q在車(chē)庫(kù)門(mén)系統(tǒng)中,已給出的4個(gè)場(chǎng)景就是構(gòu)架驅(qū)動(dòng)
6、因素,它們給出了以下需求n可修改性n實(shí)時(shí)性能需求n ADD的特點(diǎn)在于,對(duì)于模塊的所有需求并非同等對(duì)待q通過(guò)選擇構(gòu)架驅(qū)動(dòng)因素,我們將問(wèn)題簡(jiǎn)化為滿(mǎn)足最重要的需求q在滿(mǎn)足最重要的需求的條件下,才滿(mǎn)足不太重要的需求選擇構(gòu)架模式 (1)n對(duì)于每個(gè)質(zhì)量屬性的需求,在構(gòu)架設(shè)計(jì)中,我們都有相應(yīng)的戰(zhàn)術(shù)來(lái)實(shí)現(xiàn)它q每個(gè)戰(zhàn)術(shù)都有相應(yīng)的成本q每個(gè)戰(zhàn)術(shù)都可以實(shí)現(xiàn)一個(gè)或多個(gè)質(zhì)量屬性,但是也可能對(duì)一些質(zhì)量屬性產(chǎn)生負(fù)面的影響n(yōu)通常我們會(huì)在構(gòu)架設(shè)計(jì)中選擇戰(zhàn)術(shù)的組合來(lái)實(shí)現(xiàn)多個(gè)質(zhì)量屬性的平衡選擇構(gòu)架模式 (2)n該步驟的目標(biāo)是建立一個(gè)由模塊類(lèi)型組成的總體構(gòu)架模式n該模式通過(guò)組合選定的戰(zhàn)術(shù),滿(mǎn)足構(gòu)架驅(qū)動(dòng)因素n影響戰(zhàn)術(shù)選擇的兩個(gè)因素q驅(qū)
7、動(dòng)因素本身q實(shí)現(xiàn)戰(zhàn)術(shù)的模式對(duì)其他質(zhì)量屬性產(chǎn)生的副作用選擇構(gòu)架模式 (3)-示例n比如:q為了達(dá)成系統(tǒng)的可修改性,一個(gè)經(jīng)典的戰(zhàn)術(shù)就是使用“解釋器”模式q但是使用解釋器模式會(huì)對(duì)性能產(chǎn)生較大的負(fù)面影響q是否使用“解釋器”模式依賴(lài)于可修改性與性能的重要性對(duì)比n一個(gè)可行的決策為:對(duì)總體模式的部分使用“解釋器”,其他部分則使用其他戰(zhàn)術(shù)選擇構(gòu)架模式 (4)n按照案例分析中所提到的兩個(gè)關(guān)鍵需求:性能和可修改性,我們可以使用學(xué)過(guò)的響應(yīng)戰(zhàn)術(shù)來(lái)滿(mǎn)足n可修改性戰(zhàn)術(shù)回顧q局部化變更q防止連鎖反應(yīng)q推遲綁定時(shí)間n我們的案例中,可修改性場(chǎng)景主要與系統(tǒng)設(shè)計(jì)時(shí)出現(xiàn)的變更相關(guān),因此我們可以使用“局部化變更”戰(zhàn)術(shù)q所采用的具體戰(zhàn)術(shù)
8、為:“語(yǔ)義一致性”和信息隱藏選擇構(gòu)架模式 (5)n性能戰(zhàn)術(shù)回顧q資源需求n提高計(jì)算效率q資源仲裁n優(yōu)化調(diào)度算法q資源管理n無(wú)論是引入并發(fā),還是維持?jǐn)?shù)據(jù)或計(jì)算的備份,還是增加可用資源,都無(wú)助于提高車(chē)庫(kù)門(mén)的響應(yīng)速度選擇構(gòu)架模式 (6)n最后選定和應(yīng)用的具體戰(zhàn)術(shù)q語(yǔ)義一致性n將處理用戶(hù)接口、通訊和傳感器的部分都放入各自單獨(dú)的模塊q信息隱藏n為通訊和傳感器模塊使用“虛擬機(jī)”技術(shù),隱藏內(nèi)部實(shí)現(xiàn)q提高計(jì)算效率n提高關(guān)鍵部分(瓶頸)的計(jì)算效率q精心調(diào)度n對(duì)關(guān)鍵性能計(jì)算進(jìn)行調(diào)度,確保實(shí)時(shí)響應(yīng)需求n應(yīng)用了戰(zhàn)術(shù)后導(dǎo)出的模式q這并非唯一可導(dǎo)出模式q這是一個(gè)滿(mǎn)足了需求的模式非關(guān)鍵性能計(jì)算虛擬機(jī)關(guān)鍵性能計(jì)算用戶(hù)界面保證
9、時(shí)限時(shí)間的調(diào)度程序選擇構(gòu)架模式 (7)實(shí)例化模塊 (1)n前面的步驟確定了模塊的分解結(jié)構(gòu),接下來(lái)要確定如何實(shí)例化這些模塊類(lèi)型n在ADD方法中,功能的分配標(biāo)準(zhǔn)類(lèi)似于其他設(shè)計(jì)方法q實(shí)際的系統(tǒng)中往往有多個(gè)模塊,每組功能都會(huì)有一個(gè)模塊n模塊功能實(shí)例化q升/降門(mén)(沒(méi)有時(shí)限,非關(guān)鍵性能計(jì)算)q診斷(非關(guān)鍵性能計(jì)算)q障礙物檢測(cè)(有時(shí)限,關(guān)鍵性能計(jì)算)q通信、傳感等(有可修改性需求,使用“虛擬機(jī)”技術(shù))實(shí)例化模塊 (2)診斷通訊虛擬機(jī)障礙物檢測(cè)用戶(hù)接口保證時(shí)限時(shí)間的調(diào)度程序升/降門(mén)傳感器/啟發(fā)器虛擬機(jī)分配功能 (1)n該步驟的目的是驗(yàn)證現(xiàn)有的分解時(shí)限所要求的功能q防止功能的遺漏n應(yīng)用與父模塊相關(guān)的用例可以讓
10、構(gòu)架師更詳細(xì)的了解功能的分布情況q可能導(dǎo)致增加或刪除子模塊q父模塊的每個(gè)用例都可用子模塊的一系列責(zé)任來(lái)表示分配功能 (2)n為分解模塊中的子模塊分配責(zé)任還會(huì)幫助發(fā)現(xiàn)必要的信息交換q這必須作為生產(chǎn)者/消費(fèi)者關(guān)系記錄下來(lái)q信息交互的細(xì)節(jié)在這一步并不重要n一些交互將引入模塊間交互的特定模式q比如:發(fā)布/訂閱模式q必須記錄這些模式,對(duì)于受影響的模塊而言,它們將轉(zhuǎn)化為責(zé)任用多個(gè)視圖表示構(gòu)架 (1)n通常使用三種主要的視圖類(lèi)型中,每種選擇一個(gè)視圖來(lái)表示構(gòu)架(如果這些視圖的表示還不足夠怎么辦?)q模塊分解視圖n為責(zé)任提供容器;確定模塊間的主要數(shù)據(jù)流關(guān)系q并發(fā)視圖n確定資源競(jìng)爭(zhēng)、可能出現(xiàn)的死鎖和數(shù)據(jù)一致性問(wèn)題n可能會(huì)發(fā)現(xiàn)模塊的新責(zé)任q比如對(duì)臨界資源的并發(fā)訪問(wèn)q必須在模塊視圖中對(duì)這個(gè)新責(zé)任進(jìn)行記錄n可能導(dǎo)致新模塊的產(chǎn)生q比如:一個(gè)資源管理器用多個(gè)視圖表示構(gòu)架 (2)q理解車(chē)庫(kù)門(mén)系統(tǒng)中的并發(fā),要考慮以下用例n兩個(gè)用戶(hù)同時(shí)做類(lèi)似的事情(用HIS關(guān)門(mén),用開(kāi)關(guān)關(guān)門(mén))q識(shí)別資源競(jìng)爭(zhēng)或數(shù)據(jù)完整性問(wèn)題n一個(gè)用戶(hù)同時(shí)執(zhí)行多個(gè)活動(dòng)q揭示數(shù)據(jù)交換和活動(dòng)控制問(wèn)題n啟動(dòng)系統(tǒng)q提供系統(tǒng)初始化的策略和概述n關(guān)閉系統(tǒng)q揭示系統(tǒng)清除(關(guān)機(jī))問(wèn)題q部署視圖n確定部署到特定硬件上出現(xiàn)的特殊責(zé)任n確定是否需要某些模塊的多個(gè)實(shí)例