現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件匯 7 軟件設(shè)計(jì)基礎(chǔ)- 16 軟件項(xiàng)目管理_第1頁
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件匯 7 軟件設(shè)計(jì)基礎(chǔ)- 16 軟件項(xiàng)目管理_第2頁
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件匯 7 軟件設(shè)計(jì)基礎(chǔ)- 16 軟件項(xiàng)目管理_第3頁
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件匯 7 軟件設(shè)計(jì)基礎(chǔ)- 16 軟件項(xiàng)目管理_第4頁
現(xiàn)代軟件工程(在線實(shí)訓(xùn)版)課件匯 7 軟件設(shè)計(jì)基礎(chǔ)- 16 軟件項(xiàng)目管理_第5頁
已閱讀5頁,還剩798頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

軟件設(shè)計(jì)基礎(chǔ)軟件工程內(nèi)容何為軟件設(shè)計(jì)設(shè)計(jì)的對(duì)象、任務(wù)和過程以及產(chǎn)生的設(shè)計(jì)元素軟件設(shè)計(jì)原則抽象、求精、模塊、隱藏、多視點(diǎn)、分離軟件設(shè)計(jì)方法結(jié)構(gòu)化設(shè)計(jì)方法面向?qū)ο笤O(shè)計(jì)方法軟件設(shè)計(jì)輸出及評(píng)審軟件設(shè)計(jì)軟件制品、軟件設(shè)計(jì)缺陷及評(píng)審要求1.1何為軟件設(shè)計(jì)?軟件設(shè)計(jì)針對(duì)軟件需求,綜合考慮各種制約因素,探究軟件實(shí)現(xiàn)的解決方案設(shè)計(jì)前提:軟件需求定義了要做什么樣的軟件設(shè)計(jì)考慮:制約因素資源:時(shí)間、人力、財(cái)力、開發(fā)輔助工具技術(shù):技術(shù)平臺(tái),如DBMS還是文件系統(tǒng)軟件設(shè)計(jì)軟件需求解決方案制約因素軟件設(shè)計(jì)是要給出軟件需求的實(shí)現(xiàn)解決方案何為軟件系統(tǒng)的解決方案?描述了如何來構(gòu)造和實(shí)現(xiàn)軟件系統(tǒng)模塊的組織模塊的功能和接口模塊間的交互模塊內(nèi)部的算法人機(jī)交互的界面和方式數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)數(shù)據(jù)庫(kù)的設(shè)計(jì)和組織……軟件系統(tǒng)的解決方案類似于軟件實(shí)現(xiàn)圖紙從實(shí)現(xiàn)的角度,軟件設(shè)計(jì)方案應(yīng)該是什么樣的?不同設(shè)計(jì)內(nèi)容不同設(shè)計(jì)層次不同設(shè)計(jì)視角示例:“小米便簽”的軟件實(shí)現(xiàn)解決方案整體架構(gòu)層面的設(shè)計(jì)模塊組織接口交互算法數(shù)據(jù)……從需求到設(shè)計(jì)和編碼需求

設(shè)計(jì)回答如何做(How)

設(shè)計(jì)圖紙根據(jù)需求來進(jìn)行設(shè)計(jì),確保設(shè)計(jì)的質(zhì)量設(shè)計(jì)

實(shí)現(xiàn)基于設(shè)計(jì)來指導(dǎo)施工和實(shí)現(xiàn)設(shè)計(jì)的好壞直接決定了最終產(chǎn)品的好壞!軟件設(shè)計(jì)關(guān)注于軟件需求的實(shí)現(xiàn)問題軟件需求軟件設(shè)計(jì)編碼實(shí)現(xiàn)1.2需求分析、軟件設(shè)計(jì)、軟件實(shí)現(xiàn)間的關(guān)系軟件設(shè)計(jì)模型和文檔設(shè)計(jì)的制約因素和質(zhì)量要求源程序代碼軟件需求模型和文檔軟件設(shè)計(jì)處于承上啟下的作用需求分析軟件設(shè)計(jì)編碼實(shí)現(xiàn)軟件設(shè)計(jì)是需求分析和軟件實(shí)現(xiàn)間的橋梁軟件需求軟件設(shè)計(jì)軟件代碼要做什么,明確問題和目標(biāo)如何做,繪制圖紙做出來,開展施工思考和討論直接根據(jù)軟件需求來編寫代碼行嗎?為什么?1.3設(shè)計(jì)的多樣性和差異性:質(zhì)量用戶需求如何區(qū)分設(shè)計(jì)的差異性?如何評(píng)價(jià)設(shè)計(jì)的優(yōu)劣?除了滿足需求之外,設(shè)計(jì)還需要注意哪些要素?設(shè)計(jì)結(jié)果1設(shè)計(jì)結(jié)果2設(shè)計(jì)結(jié)果n軟件設(shè)計(jì)軟件設(shè)計(jì)是一個(gè)創(chuàng)作的過程一個(gè)軟件需求會(huì)有多種軟件設(shè)計(jì)方案軟件設(shè)計(jì)的質(zhì)量要求正確性正確實(shí)現(xiàn)所有的軟件需求項(xiàng);設(shè)計(jì)元素間無邏輯沖突;在技術(shù)平臺(tái)和軟件項(xiàng)目的可用資源約束條件下,采用程序設(shè)計(jì)語言可完整地實(shí)現(xiàn)設(shè)計(jì)模型充分性所有的設(shè)計(jì)元素已充分細(xì)化,模型易于理解,編程人員勿需再面對(duì)影響軟件功能和質(zhì)量的技術(shù)抉擇或權(quán)衡優(yōu)化性以合理的、充分優(yōu)化的方式實(shí)現(xiàn)軟件需求模型,目標(biāo)軟件產(chǎn)品能夠表現(xiàn)出良好的軟件質(zhì)量屬性,尤其是正確性、有效性、可靠性和可修改性簡(jiǎn)單性模型中的模塊的功能或職責(zé)盡可能簡(jiǎn)明易懂,模塊間的關(guān)系簡(jiǎn)單直觀,模型的結(jié)構(gòu)盡可能自然地反映待解軟件問題的結(jié)構(gòu)高質(zhì)量軟件設(shè)計(jì)的特點(diǎn)正確性可靠性可維護(hù)性可重用性可追蹤性可移植性可互操作性有效性安全性……設(shè)計(jì)不僅要滿足需求,還要有好的質(zhì)量!要從多個(gè)利益相關(guān)者的角度來理解設(shè)計(jì)的“質(zhì)量”用戶、開發(fā)者、維護(hù)人員等設(shè)計(jì)要內(nèi)外兼修內(nèi)在質(zhì)量和外在質(zhì)量思考和討論為什么要關(guān)注設(shè)計(jì)的質(zhì)量?如果軟件設(shè)計(jì)質(zhì)量不高,會(huì)帶來什么樣的問題?如何來確保軟件設(shè)計(jì)的質(zhì)量?1.4軟件設(shè)計(jì)過程體系結(jié)構(gòu)設(shè)計(jì)人機(jī)交互設(shè)計(jì)軟件詳細(xì)設(shè)計(jì)文檔化軟件設(shè)計(jì)軟件設(shè)計(jì)評(píng)審軟件設(shè)計(jì)管理軟件需求迭代軟件設(shè)計(jì)過程–軟件體系結(jié)構(gòu)設(shè)計(jì)從全局和宏觀視角、站在最高抽象層次來設(shè)計(jì)軟件系統(tǒng)構(gòu)成要素及其關(guān)系職責(zé)分派、接口定義相互交互及協(xié)作行為每個(gè)模塊為“黑盒子”設(shè)計(jì)關(guān)注的質(zhì)量要素可擴(kuò)展、可維護(hù)、可重用、可移植、可互操作等等要素:函數(shù)、方法、類、程序包關(guān)系:依賴、交互區(qū)別:粒度示例:分層的軟件體系結(jié)構(gòu)服務(wù)業(yè)務(wù)界面合理地設(shè)計(jì)抽象層次和組織軟構(gòu)件是關(guān)鍵交互和約束

軟件設(shè)計(jì)過程–用戶界面設(shè)計(jì)設(shè)計(jì)軟件對(duì)外展示以及與用戶進(jìn)行交互的界面,關(guān)注軟件如何與用戶進(jìn)行交互輸出:告訴給用戶的信息輸入:需要用戶提供的信息設(shè)計(jì)關(guān)注的質(zhì)量要素直觀、友好、易于操作和理解等軟件設(shè)計(jì)過程–軟件詳細(xì)設(shè)計(jì)對(duì)體系結(jié)構(gòu)設(shè)計(jì)和人機(jī)交互設(shè)計(jì)成果進(jìn)行細(xì)化和精化,獲得高質(zhì)量的、充分細(xì)化的軟件設(shè)計(jì)模型構(gòu)件和類設(shè)計(jì):細(xì)化各個(gè)構(gòu)件和類設(shè)計(jì),如屬性、操作、狀態(tài)等接口設(shè)計(jì):構(gòu)件和類等提供的交互接口算法設(shè)計(jì):實(shí)現(xiàn)特定功能的具體執(zhí)行流程和算法數(shù)據(jù)設(shè)計(jì):信息描述

計(jì)算機(jī)可以處理的數(shù)據(jù)描述設(shè)計(jì)關(guān)注的質(zhì)量要素有效、高效、可靠、易于維護(hù)等等示例:軟構(gòu)件及接口設(shè)計(jì)軟構(gòu)件及其之間的關(guān)系示例:類設(shè)計(jì)publicclassContact{privatestaticHashMap<String,String>sContactCache;privatestaticfinalStringTAG="Contact";privatestaticfinalStringCALLER_ID_SELECTION;publicstaticStringgetContact(Contextcontext,StringphoneNumber)……}給出類層次的設(shè)計(jì)信息屬性方法及其算法等軟件設(shè)計(jì)過程–其它工作撰寫設(shè)計(jì)文檔基于軟件設(shè)計(jì)及其成果,按照軟件設(shè)計(jì)規(guī)格說明書的規(guī)范和要求,撰寫軟件設(shè)計(jì)文檔,詳細(xì)記錄軟件設(shè)計(jì)的具體信息評(píng)審軟件設(shè)計(jì)對(duì)軟件設(shè)計(jì)制品(包括設(shè)計(jì)模型和文檔)進(jìn)行評(píng)審,驗(yàn)證軟件設(shè)計(jì)是否實(shí)現(xiàn)了軟件需求,分析軟件設(shè)計(jì)的質(zhì)量,發(fā)現(xiàn)軟件設(shè)計(jì)中存在的缺陷和問題,并與多方人員一起協(xié)商加以解決軟件設(shè)計(jì)管理對(duì)軟件設(shè)計(jì)變化以及相應(yīng)的軟件設(shè)計(jì)制品進(jìn)行有效的管理,包括追蹤軟件設(shè)計(jì)變化、分析和評(píng)估軟件設(shè)計(jì)變化所產(chǎn)生的影響、對(duì)變化后的軟件設(shè)計(jì)制品進(jìn)行配置管理等等思考和討論不按照上述過程來進(jìn)行軟件設(shè)計(jì)行嗎?先進(jìn)行詳細(xì)設(shè)計(jì),再進(jìn)行體系結(jié)構(gòu)設(shè)計(jì)會(huì)產(chǎn)生什么樣的問題?1.5三類軟件設(shè)計(jì)元素過程、函數(shù)和設(shè)計(jì)類它們既是最基本的設(shè)計(jì)單元,也是最基本的模塊單元軟構(gòu)件可分離、可獨(dú)立部署和執(zhí)行、可單獨(dú)重用的一類設(shè)計(jì)元素如動(dòng)態(tài)鏈接庫(kù)(.DLL)、可運(yùn)行的JavaJAR包、微服務(wù)鏡像等就屬于軟構(gòu)件子系統(tǒng)完成特定功能、邏輯上相互關(guān)聯(lián)的一組模塊集合有助于管理軟件系統(tǒng)的復(fù)雜度,簡(jiǎn)化軟件設(shè)計(jì)和實(shí)現(xiàn),如軟件包所有的設(shè)計(jì)元素在編碼實(shí)現(xiàn)時(shí)都有相應(yīng)的對(duì)應(yīng)物軟件設(shè)計(jì)元素之間的關(guān)系軟件系統(tǒng)子系統(tǒng)函數(shù)、過程和設(shè)計(jì)類軟構(gòu)件11..n10..n1..n0..n0..n0..n0..11..n0..11..n示例:軟件設(shè)計(jì)元素小米便簽軟件體現(xiàn)了哪些設(shè)計(jì)元素??jī)?nèi)容軟件設(shè)計(jì)概述設(shè)計(jì)元素、任務(wù)和過程軟件設(shè)計(jì)原則抽象、求精、模塊、隱藏、多視點(diǎn)、分離軟件設(shè)計(jì)方法結(jié)構(gòu)化設(shè)計(jì)方法面向?qū)ο笤O(shè)計(jì)方法軟件設(shè)計(jì)輸出及評(píng)審軟件設(shè)計(jì)軟件制品、軟件設(shè)計(jì)缺陷及評(píng)審要求2.1軟件設(shè)計(jì)要考慮的因素滿足需求正確、一致、可行、完整、無冗余等權(quán)衡抉擇多種設(shè)計(jì)方案,明確優(yōu)缺點(diǎn),綜合考慮多方因素關(guān)注質(zhì)量要求應(yīng)對(duì)變化易于理解和擴(kuò)展,高效處理等如何才能得到高質(zhì)量的軟件設(shè)計(jì)呢?==》軟件設(shè)計(jì)原則2.2軟件設(shè)計(jì)的基本原則抽象與逐步求精模塊化,高內(nèi)聚度、低耦合度信息隱藏多視點(diǎn)和關(guān)注點(diǎn)分離軟件重用迭代設(shè)計(jì)可追蹤性1.抽象原則何為抽象?在認(rèn)識(shí)事物、分析和解決問題的過程中,忽略那些與當(dāng)前研究目標(biāo)不相關(guān)的部分,以便將注意力集中于與當(dāng)前目標(biāo)相關(guān)的方面抽象是管理和控制復(fù)雜性的基本策略如在架構(gòu)設(shè)計(jì)時(shí)不考慮實(shí)現(xiàn)細(xì)節(jié)抽象在軟件設(shè)計(jì)中的應(yīng)用軟件開發(fā)就是一個(gè)從高層抽象到低層抽象逐步過渡過程高層設(shè)計(jì)(架構(gòu)設(shè)計(jì))

