SE10 軟件詳細(xì)設(shè)計(jì)_第1頁
SE10 軟件詳細(xì)設(shè)計(jì)_第2頁
SE10 軟件詳細(xì)設(shè)計(jì)_第3頁
SE10 軟件詳細(xì)設(shè)計(jì)_第4頁
SE10 軟件詳細(xì)設(shè)計(jì)_第5頁
已閱讀5頁,還剩132頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

軟件詳細(xì)設(shè)計(jì)軟件工程毛新軍國防科技大學(xué)計(jì)算機(jī)學(xué)院xjmao@內(nèi)容軟件詳細(xì)設(shè)計(jì)概述任務(wù)、過程和原則詳細(xì)設(shè)計(jì)的UML模型軟件詳細(xì)設(shè)計(jì)活動(dòng)用例設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)子系統(tǒng)和構(gòu)件設(shè)計(jì)詳細(xì)設(shè)計(jì)文檔化和評審1.1軟件設(shè)計(jì)過程及關(guān)注點(diǎn)的變化結(jié)構(gòu)性全局性關(guān)鍵性粗粒度過程性局部性細(xì)節(jié)性細(xì)粒度軟件設(shè)計(jì)模型和文檔體系結(jié)構(gòu)設(shè)計(jì)人機(jī)界面設(shè)計(jì)詳細(xì)設(shè)計(jì)整合與驗(yàn)證迭代設(shè)計(jì)、反復(fù)精化、持續(xù)優(yōu)化1.2詳細(xì)設(shè)計(jì)的任務(wù)輸入:軟件體系結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、軟件需求任務(wù):對體系結(jié)構(gòu)設(shè)計(jì)和用戶界面設(shè)計(jì)成果進(jìn)行細(xì)化和精化,獲得高質(zhì)量、面向?qū)崿F(xiàn)的設(shè)計(jì)模型面向?qū)崿F(xiàn):直接支持編碼和程序設(shè)計(jì)精化和細(xì)化的具體對象:子系統(tǒng)、構(gòu)件、關(guān)鍵設(shè)計(jì)類和界面類軟件詳細(xì)設(shè)計(jì)軟件需求軟件詳細(xì)設(shè)計(jì)模型體系結(jié)構(gòu)設(shè)計(jì)模型用戶界面設(shè)計(jì)模型實(shí)現(xiàn)約束和限制何為面向?qū)崿F(xiàn)?詳細(xì)設(shè)計(jì)是高層設(shè)計(jì)和底層實(shí)現(xiàn)間的橋梁高層軟件體系結(jié)構(gòu)設(shè)計(jì)軟件詳細(xì)設(shè)計(jì)軟件實(shí)現(xiàn)輔助和支持落實(shí)和細(xì)化詳細(xì)設(shè)計(jì)的定位體系結(jié)構(gòu)設(shè)計(jì)與軟件實(shí)現(xiàn)間的“橋梁”基于體系結(jié)構(gòu)設(shè)計(jì)和用戶界面設(shè)計(jì)后續(xù)程序設(shè)計(jì)的基礎(chǔ)和依據(jù)確保體系結(jié)構(gòu)設(shè)計(jì)得到落實(shí)的“關(guān)鍵”基于體系結(jié)構(gòu)設(shè)計(jì)和用戶界面設(shè)計(jì),關(guān)注于體系結(jié)構(gòu)中設(shè)計(jì)元素的內(nèi)部細(xì)節(jié)設(shè)計(jì)更加關(guān)注軟件的“實(shí)現(xiàn)”–編碼與體系結(jié)構(gòu)設(shè)計(jì)相比較,詳細(xì)設(shè)計(jì)抽象層次更低、粒度更小、更加關(guān)注實(shí)現(xiàn)細(xì)節(jié)1.3詳細(xì)設(shè)計(jì)過程用例設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)文檔化和評審詳細(xì)設(shè)計(jì)子系統(tǒng)和構(gòu)件設(shè)計(jì)用例設(shè)計(jì)模型類設(shè)計(jì)模型數(shù)據(jù)設(shè)計(jì)模型詳細(xì)設(shè)計(jì)模型和文檔迭代包含四個(gè)主要的詳細(xì)設(shè)計(jì)活動(dòng)軟件詳細(xì)設(shè)計(jì)活動(dòng)(1/2)用例設(shè)計(jì)給出用例的具體實(shí)現(xiàn)解決方案,描述用例是如何通過各個(gè)設(shè)計(jì)元素(包括子系統(tǒng)、軟構(gòu)件、設(shè)計(jì)類等)的交互和協(xié)作來完成的類設(shè)計(jì)給出每個(gè)設(shè)計(jì)類的具體實(shí)現(xiàn)細(xì)節(jié),包括類的屬性定義、方法的實(shí)現(xiàn)算法等,使得程序員能夠基于類設(shè)計(jì)給出這些類的實(shí)現(xiàn)代碼軟件詳細(xì)設(shè)計(jì)活動(dòng)(2/2)數(shù)據(jù)設(shè)計(jì)對軟件所涉及的持久數(shù)據(jù)及其操作進(jìn)行設(shè)計(jì),明確持久數(shù)據(jù)的存儲(chǔ)方式和格式,細(xì)化數(shù)據(jù)操作的實(shí)現(xiàn)細(xì)節(jié)子系統(tǒng)/軟構(gòu)件設(shè)計(jì)針對粗粒度的子系統(tǒng)和軟構(gòu)件,給出其細(xì)粒度的設(shè)計(jì)元素,如子子系統(tǒng)、設(shè)計(jì)類等,明確這些設(shè)計(jì)元素之間的協(xié)作關(guān)系,使得它們能夠?qū)崿F(xiàn)子系統(tǒng)/軟構(gòu)件接口所規(guī)定的相關(guān)功能和服務(wù)1.4軟件詳細(xì)設(shè)計(jì)的要求和原則針對軟件需求從軟件需求出發(fā),確保每一項(xiàng)軟件需求都有相應(yīng)的詳細(xì)設(shè)計(jì)元素加以實(shí)現(xiàn)深入優(yōu)化設(shè)計(jì)精心設(shè)計(jì),以充分優(yōu)化軟件系統(tǒng)的性能、效能等,提高軟件系統(tǒng)的可靠性、可重用性和可維護(hù)性等設(shè)計(jì)足夠詳細(xì)得到詳實(shí)程度足以支持程序員編碼的軟件設(shè)計(jì)模型充分軟件重用從多個(gè)不同的維度和層次進(jìn)行充分的軟件重用,以提高軟件開發(fā)的效率和質(zhì)量,減低開發(fā)成本描述詳細(xì)設(shè)計(jì)的UML圖?CopyrightXinjunMao11視點(diǎn)圖(diagram)說明結(jié)構(gòu)

