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