底層設(shè)計(jì)(詳細(xì)設(shè)計(jì)),“逐步求精”過程軟件設(shè)計(jì)抽象層次的變化體系結(jié)構(gòu)設(shè)計(jì)抽象模塊抽象(類、函數(shù))算法設(shè)計(jì)抽象逐步求精結(jié)構(gòu)性全局性關(guān)鍵性過程性局部性細(xì)節(jié)性軟件設(shè)計(jì)過程中不采用抽象的原則會(huì)產(chǎn)生什么樣的結(jié)果?示例:體系結(jié)構(gòu)層次的設(shè)計(jì)抽象關(guān)注有哪些構(gòu)件,它們的職責(zé)和接口(體系結(jié)構(gòu)設(shè)計(jì)的抽象),無需關(guān)注構(gòu)件內(nèi)部的細(xì)節(jié)(構(gòu)件設(shè)計(jì)的抽象)外部的功能和服務(wù)示例:構(gòu)件層次的設(shè)計(jì)抽象考慮構(gòu)件內(nèi)部設(shè)計(jì)元素的職責(zé)和協(xié)同(構(gòu)件設(shè)計(jì)的抽象),無需關(guān)注每個(gè)類的實(shí)現(xiàn)細(xì)節(jié)(類設(shè)計(jì)的抽象)構(gòu)件內(nèi)部的結(jié)構(gòu)和交互2.模塊化、高內(nèi)聚度和低耦合度原則將軟件系統(tǒng)的整體結(jié)構(gòu)分解為一組相對(duì)獨(dú)立的模塊模塊:包、子系統(tǒng)、構(gòu)件、類、方法等等每個(gè)模塊實(shí)現(xiàn)單一的功能通過模塊之間的交互來組裝模塊,形成整體框架體現(xiàn)了“分而治之”思想如何達(dá)成模塊化模塊內(nèi)部強(qiáng)內(nèi)聚模塊之間低耦合模塊n模塊m不按照模塊化的原則來進(jìn)行軟件設(shè)計(jì)會(huì)怎樣?模塊內(nèi)部強(qiáng)內(nèi)聚模塊之間低耦合高內(nèi)聚度原則何為模塊的內(nèi)聚度?指該模塊內(nèi)各成分間彼此結(jié)合的緊密程度,越高越好,高內(nèi)聚內(nèi)聚度分類偶然性內(nèi)聚:模塊內(nèi)各成分為完成一組功能而結(jié)合在一起,關(guān)系松散邏輯性內(nèi)聚:模塊完成的諸任務(wù)邏輯上相關(guān)時(shí)間性內(nèi)聚:模塊內(nèi)諸任務(wù)必須在同一時(shí)間段內(nèi)執(zhí)行過程性內(nèi)聚:模塊內(nèi)各成分相關(guān)且必須按特定次序執(zhí)行通訊性內(nèi)聚:模塊內(nèi)各成分對(duì)數(shù)據(jù)結(jié)構(gòu)的同一區(qū)域操作順序性內(nèi)聚:模塊內(nèi)各成分與同一功能相關(guān)且順序執(zhí)行功能性內(nèi)聚:模塊內(nèi)各成分是一整體,完成單個(gè)功能低耦合度原則何為模塊間的耦合度?模塊間的相關(guān)程度,越低越好,低耦合耦合度分類非直接耦合:二個(gè)模塊都不依賴對(duì)方而獨(dú)立存在數(shù)據(jù)耦合:二個(gè)模塊通過參數(shù)交換信息且僅限于數(shù)據(jù)控制耦合:二個(gè)模塊通過參數(shù)交換信息包含控制信息特征耦合:介于數(shù)據(jù)耦合和控制耦合之間外部耦合:二個(gè)模塊與同一外部環(huán)境相關(guān)聯(lián)(文件等)公共耦合:模塊間通過全局?jǐn)?shù)據(jù)環(huán)境相互作用內(nèi)容耦合:一個(gè)模塊使用另一模塊內(nèi)的數(shù)據(jù)和控制信息,或者直接轉(zhuǎn)移到另一模塊內(nèi)執(zhí)行模塊分解與開發(fā)成本之間的關(guān)系工作量或成本設(shè)計(jì)模塊總數(shù)最小成本區(qū)域用于接口的開銷每個(gè)模塊的成本按照模塊化原則開展軟件設(shè)計(jì),有助于得到模塊數(shù)量適中、開發(fā)工作量和成本較低、易于維護(hù)的設(shè)計(jì)結(jié)果3.信息隱藏原則何為信息隱藏?模塊應(yīng)該設(shè)計(jì)得使其所含的信息對(duì)那些不需要這些信息的模塊不可訪問;模塊間僅僅交換那些為完成系統(tǒng)功能所必需交換的信息信息隱藏的優(yōu)點(diǎn)模塊的獨(dú)立性更好支持模塊的并行開發(fā)(設(shè)計(jì)和編碼)減少錯(cuò)誤向外傳播,便于測(cè)試和維護(hù)便于增加新的功能信息隱藏示例模塊只提供對(duì)外接口,不提供內(nèi)部實(shí)現(xiàn)細(xì)節(jié)Public方法對(duì)外可訪問某些方法或?qū)傩栽O(shè)計(jì)為不可訪問Private不可訪問面向?qū)ο蠓椒▽W(xué)如何支持信息隱藏?4.關(guān)注點(diǎn)分離原則何為關(guān)注點(diǎn)針對(duì)概念、任務(wù)和目標(biāo)的某個(gè)部分或者側(cè)面的聚焦關(guān)注點(diǎn):結(jié)構(gòu)、行為等何為關(guān)注點(diǎn)分離設(shè)計(jì)師將若干性質(zhì)不同的關(guān)注點(diǎn)分離開來,以便在適當(dāng)?shù)臅r(shí)間處理不同的關(guān)注點(diǎn),隨后將這些關(guān)注點(diǎn)整合起來,形成局部或者全局性的設(shè)計(jì)結(jié)果防止“胡子眉毛一把抓”關(guān)注點(diǎn)不分離會(huì)產(chǎn)生什么樣的后果?5.軟件重用原則盡可能地重用已有的軟件資產(chǎn)來實(shí)現(xiàn)軟件系統(tǒng)的功能,同時(shí)要確保所開發(fā)的軟件系統(tǒng)易于重用可被重用的軟件資產(chǎn)代碼形式:代碼片段、過程、函數(shù)、類、軟構(gòu)件、開源軟件其他形式:軟件設(shè)計(jì)模式、軟件開發(fā)知識(shí)支持軟件重用的技術(shù)手段封裝、接口、繼承、多態(tài)等為什么軟件重用可以提高軟件設(shè)計(jì)的質(zhì)量和開發(fā)效率?6.軟件設(shè)計(jì)的其它原則設(shè)計(jì)可追溯到分析模型經(jīng)常關(guān)注待建系統(tǒng)的架構(gòu)數(shù)據(jù)設(shè)計(jì)和功能設(shè)計(jì)同樣重要必須設(shè)計(jì)接口用戶界面設(shè)計(jì)必須符合最終用戶要求設(shè)計(jì)表述要盡可能易于理解設(shè)計(jì)應(yīng)該迭代進(jìn)行內(nèi)容軟件設(shè)計(jì)概述設(shè)計(jì)元素、任務(wù)和過程軟件設(shè)計(jì)原則抽象、求精、模塊、隱藏、多視點(diǎn)、分離軟件設(shè)計(jì)方法學(xué)結(jié)構(gòu)化設(shè)計(jì)方法面向?qū)ο笤O(shè)計(jì)方法軟件設(shè)計(jì)輸出及評(píng)審軟件設(shè)計(jì)軟件制品、軟件設(shè)計(jì)缺陷及評(píng)審要求何為軟件設(shè)計(jì)方法?軟件設(shè)計(jì)方法明確了按照什么樣的思想、理念和技術(shù)來開展軟件設(shè)計(jì)抽象:模塊及交互過程:設(shè)計(jì)步驟語言:設(shè)計(jì)描述工具:設(shè)計(jì)支撐有哪些軟件設(shè)計(jì)方法結(jié)構(gòu)化軟件設(shè)計(jì)方法面向?qū)ο筌浖O(shè)計(jì)方法3.1結(jié)構(gòu)化軟件設(shè)計(jì)結(jié)構(gòu)化軟件設(shè)計(jì)方法學(xué)(StructuredDesignMethodology)產(chǎn)生于二十世紀(jì)七十年代,代表性成果是面向數(shù)據(jù)流的軟件設(shè)計(jì)方法學(xué)基本思想基于結(jié)構(gòu)化需求分析結(jié)果(如數(shù)據(jù)流圖),將其設(shè)計(jì)為以功能模塊為核心的軟件設(shè)計(jì)模型(如模塊化、層次化的設(shè)計(jì)模型),最后交由結(jié)構(gòu)化程序設(shè)計(jì)語言(如C、Fortran等)加以實(shí)現(xiàn)面向數(shù)據(jù)流的設(shè)計(jì)方法學(xué)主要用于支持軟件的體系結(jié)構(gòu)設(shè)計(jì),其思想簡(jiǎn)單、技術(shù)成熟,在軟件產(chǎn)業(yè)界得到廣泛應(yīng)結(jié)構(gòu)化軟件設(shè)計(jì)的輸出結(jié)果模塊層次圖–軟件體系結(jié)構(gòu)模塊1模塊2.1模塊2.2模塊2.3模塊2.k模塊3.1模塊3.2模塊3.3模塊3.4模塊3.r模塊n.m模塊n.1第1層第2層第3層第n層模塊作為軟件體系結(jié)構(gòu)的基本單元模塊之間的交互表現(xiàn)為模塊調(diào)用軟件體系結(jié)構(gòu)變現(xiàn)為層次化的形式結(jié)構(gòu)化軟件設(shè)計(jì)方法的輸入、輸出和方法輸入需求分析階段得到的數(shù)據(jù)流圖輸出層次化的軟件體系結(jié)構(gòu)圖方法將數(shù)據(jù)流圖映射為軟件體系結(jié)構(gòu)圖數(shù)據(jù)流圖轉(zhuǎn)換方法軟件體系結(jié)構(gòu)數(shù)據(jù)流圖的形式變換流和事務(wù)流外部形式外部形式內(nèi)部形式內(nèi)部形式事務(wù)中心(a)變換型數(shù)據(jù)流圖(b)事務(wù)型數(shù)據(jù)流圖將數(shù)據(jù)流圖映射為軟件體系結(jié)構(gòu)圖的方法變換型數(shù)據(jù)流圖的映射方法事務(wù)型數(shù)據(jù)流圖的映射方法3.1.1變換流的映射方法–輸入輸入:變換型數(shù)據(jù)流圖示例:變換型的數(shù)據(jù)流圖“Mini-12306”中“查詢車次”轉(zhuǎn)換進(jìn)行精化后所得到的2級(jí)數(shù)據(jù)流圖步驟1:確定輸入流、輸出流和變換流劃定輸入流界和輸出流界,將數(shù)據(jù)流圖劃分為三個(gè)部分輸入流、輸出流、變換流示例:劃定流界步驟2:執(zhí)行一級(jí)分解一級(jí)分解的任務(wù)是要導(dǎo)出具有三個(gè)層次的軟件結(jié)構(gòu)最頂層為主控模塊,負(fù)責(zé)協(xié)調(diào)和控制中間層的模塊最底層對(duì)應(yīng)于輸入流、輸出流和變換流中的轉(zhuǎn)換經(jīng)過變換后所映射的軟件模塊中間層的三個(gè)控制模塊,用于控制最底層軟件模塊示例:一級(jí)分解得到的軟件體系結(jié)構(gòu)粗胚主控模塊變換流控制模塊

輸入流控制模塊

輸出流控制模塊