包圖(packagediagram)從包層面描述系統(tǒng)的靜態(tài)結(jié)構(gòu)類圖(classdiagram)從類層面描述系統(tǒng)的靜態(tài)結(jié)構(gòu)對象圖(objectdiagram)從對象層面描述系統(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)描述對象間的消息傳遞與協(xié)作順序圖(sequencediagram)描述對象間的消息傳遞與協(xié)作部署部署圖(deploymentdiagram)描述系統(tǒng)中工件在物理運(yùn)行環(huán)境中的部署情況用例用例圖(usecasediagram)從外部用戶角度描述系統(tǒng)功能1.5何為活動(dòng)圖描述實(shí)體為完成某項(xiàng)功能而執(zhí)行的操作序列,其中某些操作或其子序列存在并發(fā)和同步對象泳道活動(dòng)活動(dòng)圖的構(gòu)成活動(dòng)點(diǎn):表示計(jì)算過程決策點(diǎn):根據(jù)條件進(jìn)行活動(dòng)決策邊:表示控制流或信息流控制流:表示一個(gè)操作完成后對其后續(xù)操作的觸發(fā)信息流:刻畫操作間的信息交換并發(fā)控制控制流經(jīng)此節(jié)點(diǎn)后分叉(Fork)成多條可并行執(zhí)行的控制流,或多條并行控制流經(jīng)此節(jié)點(diǎn)后同步合并(Join)為單條控制流泳道將活動(dòng)圖用形如游泳池中的泳道分隔成數(shù)個(gè)活動(dòng)分區(qū),每個(gè)區(qū)域由一個(gè)對象或一個(gè)控制線程負(fù)責(zé)泳道將活動(dòng)圖用形如游泳池中的泳道分隔成數(shù)個(gè)活動(dòng)分區(qū),每個(gè)區(qū)域由一個(gè)對象或一個(gè)控制線程負(fù)責(zé)每個(gè)活動(dòng)節(jié)點(diǎn)應(yīng)位于負(fù)責(zé)執(zhí)行該活動(dòng)的對象或線程所在的區(qū)域內(nèi)帶泳道的活動(dòng)圖更清晰地表示了對象或線程的職責(zé)、它們之間的分工、協(xié)同和同步活動(dòng)圖的繪制原則從決策點(diǎn)出發(fā)的每條邊上均應(yīng)標(biāo)注條件,且這些條件必須覆蓋完整且互不重疊必須確保分叉和匯合節(jié)點(diǎn)之間的匹配性對任一分叉節(jié)點(diǎn),其導(dǎo)致的并發(fā)控制流必須最終經(jīng)由一個(gè)匯合節(jié)點(diǎn)進(jìn)行控制流的同步和合并一張活動(dòng)圖可以濃縮成另一活動(dòng)圖中的單個(gè)活動(dòng)節(jié)點(diǎn),前者稱為子活動(dòng)圖,后者稱為父活動(dòng)圖示例:活動(dòng)圖活動(dòng)決策點(diǎn)信息流和控制流泳道控制對象內(nèi)容軟件詳細(xì)設(shè)計(jì)概述任務(wù)、過程和原則詳細(xì)設(shè)計(jì)的UML模型軟件詳細(xì)設(shè)計(jì)活動(dòng)用例設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)子系統(tǒng)和構(gòu)件設(shè)計(jì)詳細(xì)設(shè)計(jì)文檔化和評審思考和討論需求分析階段的用例描述了軟件功能,那么這些功能是如何實(shí)現(xiàn)的?需求分析階段描述了用例的交互圖,它刻畫了用例哪些方面的信息?產(chǎn)生的類圖稱為分析類,為什么?2.1需求用例及其實(shí)現(xiàn)用例反映了軟件需求,基于需求來指導(dǎo)和細(xì)化設(shè)計(jì)用例描述了業(yè)務(wù)邏輯的實(shí)施流程用例設(shè)計(jì)要明確需求是如何實(shí)現(xiàn)的如何通過一組軟件要素來實(shí)現(xiàn)需求用例設(shè)計(jì)的任務(wù)任務(wù)針對需求分析模型中的每個(gè)用例,基于體系結(jié)構(gòu)和用戶界面設(shè)計(jì)模型給出的設(shè)計(jì)元素,設(shè)計(jì)用例的軟件實(shí)現(xiàn)方案設(shè)計(jì)和建模各個(gè)設(shè)計(jì)元素如何通過協(xié)作完成用例關(guān)聯(lián)各個(gè)設(shè)計(jì)元素,包括子系統(tǒng)、構(gòu)件、設(shè)計(jì)類、界面類等產(chǎn)生詳細(xì)的設(shè)計(jì)信息,如新的設(shè)計(jì)元素、交互、細(xì)節(jié)、關(guān)聯(lián)結(jié)果描述用例設(shè)計(jì)的順序圖、設(shè)計(jì)類圖等設(shè)計(jì)模型用例設(shè)計(jì)的任務(wù)用例設(shè)計(jì)用例模型用例交互模型分析類模型軟件體系結(jié)構(gòu)設(shè)計(jì)模型用戶界面模型用例設(shè)計(jì)模型(用例實(shí)現(xiàn)的交互圖、設(shè)計(jì)類圖等)需求模型用例的實(shí)現(xiàn)方案用例如何通過各個(gè)設(shè)計(jì)元素來實(shí)現(xiàn)的子系統(tǒng)、構(gòu)件、設(shè)計(jì)類、界面元素類等這些設(shè)計(jì)元素之間在用例實(shí)現(xiàn)過程中的協(xié)同和交互消息傳遞精化各個(gè)設(shè)計(jì)元素的設(shè)計(jì)如接口、實(shí)現(xiàn)細(xì)節(jié)等設(shè)計(jì)元素最終需要通過代碼加以實(shí)現(xiàn)用例設(shè)計(jì)原則以軟件需求為基礎(chǔ)以需求模型為前提,包括用例模型、交互模型、分析類模型等不能拋開軟件需求來給出用例的實(shí)現(xiàn)方案通過整合設(shè)計(jì)元素來實(shí)現(xiàn)用例整合軟件體系結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)等產(chǎn)生了一系列設(shè)計(jì)元素,包括:子系統(tǒng)、構(gòu)件、關(guān)鍵設(shè)計(jì)類等等不能拋開前期設(shè)計(jì)工作成果精化軟件設(shè)計(jì)用例設(shè)計(jì)不僅要給出用例實(shí)現(xiàn)的解決方案,也要依此為目的進(jìn)一步精化軟件設(shè)計(jì),以獲得更為詳實(shí)的設(shè)計(jì)信息為后續(xù)的詳細(xì)設(shè)計(jì)奠定基礎(chǔ)用例設(shè)計(jì)的過程設(shè)計(jì)用例實(shí)現(xiàn)方案構(gòu)造設(shè)計(jì)類圖優(yōu)化和評審用例設(shè)計(jì)方案用例設(shè)計(jì)子系統(tǒng)/構(gòu)件設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)模型設(shè)計(jì)文檔化和評審設(shè)計(jì)用例設(shè)計(jì)過程詳細(xì)設(shè)計(jì)過程用例設(shè)計(jì)過程1.設(shè)計(jì)用例實(shí)現(xiàn)方案基礎(chǔ)分析每個(gè)用例的UML交互圖,它是開展用例設(shè)計(jì)的依據(jù)考慮體系結(jié)構(gòu)和用戶界面設(shè)計(jì)要素,它們是用例實(shí)現(xiàn)參與者明確各個(gè)設(shè)計(jì)元素(如對象類、構(gòu)件等)的職責(zé)方法在分析階段用例交互圖的基礎(chǔ)上,將交互圖的分析類轉(zhuǎn)化為用例實(shí)現(xiàn)的設(shè)計(jì)類,同時(shí)引入體系結(jié)構(gòu)設(shè)計(jì)和用戶界面設(shè)計(jì)所生成的設(shè)計(jì)元素,共同形成關(guān)于用例實(shí)現(xiàn)的交互模型結(jié)果生成用例實(shí)現(xiàn)的順序圖引入更多的設(shè)計(jì)元素,如構(gòu)件、子系統(tǒng)、類等精化更多的設(shè)計(jì)細(xì)節(jié),如接口、方法、交互等示例:需求分析階段的用例交互圖分析階段的用例交互圖說明了什么?注意:其中的類是分析類!需求模型分析類對象如何將分析類精化為設(shè)計(jì)類(1/3)某個(gè)分析類的一項(xiàng)職責(zé)由某個(gè)設(shè)計(jì)元素的單項(xiàng)操作完整地實(shí)現(xiàn)分析類和設(shè)計(jì)類有何本質(zhì)的區(qū)別?一一對應(yīng)分析類對象設(shè)計(jì)類對象如何將分析類精化為設(shè)計(jì)類(2/3)某個(gè)分析類的一項(xiàng)職責(zé)由某個(gè)設(shè)計(jì)元素的多項(xiàng)操作來實(shí)現(xiàn)細(xì)化和分解的過程方法:一對多分析類對象設(shè)計(jì)類對象如何將分析類精化為設(shè)計(jì)類(3/3)某個(gè)分析類的一項(xiàng)職責(zé)由多個(gè)設(shè)計(jì)元素協(xié)同完成細(xì)化和分解的過程對象:一對多分析類對象設(shè)計(jì)類對象示例1:“用戶登錄”用例順序圖(需求)分析類對象示例1:“用戶登錄”用例設(shè)計(jì)方案(設(shè)計(jì))設(shè)計(jì)元素及其交互所有設(shè)計(jì)元素最終通過代碼加以實(shí)現(xiàn)界面設(shè)計(jì)類對象設(shè)計(jì)類對象界面設(shè)計(jì)類對象精化設(shè)計(jì)類對象的方法示例2:“系統(tǒng)設(shè)置”用例的順序圖(需求)分析類對象示例2:“系統(tǒng)設(shè)置”用例設(shè)計(jì)方案(設(shè)計(jì))所有設(shè)計(jì)元素最終通過代碼加以實(shí)現(xiàn)設(shè)計(jì)元素及其交互示例3:“提醒服務(wù)”用例的順序圖(需求)分析類對象示例3:“提醒服務(wù)”用例設(shè)計(jì)方案(設(shè)計(jì))所有設(shè)計(jì)元素最終通過代碼加以實(shí)現(xiàn)設(shè)計(jì)元素及其交互示例4:“查詢車次”用例的順序圖(需求)分析類對象示例4:“查詢車次”用例設(shè)計(jì)方案(設(shè)計(jì))所有設(shè)計(jì)元素最終通過代碼加以實(shí)現(xiàn)設(shè)計(jì)元素及其交互示例5:“購買車票”用例的順序圖(需求)分析類對象示例5:“購買車票”用例設(shè)計(jì)方案(設(shè)計(jì))所有設(shè)計(jì)元素最終通過代碼加以實(shí)現(xiàn)設(shè)計(jì)元素及其交互2.構(gòu)造設(shè)計(jì)類圖基于用例實(shí)現(xiàn)方案給出詳細(xì)設(shè)計(jì)模型中的設(shè)計(jì)類圖類圖中的設(shè)計(jì)元素可以為子系統(tǒng)、構(gòu)件和UML類用不同的構(gòu)造型或者相應(yīng)圖符來表示對UML類圖稍作擴(kuò)充以表示詳細(xì)設(shè)計(jì)類圖允許在類圖中出現(xiàn)子系統(tǒng)和構(gòu)件,它們的類別可以采用不同的UML構(gòu)造型或者不同的圖元符號來表示構(gòu)造設(shè)計(jì)類圖的方法創(chuàng)建初始的設(shè)計(jì)類從分析類圖、體系結(jié)構(gòu)圖、用例實(shí)現(xiàn)的順序圖尋找確定設(shè)計(jì)類的職責(zé)每個(gè)設(shè)計(jì)類都有職責(zé),取決于對交互圖中消息的響應(yīng)確定設(shè)計(jì)類間的關(guān)系如果A與B有消息,那么它們間有關(guān)系:關(guān)聯(lián)、聚合和組合確定設(shè)計(jì)類的屬性需要保存哪些數(shù)據(jù)項(xiàng)、其他對象類信息形成整體設(shè)計(jì)類圖模塊化、職責(zé)和功能單一化原則,調(diào)整和優(yōu)化注意事項(xiàng)確保設(shè)計(jì)類圖與分析類圖之間、設(shè)計(jì)類圖與用例設(shè)計(jì)模型之間的一致性分析類圖中的類在設(shè)計(jì)類圖中有相應(yīng)的對應(yīng)物用例設(shè)計(jì)模型中的設(shè)計(jì)元素(主要是指參與用例實(shí)現(xiàn)的對象、對象間的消息傳遞)在設(shè)計(jì)類圖中要有相應(yīng)的對應(yīng)物(主要是指設(shè)計(jì)類及其方法)示例:“用戶登錄”用例實(shí)現(xiàn)的設(shè)計(jì)類圖用例設(shè)計(jì)的交互圖設(shè)計(jì)類對象設(shè)計(jì)類對象設(shè)計(jì)類對象設(shè)計(jì)類對象設(shè)計(jì)類對象示例:“用戶登錄”用例實(shí)現(xiàn)的設(shè)計(jì)類圖用例設(shè)計(jì)對應(yīng)的設(shè)計(jì)類圖示例:Mini-12306的設(shè)計(jì)類圖3.優(yōu)化和評審用例設(shè)計(jì)方案盡可能重用已有軟件資產(chǎn)來實(shí)現(xiàn)用例并依此構(gòu)建用例實(shí)現(xiàn)方案如開源軟件、云服務(wù)、遺留系統(tǒng)、軟件開發(fā)包等等合并設(shè)計(jì)元素將具有相同或相似職責(zé)的多個(gè)設(shè)計(jì)元素(包括類、子系統(tǒng)和構(gòu)件等)進(jìn)行整合,歸并為一個(gè)設(shè)計(jì)元素。將設(shè)計(jì)元素(如類等)中具有相同或相似功能的多個(gè)方法整合為一個(gè)方法,以減少不必要的冗余設(shè)計(jì)。重組設(shè)計(jì)元素借助繼承或代理機(jī)制,對設(shè)計(jì)元素進(jìn)行必要的組織和重組,以發(fā)現(xiàn)不同類之間的一般和特殊關(guān)系,抽象出公共的方法。確保所有用例實(shí)現(xiàn)方案在軟件系統(tǒng)中和諧共存,無邏輯沖突用例設(shè)計(jì)的輸出用例設(shè)計(jì)的順序圖用例設(shè)計(jì)的類圖用例設(shè)計(jì)小結(jié)任務(wù):為需求模型中每個(gè)用例設(shè)計(jì)軟件實(shí)現(xiàn)方案原則:整體性、正確性、優(yōu)化性等輸出:用例實(shí)現(xiàn)方案的交互圖、設(shè)計(jì)類圖設(shè)計(jì)用例實(shí)現(xiàn)方案構(gòu)造設(shè)計(jì)類圖優(yōu)化和評審設(shè)計(jì)方案思考與討論為什么需要用例設(shè)計(jì)?需求階段的用例交互模型與詳細(xì)設(shè)計(jì)階段的用例設(shè)計(jì)模型有何本質(zhì)區(qū)別?內(nèi)容軟件詳細(xì)設(shè)計(jì)概述任務(wù)、過程和原則詳細(xì)設(shè)計(jì)的UML模型軟件詳細(xì)設(shè)計(jì)活動(dòng)用例設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)子系統(tǒng)和構(gòu)件設(shè)計(jì)詳細(xì)設(shè)計(jì)文檔化和評審2.2類設(shè)計(jì)的任務(wù)任務(wù)對界面類、關(guān)鍵設(shè)計(jì)類、設(shè)計(jì)類等進(jìn)行設(shè)計(jì)優(yōu)化和精化明確設(shè)計(jì)類的內(nèi)部實(shí)現(xiàn)細(xì)節(jié)精化到可以提交軟件實(shí)現(xiàn)的程度設(shè)計(jì)與建模明確類的可見范圍,類的操作和屬性,類之間的關(guān)系等對類設(shè)計(jì)進(jìn)行建模結(jié)果類圖、狀態(tài)圖、活動(dòng)圖等類設(shè)計(jì)的任務(wù)類設(shè)計(jì)用例模型用例交互模型分析類模型軟件體系結(jié)構(gòu)設(shè)計(jì)模型用戶界面模型類設(shè)計(jì)模型(類圖、活動(dòng)圖、狀態(tài)圖等)用例設(shè)計(jì)模型需求模型類設(shè)計(jì)的地位和作用“承上”類設(shè)計(jì)要充分考慮軟件需求,基于體系結(jié)構(gòu)設(shè)計(jì)、用戶界面設(shè)計(jì)、用例設(shè)計(jì)、子系統(tǒng)/構(gòu)件設(shè)計(jì)的成果“啟下”類設(shè)計(jì)要為后續(xù)階段的編碼和實(shí)現(xiàn)奠定基礎(chǔ),需要產(chǎn)生足夠詳細(xì)的設(shè)計(jì)結(jié)果類設(shè)計(jì)示例精化類圖還不夠精化,需要更多的詳細(xì)設(shè)計(jì)信息基于該類圖,程序員指導(dǎo)如何進(jìn)行編碼嗎?精化到什么程度類的可見范圍屬性的數(shù)據(jù)類型方法的實(shí)現(xiàn)算法類間關(guān)系狀態(tài)變化或者活動(dòng)情況類設(shè)計(jì)原則準(zhǔn)確化對類的內(nèi)部結(jié)構(gòu)、行為等給予準(zhǔn)確的表達(dá),以支持程序員精準(zhǔn)地理解類設(shè)計(jì),進(jìn)而編寫出類的程序代碼細(xì)節(jié)化對類的接口、屬性、方法等方面給予足夠詳細(xì)的設(shè)計(jì),以便程序員能夠?qū)︻愡M(jìn)行編程一致性要確保類的關(guān)系、屬性、方法等的設(shè)計(jì)是相互一致的,類的內(nèi)部屬性、方法等設(shè)計(jì)與類的職責(zé)、關(guān)系等是相互一致的遵循軟件設(shè)計(jì)的基本原則按照模塊化、高內(nèi)聚度、低耦合度、信息隱藏等基本原則來進(jìn)行類設(shè)計(jì),必要時(shí)需要基于這些原則對所設(shè)計(jì)的類進(jìn)行必要的拆分和合并,以提高類設(shè)計(jì)的質(zhì)量類設(shè)計(jì)過程確定類的可見范圍精化類間關(guān)系構(gòu)造狀態(tài)圖和活動(dòng)圖精化類屬性和方法評審和優(yōu)化類設(shè)計(jì)用例設(shè)計(jì)子系統(tǒng)/構(gòu)件設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)模型設(shè)計(jì)文檔化與評審詳細(xì)設(shè)計(jì)過程類設(shè)計(jì)過程1.確定類的可見范圍可見范圍如果類僅僅被其所在的包所使用,那么該類是“私有的”,否則是“公開的”原則盡量縮小類的可見范圍,除非確有必要,否則應(yīng)將類“隱藏”于包的內(nèi)部public:公開級范圍,軟件系統(tǒng)中所有包中的類均可見和可訪問該類protected:保護(hù)級范圍,只對其所在包中的類以及該類的子類可見和訪問private:私有級范圍,只對其所在包中的類可見和訪問為什么要縮小類的可見范圍?2.精化類間的關(guān)系明確類間的語義關(guān)系類間關(guān)系的語義強(qiáng)度從高到低依次是:繼承,組合,聚合,(普通)關(guān)聯(lián),依賴類間關(guān)系定義的原則“自然抽象”原則,類間關(guān)系應(yīng)該自然、直觀地反映軟件需求及其實(shí)現(xiàn)模型“強(qiáng)內(nèi)聚、松耦合”的原則,即盡量采用語義連接強(qiáng)度較小關(guān)系精化類間的關(guān)系1:1,即一對一1:n,即一對多0:n,即0對多n:m,即多對多等等示例1:精化類間的關(guān)系示例2:精化類間的關(guān)系精化用戶界面類間的關(guān)系示例3:精化類間的關(guān)系精化關(guān)鍵設(shè)計(jì)類間的關(guān)系3.精化類的屬性和方法精化類屬性的設(shè)計(jì)精化類方法的設(shè)計(jì)(1)精化類屬性的設(shè)計(jì)類屬性的命名用業(yè)務(wù)領(lǐng)域的名詞或者名詞短語來命名類屬性的可見范圍public,對軟件系統(tǒng)中的所有類均可見protected:僅對本類及其子類可見private:僅對本類可見遵循“信息隱藏”