輸入流部分的轉(zhuǎn)換映射來的模塊變換流部分的轉(zhuǎn)換映射來的模塊輸出流部分的轉(zhuǎn)換映射來的模塊頂層中間層底層步驟3:執(zhí)行二級(jí)分解將數(shù)據(jù)流中輸入流、輸出流、變換流中的轉(zhuǎn)換映射為軟件模塊,并將它們放在軟件結(jié)構(gòu)底層的適當(dāng)位置沿著輸入流界和輸出流界往外移動(dòng),把所遇到的每一個(gè)轉(zhuǎn)換映射為一個(gè)相應(yīng)的模塊輸入流部分的轉(zhuǎn)換所映射的模塊放置在“輸入流控制模塊”之下。輸出流部分的轉(zhuǎn)換所映射的模塊放置在“輸出流控制模塊”之下沿著輸入流界向輸出流界移動(dòng),把所遇到的每一個(gè)轉(zhuǎn)換映射為一個(gè)相應(yīng)的模塊,放置在“變換流控制模塊”之下示例:二級(jí)分解得到的軟件體系結(jié)構(gòu)主控模塊變換流控制模塊輸入流控制模塊輸出流控制模塊頂層中間層底層產(chǎn)生異常狀況提示信息獲取家屬和醫(yī)生的手機(jī)信息建立與家屬和醫(yī)生的連接將提示信息發(fā)到家屬和醫(yī)生手機(jī)上將老人信息傳送到網(wǎng)絡(luò)連接中播放語音和顯示圖像視頻信息示例:二級(jí)分解得到的軟件體系結(jié)構(gòu)Mini-12306中的案例主控模塊變換流控制模塊

輸入流控制模塊

輸出流控制模塊

頂層中間層底層分析查詢信息的合法性查詢列車信息庫(kù)顯示車次信息步驟4:優(yōu)化軟件體系結(jié)構(gòu)刪除不必要模塊、合并高耦合度模塊、拆分低內(nèi)聚度模塊,得到高內(nèi)聚度、低耦合度、易于實(shí)現(xiàn)和測(cè)試的軟件體系結(jié)構(gòu)主控模塊輸出流控制模塊

頂層中間層底層產(chǎn)生異常狀況提示信息獲取家屬和醫(yī)生的手機(jī)信息建立與家屬和醫(yī)生的連接將提示信息發(fā)到家屬和醫(yī)生手機(jī)上將老人信息傳送到網(wǎng)絡(luò)連接中播放語音和顯示圖像視頻信息示例:優(yōu)化軟件體系結(jié)構(gòu)Mini-12306中的案例主控模塊頂層底層分析查詢信息的合法性查詢列車信息庫(kù)顯示車次信息3.1.2事務(wù)流的映射方法–輸入輸入:事務(wù)型數(shù)據(jù)流圖示例:事務(wù)型的數(shù)據(jù)流圖Mini-12306中的案例步驟1:確定事務(wù)中心和動(dòng)作路徑分析事務(wù)中心,整個(gè)事務(wù)型數(shù)據(jù)流圖就可分為三個(gè)部分:事務(wù)中心、接收路徑、動(dòng)作路徑集合示例:劃定事務(wù)型數(shù)據(jù)流圖的流界Mini-12306中的案例步驟2:執(zhí)行一級(jí)分解將事務(wù)型數(shù)據(jù)流圖映射為軟件體系結(jié)構(gòu)整體框架它主要由“接收路徑控制”和“散轉(zhuǎn)”二部分的模塊組成事務(wù)控制接收路徑控制散轉(zhuǎn)接收路徑部分的轉(zhuǎn)換經(jīng)映射產(chǎn)生的模塊動(dòng)作路徑1經(jīng)轉(zhuǎn)換映射產(chǎn)生的模塊動(dòng)作路徑n經(jīng)轉(zhuǎn)換映射產(chǎn)生的模塊步驟3:處理事務(wù)中心和每條路徑的數(shù)據(jù)流圖把事務(wù)中心和每條路徑的數(shù)據(jù)流圖映射為相應(yīng)軟件模塊事務(wù)控制接收路徑控制分析控制命令讀取控制命令評(píng)估機(jī)器人傳感器控制命令的安全性和合法性評(píng)估機(jī)器人移動(dòng)控制命令的安全性產(chǎn)生運(yùn)動(dòng)指令示例:映射事務(wù)處理中心和每條路徑Mini-12306中的案例事務(wù)控制接收路徑控制分析用戶類別提取用戶類別查詢旅客庫(kù)查詢售票員庫(kù)分析登錄結(jié)果分析登錄信息合法性步驟4:優(yōu)化軟件體系結(jié)構(gòu)對(duì)軟件體系結(jié)構(gòu)進(jìn)行優(yōu)化處理,以便提高整個(gè)軟件體系結(jié)構(gòu)的模塊化程度和質(zhì)量事務(wù)控制分析控制命令讀取控制命令評(píng)估機(jī)器人傳感器控制命令的安全性和合法性評(píng)估機(jī)器人移動(dòng)控制命令的安全性產(chǎn)生運(yùn)動(dòng)指令示例:優(yōu)化軟件體系結(jié)構(gòu)Mini-12306中的案例事務(wù)控制分析用戶類別提取用戶類別查詢旅客庫(kù)查詢售票員庫(kù)分析登錄結(jié)果分析登錄信息合法性結(jié)構(gòu)化軟件設(shè)計(jì)方法的特點(diǎn)以數(shù)據(jù)流為輸入,以層次化的軟件體系結(jié)構(gòu)為輸出采用轉(zhuǎn)換和映射的方法得到的是軟件體系結(jié)構(gòu),屬于軟件體系結(jié)構(gòu)設(shè)計(jì)工作在此基礎(chǔ)上可以進(jìn)一步開展詳細(xì)設(shè)計(jì)工作3.2面向?qū)ο筌浖O(shè)計(jì)方法學(xué)針對(duì)面向?qū)ο笮枨蠓治鏊玫降能浖枨竽P停ㄈ缬美龍D、交互圖、分析類圖),對(duì)其進(jìn)行不斷精化(而非轉(zhuǎn)換),獲得軟件系統(tǒng)的各類軟件設(shè)計(jì)元素,如子系統(tǒng)、構(gòu)件、設(shè)計(jì)類等,產(chǎn)生不同視角、不同抽象層次的軟件設(shè)計(jì)模型,如軟件體系結(jié)構(gòu)圖、用例設(shè)計(jì)交互圖、設(shè)計(jì)類圖、活動(dòng)圖等,形成軟件系統(tǒng)完整和詳盡的設(shè)計(jì)方案面向?qū)ο筌浖O(shè)計(jì)方法學(xué)面向?qū)ο筌浖O(shè)計(jì)方法學(xué)面向?qū)ο筌浖枨竽P兔嫦驅(qū)ο筌浖O(shè)計(jì)模型提供了概念、機(jī)制、過程、策略等來支持OO軟件設(shè)計(jì),產(chǎn)生高質(zhì)量軟件設(shè)計(jì)面向?qū)ο筌浖O(shè)計(jì)過程軟件體系結(jié)構(gòu)設(shè)計(jì)用戶界面設(shè)計(jì)構(gòu)件/子系統(tǒng)設(shè)計(jì)用例設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)類設(shè)計(jì)詳細(xì)設(shè)計(jì)面向?qū)ο蟮母拍睢C(jī)制和建模語言(如UML)等面向?qū)ο筌浖O(shè)計(jì)建模-包圖用包圖表示的軟件體系結(jié)構(gòu)設(shè)計(jì)包來表示體系結(jié)構(gòu)要素軟構(gòu)件來表示體系結(jié)構(gòu)要素面向?qū)ο筌浖O(shè)計(jì)建模-順序圖順序圖用于表示對(duì)象之間的交互時(shí)序及內(nèi)容面向?qū)ο筌浖O(shè)計(jì)的優(yōu)勢(shì)(1/2)高層抽象和自然過渡面向?qū)ο蟾拍罡淤N近于現(xiàn)實(shí)世界,有助于對(duì)應(yīng)用問題以及軟件系統(tǒng)的直觀理解和建模采用相同的一組抽象和概念來進(jìn)行描述和分析,基于模型的精化手段來實(shí)現(xiàn)軟件設(shè)計(jì),極大簡(jiǎn)化了軟件設(shè)計(jì)工作面向?qū)ο竽P透子跒槿藗兯邮埽蓽p少軟件工程師與用戶之間的交流鴻溝,有助于支持大型復(fù)雜軟件系統(tǒng)的開發(fā)多種形式和粗粒度的軟件重用提供了多種方式來支持軟件重用,進(jìn)而有助于提高軟件開發(fā)的效率和質(zhì)量面向?qū)ο筌浖O(shè)計(jì)的優(yōu)勢(shì)(2/2)系統(tǒng)化的軟件設(shè)計(jì)系統(tǒng)地支持軟件設(shè)計(jì)階段的所有工作,包括體系結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、軟構(gòu)件設(shè)計(jì)、子系統(tǒng)設(shè)計(jì)、用例設(shè)計(jì)、類設(shè)計(jì)等等支持軟件的擴(kuò)展和變更提供了接口、抽象類、繼承、實(shí)現(xiàn)等多種機(jī)制,可以設(shè)計(jì)出易于擴(kuò)展和變更的軟件設(shè)計(jì)模型3.3軟件設(shè)計(jì)的CASE工具軟件設(shè)計(jì)文檔撰寫工具如借助于MicrosoftOffice、WPS等軟件設(shè)計(jì)模型繪制工具如MicrosoftVisio、StarUML、ArgoUML等工具軟件設(shè)計(jì)分析和轉(zhuǎn)換工具如IBMRationalRose等軟件工具配置管理工具和平臺(tái)如Git、Github、Gitlab、PVCS、MicrosoftSourceSafe等,支持軟件需求制品(如模型、文檔等)的配置、版本管理、變化跟蹤等3.4軟件設(shè)計(jì)工程師負(fù)責(zé)軟件設(shè)計(jì)的各項(xiàng)工作,包括體系結(jié)構(gòu)設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)、用戶界面設(shè)計(jì)、詳細(xì)設(shè)計(jì)等包括架構(gòu)師、數(shù)據(jù)設(shè)計(jì)工程師、用戶界面設(shè)計(jì)工程師等等創(chuàng)新能力抽象和建模能力質(zhì)量保證能力組織、溝通和協(xié)調(diào)能力權(quán)衡抉擇能力內(nèi)容軟件設(shè)計(jì)概述設(shè)計(jì)元素、任務(wù)和過程軟件設(shè)計(jì)原則抽象、求精、模塊、隱藏、多視點(diǎn)、分離軟件設(shè)計(jì)方法結(jié)構(gòu)化設(shè)計(jì)方法面向?qū)ο笤O(shè)計(jì)方法軟件設(shè)計(jì)輸出及評(píng)審軟件設(shè)計(jì)軟件制品、軟件設(shè)計(jì)缺陷及評(píng)審要求4.1軟件設(shè)計(jì)的輸出軟件設(shè)計(jì)模型它從多個(gè)不同的視角、不同的抽象層次描述了軟件的設(shè)計(jì)信息,并采用諸如UML、模塊圖、層次圖等圖形化的方式來加以刻畫軟件設(shè)計(jì)文檔它采用自然語言的形式,結(jié)合軟件設(shè)計(jì)模型,詳細(xì)描述軟件系統(tǒng)的各項(xiàng)設(shè)計(jì),包括體系結(jié)構(gòu)設(shè)計(jì)、子系統(tǒng)和構(gòu)件設(shè)計(jì)、用戶界面設(shè)計(jì)、用例設(shè)計(jì)、數(shù)據(jù)設(shè)計(jì)等等4.2軟件設(shè)計(jì)文檔規(guī)范及其內(nèi)容文檔概述系統(tǒng)概述設(shè)計(jì)目標(biāo)和原則設(shè)計(jì)約束和現(xiàn)實(shí)限制體系結(jié)構(gòu)設(shè)計(jì)用戶界面設(shè)計(jì)子系統(tǒng)/構(gòu)件設(shè)計(jì)用例設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)接口設(shè)計(jì)軟件設(shè)計(jì)文檔采用圖文并茂的方式詳細(xì)描述軟件設(shè)計(jì)的具體內(nèi)容4.3軟件設(shè)計(jì)中的缺陷設(shè)計(jì)不滿足需求對(duì)軟件需求的理解存在偏差,未能正確地理解用戶的軟件需求,導(dǎo)致所設(shè)計(jì)的軟件無法滿足用戶的需要設(shè)計(jì)質(zhì)量低下設(shè)計(jì)過程中未能遵循設(shè)計(jì)原則、缺乏設(shè)計(jì)經(jīng)驗(yàn),導(dǎo)致軟件設(shè)計(jì)質(zhì)量低下,如設(shè)計(jì)的軟件不易于維護(hù)和擴(kuò)展設(shè)計(jì)存在不一致不同軟件設(shè)計(jì)制品對(duì)同一個(gè)設(shè)計(jì)有不同的描述,或者存在不一致甚至相沖突的設(shè)計(jì)內(nèi)容;多個(gè)不同軟件設(shè)計(jì)要素之間存在不一致設(shè)計(jì)不夠詳盡未能提供設(shè)計(jì)細(xì)節(jié)性信息,導(dǎo)致程序員無法根據(jù)設(shè)計(jì)來開展編碼工作4.4軟件設(shè)計(jì)的評(píng)審目的:發(fā)現(xiàn)軟件設(shè)計(jì)模型和文檔中的缺陷誰參與評(píng)審設(shè)計(jì)工程師、程序員、測(cè)試工程師、用戶、質(zhì)量保證人員等評(píng)審什么內(nèi)容文檔規(guī)范性,軟件設(shè)計(jì)文檔是否符合軟件設(shè)計(jì)規(guī)格說明書設(shè)計(jì)制品的可理解性,是否簡(jiǎn)潔、易于理解設(shè)計(jì)內(nèi)容的合法性,設(shè)計(jì)結(jié)果是否符合相關(guān)的標(biāo)準(zhǔn)、法律和法規(guī)設(shè)計(jì)的質(zhì)量水平,軟件設(shè)計(jì)是否遵循設(shè)計(jì)原則,質(zhì)量如何設(shè)計(jì)是否滿足需求,設(shè)計(jì)是否完整和正確地實(shí)現(xiàn)了軟件需求設(shè)計(jì)優(yōu)化性,軟件設(shè)計(jì)是否還有待優(yōu)化的內(nèi)容4.5軟件設(shè)計(jì)的管理軟件設(shè)計(jì)的變更管理明確哪些方面發(fā)生了變更、這些變化反應(yīng)在軟件設(shè)計(jì)模型和文檔的哪些部分、導(dǎo)致軟件設(shè)計(jì)模型和文檔的版本發(fā)生了什么樣變化軟件設(shè)計(jì)的追溯管理搞清楚是什么原因?qū)е铝塑浖O(shè)計(jì)的變更,評(píng)估設(shè)計(jì)變更的影響域,評(píng)估設(shè)計(jì)變更對(duì)軟件項(xiàng)目開發(fā)帶來的影響軟件設(shè)計(jì)的基線管理一旦軟件設(shè)計(jì)模型和文檔通過了評(píng)審,納入到基線庫(kù)中拓展閱讀設(shè)計(jì)原本“TheDesignofDesign:EssaysfromAComputerScientist”,F(xiàn)rederickP.Brooks著,高博朱磊王海鵬譯,機(jī)械工業(yè)出版社,2013.該書是《人月神話》作者、著名計(jì)算機(jī)科學(xué)家、軟件工程教父、美國(guó)兩院院士、圖靈獎(jiǎng)和IEEE計(jì)算機(jī)先驅(qū)獎(jiǎng)得主Brooks的另一項(xiàng)重要著作。該書從工程師和架構(gòu)師的視角深入探討了軟件設(shè)計(jì)的過程,尤其是復(fù)雜系統(tǒng)的設(shè)計(jì)過程,旨在提高軟件產(chǎn)品的實(shí)用性與有效性,以及設(shè)計(jì)的效率。作者分析了軟件設(shè)計(jì)過程的演進(jìn),探討了協(xié)作和分布式設(shè)計(jì),闡明了哪些因素造就了真正卓越的軟件設(shè)計(jì)者課后作業(yè)和課程實(shí)訓(xùn)訪問/paths/1944完成第八章“軟件設(shè)計(jì)基礎(chǔ)”的實(shí)訓(xùn)闖關(guān)任務(wù)本章知識(shí)圖譜小結(jié)軟件設(shè)計(jì)是要給出軟件需求的實(shí)現(xiàn)解決方案設(shè)計(jì)既要滿足需求,也要關(guān)注質(zhì)量;設(shè)計(jì)用于指導(dǎo)實(shí)現(xiàn)和編碼軟件設(shè)計(jì)有其過程,要循序漸進(jìn)地開展設(shè)計(jì)從體系結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、詳細(xì)設(shè)計(jì)軟件設(shè)計(jì)要遵循一系列的基本原則模塊化、信息隱藏、逐步求精、多視點(diǎn)等面向?qū)ο筌浖O(shè)計(jì)的特點(diǎn)基于面向?qū)ο蟮母拍詈统橄螅到y(tǒng)性的設(shè)計(jì)支持,具有多種優(yōu)點(diǎn)對(duì)軟件設(shè)計(jì)結(jié)果進(jìn)行文檔化和評(píng)審撰寫軟件設(shè)計(jì)文檔,發(fā)現(xiàn)和糾正軟件設(shè)計(jì)中存在的缺陷綜合實(shí)踐一任務(wù):搜尋可支持新需求實(shí)現(xiàn)的開源軟件或其它可重用軟件資源方法分析開源軟件的實(shí)現(xiàn)技術(shù)和運(yùn)行環(huán)境,到開源軟件托管平臺(tái)中尋找合適的開源軟件要求深入理解軟件設(shè)計(jì)需要滿足的約束和限制,找到可有效支持新需求實(shí)現(xiàn)的可重用軟件資源結(jié)果:無綜合實(shí)踐二任務(wù):搜尋可有效支持軟件實(shí)現(xiàn)的開源軟件或其它的可重用軟件資源方法基于軟件開發(fā)平臺(tái)(如編程語言環(huán)境)所提供的軟件開發(fā)包來尋找可重用的軟件資源,或者到開源軟件托管平臺(tái)(如Github、Gitee)尋找合適的開源軟件要求結(jié)合軟件開發(fā)的各種約束和限制來理解軟件設(shè)計(jì)的約束和限制,盡可能多的找到可支持軟件實(shí)現(xiàn)的可重用軟件資源結(jié)果:無問題和討論軟件體系結(jié)構(gòu)設(shè)計(jì)軟件工程內(nèi)容何為軟件體系結(jié)構(gòu)概念、視圖、模型及UML表示軟件體系結(jié)構(gòu)風(fēng)格如何開展軟件體系結(jié)構(gòu)設(shè)計(jì)任務(wù)、目標(biāo)、要求和原則體系結(jié)構(gòu)設(shè)計(jì)過程軟件體系結(jié)構(gòu)設(shè)計(jì)的結(jié)果及評(píng)審文檔模板、驗(yàn)證原則1.1軟件體系結(jié)構(gòu)的概念軟件體系結(jié)構(gòu)(SoftwareArchitecture,SA)也稱軟件架構(gòu),從高層抽象角度刻畫組成軟件系統(tǒng)的設(shè)計(jì)元素及它們之間的邏輯關(guān)聯(lián)MMMMMMMMM軟件體系結(jié)構(gòu)如何體現(xiàn)高層和抽象特征?這里的設(shè)計(jì)元素是什么?1.2軟件體系結(jié)構(gòu)的設(shè)計(jì)元素構(gòu)件(Component)構(gòu)成體系結(jié)構(gòu)的基本功能部件連接件(Connector)組件之間的連接和交互關(guān)系約束(Constraint)組件中的元素應(yīng)滿足的條件以及組件經(jīng)由連接件組裝成更大模塊時(shí)應(yīng)滿足的條件MMMMMM1.構(gòu)件何為構(gòu)件軟件系統(tǒng)中的物理模塊,具有特定的功能和精確定義的對(duì)外接口,外界可通過接口來訪問它特點(diǎn)可分離:一個(gè)或數(shù)個(gè)可獨(dú)立部署執(zhí)行碼文件可替換:構(gòu)件實(shí)例可被其它任何實(shí)現(xiàn)了相同接口的另一構(gòu)件實(shí)例所替換可配置:可通過配置機(jī)制修改構(gòu)件配置數(shù)據(jù),影響構(gòu)件對(duì)外服務(wù)的功能或行為可復(fù)用:構(gòu)件可不經(jīng)源代碼修改,無需重新編譯,即可應(yīng)用于多個(gè)軟件項(xiàng)目或軟件產(chǎn)品示例:構(gòu)件.dll文件.jar文件構(gòu)件不是源程序,而是可運(yùn)行的二進(jìn)制代碼構(gòu)件是物理存在的(有實(shí)際的文件),而非是邏輯存在的構(gòu)件是可訪問的,以獲取其功能和服務(wù)構(gòu)件應(yīng)該是粗粒度的,而非細(xì)粒度的示例:軟構(gòu)件Acrobat軟件中的軟構(gòu)件物理存在粗粒度可訪問可運(yùn)行分布的(可能)構(gòu)件的UML表示可以用不同的UML圖符來表示軟構(gòu)件思考和討論舉例和示范你計(jì)算機(jī)中安裝的軟件及其構(gòu)件對(duì)比軟構(gòu)件與源代碼、軟構(gòu)件與.class之間的區(qū)別和聯(lián)系為什么要將軟件組織為一組構(gòu)件2.連接子連接子表示軟構(gòu)件之間的連接和交互關(guān)系每個(gè)軟構(gòu)件并非孤立,它們之間通過連接進(jìn)行交互交互的目的是為了交換數(shù)據(jù)、獲得功能和服務(wù)軟構(gòu)件之間的典型交互方式消息傳遞(MessageSending)事件通知和廣播過程調(diào)用遠(yuǎn)程過程調(diào)用(RemoteProcedureCall,RPC)主題訂閱等等硬件接口連接和接口二種接口(Interface)供給接口:對(duì)外提供的接口需求接口:請(qǐng)求其他構(gòu)件幫助所需的接口連接端口(Port)每個(gè)端口綁定了一組供給接口和/或需求接口構(gòu)件通過端口與外部世界交互當(dāng)外部請(qǐng)求到達(dá)端口時(shí),構(gòu)件的端口知道如何將外部請(qǐng)求路由至合適的接口的實(shí)現(xiàn)體當(dāng)構(gòu)件通過端口請(qǐng)求外部服務(wù)時(shí),端口也知道如何分辨該請(qǐng)求所對(duì)應(yīng)的需求接口構(gòu)件通過接口對(duì)外提供服務(wù)構(gòu)件通過接口訪問其他構(gòu)件,獲得功能構(gòu)件與接口構(gòu)件的實(shí)現(xiàn)與構(gòu)件的接口相分離構(gòu)件開發(fā)者可自由選擇實(shí)現(xiàn)方法,只要它實(shí)現(xiàn)供給接口中的操作及屬性兩個(gè)構(gòu)件的實(shí)現(xiàn)遵循相同接口定義,它們就可自由替換構(gòu)件交互示例:構(gòu)件之間的連接和交互節(jié)點(diǎn)A節(jié)點(diǎn)B節(jié)點(diǎn)C訂閱者發(fā)布者話題/消息訂閱者發(fā)布者話題/消息客戶端服務(wù)請(qǐng)求服務(wù)端服務(wù)響應(yīng)連接和接口的表示對(duì)外提供的接口需要訪問其他構(gòu)件的接口硬件的接口軟件的接口思考和討論如果一個(gè)軟構(gòu)件沒有對(duì)外的接口是否可以?是否有意義?沒有接口的軟構(gòu)件會(huì)帶來什么問題?1.2.3約束約束對(duì)軟構(gòu)件的布局及相互之間的交互進(jìn)行必要的限制示例高層次軟件元素可向低層次軟件元素發(fā)請(qǐng)求,低層次軟件元素完成計(jì)算后向高層次發(fā)送應(yīng)答,反之不行每個(gè)軟件元素根據(jù)其職責(zé)位于適當(dāng)?shù)膶哟危豢慑e(cuò)置,如核心層不能包含界面輸入接收職責(zé)每個(gè)層次都是可替換的,一個(gè)層次可以被實(shí)現(xiàn)了同樣的對(duì)外服務(wù)接口的層次所替代1.3軟件體系結(jié)構(gòu)的不同視圖邏輯視圖:要素及關(guān)系,站在結(jié)構(gòu)視點(diǎn)和抽象層次運(yùn)行視圖:在特定時(shí)刻軟構(gòu)件的具體情況開發(fā)視圖:構(gòu)件的代碼組織及其形式物理視圖:軟構(gòu)件的部署及其連接和交互軟件體系結(jié)構(gòu)是從結(jié)構(gòu)的角度來刻畫軟件系統(tǒng)可從不同視角來理解、認(rèn)識(shí)、表示和分析軟件體系結(jié)構(gòu)1.軟件體系結(jié)構(gòu)的邏輯視圖:包圖包模型刻畫包間的構(gòu)成和依賴關(guān)系包可以包含一組具有邏輯關(guān)聯(lián)的UML模型元素包間邏輯關(guān)系:構(gòu)成關(guān)系、依賴關(guān)系包圖可描述軟件系統(tǒng)的高層結(jié)構(gòu)包圖以結(jié)構(gòu)化、層次化方式組織、管理大型的軟件模型,使得分別處理不同包的開發(fā)團(tuán)隊(duì)之間的相互干擾程度降至最低包圖:系統(tǒng)(子系統(tǒng))、軟構(gòu)件及邏輯關(guān)系示例:軟件體系結(jié)構(gòu)的包圖表示包圖表示軟件體系結(jié)構(gòu)2.軟件體系結(jié)構(gòu)的邏輯視圖:構(gòu)件圖描述軟件系統(tǒng)中構(gòu)件及構(gòu)件間的關(guān)系結(jié)點(diǎn):構(gòu)件、類和包關(guān)系:交互、依賴關(guān)系對(duì)軟件體系結(jié)構(gòu)的描述描述軟件系統(tǒng)中構(gòu)件的接口定義及構(gòu)件間的依賴關(guān)系,以便評(píng)估軟件變更的影響范圍描述軟件系統(tǒng)或其中某個(gè)局部的構(gòu)件化設(shè)計(jì),為在后續(xù)開發(fā)階段實(shí)現(xiàn)構(gòu)件化的軟件模塊訂立設(shè)計(jì)規(guī)約示例:軟件體系結(jié)構(gòu)的構(gòu)件圖表示“Customer”子系統(tǒng)的內(nèi)部體系結(jié)構(gòu)構(gòu)件接口和端口關(guān)系(依賴)3.軟件體系結(jié)構(gòu)的開發(fā)視圖各軟件要素源代碼的程序分包及目錄結(jié)構(gòu)體系結(jié)構(gòu)的類庫(kù)、中間件、框架和子系統(tǒng),它們與邏輯視圖中各個(gè)軟件元素之間的映射關(guān)系小米便簽的代碼開發(fā)視圖4.軟件體系結(jié)構(gòu)的部署視圖部署圖軟件安裝部署的物理機(jī)器及其連接,各個(gè)構(gòu)件元素在這些機(jī)器上的部署位置表示軟件系統(tǒng)可執(zhí)行工件在運(yùn)行環(huán)境中的分布情況工件(Artifact)工件:軟件系統(tǒng)中相對(duì)獨(dú)立的物理實(shí)現(xiàn)單元示例:Windows平臺(tái)下DLL文件、Java系統(tǒng)中類庫(kù)(jar)文件兩種部署圖邏輯層面的描述性部署圖物理層面的實(shí)例性部署圖示例:描述性部署圖構(gòu)件通信計(jì)算節(jié)點(diǎn)工件5.軟件體系結(jié)構(gòu)的運(yùn)行視圖軟件運(yùn)行時(shí)進(jìn)程、線程的劃分,它們之間的并發(fā)和同步,它們與邏輯視圖和開發(fā)視圖之間的映射關(guān)系可用UML的活動(dòng)圖、對(duì)象圖來表示1.4描述軟件體系結(jié)構(gòu)的三類UML圖包圖構(gòu)件圖部署圖包圖?CopyrightXinjunMao118視點(diǎn)圖(diagram)說明結(jié)構(gòu)