原則,盡可能地縮小作用范圍,讓類的屬性對外不可見結(jié)合類關(guān)系來精化類屬性設(shè)計(jì)如果類A與類B間存在1:1關(guān)聯(lián)或聚合(非組合)關(guān)系,那么在A中設(shè)置類型為B的指針或引用(reference)的屬性如果類A到類B間存在1:n關(guān)聯(lián)或聚合(非組合)關(guān)系,那么在A中設(shè)置一個(gè)集合類型(如列表等)的屬性,集合元素的類型為B的指針或引用如果類A與類B間存在1:1的組合關(guān)系,那么在A中設(shè)置類型為B的屬性如果類A到類B間存在1:n的組合關(guān)系,那么在A中設(shè)置一個(gè)集合類型(如列表等)的屬性,集合元素的類型為B示例:精化User類屬性的設(shè)計(jì)二項(xiàng)屬性:用戶名“name”和用戶密碼“password”類型均為String可見范圍均為“private”屬性的初始值均為空串示例:精化LoginUI類屬性的設(shè)計(jì)靜態(tài)元素、用戶輸入元素和命令界面元素“l(fā)oginPicture”

類型為靜態(tài)元素“account”類型為用戶輸入元素,如文本框“password”

類型為用戶輸入元素(如文本框)可見范圍均為“private”初始值“l(fā)oginPicture”屬性的初始值不為空,要有一個(gè)預(yù)加載的圖標(biāo);“account”和“password”的初始值為空串示例:精化Robot類屬性的設(shè)計(jì)privateintvelocity表示機(jī)器人的速度privateintangle表示運(yùn)動(dòng)角度privateintdistance表示與老人的距離privateintstate表示運(yùn)動(dòng)狀態(tài),包括“IDLE”空閑狀態(tài)、“AUTO”自主跟隨狀態(tài)、“MANNUAL”手工控制狀態(tài)(2)精化類方法的設(shè)計(jì)細(xì)化和明確類中各個(gè)方法的以下設(shè)計(jì)信息方法名稱參數(shù)表(含參數(shù)的名稱和類型)返回類型作用范圍功能描述實(shí)現(xiàn)算法前提條件(pre-condition)、出口斷言(post-condition)等示例:用活動(dòng)圖描述的Login()方法的詳細(xì)算法設(shè)計(jì)關(guān)注特殊方法的設(shè)計(jì)對象創(chuàng)建在實(shí)例化類對象時(shí)會(huì)被執(zhí)行,其職責(zé)能通常是完成類對象的初始化工作,包括初始化屬性值等等對象刪除在類對象生命周期結(jié)束前被執(zhí)行,其職責(zé)通常是完成對象生命周期結(jié)束前的一些事務(wù)性工作,如釋放對象所占用的資源等等對象比較比較類的兩個(gè)實(shí)例對象,判斷它們是否相同對象復(fù)制將類的一個(gè)實(shí)例對象的屬性值復(fù)制到另一對象示例:精化detectFallDown()方法的詳細(xì)設(shè)計(jì)方法的詳細(xì)算法設(shè)計(jì)類方法的分解和合并方法內(nèi)元素1方法內(nèi)元素2方法內(nèi)元素3方法內(nèi)元素4方法1方法2方法3方法4模塊0將方法內(nèi)多個(gè)松耦合的要素分解為多個(gè)方法方法1方法2方法3方法4將多個(gè)緊耦合的方法合并為一個(gè)方法方法內(nèi)元素1方法內(nèi)元素2方法內(nèi)元素3方法內(nèi)元素4實(shí)現(xiàn)類對象間的消息傳遞OOP提供四種手段支持對象間實(shí)現(xiàn)消息傳遞引用全局對象:obj1直接引用作為全局對象的obj2,依賴關(guān)系通過參數(shù)傳遞:obj2作為obj1的某項(xiàng)操作中的實(shí)在參數(shù),依賴關(guān)系引用局部對象:在obj1的某項(xiàng)操作的函數(shù)體中創(chuàng)建或獲取obj2,依賴關(guān)系通過類的成員變量:obj2作為obj1所屬類的屬性的取值,聚合與組合關(guān)系4.構(gòu)造類對象的狀態(tài)圖狀態(tài)圖如果一個(gè)類的對象具有較為復(fù)雜的狀態(tài),在其生命周期中需要針對外部和內(nèi)部事件實(shí)施一系列的活動(dòng)以變遷其狀態(tài),那么可以考慮構(gòu)造和繪制類的狀態(tài)圖活動(dòng)圖如果某個(gè)類在實(shí)現(xiàn)其職責(zé)過程中需要執(zhí)行一系列的方法、與其他的對象進(jìn)行諸多的交互,那么可以考慮構(gòu)造和繪制針對該類某些職責(zé)的活動(dòng)圖示例:Robot類對象的狀態(tài)圖示例:“Ticket”對象的狀態(tài)圖5.評審和優(yōu)化類設(shè)計(jì)根據(jù)“強(qiáng)內(nèi)聚、松耦合”的原則,判斷設(shè)計(jì)的模塊化程度,必要時(shí)可以對類及其方法進(jìn)行拆分和組合評判類設(shè)計(jì)的詳細(xì)程度,是否足以支持后續(xù)的軟件編碼和實(shí)現(xiàn),依此為依據(jù)對類設(shè)計(jì)進(jìn)行細(xì)化和精化按照簡單性、自然性等原則,評判類間的關(guān)系是否恰如其分地反映類與類之間的邏輯關(guān)系,是否有助于促進(jìn)軟件系統(tǒng)的自然抽象和重用按照信息隱藏的原則,評判類的可見范圍、類屬性和方法的作用范圍等是否合適,以盡可能地縮小類的可見范圍,縮小操作的作用范圍,不對外公開類的屬性類設(shè)計(jì)輸出的軟件制品詳細(xì)的類屬性、方法和類間關(guān)系設(shè)計(jì)的類圖描述類方法實(shí)現(xiàn)算法細(xì)節(jié)的活動(dòng)圖必要的狀態(tài)圖(可選)內(nèi)容軟件詳細(xì)設(shè)計(jì)概述任務(wù)、過程和原則詳細(xì)設(shè)計(jì)的UML模型軟件詳細(xì)設(shè)計(jì)活動(dòng)用例設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)子系統(tǒng)和構(gòu)件設(shè)計(jì)詳細(xì)設(shè)計(jì)文檔化和評審為什么要進(jìn)行數(shù)據(jù)設(shè)計(jì)軟件系統(tǒng)涉及各種信息,需要將其抽象為計(jì)算機(jī)可以理解和處理的數(shù)據(jù)有些數(shù)據(jù)需要持久保存的,存放在永久存儲(chǔ)介質(zhì)中開展數(shù)據(jù)設(shè)計(jì),以支持信息的抽象、組織、存儲(chǔ)和讀取有些數(shù)據(jù)則需要存放在內(nèi)存空間中,由運(yùn)行的進(jìn)程對其進(jìn)行處理在類設(shè)計(jì)中抽象和封裝為類屬性及其數(shù)據(jù)類型數(shù)據(jù)設(shè)計(jì)任務(wù)設(shè)計(jì)需要持久保存的數(shù)據(jù)以及這些數(shù)據(jù)之間的關(guān)系數(shù)據(jù)組織方式(例如關(guān)系數(shù)據(jù)庫中的表、關(guān)鍵字、外鍵等)之間進(jìn)行映射為提高數(shù)據(jù)存儲(chǔ)、操作性能而設(shè)計(jì)持久存儲(chǔ)機(jī)制優(yōu)化設(shè)施設(shè)計(jì)與建模設(shè)計(jì)數(shù)據(jù)的結(jié)構(gòu)、存儲(chǔ)、組織和訪問對數(shù)據(jù)設(shè)計(jì)的結(jié)果進(jìn)行建模數(shù)據(jù)設(shè)計(jì)的任務(wù)數(shù)據(jù)設(shè)計(jì)用例模型用例交互模型分析類模型軟件體系結(jié)構(gòu)設(shè)計(jì)模型用戶界面模型數(shù)據(jù)設(shè)計(jì)模型(類圖、活動(dòng)圖等)用例設(shè)計(jì)模型類設(shè)計(jì)模型需求模型數(shù)據(jù)設(shè)計(jì)過程確定持久數(shù)據(jù)確定數(shù)據(jù)存儲(chǔ)和組織方式評審和優(yōu)化數(shù)據(jù)設(shè)計(jì)設(shè)計(jì)數(shù)據(jù)訪問操作用例設(shè)計(jì)子系統(tǒng)/構(gòu)件設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)模型設(shè)計(jì)評審和文檔化示例:數(shù)據(jù)模型設(shè)計(jì)數(shù)據(jù)庫的表以及表之間的關(guān)系數(shù)據(jù)設(shè)計(jì)的原則可追蹤根據(jù)軟件需求、體系結(jié)構(gòu)設(shè)計(jì)、用例設(shè)計(jì)等模型開展數(shù)據(jù)設(shè)計(jì)無冗余盡可能不要產(chǎn)生一些冗余、不必要的數(shù)據(jù)設(shè)計(jì)??紤]和權(quán)衡時(shí)空效率反復(fù)折中數(shù)據(jù)的執(zhí)行效率(如操作數(shù)據(jù)需要的時(shí)間)和存儲(chǔ)效率(如存儲(chǔ)數(shù)據(jù)所需的空間),以滿足非功能性需求貫穿整個(gè)軟件設(shè)計(jì)階段針對關(guān)鍵性、全局性的數(shù)據(jù)條目建立最初的數(shù)據(jù)模型數(shù)據(jù)模型應(yīng)該不斷豐富、演進(jìn)、完善,以滿足用例、子系統(tǒng)、構(gòu)件、類等設(shè)計(jì)元素對持久數(shù)據(jù)存儲(chǔ)的需求驗(yàn)證數(shù)據(jù)的完整性1.確定永久數(shù)據(jù)根據(jù)對需求的理解來確定哪些數(shù)據(jù)需要永久保存如用戶的賬號和密碼系統(tǒng)設(shè)置信息2.確定持久數(shù)據(jù)的存儲(chǔ)和組織方式將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)文件中確定數(shù)據(jù)存儲(chǔ)的組織格式,以便將格式化和結(jié)構(gòu)化的數(shù)據(jù)存放在數(shù)據(jù)文件之中將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫中設(shè)計(jì)支持?jǐn)?shù)據(jù)存儲(chǔ)的數(shù)據(jù)庫表確定持久數(shù)據(jù)條目確定設(shè)計(jì)模型中需要持久保存的類的對象及其屬性面向?qū)ο笤O(shè)計(jì)模型與關(guān)系數(shù)據(jù)庫模型的對應(yīng)關(guān)系類對應(yīng)于