包圖(packagediagram)從包層面描述系統(tǒng)的靜態(tài)結(jié)構(gòu)類圖(classdiagram)從類層面描述系統(tǒng)的靜態(tài)結(jié)構(gòu)對(duì)象圖(objectdiagram)從對(duì)象層面描述系統(tǒng)的靜態(tài)結(jié)構(gòu)構(gòu)件圖(componentdiagram)描述系統(tǒng)中構(gòu)件及其依賴關(guān)系行為

狀態(tài)圖(statechartdiagram)描述狀態(tài)的變遷活動(dòng)圖(activitydiagram)描述系統(tǒng)活動(dòng)的實(shí)施通信圖(communicationdiagram)描述對(duì)象間的消息傳遞與協(xié)作順序圖(sequencediagram)描述對(duì)象間的消息傳遞與協(xié)作部署部署圖(deploymentdiagram)描述系統(tǒng)中工件在物理運(yùn)行環(huán)境中的部署情況用例用例圖(usecasediagram)從外部用戶角度描述系統(tǒng)功能1.包圖功效刻畫包間的構(gòu)成和依賴關(guān)系圖的構(gòu)成節(jié)點(diǎn):包邊:包間的關(guān)系包間的關(guān)系組成和依賴何為包?一組具有邏輯關(guān)聯(lián)的UML模型元素(例如用例、類等)、模型圖(用例圖、類圖、交互圖、狀態(tài)圖、活動(dòng)圖等),以及其他的包包在模型管理過程中是配置管理的基本單元,同時(shí)也為訪問控制提供基本手段Name包的作用作為軟件模型的組織單元將大型軟件系統(tǒng)劃分成不同包,以構(gòu)建各類模型作為模型管理的基本單元以包為單位分派開發(fā)任務(wù)安排計(jì)劃,包是天然的基本處理單元作為系統(tǒng)高層結(jié)構(gòu)中的組成元素。逐級(jí)細(xì)分的包才是軟件高層結(jié)構(gòu)中恰當(dāng)?shù)慕M成元素作為訪問控制的基本手段將包視為名字空間,每個(gè)模型元素可通過在其名稱之前拼接包名,構(gòu)成全系統(tǒng)范圍內(nèi)的唯一限定名來指稱它,正如在文件系統(tǒng)中以文件的全路徑名來唯一地指稱一個(gè)文件示例:包圖包gtask.data.Node2.構(gòu)件圖視點(diǎn)圖(diagram)說明結(jié)構(gòu)

包圖(packagediagram)從包層面描述系統(tǒng)的靜態(tài)結(jié)構(gòu)類圖(classdiagram)從類層面描述系統(tǒng)的靜態(tài)結(jié)構(gòu)對(duì)象圖(objectdiagram)從對(duì)象層面描述系統(tǒng)的靜態(tài)結(jié)構(gòu)構(gòu)件圖(componentdiagram)描述系統(tǒng)中構(gòu)件及其依賴關(guān)系行為

狀態(tài)圖(statechartdiagram)描述狀態(tài)的變遷活動(dòng)圖(activitydiagram)描述系統(tǒng)活動(dòng)的實(shí)施通信圖(communicationdiagram)描述對(duì)象間的消息傳遞與協(xié)作順序圖(sequencediagram)描述對(duì)象間的消息傳遞與協(xié)作部署部署圖(deploymentdiagram)描述系統(tǒng)中工件在物理運(yùn)行環(huán)境中的部署情況用例用例圖(usecasediagram)從外部用戶角度描述系統(tǒng)功能構(gòu)件圖功效描述軟件系統(tǒng)中構(gòu)件及構(gòu)件間的構(gòu)成和依賴關(guān)系圖的構(gòu)成節(jié)點(diǎn):構(gòu)件,具有對(duì)外接口、可分離和獨(dú)立功能物理模塊邊:構(gòu)件間的依賴關(guān)系構(gòu)件及其接口構(gòu)件一個(gè)或者多個(gè)可獨(dú)立部署的執(zhí)行碼文件具有精確定義的供給接口和需求接口可分離,接口和實(shí)現(xiàn)分離可替換,構(gòu)件實(shí)例可被任何實(shí)現(xiàn)相同接口的同一構(gòu)件實(shí)例所替換接口一組操作和/或?qū)傩缘恼f明(不含操作的實(shí)現(xiàn)),它用作服務(wù)提供方和使用方之間的協(xié)議每個(gè)構(gòu)件還可以定義一些端口(port),每個(gè)端口綁定了一組供給接口和/或需求接口接口由類或構(gòu)件實(shí)現(xiàn)?CopyrightXinjunMao125構(gòu)件和接口的表示構(gòu)件的三種圖元構(gòu)件及其接口的兩種表示方法供給接口需求接口示例:構(gòu)件圖?CopyrightXinjunMao127依賴關(guān)系示例:構(gòu)件圖端口接口3.部署圖視點(diǎn)圖(diagram)說明結(jié)構(gòu)

包圖(packagediagram)從包層面描述系統(tǒng)的靜態(tài)結(jié)構(gòu)類圖(classdiagram)從類層面描述系統(tǒng)的靜態(tài)結(jié)構(gòu)對(duì)象圖(objectdiagram)從對(duì)象層面描述系統(tǒng)的靜態(tài)結(jié)構(gòu)構(gòu)件圖(componentdiagram)描述系統(tǒng)中構(gòu)件及其依賴關(guān)系行為

狀態(tài)圖(statechartdiagram)描述狀態(tài)的變遷活動(dòng)圖(activitydiagram)描述系統(tǒng)活動(dòng)的實(shí)施通信圖(communicationdiagram)描述對(duì)象間的消息傳遞與協(xié)作順序圖(sequencediagram)描述對(duì)象間的消息傳遞與協(xié)作部署部署圖(deploymentdiagram)描述系統(tǒng)中工件在物理運(yùn)行環(huán)境中的部署情況用例用例圖(usecasediagram)從外部用戶角度描述系統(tǒng)功能部署圖功效表示軟件系統(tǒng)可執(zhí)行工件(artifact)在運(yùn)行環(huán)境中的部署和分布情況工件是指軟件中相對(duì)獨(dú)立的物理實(shí)現(xiàn)單元,如動(dòng)態(tài)鏈接庫(kù)(DLL)文件、Java類庫(kù)(jar)文件圖的構(gòu)成節(jié)點(diǎn):計(jì)算節(jié)點(diǎn)、工件、構(gòu)件邊:通信和依賴兩種部署圖邏輯層面的描述性部署圖描述軟件的邏輯布局物理層面的實(shí)例性部署圖針對(duì)具體運(yùn)行環(huán)境和特定的系統(tǒng)配置描述軟件系統(tǒng)的物理部署情況?CopyrightXinjunMao130描述性部署圖的節(jié)點(diǎn)節(jié)點(diǎn)表示軟件運(yùn)行環(huán)境中的一組計(jì)算資源(如Web服務(wù)器、應(yīng)用服務(wù)器、數(shù)據(jù)庫(kù)服務(wù)器等),軟件工件駐留于其中,并依賴其提供的基礎(chǔ)服務(wù)工件以構(gòu)造型<<artifact>>標(biāo)識(shí),工件位于節(jié)點(diǎn)圖元之內(nèi)構(gòu)件位于節(jié)點(diǎn)之內(nèi)的構(gòu)件表示該構(gòu)件部署于相應(yīng)節(jié)點(diǎn),位于節(jié)點(diǎn)之外的構(gòu)件主要用來指明工件與構(gòu)件之間的依賴關(guān)系與用例有關(guān)的執(zhí)行者在部署圖中引入執(zhí)行者意在強(qiáng)調(diào)執(zhí)行者與部署于節(jié)點(diǎn)中的工件之間的使用關(guān)系及信息交互描述性部署圖的邊節(jié)點(diǎn)之間的通信關(guān)聯(lián)表示兩個(gè)節(jié)點(diǎn)間的通信連接工件之間的依賴關(guān)系如果工件定義了對(duì)外接口,那么應(yīng)確保工件間的依賴關(guān)系表現(xiàn)為工件接口上的依賴關(guān)系,如此可降低工件之間的耦合度工件與構(gòu)件之間的依賴關(guān)系表示工件具體實(shí)現(xiàn)了構(gòu)件用例執(zhí)行者與工件之間的依賴關(guān)系表示執(zhí)行者使用工件提供的服務(wù)或工件使用執(zhí)行者提供的服務(wù)示例:描述性部署圖實(shí)例性部署圖實(shí)例性部署圖與描述性部署圖之間的關(guān)系可類比為對(duì)象圖與類圖之間的關(guān)系實(shí)例性部署圖中節(jié)點(diǎn)的命名方式為“節(jié)點(diǎn)名:類型名”,其中類型名為描述性部署圖中的節(jié)點(diǎn)名部署圖的建模原則節(jié)點(diǎn)按行上下對(duì)齊,按列左右對(duì)齊,邊繪制成水平線段、垂直線段或者由水平、垂直兩種線段組合而成的折線,避免斜線工件和構(gòu)件的放置應(yīng)盡量使依賴關(guān)系的方向從左至右供給接口位于構(gòu)件的左側(cè),需求接口位于構(gòu)件的右側(cè)示例:實(shí)例性部署圖通訊協(xié)議通訊協(xié)議實(shí)例節(jié)點(diǎn)1.5軟件設(shè)計(jì)模式借用以往的經(jīng)驗(yàn)來解決問題以設(shè)計(jì)重用為目的,采用一種良定義的、正規(guī)的、一致的方式記錄的軟件設(shè)計(jì)經(jīng)驗(yàn)關(guān)注在一般或特定設(shè)計(jì)環(huán)境中可能重復(fù)出現(xiàn)的設(shè)計(jì)問題,并給出經(jīng)過充分實(shí)踐考驗(yàn)的軟件解決方案名稱問題施用和約束條件解決方案效果不同抽象層次的設(shè)計(jì)模式體系結(jié)構(gòu)風(fēng)格面向整個(gè)軟件系統(tǒng)構(gòu)件設(shè)計(jì)模式面向子系統(tǒng)或者構(gòu)件實(shí)現(xiàn)設(shè)計(jì)模式針對(duì)子系統(tǒng)或構(gòu)件中的某個(gè)特定問題整體、全局局部細(xì)節(jié)體系結(jié)構(gòu)設(shè)計(jì)風(fēng)格面向整個(gè)軟件系統(tǒng),在抽象層次給出軟件體系結(jié)構(gòu)的結(jié)構(gòu)化組織方式提供一些預(yù)定義的子系統(tǒng)或者構(gòu)件,規(guī)定其職責(zé),明確它們之間的相互關(guān)系、協(xié)作方式的規(guī)則或指南針對(duì)不同的問題采用不同的體系結(jié)構(gòu)模式常用軟件體系結(jié)構(gòu)風(fēng)格分層風(fēng)格管道與過濾器風(fēng)格黑板風(fēng)格MVC風(fēng)格SOA風(fēng)格總線風(fēng)格……1.分層體系結(jié)構(gòu)模式模式思想將軟件系統(tǒng)按照抽象級(jí)別逐次遞增或遞減的順序,組織為若干層次,每層由一些抽象級(jí)別相同構(gòu)件組成典型層次示例頂層:直接面向用戶提供軟件系統(tǒng)的交互界面底層:則負(fù)責(zé)提供基礎(chǔ)性、公共性的技術(shù)服務(wù),它比較接近于硬件計(jì)算環(huán)境、操作系統(tǒng)或數(shù)據(jù)庫(kù)管理系統(tǒng)中間層:介乎二者之間,負(fù)責(zé)具體的業(yè)務(wù)處理何為抽象級(jí)別?示例:分層體系結(jié)構(gòu)風(fēng)格服務(wù)業(yè)務(wù)界面合理地設(shè)計(jì)抽象層次和組織軟構(gòu)件是關(guān)鍵交互和約束構(gòu)件連接子約束分層體系結(jié)構(gòu)模式的約束層次間的關(guān)系每層為其緊鄰上層提供服務(wù),使用緊鄰下層所提供的服務(wù)(約束)上層向下層發(fā)出服務(wù)請(qǐng)求,下層為上層反饋服務(wù)結(jié)果(連接)下層向上層提供事件信息,上層對(duì)下層通知做出處理(連接)服務(wù)接口的組織方式(連接)層次中的每個(gè)構(gòu)件分別公開其服務(wù)接口每個(gè)層次統(tǒng)一對(duì)外提供整合的服務(wù)接口分層體系結(jié)構(gòu)模式的特點(diǎn)松耦合減低整個(gè)軟件系統(tǒng)的耦合度可替換一個(gè)層次可以有多個(gè)實(shí)現(xiàn)實(shí)例可復(fù)用層次和整個(gè)系統(tǒng)可重用標(biāo)準(zhǔn)化支持體系結(jié)構(gòu)及其層次、接口的標(biāo)準(zhǔn)化2.管道與過濾器風(fēng)格構(gòu)件將軟件功能實(shí)現(xiàn)為一系列處理步驟,每個(gè)步驟封裝在一個(gè)過濾器構(gòu)件中連接子相鄰過濾器間以管道連接,一個(gè)過濾器的輸出數(shù)據(jù)借助管道流向后續(xù)過濾器,作為其輸入數(shù)據(jù)數(shù)據(jù)軟件系統(tǒng)的輸入由數(shù)據(jù)源(datasource)提供軟件最終輸出由源自某個(gè)過濾器的管道流向數(shù)據(jù)匯(datasink)典型數(shù)據(jù)源和數(shù)據(jù)匯包括數(shù)據(jù)庫(kù)、文件、其他軟件系統(tǒng)、物理設(shè)備等管道與過濾器模式的示例數(shù)據(jù)匯管道過濾器數(shù)據(jù)源管道與過濾器風(fēng)格的約束過濾器與管道之間的協(xié)作方式(連接和約束)過濾器以循環(huán)的方式不斷地從管道提取輸入數(shù)據(jù),并將其輸出數(shù)據(jù)壓入管道,稱為主動(dòng)過濾器管道將輸入數(shù)據(jù)壓入到位于其目標(biāo)端過濾器,過濾器被動(dòng)地等待數(shù)據(jù),稱為被動(dòng)過濾器管道負(fù)責(zé)提取位于其源端過濾器的輸出數(shù)據(jù)設(shè)計(jì)考慮如果管道連接的兩端均為主動(dòng)過濾器,那么管道必須負(fù)責(zé)它們之間的同步,典型的同步方法是先進(jìn)先出緩沖器如果管道的一端為主動(dòng)過濾器,另一端為被動(dòng)過濾器,那么管道的數(shù)據(jù)流轉(zhuǎn)功能可通過前者直接調(diào)用后者來實(shí)現(xiàn)示例:管道與過濾器風(fēng)格詞法分析語法分析生成中間碼代碼優(yōu)化源代碼詞法分析結(jié)果語法分析結(jié)果中間碼可執(zhí)行代碼編譯器采用的就是一個(gè)典型的管道/過濾器風(fēng)格管道過濾器管道管道過濾器過濾器過濾器管道與過濾器模式的特點(diǎn)自然地解決具有數(shù)據(jù)流特征的軟件需求可獨(dú)立地更新、升級(jí)過濾器來實(shí)現(xiàn)軟件系統(tǒng)的擴(kuò)展和進(jìn)化3.黑板風(fēng)格將軟件系統(tǒng)劃分為黑板、知識(shí)源和控制器三類構(gòu)件黑板:負(fù)責(zé)保存問題求解過程中的狀態(tài)數(shù)據(jù),并提供這些數(shù)據(jù)的讀寫服務(wù)知識(shí)源:負(fù)責(zé)根據(jù)黑板中存儲(chǔ)的問題求解狀態(tài)評(píng)價(jià)其自身的可應(yīng)用性,進(jìn)行部分問題求解工作,并將此工作的結(jié)果數(shù)據(jù)寫入黑板控制器:負(fù)責(zé)監(jiān)視黑板中不斷更新的狀態(tài)數(shù)據(jù),安排(多個(gè))知識(shí)源的活動(dòng)。黑板風(fēng)格示意圖構(gòu)件構(gòu)件構(gòu)件連接知識(shí)源實(shí)際上是處理數(shù)據(jù)黑板風(fēng)格的約束控制構(gòu)件通過觀察黑板中的狀態(tài)數(shù)據(jù)來決定哪些知識(shí)源對(duì)后續(xù)的問題求解可能有所貢獻(xiàn),然后調(diào)用這些知識(shí)源的評(píng)價(jià)功能以選取參與下一步求解活動(dòng)的知識(shí)源被選中的知識(shí)源基于黑板中的狀態(tài)數(shù)據(jù)將問題求解工作向前推進(jìn),并根據(jù)結(jié)果更新黑板中的狀態(tài)數(shù)據(jù)控制構(gòu)件不斷重復(fù)上述控制過程,及至問題求解獲得滿意的結(jié)果黑板風(fēng)格的特點(diǎn)可靈活升級(jí)和更換知識(shí)源和控制構(gòu)件知識(shí)源的獨(dú)立性和可重用性好知識(shí)源之間沒有交互軟件系統(tǒng)具有較好的容錯(cuò)性和健壯性知識(shí)源的問題求解動(dòng)作是探索性的,允許失敗和糾錯(cuò)4.MVC風(fēng)格模型構(gòu)件負(fù)責(zé)存儲(chǔ)業(yè)務(wù)數(shù)據(jù)并提供業(yè)務(wù)邏輯處理功能視圖構(gòu)件負(fù)責(zé)向用戶呈現(xiàn)模型中的數(shù)據(jù)控制器在接獲模型的業(yè)務(wù)邏輯處理結(jié)果后,負(fù)責(zé)選擇適當(dāng)?shù)囊晥D作為軟件系統(tǒng)對(duì)用戶的界面動(dòng)作的響應(yīng)MVC體系結(jié)構(gòu)示意圖模型構(gòu)件,處理數(shù)據(jù)視圖構(gòu)件,展示數(shù)據(jù)控制構(gòu)件,根據(jù)數(shù)據(jù)選擇視圖展示連接MVC風(fēng)格的約束創(chuàng)建視圖,視圖對(duì)象從模型中獲取數(shù)據(jù)并呈現(xiàn)用戶界面視圖接受界面動(dòng)作,將其轉(zhuǎn)換為內(nèi)部事件傳遞給控制器所有視圖在接獲來自模型的業(yè)務(wù)數(shù)據(jù)變化通知后向模型查詢新的數(shù)據(jù),并據(jù)此更新視圖控制器將用戶界面事件轉(zhuǎn)換為業(yè)務(wù)邏輯處理功能的調(diào)用控制器根據(jù)模型的處理結(jié)果創(chuàng)建新的視圖、選擇其他視圖或維持原有視圖模型進(jìn)行業(yè)務(wù)邏輯處理,將處理結(jié)果回送給控制器,必要時(shí)還需將業(yè)務(wù)數(shù)據(jù)變化事件通知給所有視圖5.SOA風(fēng)格將軟件系統(tǒng)的軟構(gòu)件抽象為一個(gè)個(gè)的服務(wù)(Service),每個(gè)服務(wù)封裝了特定的功能并提供了對(duì)外可訪問的接口任何一個(gè)服務(wù)既可以充當(dāng)服務(wù)的提供方,接受其他服務(wù)的訪問請(qǐng)求;也可充當(dāng)服務(wù)的請(qǐng)求方,請(qǐng)求其他服務(wù)為其提供功能任何服務(wù)需要向服務(wù)注冊(cè)中心進(jìn)行注冊(cè)登記,描述其可提供的服務(wù)以及訪問方式,才可對(duì)外提供服務(wù)SOA軟件體系結(jié)構(gòu)風(fēng)格示意圖服務(wù)注冊(cè)中心服務(wù)請(qǐng)求方服務(wù)提供方1.注冊(cè)和發(fā)布服務(wù)2.查詢服務(wù)3.訪問和獲得服務(wù)構(gòu)件SOA風(fēng)格的特點(diǎn)將服務(wù)提供方和服務(wù)請(qǐng)求方獨(dú)立開來,因而支持服務(wù)間的松耦合定義允許任何一個(gè)服務(wù)在運(yùn)行過程中所扮演角色的動(dòng)態(tài)調(diào)整,支持服務(wù)集合在運(yùn)行過程中的動(dòng)態(tài)變化,因而具有非常強(qiáng)的靈活性提供了諸如UDDI、SOAP、WSDL等協(xié)議來支持服務(wù)的注冊(cè)、描述和綁定等,因而可有效支持異構(gòu)服務(wù)間的交互6.消息總線風(fēng)格包含了一組軟構(gòu)件和一條稱為“消息總線”的連接件來連接各個(gè)軟構(gòu)件消息總線成為軟構(gòu)件之間的通信橋梁,實(shí)現(xiàn)各個(gè)軟構(gòu)件之間的消息發(fā)送、接收、轉(zhuǎn)發(fā)、處理等功能每一個(gè)軟構(gòu)件通過接入總線,實(shí)現(xiàn)消息的發(fā)送和接收功能消息總線風(fēng)格示意圖消息總線(事件、消息、數(shù)據(jù)、……)軟構(gòu)件軟構(gòu)件軟構(gòu)件軟構(gòu)件軟構(gòu)件構(gòu)件討論:實(shí)踐項(xiàng)目的軟件體系結(jié)構(gòu)基于上述軟件體系結(jié)構(gòu)模式,思考你的實(shí)踐項(xiàng)目應(yīng)該采用什么樣的軟件體系結(jié)構(gòu)模式?為什么??jī)?nèi)容何為軟件體系結(jié)構(gòu)概念、視圖、模型及UML表示軟件體系結(jié)構(gòu)風(fēng)格軟件體系結(jié)構(gòu)設(shè)計(jì)任務(wù)、目標(biāo)、要求和原則體系結(jié)構(gòu)設(shè)計(jì)過程文檔化和評(píng)審軟件體系結(jié)構(gòu)設(shè)計(jì)文檔模板、驗(yàn)證原則2.1軟件體系結(jié)構(gòu)設(shè)計(jì)的任務(wù)建立滿足軟件需求的軟件體系結(jié)構(gòu)明確定義各子系統(tǒng)、構(gòu)件、關(guān)鍵類的職責(zé)劃分及協(xié)作關(guān)系明確它們?cè)谖锢磉\(yùn)行環(huán)境下的部署特點(diǎn)針對(duì)軟件系統(tǒng)全局性、基礎(chǔ)性技術(shù)問題給出技術(shù)解決方案宏觀、全局、層次、戰(zhàn)略、多視點(diǎn)、關(guān)鍵性軟件體系結(jié)構(gòu)設(shè)計(jì)示意圖軟件體系結(jié)構(gòu)設(shè)計(jì)功能性需求非功能性(質(zhì)量)需求開發(fā)約束需求軟件體系結(jié)構(gòu)風(fēng)格遺留軟件和可重用軟件資源軟件體系結(jié)構(gòu)模型2.2軟件體系結(jié)構(gòu)設(shè)計(jì)的目標(biāo)滿足軟件需求實(shí)現(xiàn)軟件需求……追求高質(zhì)量可擴(kuò)展可伸縮易維護(hù)…….軟件體系結(jié)構(gòu)設(shè)計(jì)軟件需求軟件體系結(jié)構(gòu)模型制約因素滿足高質(zhì)量非功能需求在體系結(jié)構(gòu)設(shè)計(jì)中起著非常重要的作用軟件體系結(jié)構(gòu)設(shè)計(jì)vs軟件需求體系結(jié)構(gòu)是以軟件需求實(shí)現(xiàn)為目標(biāo)的軟件設(shè)計(jì)藍(lán)圖軟件需求是體系結(jié)構(gòu)設(shè)計(jì)的基礎(chǔ)和驅(qū)動(dòng)因素軟件需求,尤其是非功能需求,對(duì)軟件體系結(jié)構(gòu)具有關(guān)鍵性的塑形作用軟件體系結(jié)構(gòu)設(shè)計(jì)軟件需求軟件體系結(jié)構(gòu)模型制約因素軟件體系結(jié)構(gòu)設(shè)計(jì)vs詳細(xì)設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)為詳細(xì)設(shè)計(jì)提供可操作指導(dǎo)詳細(xì)設(shè)計(jì)是對(duì)體系結(jié)構(gòu)設(shè)計(jì)中設(shè)計(jì)要素的局部設(shè)計(jì)詳細(xì)設(shè)計(jì)須遵循體系結(jié)構(gòu)設(shè)計(jì):如接口和約束詳細(xì)設(shè)計(jì)只能實(shí)現(xiàn)、不能更改體系結(jié)構(gòu)設(shè)計(jì)中規(guī)定模塊的接口和行為體系結(jié)構(gòu)設(shè)計(jì)人機(jī)界面設(shè)計(jì)詳細(xì)設(shè)計(jì)整合與驗(yàn)證迭代設(shè)計(jì)、反復(fù)精化、持續(xù)優(yōu)化基于體系結(jié)構(gòu)設(shè)計(jì)的結(jié)果來指導(dǎo)詳細(xì)設(shè)計(jì)軟件體系結(jié)構(gòu)設(shè)計(jì)的重要性和關(guān)鍵性承上啟下軟件需求—詳細(xì)設(shè)計(jì),后續(xù)的詳細(xì)設(shè)計(jì)和軟件實(shí)現(xiàn)的主要工作基礎(chǔ)影響深遠(yuǎn)對(duì)性能、靈活性、可修改性、可擴(kuò)充性等質(zhì)量需求的影響是決定性的,軟件質(zhì)量的瓶頸定型質(zhì)量對(duì)軟件質(zhì)量的全局性、決定性影響思考和討論對(duì)比建筑物的體系結(jié)構(gòu)設(shè)計(jì),如果軟件體系結(jié)構(gòu)設(shè)計(jì)的不好,會(huì)產(chǎn)生什么樣的問題?何為一個(gè)高質(zhì)量的軟件體系結(jié)構(gòu)設(shè)計(jì)?2.3軟件體系結(jié)構(gòu)設(shè)計(jì)的過程設(shè)計(jì)初步的軟件體系結(jié)構(gòu)重用可用的軟件資源精化軟件體系結(jié)構(gòu)設(shè)計(jì)部署模型文檔化和評(píng)審軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)模型初步軟件體系結(jié)構(gòu)初步軟件體系結(jié)構(gòu)軟件體系結(jié)構(gòu)模型軟件體系結(jié)構(gòu)設(shè)計(jì)的原則高層抽象和組織模塊化信息隱藏軟件重用多視點(diǎn)分離遵循這些設(shè)計(jì)原則有助于得到高質(zhì)量的軟件體系結(jié)構(gòu)1.設(shè)計(jì)初步的軟件體系結(jié)構(gòu)任務(wù)基于功能性和非功能性軟件需求,參考業(yè)界已有的軟件體系結(jié)構(gòu)設(shè)計(jì)風(fēng)格,設(shè)計(jì)出目標(biāo)軟件系統(tǒng)的初始體系結(jié)構(gòu),明確每個(gè)構(gòu)件的職責(zé)以及構(gòu)件間的通信和協(xié)作關(guān)系輸出:初步的軟件體系結(jié)構(gòu)針對(duì)軟件需求,尋求體系結(jié)構(gòu)風(fēng)格,給出初步和粗糙的頂層架構(gòu),以供后續(xù)設(shè)計(jì)階段的精化和細(xì)化無需關(guān)注架構(gòu)中各個(gè)子系統(tǒng)或構(gòu)件內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)用UML中的包圖對(duì)所設(shè)計(jì)的頂層架構(gòu)進(jìn)行直觀的表示初始體系結(jié)構(gòu)設(shè)計(jì)的方法初創(chuàng)體系結(jié)構(gòu)設(shè)計(jì)關(guān)鍵軟件需求體系結(jié)構(gòu)風(fēng)格一個(gè)或者多個(gè)初始體系結(jié)構(gòu)模式軟件開發(fā)經(jīng)驗(yàn)辨識(shí)關(guān)鍵軟件需求確定最能體現(xiàn)待開發(fā)軟件特色的核心功能需求通常是殺手功能,獨(dú)有的功能確定核心或基礎(chǔ)性功能其他功能依賴于這些功能或僅當(dāng)這些功能實(shí)現(xiàn)后其他功能才有意義確定為實(shí)現(xiàn)對(duì)外接口所必需的支持功能對(duì)外接口的實(shí)現(xiàn)依賴于這些功能需求項(xiàng)的實(shí)現(xiàn)標(biāo)識(shí)實(shí)現(xiàn)難度較大、實(shí)現(xiàn)風(fēng)險(xiǎn)較高的功能高難度、高風(fēng)險(xiǎn)功能的設(shè)計(jì),及其可操作的風(fēng)險(xiǎn)化解策略確定對(duì)用戶滿意度影響大的功能需求直接影響用戶對(duì)軟件系統(tǒng)的評(píng)價(jià)剔除對(duì)體系結(jié)構(gòu)塑形無貢獻(xiàn)的功能需求項(xiàng)拋棄不重要的軟件需求根據(jù)關(guān)鍵需求選擇合適體系結(jié)構(gòu)風(fēng)格積累體系結(jié)構(gòu)風(fēng)格清單人們總結(jié)出了幾十種軟件體系結(jié)構(gòu)風(fēng)格對(duì)風(fēng)格進(jìn)行分門別類便于快速找到適合于關(guān)鍵需求的風(fēng)格要熟悉每種風(fēng)格的特點(diǎn)和應(yīng)用場(chǎng)所各種風(fēng)格適合解決的問題和需求針對(duì)關(guān)鍵需求對(duì)比多種風(fēng)格正面效果是否適合、負(fù)面效果是否可容忍、是否與關(guān)鍵需求相沖突不同體系結(jié)構(gòu)風(fēng)格適合的應(yīng)用類別特點(diǎn)典型應(yīng)用管道/過濾器風(fēng)格數(shù)據(jù)驅(qū)動(dòng)的分級(jí)處理,處理流程可靈活重組,過濾器可重用數(shù)據(jù)驅(qū)動(dòng)的事務(wù)處理軟件,如編譯器、Web服務(wù)請(qǐng)求等層次風(fēng)格分層抽象、層次間耦合度低、層次的功能可重用和可替換絕大部分的應(yīng)用軟件MVC風(fēng)格模型、處理和顯示的職責(zé)明確,構(gòu)件間的關(guān)系局部化,各個(gè)軟構(gòu)件可重用單機(jī)軟件系統(tǒng),Web應(yīng)用軟件系統(tǒng)SOA風(fēng)格以服務(wù)作為基本的構(gòu)件,支持異構(gòu)構(gòu)件之間的互操作,服務(wù)的靈活重用和組裝部署和運(yùn)行在云平臺(tái)上的軟件系統(tǒng)消息總線風(fēng)格提供統(tǒng)一的消息總線,支持異構(gòu)構(gòu)件之間的消息傳遞和處理異構(gòu)構(gòu)件之間消息通信密集型的軟件系統(tǒng)示例:初步軟件體系結(jié)構(gòu)的設(shè)計(jì)(1/2)“空巢老人看護(hù)軟件”的關(guān)鍵軟件需求監(jiān)視老人、自主跟隨老人、獲取老人信息、檢測(cè)異常狀況、通知異常狀況、控制機(jī)器人、視頻/語音交互、提醒服務(wù)等八項(xiàng)功能性需求為核心軟件需求。其他二項(xiàng)軟件需求為非關(guān)鍵軟件需求。分析不同質(zhì)量需求對(duì)軟件系統(tǒng)的競(jìng)爭(zhēng)力帶來的影響和挑戰(zhàn),可將性能、易用性、安全性、私密性、可靠性、可擴(kuò)展性等質(zhì)量需求作為關(guān)鍵需求“空巢老人看護(hù)軟件”需要采用分布式的運(yùn)行和部署形式,前端軟件制品部署在Android手機(jī)上,后端軟件制品要支持多種機(jī)器人的運(yùn)行,以方便老人家屬和醫(yī)生的靈活和便捷使用。該開發(fā)約束將作為關(guān)鍵軟件需求來指導(dǎo)軟件體系結(jié)構(gòu)的設(shè)計(jì)示例:初步軟件體系結(jié)構(gòu)的設(shè)計(jì)(2/2)“空巢老人看護(hù)軟件”初步軟件體系結(jié)構(gòu)設(shè)計(jì)示例:初步軟件體系結(jié)構(gòu)的設(shè)計(jì)(1/2)Mini-12306軟件具有以下的關(guān)鍵軟件需求注冊(cè)、登錄、查詢車次、購(gòu)票、退票、改簽、支付等功能性需求為關(guān)鍵軟件需求。設(shè)置系統(tǒng)為非關(guān)鍵軟件需求根據(jù)對(duì)該軟件系統(tǒng)的質(zhì)量需求描述,軟件性能、易用性、安全性、私密性、可靠性、可擴(kuò)展性等質(zhì)量需求作為關(guān)鍵需求針對(duì)該軟件的應(yīng)用場(chǎng)景,Mini-12306軟件需要采用分布式部署和運(yùn)行形式,前端軟件制品部署在Android手機(jī)上,后端軟件制品運(yùn)行在云平臺(tái)或客戶方的遠(yuǎn)端服務(wù)器上。該開發(fā)約束將作為關(guān)鍵軟件需求來指導(dǎo)軟件體系結(jié)構(gòu)的設(shè)計(jì)。示例:初步軟件體系結(jié)構(gòu)的設(shè)計(jì)(2/2)基于大模型的軟件體系結(jié)構(gòu)生成軟件體系結(jié)構(gòu)的設(shè)計(jì)對(duì)軟件設(shè)計(jì)工程師提出很高的要求軟件工程知識(shí)水平、軟件設(shè)計(jì)經(jīng)驗(yàn)和閱歷等基于大模型技術(shù)的智能化軟件體系結(jié)構(gòu)設(shè)計(jì)給大模型工具提示軟件系統(tǒng)的關(guān)鍵軟件需求大模型工具生成軟件體系結(jié)構(gòu)設(shè)計(jì)的具體內(nèi)容,包括采用什么樣的體系結(jié)構(gòu)風(fēng)格、關(guān)鍵構(gòu)件的設(shè)計(jì)、技術(shù)選型、注意事項(xiàng)等等可為軟件設(shè)計(jì)工程師提供重要的參考示例:基于大模型的軟件體系結(jié)構(gòu)生成(1/3)示例:基于大模型的軟件體系結(jié)構(gòu)生成(2/3)示例:基于大模型的軟件體系結(jié)構(gòu)生成(3/3)