“表格”(table)對象對應(yīng)于“記錄”(record)屬性對應(yīng)于表格中的“字段”(field)表格名稱字段名稱1:1、1:n關(guān)聯(lián)關(guān)系的映射假設(shè)類C1、C2對應(yīng)的表格分別為T_C1、T_C2,只要將T_C1中關(guān)鍵字段納入T_C2中作為外鍵,就可表示從T_C1到T_C2間的1:1、1:n關(guān)聯(lián)關(guān)系n:m關(guān)聯(lián)關(guān)系的映射在T_C1、T_C2間引進(jìn)新交叉表格T_Intersection,將T_C1、T_C2關(guān)鍵字段納入T_Intersection中作為外鍵,在T_C1與T_Intersection之間、T_C2與T_Intersection之間建立一對多關(guān)系繼承關(guān)系的數(shù)據(jù)庫表設(shè)計(jì)(1/2)假設(shè)C1是C2的父類,將T_C1中的所有字段全部引入至T_C2弊端:浪費(fèi)了持久存儲(chǔ)空間,容易因數(shù)據(jù)冗余而導(dǎo)致數(shù)據(jù)不一致性繼承關(guān)系的數(shù)據(jù)庫表設(shè)計(jì)(2/2)假設(shè)C1是C2的父類,僅將T_C1中關(guān)鍵字字段納入T_C2中作為外鍵獲取C2對象的全部屬性,需要聯(lián)合T_C2中的記錄和對應(yīng)于外鍵值的T_C1中的某條記錄避免數(shù)據(jù)冗余,但在讀取C2對象時(shí)性能不如前種方法示例:設(shè)計(jì)持久數(shù)據(jù)保存“User”類對象的數(shù)據(jù)庫表“T_User”示例:設(shè)計(jì)持久數(shù)據(jù)示例:Mini-12306的數(shù)據(jù)設(shè)計(jì)3.設(shè)計(jì)數(shù)據(jù)操作寫入、查詢、更新和刪除四類基本操作以及由它們復(fù)合而成的業(yè)務(wù)數(shù)據(jù)操作寫入操作將數(shù)據(jù)從運(yùn)行時(shí)的軟件系統(tǒng)保存至數(shù)據(jù)庫查詢操作按照特定的選擇準(zhǔn)則從數(shù)據(jù)庫提取部分?jǐn)?shù)據(jù)置入運(yùn)行時(shí)軟件系統(tǒng)中的指定對象更新操作以運(yùn)行時(shí)軟件系統(tǒng)中的(新)數(shù)據(jù)替換數(shù)據(jù)庫中符合特定準(zhǔn)則的(舊)數(shù)據(jù)刪除操作將符合特定準(zhǔn)則的數(shù)據(jù)從數(shù)據(jù)庫中刪除數(shù)據(jù)驗(yàn)證操作該操作驗(yàn)證操作負(fù)責(zé)驗(yàn)證數(shù)據(jù)的完整性、相關(guān)性、一致性等等示例:設(shè)計(jì)永久數(shù)據(jù)的操作booleaninsertUser(User)booleandeleteUser(User)booleanupdateUser(User)UsergetUserByAccount(account)booleanverifyUserValidity(account,password)UserLibrary()