2.重用開源軟件及已有軟件資產(chǎn)搜索已有的粗粒度軟件資產(chǎn)可重用的軟件開發(fā)包,如函數(shù)庫(kù)、類庫(kù)、構(gòu)件庫(kù)等互聯(lián)網(wǎng)上的云服務(wù),為特定問題提供獨(dú)立功能,如身份驗(yàn)證、圖像識(shí)別、語音分析等等遺留軟件系統(tǒng),已存在的軟件系統(tǒng)開源軟件,提供針對(duì)特定功能的完整程序代碼尋找可用于支持目標(biāo)軟件系統(tǒng)構(gòu)建的軟件制品實(shí)現(xiàn)軟件架構(gòu)中某個(gè)(些)子系統(tǒng)或構(gòu)件的功能將軟件資產(chǎn)集成到體系結(jié)構(gòu)設(shè)計(jì)中可直接使用的軟件資產(chǎn)清晰地定義它們與當(dāng)前軟件系統(tǒng)間的交互接口包括數(shù)據(jù)交換的格式、互操作協(xié)議等不可直接使用但具復(fù)用潛力的設(shè)計(jì)資產(chǎn)采用接口重構(gòu)、適配器等方法將其引入到當(dāng)前體系結(jié)構(gòu)中接口重構(gòu)是指,調(diào)整當(dāng)前體系結(jié)構(gòu)中面向可復(fù)用設(shè)計(jì)資產(chǎn)的調(diào)用接口,使之與其提供的服務(wù)接口相匹配到哪里找開源軟件?Github(/)開源軟件托管平臺(tái)和開源社區(qū),180萬商業(yè)組織,2700萬開發(fā)者,8000萬個(gè)版本庫(kù)SourceForge(/)開源軟件倉(cāng)庫(kù)和開發(fā)平臺(tái),370萬用戶,43萬項(xiàng)目Gitee(/)