UserLibrary()voidopenDatabase()voidcloseDatabase()4.評審和優(yōu)化數(shù)據(jù)設(shè)計(jì)正確性數(shù)據(jù)設(shè)計(jì)是否滿足軟件需求一致性數(shù)據(jù)設(shè)計(jì)尤其是是數(shù)據(jù)的組織是否與相關(guān)的類設(shè)計(jì)相一致時(shí)空效率分析數(shù)據(jù)設(shè)計(jì)的空間利用率,以此來優(yōu)化數(shù)據(jù)的組織根據(jù)數(shù)據(jù)操作的響應(yīng)時(shí)間來分析數(shù)據(jù)操作的時(shí)效性,優(yōu)化數(shù)據(jù)庫以及數(shù)據(jù)訪問操作可擴(kuò)展性數(shù)據(jù)設(shè)計(jì)是否考慮和支持將來的數(shù)據(jù)持續(xù)保存的可能擴(kuò)展數(shù)據(jù)設(shè)計(jì)的輸出描述數(shù)據(jù)設(shè)計(jì)的類圖描述數(shù)據(jù)操作的活動(dòng)圖內(nèi)容軟件詳細(xì)設(shè)計(jì)概述任務(wù)、過程和原則詳細(xì)設(shè)計(jì)的UML模型軟件詳細(xì)設(shè)計(jì)活動(dòng)用例設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)子系統(tǒng)和構(gòu)件設(shè)計(jì)詳細(xì)設(shè)計(jì)文檔化和評審為什么需要子系統(tǒng)/構(gòu)件設(shè)計(jì)體系結(jié)構(gòu)設(shè)計(jì)和用例設(shè)計(jì)引入了子系統(tǒng)或者構(gòu)件從軟件封裝和重用的角度需要將設(shè)計(jì)元素重組為子系統(tǒng)或者構(gòu)件尚未對子系統(tǒng)/構(gòu)件進(jìn)行深入的設(shè)計(jì)子系統(tǒng)設(shè)計(jì)任務(wù)確定子系統(tǒng)內(nèi)部結(jié)構(gòu),設(shè)置包含于其中的更小粒度子系統(tǒng)、構(gòu)件和設(shè)計(jì)類,明確它們之間的協(xié)作關(guān)系確保它們能夠協(xié)同實(shí)現(xiàn)子系統(tǒng)接口規(guī)定的所有功能和行為設(shè)計(jì)和建模細(xì)化子系統(tǒng)內(nèi)部的細(xì)節(jié),如設(shè)計(jì)元素、關(guān)聯(lián)和交互對子系統(tǒng)內(nèi)部的結(jié)構(gòu)進(jìn)行建模對子系統(tǒng)內(nèi)部各個(gè)設(shè)計(jì)元素之間的協(xié)作進(jìn)行建模結(jié)果包圖、構(gòu)件圖、順序圖、活動(dòng)圖、類圖子系統(tǒng)設(shè)計(jì)的示例設(shè)計(jì)子系統(tǒng)內(nèi)部的設(shè)計(jì)元素構(gòu)件設(shè)計(jì)任務(wù)定義構(gòu)件內(nèi)部的設(shè)計(jì)元素及其協(xié)作方法內(nèi)部設(shè)計(jì)元素可以是子構(gòu)件,也可以是粒度更細(xì)的類設(shè)計(jì)與建模細(xì)化構(gòu)件的內(nèi)部細(xì)節(jié),如子構(gòu)件、類等對構(gòu)件內(nèi)部的結(jié)構(gòu)進(jìn)行建模對構(gòu)件內(nèi)部各個(gè)設(shè)計(jì)元素之間的協(xié)作進(jìn)行建模結(jié)果構(gòu)件圖、類圖、順序圖、活動(dòng)圖等構(gòu)件是可獨(dú)立部署和運(yùn)行的設(shè)計(jì)元素構(gòu)件設(shè)計(jì)的示例設(shè)計(jì)構(gòu)件內(nèi)部的設(shè)計(jì)元素子系統(tǒng)設(shè)計(jì)的任務(wù)確定子系統(tǒng)內(nèi)部的結(jié)構(gòu)設(shè)計(jì)包含于其中的、粒度更小的子系統(tǒng)、構(gòu)件和設(shè)計(jì)類設(shè)計(jì)它們之間的接口和協(xié)作關(guān)系確保它們能夠協(xié)同實(shí)現(xiàn)體系結(jié)構(gòu)模型中該子系統(tǒng)的服務(wù)提供接口所規(guī)定的全部功能和行為子系統(tǒng)設(shè)計(jì)軟件體系結(jié)構(gòu)子系統(tǒng)接口和職責(zé)精化子系統(tǒng),細(xì)化其內(nèi)部設(shè)計(jì)元素子系統(tǒng)設(shè)計(jì)過程精化子系統(tǒng)內(nèi)部設(shè)計(jì)元素導(dǎo)出子系統(tǒng)的設(shè)計(jì)類圖構(gòu)造子系統(tǒng)的狀態(tài)圖活動(dòng)圖評審子系統(tǒng)設(shè)計(jì)用例設(shè)計(jì)子系統(tǒng)/構(gòu)件設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)模型設(shè)計(jì)設(shè)計(jì)整合與驗(yàn)證子系統(tǒng)設(shè)計(jì)的原則將分析模型中一個(gè)或一些較復(fù)雜、職責(zé)粒度較大的分析類抽象為一個(gè)子系統(tǒng),并對此進(jìn)行單獨(dú)設(shè)計(jì)考慮軟件非功能性需求,思考實(shí)現(xiàn)非功能需求的方法確保將子系統(tǒng)的職責(zé)分解到各個(gè)設(shè)計(jì)元素之中確保子系統(tǒng)設(shè)計(jì)元素能夠完整地實(shí)現(xiàn)整個(gè)子系統(tǒng)職責(zé)不僅將注意力集中在子系統(tǒng)內(nèi)部元素的設(shè)計(jì)上,還要思考所設(shè)計(jì)的子系統(tǒng)如何通過接口與其外部的設(shè)計(jì)元素(如構(gòu)件、設(shè)計(jì)類、其他子系統(tǒng)等)進(jìn)行交互和協(xié)作。結(jié)合已有軟件資產(chǎn)、考慮實(shí)現(xiàn)約束等因素來進(jìn)行子系統(tǒng)的設(shè)計(jì),盡可能地通過重用開源軟件、集成遺留系統(tǒng)1.精化子系統(tǒng)內(nèi)部設(shè)計(jì)元素在子系統(tǒng)中設(shè)置哪些設(shè)計(jì)元素構(gòu)件、設(shè)計(jì)類或子系統(tǒng)它們各自的職責(zé)是什么提供什么功能和服務(wù)它們間如何協(xié)作實(shí)現(xiàn)子系統(tǒng)的職責(zé)、接口和功能子系統(tǒng)內(nèi)部設(shè)計(jì)的方法理解和分解子系統(tǒng)的職責(zé)通過一系列交互圖來進(jìn)一步分析子系統(tǒng)的職責(zé)采用自頂向下和自底向上相結(jié)合的方式將子系統(tǒng)職責(zé)交由一組相對獨(dú)立的設(shè)計(jì)元素(如設(shè)計(jì)類等)來完成重用已有的軟件資產(chǎn)(如開源軟件、遺留系統(tǒng))如果它們能夠承擔(dān)部分職責(zé),那么將相關(guān)的軟件資產(chǎn)作為構(gòu)成子系統(tǒng)的成分之一繪制一系列UML交互圖刻畫子系統(tǒng)中軟件元素如何通過交互來實(shí)現(xiàn)子系統(tǒng)的職責(zé)選擇合適的設(shè)計(jì)模式有助于重用和優(yōu)化子系統(tǒng)設(shè)計(jì)重用一些有效的問題求解和職責(zé)實(shí)現(xiàn)方式輸出一組描述子系統(tǒng)內(nèi)部設(shè)計(jì)元素交互的UML順序圖示例:精化“RobotController”子系統(tǒng)的設(shè)計(jì)元素“RobotController”子系統(tǒng)實(shí)現(xiàn)“自主跟隨老人”功能和職責(zé)的順序圖示例:精化“RobotController”子系統(tǒng)的設(shè)計(jì)元素“RobotController”子系統(tǒng)實(shí)現(xiàn)“遠(yuǎn)程控制機(jī)器人”功能和職責(zé)的順序圖2.構(gòu)造子系統(tǒng)的設(shè)計(jì)類圖基于子系統(tǒng)設(shè)計(jì)的UML交互圖詳細(xì)描述了子系統(tǒng)功能和職責(zé)的實(shí)現(xiàn)方式推導(dǎo)出子系統(tǒng)的設(shè)計(jì)類圖顯式區(qū)分子系統(tǒng)內(nèi)部的設(shè)計(jì)元素與位于子系統(tǒng)之外、為子系統(tǒng)提供服務(wù)的其他設(shè)計(jì)元素推導(dǎo)子系統(tǒng)設(shè)計(jì)類圖的方法針對順序圖中對象所對應(yīng)的類,將其抽象為設(shè)計(jì)類圖中的類如果順序圖中對象a給對象b發(fā)消息m并附帶參數(shù)p目標(biāo)對象對應(yīng)的類具有相應(yīng)的職責(zé)和方法,以處理消息m目標(biāo)對象對應(yīng)的類具有相應(yīng)的屬性以存儲(chǔ)p根據(jù)順序圖中對象間消息來確定設(shè)計(jì)類間的關(guān)系如果一個(gè)對象a向?qū)ο骲發(fā)消息,那么對應(yīng)的類A與類B之間存在關(guān)聯(lián)或者依賴關(guān)系如果子系統(tǒng)外的設(shè)計(jì)元素通過子系統(tǒng)的接口與子系統(tǒng)進(jìn)行交互,那么這些設(shè)計(jì)元素與子系統(tǒng)之間存在依賴關(guān)系如果多個(gè)設(shè)計(jì)類之間具有一般和特殊的關(guān)系,那么它們之間存在繼承關(guān)系示例:“RobotController”子系統(tǒng)的設(shè)計(jì)類圖“RobotController”子系統(tǒng)的類圖3.構(gòu)造子系統(tǒng)的狀態(tài)圖和活動(dòng)圖如果子系統(tǒng)或其內(nèi)部設(shè)計(jì)元素具有明顯狀態(tài)特征,那么繪制和分析其UML狀態(tài)圖狀態(tài)及其變化構(gòu)造子系統(tǒng)及其設(shè)計(jì)元素的活動(dòng)圖來理解和分析子系統(tǒng)是如何實(shí)現(xiàn)的子系統(tǒng)內(nèi)部的設(shè)計(jì)元素協(xié)同完成子系統(tǒng)的某些功能子系統(tǒng)與外部設(shè)計(jì)元素協(xié)同完成更大范圍內(nèi)的功能子系統(tǒng)設(shè)計(jì)的輸出制品子系統(tǒng)設(shè)計(jì)方案交互圖設(shè)計(jì)類圖可能的狀態(tài)圖、活動(dòng)圖評審子系統(tǒng)設(shè)計(jì)完整性子系統(tǒng)內(nèi)部各設(shè)計(jì)元素所承擔(dān)的職責(zé)完整覆蓋了子系統(tǒng)的職責(zé)設(shè)計(jì)質(zhì)量是否體現(xiàn)了軟件工程的基本原則各個(gè)設(shè)計(jì)元素的職責(zé)劃分是否合理、功能和接口封裝是否恰當(dāng)可滿足性子系統(tǒng)設(shè)計(jì)是否實(shí)現(xiàn)了所賦予子系統(tǒng)的軟件需求,是否存在多余的設(shè)計(jì)元素,是否引入了不必要的軟件資產(chǎn)正確性是否正確地使用UML圖符和模型來描述子系統(tǒng)設(shè)計(jì)的軟件制品一致性多個(gè)軟件制品間是否一致,模型和文字表述是否一致內(nèi)容軟件詳細(xì)設(shè)計(jì)概述任務(wù)、過程和原則詳細(xì)設(shè)計(jì)的UML模型軟件詳細(xì)設(shè)計(jì)活動(dòng)用例設(shè)計(jì)類設(shè)計(jì)數(shù)據(jù)設(shè)計(jì)子系統(tǒng)和構(gòu)件設(shè)計(jì)詳細(xì)設(shè)計(jì)文檔化和評審3.1軟件詳細(xì)設(shè)計(jì)的輸出模型用UML類圖、構(gòu)件圖、包圖、狀態(tài)圖、順序圖等描述的詳細(xì)設(shè)計(jì)模型文檔軟件詳細(xì)設(shè)計(jì)規(guī)格說明書3.2設(shè)計(jì)整合匯總迄今獲得的所有設(shè)計(jì)模型包括體系結(jié)構(gòu)模型、界面設(shè)計(jì)模型、用例設(shè)計(jì)模型、子系統(tǒng)/構(gòu)件/類設(shè)計(jì)模型、數(shù)據(jù)模型等形成系統(tǒng)、完整的軟件設(shè)計(jì)方案3.3設(shè)計(jì)驗(yàn)證驗(yàn)證整個(gè)設(shè)計(jì)的正確性、優(yōu)化性和充分性等驗(yàn)證設(shè)計(jì)模型之間的不一致性、冗余性等發(fā)現(xiàn)設(shè)計(jì)方案中的問題并進(jìn)行整改3.4撰寫設(shè)計(jì)文檔1、引言1.1編寫目的1.2讀者對象1.3軟件系統(tǒng)概述1.4文檔概述1.5定義1.6參考資料2、軟件設(shè)計(jì)約束和原則2.1軟件設(shè)計(jì)約束2.2軟件設(shè)

溫馨提示

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

評論

0/150

提交評論