中國(guó)人的開源社區(qū)......示例:搜尋和重用軟件資產(chǎn)(1)軟件系統(tǒng)需要實(shí)現(xiàn)“視頻/語音雙向交互”的功能訪問GitHub,在搜索框輸入“Linphone”點(diǎn)擊進(jìn)入,查看開源軟件項(xiàng)目說明,了解功能及使用方法下載和獲取“Linphone”開源代碼示例:搜尋和重用軟件資產(chǎn)(2)機(jī)器人的自主跟隨功能搜尋和重用ROS代碼“turtlebot_follower”來實(shí)現(xiàn)在Github搜索“turtlebotapp”,理解其功能和使用點(diǎn)擊“turtlebot_follower”,閱讀和下載其開源代碼示例:搜尋和重用軟件資產(chǎn)(3)搜尋和重用“離線語音合成”軟件包OLVTI-SDK實(shí)現(xiàn)文字到語音轉(zhuǎn)換訊飛開放平臺(tái)(/)提供“離線語音轉(zhuǎn)換和合成”功能平臺(tái)提供軟件開發(fā)包SDK理解其功能和使用示例:“空巢老人看護(hù)軟件”的開源軟件重用可重用軟件資產(chǎn)示例:“Mini-12306”的開源軟件重用PostgreSQL思考和討論為什么軟件體系結(jié)構(gòu)設(shè)計(jì)時(shí)要考慮重用粗粒度軟件資產(chǎn)?如果在此過程中沒有考慮軟件重用,會(huì)帶來什么樣問題?軟件體系結(jié)構(gòu)設(shè)計(jì)階段的軟件重用有何特點(diǎn)?3.精化軟件體系結(jié)構(gòu)選擇軟件體系結(jié)構(gòu)所依賴的公共基礎(chǔ)設(shè)施確定其中的基礎(chǔ)性服務(wù),從而為目標(biāo)軟件系統(tǒng)的運(yùn)行提供基礎(chǔ)性的技術(shù)支撐,如操作系統(tǒng)、軟件中間件、數(shù)據(jù)庫(kù)管理系統(tǒng)、軟件開發(fā)框架、安全服務(wù)等確定軟件體系結(jié)構(gòu)中的設(shè)計(jì)元素包括子系統(tǒng)、軟構(gòu)件和關(guān)鍵設(shè)計(jì)類等,明確其職責(zé)和接口,從而為開展詳細(xì)設(shè)計(jì)奠定基礎(chǔ)確定公共基礎(chǔ)設(shè)施及服務(wù)軟件體系結(jié)構(gòu)中的各個(gè)要素(如軟構(gòu)件、子系統(tǒng)等)都需要依賴于特定的基礎(chǔ)設(shè)施來運(yùn)行從最底層的操作系統(tǒng),到稍高層次的軟件中間件、軟件開發(fā)框架等等,或者表現(xiàn)為諸如數(shù)據(jù)庫(kù)管理系統(tǒng)、消息中間件等形式為目標(biāo)軟件系統(tǒng)的運(yùn)行提供基礎(chǔ)性的技術(shù)支持,而且還為目標(biāo)軟件系統(tǒng)的構(gòu)造提供可重用的基礎(chǔ)服務(wù)設(shè)計(jì)其所需的基礎(chǔ)服務(wù)結(jié)合軟件需求以及基礎(chǔ)設(shè)施提供的功能及接口,開展基礎(chǔ)服務(wù)的設(shè)計(jì)如數(shù)據(jù)持久服務(wù)、隱私保護(hù)服務(wù)、安全控制服務(wù)、消息通訊服務(wù)等等基礎(chǔ)服務(wù)應(yīng)具有良好的穩(wěn)定性,即使軟件需求發(fā)生了變化,基礎(chǔ)服務(wù)仍可為其提供服務(wù)示例:“空巢老人看護(hù)軟件”的基礎(chǔ)設(shè)施基礎(chǔ)服務(wù)訪問基礎(chǔ)服務(wù)接口示例:Mini-12306的精化提交體系結(jié)構(gòu)確立設(shè)計(jì)元素基于初步軟件體系結(jié)構(gòu),以實(shí)現(xiàn)軟件需求為目標(biāo),精化和確立設(shè)計(jì)元素,明確設(shè)計(jì)元素的職責(zé)劃分及相互間的協(xié)同設(shè)計(jì)元素三類:子系統(tǒng)、構(gòu)件和類設(shè)計(jì)元素的接口及相互間的協(xié)作子系統(tǒng)構(gòu)件類(1)確定子系統(tǒng)及其接口遵循問題分解和系統(tǒng)組織思想,將分析類按相關(guān)性原則加以組織和歸類,形成軟件系統(tǒng)的若干子系統(tǒng)用例相關(guān)性原則:將用例按業(yè)務(wù)相關(guān)性或相似性進(jìn)行分組,每組用例組成一個(gè)子系統(tǒng),參與這些用例的實(shí)現(xiàn)的分析類均成為此子系統(tǒng)的“設(shè)計(jì)類”實(shí)現(xiàn)途徑相關(guān)性原則:分析用例的交互圖,將具有相關(guān)或相似業(yè)務(wù)處理職責(zé)的控制類歸為一個(gè)子系統(tǒng);或?qū)⑺羞@些控制類的職責(zé)歸并后按某種業(yè)務(wù)上的相關(guān)性或相似性進(jìn)行分組,每組職責(zé)歸為一個(gè)子系統(tǒng)實(shí)體類相關(guān)性:從便于管理和控制的角度,將分析模型中的實(shí)體類進(jìn)行分組,每組對(duì)應(yīng)于一個(gè)子系統(tǒng),由子系統(tǒng)對(duì)所屬的實(shí)體類加以管理評(píng)估和改進(jìn)所確立的子系統(tǒng)每個(gè)子系統(tǒng)有明確、獨(dú)立的職責(zé)不同子系統(tǒng)間的職責(zé)是正交的,不應(yīng)具有相同或相似職責(zé)所有子系統(tǒng)職責(zé)覆蓋軟件系統(tǒng)所有職責(zé)避免特別龐大或特別細(xì)小的子系統(tǒng)子系統(tǒng)接口極小化,僅公開為外界使用該子系統(tǒng)所必需的接口函數(shù),盡可能隱藏內(nèi)部實(shí)現(xiàn)細(xì)節(jié)確定子系統(tǒng)的接口每個(gè)子系統(tǒng)需要提供二類接口與外界進(jìn)行交互服務(wù)提供接口:支持外部設(shè)計(jì)元素訪問子系統(tǒng)服務(wù)請(qǐng)求接口:支持子系統(tǒng)訪問外部設(shè)計(jì)元素以完成子系統(tǒng)職責(zé)一個(gè)子系統(tǒng)可根據(jù)業(yè)務(wù)處理的需要,定義一個(gè)或者多個(gè)服務(wù)提供接口和服務(wù)請(qǐng)求接口示例:

確定“空巢老人智能看護(hù)系統(tǒng)”子系統(tǒng)子系統(tǒng)OlderMonitoringRobotBiCallUserReminder……示例:確定Mini-12306的子系統(tǒng)(2)

確定構(gòu)件及其接口將一些分析類的相似或相關(guān)職責(zé)封裝為一個(gè)構(gòu)件,通過接口向軟件系統(tǒng)的其他部分提供功能和服務(wù)構(gòu)件的內(nèi)聚度應(yīng)該高于子系統(tǒng)構(gòu)件的設(shè)計(jì)應(yīng)該追求可復(fù)用性目標(biāo)構(gòu)件的規(guī)模小于子系統(tǒng)子系統(tǒng)中可以包含構(gòu)件,但構(gòu)件中不會(huì)包含子系統(tǒng)(3)確定關(guān)鍵設(shè)計(jì)類及其接口關(guān)鍵設(shè)計(jì)類對(duì)于軟件需求的實(shí)現(xiàn)具有比較重要的作用,但未歸入子系統(tǒng)和構(gòu)件的某項(xiàng)職責(zé)與子系統(tǒng)或構(gòu)件交互,或者作為軟件體系結(jié)構(gòu)中已有的設(shè)計(jì)元素之間的交互“橋梁”,缺少這種交互將導(dǎo)致體系結(jié)構(gòu)無法完整地實(shí)現(xiàn)某項(xiàng)重要的軟件需求所謂關(guān)鍵是指重要、不可或缺4.設(shè)計(jì)部署模型設(shè)計(jì)軟件系統(tǒng)的物理部署模型刻畫軟件系統(tǒng)的各個(gè)子系統(tǒng)、軟構(gòu)件如何部署到計(jì)算節(jié)點(diǎn)上運(yùn)行的,描述它們的部署和運(yùn)行環(huán)境《Artifact》ElderCarerApp智能手機(jī)《OS》AndroidPC機(jī)《Artifact》RobotControl《Framework》ROS《Component》DataService《DBMS》MySQL《OS》UbuntuTurtlebot2Robot思考和討論子系統(tǒng)和構(gòu)件都提供了接口,可對(duì)外提供服務(wù)和功能,那么二者有何區(qū)別和聯(lián)系?在什么情況下應(yīng)該設(shè)計(jì)為子系統(tǒng),在什么情況下應(yīng)該設(shè)計(jì)為軟構(gòu)件?2.4整合體系結(jié)構(gòu)設(shè)計(jì)整合和組織體系結(jié)構(gòu)設(shè)計(jì)產(chǎn)生的設(shè)計(jì)結(jié)果包括引入的開源軟件和軟件資產(chǎn)、頂層軟件架構(gòu)、確定的各類設(shè)計(jì)元素等等整合的目的理清設(shè)計(jì)元素間的關(guān)系,明確它們之間的交互和協(xié)作確保所產(chǎn)生的軟件設(shè)計(jì)模型具有更好的模塊性、封裝性、可重用性等特征最終獲得目標(biāo)軟件系統(tǒng)體系結(jié)構(gòu)的完整邏輯視圖整合體系結(jié)構(gòu)設(shè)計(jì)整合外部系統(tǒng)對(duì)應(yīng)的子系統(tǒng)與分析模型中負(fù)責(zé)與外部系統(tǒng)交互的邊界類子系統(tǒng)是服務(wù)提供方,邊界類是服務(wù)請(qǐng)求方整合引入的開源軟件或者軟件資產(chǎn)必要時(shí)引入相關(guān)的接口以實(shí)現(xiàn)開源軟件或者軟件資產(chǎn)與設(shè)計(jì)元素之間的交互,從而它們與軟件系統(tǒng)的設(shè)計(jì)融合整合外部系統(tǒng)與目標(biāo)軟件系統(tǒng)中的設(shè)計(jì)類進(jìn)一步清晰地定義相關(guān)的接口,支持它們之間的協(xié)作優(yōu)化體系結(jié)構(gòu)設(shè)計(jì)分解一些規(guī)模較大的子系統(tǒng)合并若干職責(zé)相同或相似的設(shè)計(jì)元素以軟件重用為目的適當(dāng)調(diào)整設(shè)計(jì)元素所封裝的功能、承擔(dān)的職責(zé)和對(duì)外提供的接口用簡(jiǎn)潔的軟件元素,以盡可能高效、合理的方式實(shí)現(xiàn)所有軟件需求將不同設(shè)計(jì)元素中的公共職責(zé)提取成為服務(wù)構(gòu)件或服務(wù)類整合體系結(jié)構(gòu)設(shè)計(jì)結(jié)果設(shè)計(jì)元素的職責(zé)劃分更為明確系統(tǒng)與外部接口、相關(guān)設(shè)計(jì)元素間的接口和協(xié)作更為清晰整體體系結(jié)構(gòu)設(shè)計(jì)方案更為優(yōu)化支持軟件體系結(jié)構(gòu)設(shè)計(jì)的CASE工具軟件設(shè)計(jì)文檔撰寫工具,如MicrosoftOffice、WPS等軟件設(shè)計(jì)建模工具,如利用CodeArtsModeling、MicrosoftVisio、StarUML、ArgoUML等工具軟件設(shè)計(jì)分析和轉(zhuǎn)換工具,如IBMRationalRose等配置管理工具和平臺(tái),如Git、Github、Gitlab、PVCS、MicrosoftSourceSafe等智能化設(shè)計(jì)工具,如ChatGPT,CodeArtsSnap等軟件架構(gòu)師負(fù)責(zé)軟件體系結(jié)構(gòu)的設(shè)計(jì)工作需要有豐富的軟件開發(fā)經(jīng)驗(yàn)強(qiáng)烈的質(zhì)量意識(shí)熟練掌握軟件架構(gòu)及其開發(fā)技術(shù)(如微服務(wù)架構(gòu)、Serverless架構(gòu)等)內(nèi)容何為軟件體系結(jié)構(gòu)概念、視圖、模型及UML表示軟件體系結(jié)構(gòu)風(fēng)格如何設(shè)計(jì)軟件體系結(jié)構(gòu)任務(wù)、目標(biāo)、要求和原則體系結(jié)構(gòu)設(shè)計(jì)過程文檔化和評(píng)審軟件體系結(jié)構(gòu)設(shè)計(jì)文檔模板、驗(yàn)證原則軟件體系結(jié)構(gòu)設(shè)計(jì)文檔示例文檔概述系統(tǒng)概述設(shè)計(jì)目標(biāo)和原則設(shè)計(jì)約束和現(xiàn)實(shí)限制邏輯視點(diǎn)的體系結(jié)構(gòu)設(shè)計(jì)部署視點(diǎn)的體系結(jié)構(gòu)設(shè)計(jì)開發(fā)視點(diǎn)的體系結(jié)構(gòu)設(shè)計(jì)運(yùn)行視點(diǎn)的體系結(jié)構(gòu)設(shè)計(jì)評(píng)審軟件體系結(jié)構(gòu)設(shè)計(jì)滿足性體系結(jié)構(gòu)是否能夠滿足軟件需求,體系結(jié)構(gòu)怎樣滿足軟件需求優(yōu)化性體系結(jié)構(gòu)是否以充分優(yōu)化方式實(shí)現(xiàn)所有軟件需求項(xiàng)可擴(kuò)展性是否易于擴(kuò)展,以應(yīng)對(duì)軟件需求的變化可追蹤性軟件體系結(jié)構(gòu)中的所有設(shè)計(jì)元素是否有相對(duì)應(yīng)的軟件需求項(xiàng)詳盡程度體系結(jié)構(gòu)的詳略程度是否恰當(dāng)軟件體系結(jié)構(gòu)設(shè)計(jì)的輸出軟件體系結(jié)構(gòu)設(shè)計(jì)模型用UML包圖、部署圖、構(gòu)件圖等描述軟件體系結(jié)構(gòu)設(shè)計(jì)文檔體系結(jié)構(gòu)設(shè)計(jì)規(guī)格說明書文檔拓展閱讀軟件架構(gòu)實(shí)踐,LenBass,PaulClements,RickKazman著,清華大學(xué)出版社,2017.這是一本榮獲大獎(jiǎng)且影響深遠(yuǎn)的經(jīng)典著作,至今已經(jīng)進(jìn)行了多次修訂。本書以全新的角度介紹軟件架構(gòu)的相關(guān)概念和最佳實(shí)踐,闡述軟件系統(tǒng)是如何構(gòu)建的,軟件系統(tǒng)中的各個(gè)要素之間又是如何相互作用的。作者從四個(gè)方面介紹了他們多年的軟件架構(gòu)設(shè)計(jì)研究成果與實(shí)踐經(jīng)驗(yàn),包括:架構(gòu)創(chuàng)想、架構(gòu)創(chuàng)建、架構(gòu)分析和架構(gòu)泛化課后作業(yè)和課程實(shí)訓(xùn)訪問/paths/1944完成第九章“軟件體系結(jié)構(gòu)設(shè)計(jì)”的實(shí)訓(xùn)闖關(guān)任務(wù)本章知識(shí)圖譜小結(jié)軟件體系結(jié)構(gòu)設(shè)計(jì)的特殊性具有宏觀、全局、層次、戰(zhàn)略、多視點(diǎn)、關(guān)鍵性等特點(diǎn)邏輯視點(diǎn)、物

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論