第4、5章_軟件設(shè)計方法_第1頁
第4、5章_軟件設(shè)計方法_第2頁
第4、5章_軟件設(shè)計方法_第3頁
第4、5章_軟件設(shè)計方法_第4頁
第4、5章_軟件設(shè)計方法_第5頁
已閱讀5頁,還剩141頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、1引言引言面向?qū)ο箝_發(fā)方法的核心是利用面向?qū)ο竺嫦驅(qū)ο箝_發(fā)方法的核心是利用面向?qū)ο蟮母拍詈头椒▽浖枨蠓治龊驮O(shè)計,建的概念和方法對軟件需求分析和設(shè)計,建立面向?qū)ο蟮能浖治龊驮O(shè)計模型。立面向?qū)ο蟮能浖治龊驮O(shè)計模型。面向?qū)ο筌浖_發(fā)過程從領(lǐng)域概念到設(shè)計面向?qū)ο筌浖_發(fā)過程從領(lǐng)域概念到設(shè)計概念和代碼實現(xiàn)都以類和對象為核心,是概念和代碼實現(xiàn)都以類和對象為核心,是一個逐步精化的過程,因此需求分析和設(shè)一個逐步精化的過程,因此需求分析和設(shè)計之間并沒有嚴格的分界線。計之間并沒有嚴格的分界線。本章使用本章使用UML進行軟件分析和設(shè)計。進行軟件分析和設(shè)計。4.1 基于基于UML的分析與設(shè)計的分析與設(shè)計UML

2、是獨立于軟件開發(fā)過程的,它幾乎可是獨立于軟件開發(fā)過程的,它幾乎可以用于任何類型的軟件開發(fā)過程,包括瀑以用于任何類型的軟件開發(fā)過程,包括瀑布式、迭代式、螺旋式等不同模型。布式、迭代式、螺旋式等不同模型。在軟件分析和設(shè)計中,可以根據(jù)項目的特在軟件分析和設(shè)計中,可以根據(jù)項目的特征、開發(fā)組織在已有實踐中定義的相關(guān)規(guī)征、開發(fā)組織在已有實踐中定義的相關(guān)規(guī)范、設(shè)計人員本身的偏好等因素,對基于范、設(shè)計人員本身的偏好等因素,對基于UML的軟件設(shè)計過程進行定制。的軟件設(shè)計過程進行定制。 根據(jù)根據(jù)UML各種視圖的特點,它們可能更適各種視圖的特點,它們可能更適用于軟件分析與設(shè)計的某些活動,形成了用于軟件分析與設(shè)計的某

3、些活動,形成了一些常用的設(shè)計方式與過程,起到一定的一些常用的設(shè)計方式與過程,起到一定的指導(dǎo)作用,但并沒有強制性要求。指導(dǎo)作用,但并沒有強制性要求。基于基于UML的分析與設(shè)計過程的分析與設(shè)計過程使用使用UML的軟件分析的軟件分析和設(shè)計的較為通用的和設(shè)計的較為通用的過程,實踐中開發(fā)人過程,實踐中開發(fā)人員可以此過程為基礎(chǔ)員可以此過程為基礎(chǔ)進行改進和訂制。進行改進和訂制。用例分析與設(shè)計:用例分析與設(shè)計:需求獲取,分析和描述的過程,它將利用例及用例圖表示需需求獲取,分析和描述的過程,它將利用例及用例圖表示需求。求。概念模型與頂層架構(gòu)設(shè)計:概念模型與頂層架構(gòu)設(shè)計:抽取全局性的概念,為后續(xù)的分析和設(shè)計活動建

4、立結(jié)構(gòu)和劃抽取全局性的概念,為后續(xù)的分析和設(shè)計活動建立結(jié)構(gòu)和劃分。分。用戶界面設(shè)計:用戶界面設(shè)計:設(shè)計每個界面中的所有界面元素,確定初步的界面布局,定設(shè)計每個界面中的所有界面元素,確定初步的界面布局,定義用戶界面動作對軟件系統(tǒng)中設(shè)計元素的要求。增加專用類義用戶界面動作對軟件系統(tǒng)中設(shè)計元素的要求。增加專用類與對象。與對象。數(shù)據(jù)模型的設(shè)計:數(shù)據(jù)模型的設(shè)計:確定設(shè)計模型中需要持久保存的類的對象及其屬性,定義持確定設(shè)計模型中需要持久保存的類的對象及其屬性,定義持久持久存儲數(shù)據(jù)之間的組織方式,并明確數(shù)據(jù)模型中的操作久持久存儲數(shù)據(jù)之間的組織方式,并明確數(shù)據(jù)模型中的操作行為。行為。設(shè)計的精化:設(shè)計的精化:對

5、上面的邏輯、界面、數(shù)據(jù)模型等不同側(cè)重對上面的邏輯、界面、數(shù)據(jù)模型等不同側(cè)重點的設(shè)計結(jié)果進行整理,合并相似的類,保點的設(shè)計結(jié)果進行整理,合并相似的類,保證各模型之間的一致性,并消除冗余。證各模型之間的一致性,并消除冗余。類設(shè)計:類設(shè)計:對類進行細化設(shè)計,精化類之間的關(guān)系以及類對類進行細化設(shè)計,精化類之間的關(guān)系以及類的操作和屬性,使它們能夠直接提交給軟件構(gòu)的操作和屬性,使它們能夠直接提交給軟件構(gòu)造階段進行編碼實現(xiàn)。造階段進行編碼實現(xiàn)。部署模型設(shè)計:部署模型設(shè)計:對軟件最終的元素結(jié)構(gòu)以及運行的具體環(huán)境進對軟件最終的元素結(jié)構(gòu)以及運行的具體環(huán)境進行描述行描述4.2用例分析與設(shè)計用例分析與設(shè)計案例:銀行案

6、例:銀行ATM自動柜員機的需求簡述(自動柜員機的需求簡述(本案例將要開發(fā)的本案例將要開發(fā)的ATM系統(tǒng)能夠為顧客提系統(tǒng)能夠為顧客提供以下基本服務(wù),它們統(tǒng)一稱為交易):供以下基本服務(wù),它們統(tǒng)一稱為交易):取款服務(wù)。顧客可以用銀行卡從對應(yīng)的賬戶中支取現(xiàn)取款服務(wù)。顧客可以用銀行卡從對應(yīng)的賬戶中支取現(xiàn)金,現(xiàn)金必須是金,現(xiàn)金必須是100元的整數(shù)倍,且每次取款不能超過元的整數(shù)倍,且每次取款不能超過2000元。元。存款服務(wù)。顧客可以把現(xiàn)金存入與銀行卡對應(yīng)的賬戶存款服務(wù)。顧客可以把現(xiàn)金存入與銀行卡對應(yīng)的賬戶中。中。轉(zhuǎn)帳服務(wù)。顧客可以把一個銀行卡對應(yīng)的賬戶中的款轉(zhuǎn)帳服務(wù)。顧客可以把一個銀行卡對應(yīng)的賬戶中的款項轉(zhuǎn)帳

7、到另一個銀行賬戶中。項轉(zhuǎn)帳到另一個銀行賬戶中。查詢服務(wù)。顧客能夠查詢一個銀行卡對應(yīng)的賬戶中的查詢服務(wù)。顧客能夠查詢一個銀行卡對應(yīng)的賬戶中的余額余額。銀行銀行ATM自動柜員機需求簡述自動柜員機需求簡述該該ATM系統(tǒng)包括以下組成部分:系統(tǒng)包括以下組成部分:讀卡器讀卡器交互的控制臺,鍵盤及顯示器交互的控制臺,鍵盤及顯示器送出現(xiàn)金的裝置,取款器送出現(xiàn)金的裝置,取款器存款的插槽,存款器存款的插槽,存款器打印機打印機啟動和關(guān)閉啟動和關(guān)閉ATM系統(tǒng)的開關(guān)鍵盤系統(tǒng)的開關(guān)鍵盤ATM系統(tǒng)與銀行服務(wù)通過特定的網(wǎng)絡(luò)連接進行通信系統(tǒng)與銀行服務(wù)通過特定的網(wǎng)絡(luò)連接進行通信ATM系統(tǒng)在提供以上服務(wù)的過程中,必須滿足系統(tǒng)在提供

8、以上服務(wù)的過程中,必須滿足以下要求以下要求一個顧客可以在最終確認前放棄一項交易一個顧客可以在最終確認前放棄一項交易ATM在執(zhí)行交易過程中將與銀行系統(tǒng)進行通信,在執(zhí)行交易過程中將與銀行系統(tǒng)進行通信,對是否允許交易進行驗證對是否允許交易進行驗證ATM為每次成功的交易提供一個打印回執(zhí)為每次成功的交易提供一個打印回執(zhí)ATM需要維護一個內(nèi)部日志,對每次交易進行記需要維護一個內(nèi)部日志,對每次交易進行記錄錄(1)確定用例)確定用例采用用例模型描述系統(tǒng)需求時,首先需要采用用例模型描述系統(tǒng)需求時,首先需要開發(fā)人員從業(yè)務(wù)需求描述出發(fā)獲取參與者開發(fā)人員從業(yè)務(wù)需求描述出發(fā)獲取參與者(Actor)和場景,對場景進行匯總

9、、分類)和場景,對場景進行匯總、分類、抽象,形成用例。、抽象,形成用例。場景是從單個參與者的角度觀察目標(biāo)軟件場景是從單個參與者的角度觀察目標(biāo)軟件系統(tǒng)的功能和外部行為,這種功能通過系系統(tǒng)的功能和外部行為,這種功能通過系統(tǒng)與用戶之間的交互來表示。統(tǒng)與用戶之間的交互來表示。場景是用例的實例,而用例是某類場景的場景是用例的實例,而用例是某類場景的共同抽象。共同抽象。 確定參與者和場景確定參與者和場景對多個場景進行抽象對多個場景進行抽象用例用例獲取場景獲取場景以下問題可以幫助分析人員獲取場景:以下問題可以幫助分析人員獲取場景:目標(biāo)軟件系統(tǒng)有哪些參與者?目標(biāo)軟件系統(tǒng)有哪些參與者?參與者希望系統(tǒng)執(zhí)行的任務(wù)有

10、哪些?參與者希望系統(tǒng)執(zhí)行的任務(wù)有哪些?參與者希望獲得哪些信息?這些信息由誰生參與者希望獲得哪些信息?這些信息由誰生成?由誰修改?成?由誰修改?參與者需要通知系統(tǒng)哪些事件?系統(tǒng)響應(yīng)這參與者需要通知系統(tǒng)哪些事件?系統(tǒng)響應(yīng)這些事件時會表現(xiàn)出哪些外部行為?些事件時會表現(xiàn)出哪些外部行為?系統(tǒng)將通告參與者哪些事件?系統(tǒng)將通告參與者哪些事件?確定參與者和場景的關(guān)鍵在于理解業(yè)務(wù)領(lǐng)域和初步需求描確定參與者和場景的關(guān)鍵在于理解業(yè)務(wù)領(lǐng)域和初步需求描述文檔。述文檔。定義用例定義用例在場景確定之后,通過對場景的匯總、分在場景確定之后,通過對場景的匯總、分類歸并、抽象即可形成用例。類歸并、抽象即可形成用例。需要特別注意的

11、是,參與者并只限于人員需要特別注意的是,參與者并只限于人員,其它與目標(biāo)軟件發(fā)生交互的外部實體或,其它與目標(biāo)軟件發(fā)生交互的外部實體或系統(tǒng)也是參與者;用例應(yīng)該是對參與者可系統(tǒng)也是參與者;用例應(yīng)該是對參與者可見的系統(tǒng)需求或功能,否則不能作為用例見的系統(tǒng)需求或功能,否則不能作為用例。 如果多個外部實體在與目標(biāo)軟件系統(tǒng)進行如果多個外部實體在與目標(biāo)軟件系統(tǒng)進行交互時扮演同一角色,這些實體用同一參交互時扮演同一角色,這些實體用同一參與者表示;如果一個外部實體扮演多個角與者表示;如果一個外部實體扮演多個角色,則需要多個參與者來表示同一實體,色,則需要多個參與者來表示同一實體,即參與者與角色一一對應(yīng)。即參與者與

12、角色一一對應(yīng)。確定用例確定用例確認參與者和責(zé)任不同的參與者不同的參與者系統(tǒng)管理員、程序員、會計、出納員系統(tǒng)管理員、程序員、會計、出納員與系統(tǒng)通信的其他系統(tǒng)與系統(tǒng)通信的其他系統(tǒng)不同的責(zé)任不同的責(zé)任系統(tǒng)配置、程序設(shè)計、財務(wù)管理、現(xiàn)金管理系統(tǒng)配置、程序設(shè)計、財務(wù)管理、現(xiàn)金管理分析參與者的工作:使用案例分析參與者的工作:使用案例各種使用過程、步驟各種使用過程、步驟ATM案例的參與者案例的參與者“顧客顧客”(Customer)“操作管理人員操作管理人員”(Operator)“銀行服務(wù)器銀行服務(wù)器”(Bank System)“讀卡器讀卡器”(Card Reader)“存款器存款器”(Cash Accept

13、or)“取款器取款器”(Cash Dispenser)“打印機打印機”(Printer)參與者:與系統(tǒng)交互的人、設(shè)備、其他系統(tǒng)參與者:與系統(tǒng)交互的人、設(shè)備、其他系統(tǒng)ATM案例的用例案例的用例“取款取款”(Withdrawal)“存款存款”(Deposit)“轉(zhuǎn)帳轉(zhuǎn)帳”(Transfer)“查詢余額查詢余額”(Inquiry)“開機開機”(System Startup)“關(guān)機關(guān)機”(System Shutdown)用例:系統(tǒng)的功能用例:系統(tǒng)的功能(2)生成用例圖)生成用例圖確定參與者與用例之后,建立用例圖,描述確定參與者與用例之后,建立用例圖,描述參與者與用例、用例之間的關(guān)系。參與者與用例、用例

14、之間的關(guān)系。生成用例圖是一個逐步精化的過程,首先可生成用例圖是一個逐步精化的過程,首先可以建立初步的用例圖,包括前面發(fā)現(xiàn)的參與以建立初步的用例圖,包括前面發(fā)現(xiàn)的參與者和用例;者和用例;然后對用例圖進行細化,定義用例之間然后對用例圖進行細化,定義用例之間“包含包含”、 “擴展擴展”、“繼承繼承”等關(guān)系,并可能需要定等關(guān)系,并可能需要定義新的用例,以能夠更準確地使用用例圖描義新的用例,以能夠更準確地使用用例圖描述系統(tǒng)需求。述系統(tǒng)需求。 用例用例建模建模步驟步驟1) 描述各種使用案例描述各種使用案例描述描述交互過程的動作序列交互過程的動作序列模擬系統(tǒng)工作的交互過程模擬系統(tǒng)工作的交互過程2)確認動作)

15、確認動作檢查使用案例,引入并描述動作檢查使用案例,引入并描述動作覆蓋覆蓋所有可能發(fā)生的動作所有可能發(fā)生的動作用例用例建模建模步驟步驟3) 跟蹤跟蹤執(zhí)行執(zhí)行過程過程為每個為每個使用使用案例案例制作制作順序順序圖圖描述對象之間的描述對象之間的消息消息傳送過程傳送過程4) 構(gòu)造狀態(tài)轉(zhuǎn)移圖構(gòu)造狀態(tài)轉(zhuǎn)移圖為為每個對象每個對象構(gòu)造構(gòu)造的狀態(tài)轉(zhuǎn)移圖的狀態(tài)轉(zhuǎn)移圖反映對象接受和發(fā)送的反映對象接受和發(fā)送的消息消息考慮所有考慮所有使用使用案例案例中的所有中的所有消息消息生成初步用例圖生成初步用例圖用例圖的細化用例圖的細化包含(包含(include)關(guān)系)關(guān)系擴展(擴展(extend)關(guān)系)關(guān)系 繼承關(guān)系:為了對相似

16、用例的交互模式進繼承關(guān)系:為了對相似用例的交互模式進行抽象行抽象“取款、存款、轉(zhuǎn)賬、查詢?nèi)】睢⒋婵?、轉(zhuǎn)賬、查詢”可被認為是可被認為是“交交易易”過程,因此定義過程,因此定義“交易交易”用例。用例。插卡后可以不執(zhí)行任何一個插卡后可以不執(zhí)行任何一個“交易交易”,或執(zhí)行,或執(zhí)行多次多次“交易交易”,因此,因此“交易交易”不能體現(xiàn)參與者不能體現(xiàn)參與者需系統(tǒng)的交互過程,所以定義需系統(tǒng)的交互過程,所以定義“會話會話”用例。用例。細化后細化后ATM用例圖用例圖(3)用例描述)用例描述從外部視角看,一個用例是參與者與目標(biāo)從外部視角看,一個用例是參與者與目標(biāo)軟件之間的一次交互過程;從系統(tǒng)內(nèi)部視軟件之間的一次交互

17、過程;從系統(tǒng)內(nèi)部視角看,一個用例是系統(tǒng)執(zhí)行的一系列動作角看,一個用例是系統(tǒng)執(zhí)行的一系列動作,動作執(zhí)行的結(jié)果能被外部的參與者覺察,動作執(zhí)行的結(jié)果能被外部的參與者覺察。為了使用例中包含的動作和執(zhí)行過程具體為了使用例中包含的動作和執(zhí)行過程具體化,應(yīng)對用例進行描述。對用例的完整描化,應(yīng)對用例進行描述。對用例的完整描述包括:用例名稱、參與者、前置條件、述包括:用例名稱、參與者、前置條件、一個主事件流、一個主事件流、0到多個輔事件流、后置條到多個輔事件流、后置條件。件。主事件流表示正常情況下參與者與系統(tǒng)之間的主事件流表示正常情況下參與者與系統(tǒng)之間的信息交互及動作序列,信息交互及動作序列,輔事件流則表示特殊

18、情況或異常情況下的信息輔事件流則表示特殊情況或異常情況下的信息交互及動作序列。交互及動作序列?!叭】钣美】钣美泵枋雒枋鲇美Q用例名稱:Withdrawal參與者參與者:Customer,Bank System,Card Reader,Cash Dispenser,Printer前置條件前置條件:顧客已插入銀行卡,密碼驗證正確,顧客按下:顧客已插入銀行卡,密碼驗證正確,顧客按下“取款取款”按鈕按鈕主事件流主事件流:顧客輸入取款金額,并確認。顧客輸入取款金額,并確認。系統(tǒng)認可取款金額,并發(fā)送指令給取款器。系統(tǒng)認可取款金額,并發(fā)送指令給取款器。取款器把相應(yīng)金額的現(xiàn)金送出。取款器把相應(yīng)金額的現(xiàn)金

19、送出。打印機打印回執(zhí)。打印機打印回執(zhí)。輔事件流輔事件流:如果取款金額不是如果取款金額不是100的整數(shù)倍,則顯示信息的整數(shù)倍,則顯示信息“輸入金額必須是輸入金額必須是100的整數(shù)倍,的整數(shù)倍,請重新輸入請重新輸入”,并返回主事件流中步驟(,并返回主事件流中步驟(1)。)。如果取款金額超過如果取款金額超過2000元,則顯示信息元,則顯示信息“輸入金額不能超過輸入金額不能超過2000元,請重新輸元,請重新輸入入” ,并返回主事件流中步驟(,并返回主事件流中步驟(1)。)。如果賬戶余額小于取款金額,則顯示信息如果賬戶余額小于取款金額,則顯示信息“賬戶余額不足,請重新輸入賬戶余額不足,請重新輸入” ,并

20、,并返回主事件流中步驟(返回主事件流中步驟(1)。)。顧客在確認取款金額前可以選擇取消交易。顧客在確認取款金額前可以選擇取消交易。1.后置條件后置條件:如果取款成功,系統(tǒng)從賬戶余額中減去相應(yīng)數(shù)額,并返回等待狀態(tài);如:如果取款成功,系統(tǒng)從賬戶余額中減去相應(yīng)數(shù)額,并返回等待狀態(tài);如果顧客取消交易,則返回等待狀態(tài)。果顧客取消交易,則返回等待狀態(tài)。交互圖交互圖所有的任務(wù)都是一組對象合作完成的,作所有的任務(wù)都是一組對象合作完成的,作為對用例的進一步細化,可以使用交互圖為對用例的進一步細化,可以使用交互圖來描述有哪些對象如何通過消息傳遞完成來描述有哪些對象如何通過消息傳遞完成用例。用例。設(shè)計交互圖的過程也

21、是一個發(fā)現(xiàn)概念對象設(shè)計交互圖的過程也是一個發(fā)現(xiàn)概念對象的過程,這些概念層的對象和消息可以作的過程,這些概念層的對象和消息可以作為系統(tǒng)的概念層建模和后續(xù)進一步精化提為系統(tǒng)的概念層建模和后續(xù)進一步精化提供基礎(chǔ)。供基礎(chǔ)。順序圖描述用例順序圖描述用例交互圖與用例模交互圖與用例模型之間的對應(yīng)關(guān)型之間的對應(yīng)關(guān)系:對于動作緒系:對于動作緒論比較簡單的用論比較簡單的用例,一個交互圖例,一個交互圖對應(yīng)一個用例;對應(yīng)一個用例;對于比較復(fù)雜的對于比較復(fù)雜的用例,可能對應(yīng)用例,可能對應(yīng)多個交互圖,每多個交互圖,每個交互圖表示一個交互圖表示一個相對簡單的子個相對簡單的子動作序列。動作序列。Session用例的順序圖描述

22、用例的順序圖描述Traction用例的順序圖描述用例的順序圖描述Withdrawal用例的順序圖描述用例的順序圖描述小結(jié)小結(jié)用例分析與設(shè)計過程是基于用例分析與設(shè)計過程是基于UML的軟件設(shè)的軟件設(shè)計過程的基礎(chǔ),只有建立了清晰、準確的計過程的基礎(chǔ),只有建立了清晰、準確的用例模型并對用例執(zhí)行過程進行較為全面用例模型并對用例執(zhí)行過程進行較為全面的描述,才能使后續(xù)設(shè)計活動不出現(xiàn)偏差的描述,才能使后續(xù)設(shè)計活動不出現(xiàn)偏差。在為用例建立交互圖過程中,可以逐步發(fā)在為用例建立交互圖過程中,可以逐步發(fā)現(xiàn)各種系統(tǒng)概念層對象,這些對象為下一現(xiàn)各種系統(tǒng)概念層對象,這些對象為下一步建立面向?qū)ο蟮母拍钅P吞峁┝艘罁?jù),步建立面

23、向?qū)ο蟮母拍钅P吞峁┝艘罁?jù),并且可以作為頂層架構(gòu)設(shè)計的基礎(chǔ)。并且可以作為頂層架構(gòu)設(shè)計的基礎(chǔ)。(1)概念模型設(shè)計)概念模型設(shè)計概念模型針對問題領(lǐng)域中的對象進行描述概念模型針對問題領(lǐng)域中的對象進行描述,頂層架構(gòu)依據(jù)概念模型進行設(shè)計。,頂層架構(gòu)依據(jù)概念模型進行設(shè)計。在用戶需求和相關(guān)的業(yè)務(wù)領(lǐng)域中,往往有在用戶需求和相關(guān)的業(yè)務(wù)領(lǐng)域中,往往有一些一些全局性的全局性的概念對于理解需求至關(guān)重要概念對于理解需求至關(guān)重要,因此,有必要抽取這些概念,研究這些,因此,有必要抽取這些概念,研究這些概念之間的關(guān)系。概念之間的關(guān)系。UML類圖類圖非常適合用來建立領(lǐng)域概念模型非常適合用來建立領(lǐng)域概念模型,描述在問題域中存在哪

24、些主要概念和對,描述在問題域中存在哪些主要概念和對象,并表示出它們之間的關(guān)系,例如關(guān)聯(lián)象,并表示出它們之間的關(guān)系,例如關(guān)聯(lián)、聚集、繼承等。、聚集、繼承等。關(guān)鍵概念關(guān)鍵概念為建立以為建立以UML類圖表示的領(lǐng)域概念模型,類圖表示的領(lǐng)域概念模型,首先必須標(biāo)識關(guān)鍵概念。關(guān)鍵概念的來源首先必須標(biāo)識關(guān)鍵概念。關(guān)鍵概念的來源包括:包括:(1)業(yè)務(wù)需求描述、用例說明;)業(yè)務(wù)需求描述、用例說明;(2)業(yè)務(wù)領(lǐng)域中的相關(guān)規(guī)范、標(biāo)準、術(shù)語定)業(yè)務(wù)領(lǐng)域中的相關(guān)規(guī)范、標(biāo)準、術(shù)語定義。義。(3)反映業(yè)務(wù)領(lǐng)域知識的既往經(jīng)驗。)反映業(yè)務(wù)領(lǐng)域知識的既往經(jīng)驗。分析類分析類描述概念模型的描述概念模型的UML類圖主要由分析類組類圖主要

25、由分析類組成。成。分析類是指直接服務(wù)于用戶功能性需求的分析類是指直接服務(wù)于用戶功能性需求的概念層面的類,它們與待開發(fā)軟件系統(tǒng)的概念層面的類,它們與待開發(fā)軟件系統(tǒng)的具體實現(xiàn)技術(shù)無關(guān)。具體實現(xiàn)技術(shù)無關(guān)。概念層概念層UML類圖也可以稱為分析類圖。類圖也可以稱為分析類圖。 三種分析類三種分析類邊界類。負責(zé)目標(biāo)軟件系統(tǒng)與參與者之間的交互,構(gòu)造型為邊界類。負責(zé)目標(biāo)軟件系統(tǒng)與參與者之間的交互,構(gòu)造型為。通常情況下,參與者與用例之間的一種通信通常情況下,參與者與用例之間的一種通信連接對應(yīng)一個邊界類。連接對應(yīng)一個邊界類。其職責(zé)包括:其職責(zé)包括:邊界控制:邊界控制:包括定義數(shù)據(jù)的格式及內(nèi)容轉(zhuǎn)換,輸出結(jié)果的呈現(xiàn),軟

26、包括定義數(shù)據(jù)的格式及內(nèi)容轉(zhuǎn)換,輸出結(jié)果的呈現(xiàn),軟件運行過程中界面的變化與切換等。件運行過程中界面的變化與切換等。外部接口:外部接口:實現(xiàn)目標(biāo)軟件系統(tǒng)與外部系統(tǒng)或外部設(shè)備之間的信息交實現(xiàn)目標(biāo)軟件系統(tǒng)與外部系統(tǒng)或外部設(shè)備之間的信息交流和互操作,主要關(guān)注跨越目標(biāo)軟件系統(tǒng)邊界的通信協(xié)流和互操作,主要關(guān)注跨越目標(biāo)軟件系統(tǒng)邊界的通信協(xié)議議環(huán)境隔離:環(huán)境隔離:對目標(biāo)軟件系統(tǒng)與操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、中間件對目標(biāo)軟件系統(tǒng)與操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、中間件等環(huán)境軟件進行交互的功能與特性進行封裝,使目標(biāo)軟等環(huán)境軟件進行交互的功能與特性進行封裝,使目標(biāo)軟件系統(tǒng)的其余部分盡右能獨立于環(huán)境軟件。件系統(tǒng)的其余部分盡右能

27、獨立于環(huán)境軟件。控制類。作為完成用例任務(wù)的責(zé)任承擔(dān)者控制類。作為完成用例任務(wù)的責(zé)任承擔(dān)者,負責(zé)協(xié)調(diào)、控制其它類共同完成用例規(guī),負責(zé)協(xié)調(diào)、控制其它類共同完成用例規(guī)定的功能或行為。構(gòu)造型為定的功能或行為。構(gòu)造型為。用例通常對應(yīng)控制類用例通常對應(yīng)控制類。實體類。負責(zé)保存目標(biāo)軟件系統(tǒng)中具有持實體類。負責(zé)保存目標(biāo)軟件系統(tǒng)中具有持久意義的信息項并向其它類提供讀、寫信久意義的信息項并向其它類提供讀、寫信息項內(nèi)容的必要操作接口,一般不涉及業(yè)息項內(nèi)容的必要操作接口,一般不涉及業(yè)務(wù)邏輯處理。構(gòu)造型為務(wù)邏輯處理。構(gòu)造型為 。ATM系統(tǒng)的概念模型系統(tǒng)的概念模型分析模型分析模型圖圖(2)頂層架構(gòu)設(shè)計)頂層架構(gòu)設(shè)計頂層架

28、構(gòu)的主要目的是為后續(xù)的分析和設(shè)頂層架構(gòu)的主要目的是為后續(xù)的分析和設(shè)計活動建立一種結(jié)構(gòu)和劃分,以便開發(fā)人計活動建立一種結(jié)構(gòu)和劃分,以便開發(fā)人員在不同的開發(fā)階段,以及同一開發(fā)階段員在不同的開發(fā)階段,以及同一開發(fā)階段的不同開發(fā)人員,能夠聚焦于系統(tǒng)的不同的不同開發(fā)人員,能夠聚焦于系統(tǒng)的不同部分。部分。頂層架構(gòu)是分析和設(shè)計的階段成果的承載頂層架構(gòu)是分析和設(shè)計的階段成果的承載體。體。隨著開發(fā)過程的推進,框架中的內(nèi)容不斷隨著開發(fā)過程的推進,框架中的內(nèi)容不斷豐富、翔實,最終演進為完整的面向?qū)ο筘S富、翔實,最終演進為完整的面向?qū)ο筌浖Y(jié)構(gòu)。軟件結(jié)構(gòu)。 頂層架構(gòu)設(shè)計頂層架構(gòu)設(shè)計頂層架構(gòu)的設(shè)計可以把體系結(jié)構(gòu)設(shè)計方法

29、頂層架構(gòu)的設(shè)計可以把體系結(jié)構(gòu)設(shè)計方法與概念模型得到的結(jié)果結(jié)合起來考慮,利與概念模型得到的結(jié)果結(jié)合起來考慮,利用一定的體系結(jié)構(gòu)模式(例如分層模式、用一定的體系結(jié)構(gòu)模式(例如分層模式、模型視圖控制器模型視圖控制器MVC模式等)對概念模式等)對概念模型中的相關(guān)元素進行組織,同時需要考模型中的相關(guān)元素進行組織,同時需要考慮目標(biāo)軟件系統(tǒng)與其它作為參與者的外部慮目標(biāo)軟件系統(tǒng)與其它作為參與者的外部系統(tǒng)之間的聯(lián)系和交互方式。系統(tǒng)之間的聯(lián)系和交互方式。UML包圖非常適合于表示軟件頂層架構(gòu),包圖非常適合于表示軟件頂層架構(gòu),可以從某種視角將具有比較密切的關(guān)聯(lián)的可以從某種視角將具有比較密切的關(guān)聯(lián)的一些類劃分為一個包,

30、分屬不同包的兩個一些類劃分為一個包,分屬不同包的兩個類之間的關(guān)聯(lián)則比較松散。類之間的關(guān)聯(lián)則比較松散。 ATM系統(tǒng)的頂層架構(gòu)圖系統(tǒng)的頂層架構(gòu)圖用戶界面設(shè)計的內(nèi)容用戶界面設(shè)計的內(nèi)容用戶界面是對于用戶的直接表現(xiàn),直接影用戶界面是對于用戶的直接表現(xiàn),直接影響到用戶對軟件易用性、友好性的感覺。響到用戶對軟件易用性、友好性的感覺。用戶界面包含兩方面內(nèi)容:用戶界面包含兩方面內(nèi)容:首先要首先要完整地包括用戶在使用軟件過程中所需的各種完整地包括用戶在使用軟件過程中所需的各種元素元素,例如窗口、菜單、按鈕、輸入文本框、選擇列,例如窗口、菜單、按鈕、輸入文本框、選擇列表、提示信息等,缺乏這些元素中的某些將會導(dǎo)致軟表

31、、提示信息等,缺乏這些元素中的某些將會導(dǎo)致軟件功能無法被用戶正常完成;件功能無法被用戶正常完成;其次要求其次要求具有良好的外觀和布局具有良好的外觀和布局,例如背景顏色、按,例如背景顏色、按鈕等元素的位置、選擇列表中條目的順序等,這些因鈕等元素的位置、選擇列表中條目的順序等,這些因素的不足可能不會影響軟件功能的正確使用,但會給素的不足可能不會影響軟件功能的正確使用,但會給用戶帶來不便、迷惑甚至反感。用戶帶來不便、迷惑甚至反感。本節(jié)關(guān)注第一方面的內(nèi)容本節(jié)關(guān)注第一方面的內(nèi)容用戶界面的層次和結(jié)構(gòu)用戶界面的層次和結(jié)構(gòu)用戶界面元素分為兩個層次:用戶界面元素分為兩個層次:屏幕屏幕:用構(gòu)造型用構(gòu)造型表示表示窗

32、口:屏幕上的組成部分(文本框、按鈕等)統(tǒng)窗口:屏幕上的組成部分(文本框、按鈕等)統(tǒng)一稱為窗口。用構(gòu)造型一稱為窗口。用構(gòu)造型表示表示用戶界面的結(jié)構(gòu)可以由用戶界面的結(jié)構(gòu)可以由UML類圖描述,屏幕類圖描述,屏幕和窗口用類進行表示,并給出它們之間的關(guān)和窗口用類進行表示,并給出它們之間的關(guān)系。系。屏幕之間的切換過程可以用屏幕之間的切換過程可以用UML狀態(tài)圖表示狀態(tài)圖表示。每個狀態(tài)表示當(dāng)時所處的屏幕,遷移表示。每個狀態(tài)表示當(dāng)時所處的屏幕,遷移表示用戶激勵。用戶激勵。當(dāng)屏幕中有許多窗口時,可以對窗口劃分層當(dāng)屏幕中有許多窗口時,可以對窗口劃分層次,一些簡單的窗口可以作為復(fù)雜窗口的屬次,一些簡單的窗口可以作為復(fù)

33、雜窗口的屬性和操作。性和操作。屏幕結(jié)構(gòu)類圖屏幕結(jié)構(gòu)類圖CustomerConsole用戶通過控制臺使用用戶通過控制臺使用ATM的過程中,可分為的過程中,可分為5個個相對獨立的過程相對獨立的過程(1)插入銀行卡到輸入正確密碼并進入選擇交易類)插入銀行卡到輸入正確密碼并進入選擇交易類型的屏幕型的屏幕(2)選擇)選擇“取款取款”交易,并到完成后退出或返回選交易,并到完成后退出或返回選擇交易類型的屏幕擇交易類型的屏幕(3)選擇)選擇“存款存款”交易,并到完成后退出或返回選交易,并到完成后退出或返回選擇交易類型的屏幕擇交易類型的屏幕(4)選擇)選擇“轉(zhuǎn)帳轉(zhuǎn)帳”交易,并到完成后退出或返回選交易,并到完成后

34、退出或返回選擇交易類型的屏幕擇交易類型的屏幕(5)選擇)選擇“查詢查詢”交易,并到完成后退出或返回選交易,并到完成后退出或返回選擇交易類型的屏幕擇交易類型的屏幕屏幕變化狀態(tài)圖屏幕變化狀態(tài)圖“插卡插卡”過程的屏幕轉(zhuǎn)換狀態(tài)圖:每個狀態(tài)表示一個屏幕,遷移表過程的屏幕轉(zhuǎn)換狀態(tài)圖:每個狀態(tài)表示一個屏幕,遷移表示當(dāng)前屏幕用戶的激勵。示當(dāng)前屏幕用戶的激勵。屏幕結(jié)構(gòu)類圖屏幕結(jié)構(gòu)類圖InputPin屏幕屏幕的結(jié)構(gòu)圖。每的結(jié)構(gòu)圖。每個屏幕的結(jié)構(gòu)個屏幕的結(jié)構(gòu)可以用類圖設(shè)可以用類圖設(shè)計,即屏幕上計,即屏幕上有什么(窗有什么(窗口),如:文口),如:文本框、按鈕等本框、按鈕等用戶控制包圖用戶控制包圖顧客控制臺包含豐富的

35、元素,可以進一步細化形成一個對應(yīng)的顧客控制臺包含豐富的元素,可以進一步細化形成一個對應(yīng)的包,專門描述界面元素其中有分為包,專門描述界面元素其中有分為5個子包,分別對應(yīng)個子包,分別對應(yīng)“插插卡卡”、“取款取款”、“存款存款”、“轉(zhuǎn)賬轉(zhuǎn)賬”、“查詢查詢”5個獨立的個獨立的過程。每個子包又對應(yīng)一些列的屏幕,并對應(yīng)到表示屏幕切換過程。每個子包又對應(yīng)一些列的屏幕,并對應(yīng)到表示屏幕切換的狀態(tài)圖的狀態(tài)圖插卡包圖插卡包圖小結(jié)小結(jié)一個獨立的過程包含若干屏幕變換一個獨立的過程包含若干屏幕變換狀態(tài)圖表示屏幕間的變換狀態(tài)圖表示屏幕間的變換狀態(tài)圖的一個狀態(tài)表示一個屏幕狀態(tài)圖的一個狀態(tài)表示一個屏幕一個屏幕的結(jié)構(gòu)用屏幕結(jié)構(gòu)

36、(類)圖表示一個屏幕的結(jié)構(gòu)用屏幕結(jié)構(gòu)(類)圖表示數(shù)據(jù)模型設(shè)計數(shù)據(jù)模型設(shè)計數(shù)據(jù)模型設(shè)計包括數(shù)據(jù)結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫數(shù)據(jù)模型設(shè)計包括數(shù)據(jù)結(jié)構(gòu)設(shè)計、數(shù)據(jù)庫設(shè)計、數(shù)據(jù)文件設(shè)計等,本節(jié)主要關(guān)注持設(shè)計、數(shù)據(jù)文件設(shè)計等,本節(jié)主要關(guān)注持久數(shù)據(jù)存儲設(shè)計。持久數(shù)據(jù)模型設(shè)計步驟久數(shù)據(jù)存儲設(shè)計。持久數(shù)據(jù)模型設(shè)計步驟為:為:(1)確定設(shè)計模型中需要持久保存的類的對象及其屬性,)確定設(shè)計模型中需要持久保存的類的對象及其屬性, 其中其中實體類實體類是主要關(guān)注對象。是主要關(guān)注對象。(2)確定持久存儲的數(shù)據(jù)之間的組織方式。)確定持久存儲的數(shù)據(jù)之間的組織方式。(3)確定數(shù)據(jù)模型中的操作行為,例如數(shù)據(jù)完整性驗證、)確定數(shù)據(jù)模型中的操作

37、行為,例如數(shù)據(jù)完整性驗證、 數(shù)據(jù)讀取、存儲與更新、數(shù)據(jù)求和、求數(shù)據(jù)平均值等。數(shù)據(jù)讀取、存儲與更新、數(shù)據(jù)求和、求數(shù)據(jù)平均值等。(4)進一步優(yōu)化持久數(shù)據(jù)操作的性能,如使用數(shù)據(jù)索引、)進一步優(yōu)化持久數(shù)據(jù)操作的性能,如使用數(shù)據(jù)索引、 存儲過程、觸發(fā)器等方式。存儲過程、觸發(fā)器等方式。數(shù)據(jù)模型設(shè)計的輸出制品是數(shù)據(jù)模型,包括以數(shù)據(jù)模型設(shè)計的輸出制品是數(shù)據(jù)模型,包括以UML類圖表示的數(shù)據(jù)庫表格以類圖表示的數(shù)據(jù)庫表格以及它們之間的關(guān)系。數(shù)據(jù)模型必須滿足設(shè)計模型對持久數(shù)據(jù)存儲的要求。及它們之間的關(guān)系。數(shù)據(jù)模型必須滿足設(shè)計模型對持久數(shù)據(jù)存儲的要求。關(guān)系數(shù)據(jù)庫建模關(guān)系數(shù)據(jù)庫建模類對應(yīng)于關(guān)系數(shù)據(jù)模型中的表格(類對應(yīng)于關(guān)

38、系數(shù)據(jù)模型中的表格(table),對象對應(yīng)于記錄(,對象對應(yīng)于記錄(record),屬性對應(yīng)),屬性對應(yīng)于表格中的字段(于表格中的字段(field)或者列()或者列(column),類中的方法實現(xiàn)可以用),類中的方法實現(xiàn)可以用SQL語句對數(shù)語句對數(shù)據(jù)庫表格進行操作。據(jù)庫表格進行操作。 表示表格,表示表格,表示關(guān)鍵字,表示關(guān)鍵字,foreign key表示外鍵表示外鍵數(shù)據(jù)模型數(shù)據(jù)模型4.6 設(shè)計精化設(shè)計精化設(shè)計精化的任務(wù):設(shè)計精化的任務(wù):(1)精化軟件架構(gòu))精化軟件架構(gòu)(2)調(diào)整軟件組成類)調(diào)整軟件組成類(3)精化交互模型)精化交互模型(4)精化類之間關(guān)系)精化類之間關(guān)系(1)精化軟件架構(gòu))精化

39、軟件架構(gòu)精化軟件架構(gòu)的主要目的是尋找一種理想精化軟件架構(gòu)的主要目的是尋找一種理想的包劃分方案,使得每個包中直接包含的的包劃分方案,使得每個包中直接包含的類的數(shù)量規(guī)模適中,包的邊界清晰、自然類的數(shù)量規(guī)模適中,包的邊界清晰、自然,并且包間的耦合度較低。,并且包間的耦合度較低。隨著分析和設(shè)計不斷深入,原有包圖中的隨著分析和設(shè)計不斷深入,原有包圖中的包可能包含了過多的類,此時需要對其進包可能包含了過多的類,此時需要對其進行分拆。行分拆。按照軟件工程強內(nèi)聚、松耦合的原則,這按照軟件工程強內(nèi)聚、松耦合的原則,這種分拆應(yīng)該具有某種自然劃分的性質(zhì),并種分拆應(yīng)該具有某種自然劃分的性質(zhì),并且盡可能降低劃分以后的子

40、包之間的耦合且盡可能降低劃分以后的子包之間的耦合度。度。 精化軟件架構(gòu)精化軟件架構(gòu)包間的耦合度主要取決于依賴關(guān)系,包間的依賴關(guān)系又取包間的耦合度主要取決于依賴關(guān)系,包間的依賴關(guān)系又取決于兩個包中類之間的關(guān)系,包劃分(拆分、移動、合并決于兩個包中類之間的關(guān)系,包劃分(拆分、移動、合并等)的有關(guān)原則:等)的有關(guān)原則:避免包間的循環(huán)依賴關(guān)系,即排除包避免包間的循環(huán)依賴關(guān)系,即排除包P1依賴于包依賴于包P2、P2又依賴于又依賴于P1的情形。的情形。在層次結(jié)構(gòu)中,位于較低層次的通用包不應(yīng)當(dāng)依賴于在層次結(jié)構(gòu)中,位于較低層次的通用包不應(yīng)當(dāng)依賴于較高層次中的專用包。較高層次中的專用包。在層次結(jié)構(gòu)中,較高層次的

41、包可以依賴于較低層次的在層次結(jié)構(gòu)中,較高層次的包可以依賴于較低層次的包,但應(yīng)盡量在相鄰的層次間發(fā)生。包,但應(yīng)盡量在相鄰的層次間發(fā)生。如果針對某些子系統(tǒng)專門劃分了接口包和實現(xiàn)包,那如果針對某些子系統(tǒng)專門劃分了接口包和實現(xiàn)包,那么,其它與該子系統(tǒng)相關(guān)的包只能依賴于接口包,不么,其它與該子系統(tǒng)相關(guān)的包只能依賴于接口包,不能依賴于實現(xiàn)包。能依賴于實現(xiàn)包。圖圖4-17、4-18 “用戶交互層包、子包精化后的模型用戶交互層包、子包精化后的模型”用戶交互層包精化后的模型用戶交互層包精化后的模型用戶交互層中子包精化后的模型用戶交互層中子包精化后的模型(2)調(diào)整軟件構(gòu)成類)調(diào)整軟件構(gòu)成類對設(shè)計模型中的類進行調(diào)整

42、和優(yōu)化,以滿對設(shè)計模型中的類進行調(diào)整和優(yōu)化,以滿足強內(nèi)聚、低耦合、簡單性、自然性等軟足強內(nèi)聚、低耦合、簡單性、自然性等軟件工程原則。調(diào)整和優(yōu)化主要包括:件工程原則。調(diào)整和優(yōu)化主要包括:(1)增加輔助類,例如實現(xiàn)通信、關(guān)鍵算法)增加輔助類,例如實現(xiàn)通信、關(guān)鍵算法的類的類(2)合并相互通信頻繁的類)合并相互通信頻繁的類 (3)分拆規(guī)模過大的類)分拆規(guī)模過大的類 精化過程中新增加的類(3)精化交互模型)精化交互模型精化交互圖時,消息名、對象交互的參數(shù)精化交互圖時,消息名、對象交互的參數(shù)、返回值等均需要注明。需要考慮以下內(nèi)、返回值等均需要注明。需要考慮以下內(nèi)容:容:(1)要考慮軟件架構(gòu)和組成類被調(diào)整之

43、后對)要考慮軟件架構(gòu)和組成類被調(diào)整之后對交互模型會產(chǎn)生哪些影響,新出現(xiàn)的對象交互模型會產(chǎn)生哪些影響,新出現(xiàn)的對象或拆分后的對象如何參與交互過程,在其或拆分后的對象如何參與交互過程,在其中起到什么樣的作用中起到什么樣的作用(2)對象在交互過程中的消息傳遞需要哪些)對象在交互過程中的消息傳遞需要哪些參數(shù)和返回值。參數(shù)和返回值。(3)交互過程是否需要細化,例如增加必要)交互過程是否需要細化,例如增加必要的消息,或?qū)植恳靡粋€更加具體的交的消息,或?qū)植恳靡粋€更加具體的交互圖?;D。圖圖4-20 精化后的精化后的Withdrawal順序圖順序圖精化后的精化后的Withdrawal順序圖順序圖(4)

44、精化類之間的關(guān)系)精化類之間的關(guān)系研究類之間的連接關(guān)系:研究類之間的連接關(guān)系:(1)根據(jù)這些連接的語義強度將它們精確地)根據(jù)這些連接的語義強度將它們精確地判定為判定為 UML的依賴、關(guān)聯(lián)、聚合或構(gòu)成關(guān)系之一的依賴、關(guān)聯(lián)、聚合或構(gòu)成關(guān)系之一;(2)確定連接的方向及參與連接的類對象之)確定連接的方向及參與連接的類對象之間的數(shù)間的數(shù) 量對應(yīng)關(guān)系;量對應(yīng)關(guān)系;(3)根據(jù)軟件復(fù)用的要求及軟件結(jié)構(gòu)簡潔化)根據(jù)軟件復(fù)用的要求及軟件結(jié)構(gòu)簡潔化、清晰、清晰 化的要求,優(yōu)化類之間的關(guān)系?;囊螅瑑?yōu)化類之間的關(guān)系。精化類之間的關(guān)系精化類之間的關(guān)系對象對象obj1和和obj2之間的消息傳遞機制:之間的消息傳遞機制:

45、(1)引用全局對象)引用全局對象(2)通過參數(shù)傳遞)通過參數(shù)傳遞(3)引用局部對象)引用局部對象(4)通過類的成員變量:)通過類的成員變量:暫時性連接,用依賴關(guān)系表示暫時性連接,用依賴關(guān)系表示穩(wěn)定性連接穩(wěn)定性連接構(gòu)成關(guān)系構(gòu)成關(guān)系聚合聚合/集關(guān)系集關(guān)系關(guān)聯(lián)關(guān)系(以上兩種均不成立關(guān)聯(lián)關(guān)系(以上兩種均不成立)精化類之間的關(guān)系精化類之間的關(guān)系其他需要考慮的問題:其他需要考慮的問題:(1)關(guān)聯(lián)類)關(guān)聯(lián)類(2)依賴、構(gòu)成、聚合關(guān)系的方向:盡量將)依賴、構(gòu)成、聚合關(guān)系的方向:盡量將關(guān)聯(lián)單關(guān)聯(lián)單 向化,單向關(guān)系更簡單,實現(xiàn)代價更小。向化,單向關(guān)系更簡單,實現(xiàn)代價更小。(3)利用繼承精化設(shè)計模型,引進新的父類)

46、利用繼承精化設(shè)計模型,引進新的父類捕獲公捕獲公 共性。共性。小結(jié)小結(jié)在設(shè)計精化的過程中,同時存在對業(yè)務(wù)邏在設(shè)計精化的過程中,同時存在對業(yè)務(wù)邏輯、界面、數(shù)據(jù)模型等不同側(cè)面的設(shè)計模輯、界面、數(shù)據(jù)模型等不同側(cè)面的設(shè)計模型進行整理和融合的過程,根據(jù)需要合并型進行整理和融合的過程,根據(jù)需要合并不同模型中相似的類,消除設(shè)計模型之間不同模型中相似的類,消除設(shè)計模型之間的冗余,同時必須保證設(shè)計模型之間的一的冗余,同時必須保證設(shè)計模型之間的一致性。致性。類設(shè)計類設(shè)計類設(shè)計的任務(wù)是對各種設(shè)計模型中出現(xiàn)的類設(shè)計的任務(wù)是對各種設(shè)計模型中出現(xiàn)的類進行細化設(shè)計,以使它們精細至能夠直類進行細化設(shè)計,以使它們精細至能夠直接提

47、交給軟件構(gòu)造階段進行代碼實現(xiàn),類接提交給軟件構(gòu)造階段進行代碼實現(xiàn),類設(shè)計也是一種對設(shè)計的精化,類設(shè)計主要設(shè)計也是一種對設(shè)計的精化,類設(shè)計主要包括:包括:(1)對類的屬性與操作進行精化。)對類的屬性與操作進行精化。(2)對類的對象實例在其生命周期中對外部)對類的對象實例在其生命周期中對外部消息的消息的 響應(yīng)和狀態(tài)變化過程進行建模。響應(yīng)和狀態(tài)變化過程進行建模。(3)對類中重要操作的實現(xiàn)過程或算法進行)對類中重要操作的實現(xiàn)過程或算法進行描述。描述。(1)關(guān)注單個類的內(nèi)部細節(jié)的設(shè)計;關(guān)注單個類的內(nèi)部細節(jié)的設(shè)計;(2)和和(3)屬于類的行為模型設(shè)計。屬于類的行為模型設(shè)計。(1)精化類的屬性與操作)精化類

48、的屬性與操作對于類的每項屬性,在設(shè)計模型中,可以定對于類的每項屬性,在設(shè)計模型中,可以定義屬性的名稱、類型、初始值、取值范圍及義屬性的名稱、類型、初始值、取值范圍及屬性說明(后三項內(nèi)容是可選的)。屬性說明(后三項內(nèi)容是可選的)。操作的基本內(nèi)容包括名稱、參數(shù)表(含參數(shù)操作的基本內(nèi)容包括名稱、參數(shù)表(含參數(shù)的名稱和類型)、返回類型、功能描述。的名稱和類型)、返回類型、功能描述。如果操作比較復(fù)雜,還需要用文字或如果操作比較復(fù)雜,還需要用文字或UML活活動圖說明操作的實現(xiàn)算法。動圖說明操作的實現(xiàn)算法。精化類的屬性與操作精化類的屬性與操作屬性和操作的作用范圍:屬性和操作的作用范圍:(1)public:對

49、系統(tǒng)中所有類可見:對系統(tǒng)中所有類可見(2)protected:對本類及其子類可見:對本類及其子類可見(3)private:僅對本類可見:僅對本類可見確定屬性和操作作用范圍的原則:盡量縮小作用范圍,每確定屬性和操作作用范圍的原則:盡量縮小作用范圍,每個類僅公開那些直接響應(yīng)消息所必需的操作。原則上屬性個類僅公開那些直接響應(yīng)消息所必需的操作。原則上屬性不宜公開,如果確有必要讓其他類讀取或者設(shè)置該屬性的不宜公開,如果確有必要讓其他類讀取或者設(shè)置該屬性的值,應(yīng)通過本類增加值,應(yīng)通過本類增加get/set函數(shù)實現(xiàn)。函數(shù)實現(xiàn)。精化類之間的關(guān)系精化類之間的關(guān)系在類中設(shè)置相應(yīng)屬性,實現(xiàn)類之間的關(guān)聯(lián)、聚合、構(gòu)成關(guān)

50、系在類中設(shè)置相應(yīng)屬性,實現(xiàn)類之間的關(guān)聯(lián)、聚合、構(gòu)成關(guān)系: :a a、類型為、類型為B B的指針或引用的指針或引用b b、集合類型,集合元素的類型為、集合類型,集合元素的類型為B B的指針或引用的指針或引用c c、類型為、類型為B B的指針或引用的指針或引用d d、集合類型,集合元素的類型為、集合類型,集合元素的類型為B B A AB Ba 1:1的關(guān)聯(lián)或聚合(非構(gòu)成)關(guān)系的關(guān)聯(lián)或聚合(非構(gòu)成)關(guān)系b 1:*的關(guān)聯(lián)或聚合(非構(gòu)成)關(guān)系的關(guān)聯(lián)或聚合(非構(gòu)成)關(guān)系c 1:1的構(gòu)成關(guān)系的構(gòu)成關(guān)系d 1:*的構(gòu)成關(guān)系的構(gòu)成關(guān)系精化類的屬性與操作精化類的屬性與操作類的操作主要來源于各種設(shè)計模型和方案類的操

51、作主要來源于各種設(shè)計模型和方案中對類的職責(zé)的規(guī)定,針對每個類的特征中對類的職責(zé)的規(guī)定,針對每個類的特征,考慮是否需要以下操作:,考慮是否需要以下操作:(1)對象創(chuàng)建)對象創(chuàng)建(2)對象刪除)對象刪除(3)對象比較)對象比較(4)對象復(fù)制)對象復(fù)制(2)類的行為模型設(shè)計)類的行為模型設(shè)計在兩個層次上建模在兩個層次上建模(1)針對整個類使用)針對整個類使用UML狀態(tài)圖描述其行狀態(tài)圖描述其行為。為。(2)針對類中某些重要的方法,用)針對類中某些重要的方法,用UML活活動圖描述其執(zhí)行過程或步驟。動圖描述其執(zhí)行過程或步驟。 對象具有一定的生存周期,在其活躍過程中可以響應(yīng)外部的消息激勵,對象具有一定的生存

52、周期,在其活躍過程中可以響應(yīng)外部的消息激勵,執(zhí)行相應(yīng)的操作。對象生存期具有不同的狀態(tài),位于不同的狀態(tài)可以響應(yīng)執(zhí)行相應(yīng)的操作。對象生存期具有不同的狀態(tài),位于不同的狀態(tài)可以響應(yīng)不同的消息,因此可以用狀態(tài)圖刻畫對象的動態(tài)行為。不同的消息,因此可以用狀態(tài)圖刻畫對象的動態(tài)行為。 只需針對具有明顯的狀態(tài)特征并具有比較復(fù)雜的只需針對具有明顯的狀態(tài)特征并具有比較復(fù)雜的“狀態(tài)狀態(tài)事件事件響應(yīng)響應(yīng)”的類設(shè)計狀態(tài)圖即可。狀態(tài)圖主要針對控制類,很少對實體類。的類設(shè)計狀態(tài)圖即可。狀態(tài)圖主要針對控制類,很少對實體類。 圖圖4-23、4-24 狀態(tài)圖中的節(jié)點是狀態(tài)狀態(tài)圖中的節(jié)點是狀態(tài)對于某些執(zhí)行比較重要的任務(wù)且控制流程較為

53、復(fù)雜的方對于某些執(zhí)行比較重要的任務(wù)且控制流程較為復(fù)雜的方法,可以使用活動圖描述其執(zhí)行過程法,可以使用活動圖描述其執(zhí)行過程 圖圖4-25 活動圖中的節(jié)點是動作活動圖中的節(jié)點是動作Withdrawal類中方法類中方法Check()執(zhí)行過程的活動圖執(zhí)行過程的活動圖小結(jié)小結(jié)類的設(shè)計最終應(yīng)該達到準確、詳細描述類類的設(shè)計最終應(yīng)該達到準確、詳細描述類的構(gòu)成和行為的目標(biāo)。由于面向?qū)ο筌浖臉?gòu)成和行為的目標(biāo)。由于面向?qū)ο筌浖淖罱K實現(xiàn)表現(xiàn)為一組類的實現(xiàn),并且最的最終實現(xiàn)表現(xiàn)為一組類的實現(xiàn),并且最終的測試和運行也是以類為基礎(chǔ),因此類終的測試和運行也是以類為基礎(chǔ),因此類的設(shè)計結(jié)果是軟件開發(fā)中后續(xù)活動的直接的設(shè)計結(jié)果

54、是軟件開發(fā)中后續(xù)活動的直接參考依據(jù)。參考依據(jù)。部署模型設(shè)計部署模型設(shè)計部署模型設(shè)計考慮如下內(nèi)容:部署模型設(shè)計考慮如下內(nèi)容:(1)最終開發(fā)完成的軟件包括哪些制品形式)最終開發(fā)完成的軟件包括哪些制品形式;(2)軟件運行環(huán)境存在哪些類型的物理節(jié)點)軟件運行環(huán)境存在哪些類型的物理節(jié)點;(3)不同節(jié)點之間的連接和通信形式是什么)不同節(jié)點之間的連接和通信形式是什么;(4)軟件制品應(yīng)該如何在物理節(jié)點上進行部)軟件制品應(yīng)該如何在物理節(jié)點上進行部署,即它們的部署映射關(guān)系。署,即它們的部署映射關(guān)系。部署圖對于復(fù)雜的分布式軟件系統(tǒng)非常有用,部署圖還部署圖對于復(fù)雜的分布式軟件系統(tǒng)非常有用,部署圖還可以描述整個系統(tǒng)結(jié)構(gòu)

55、的一些特殊要求,例如系統(tǒng)的備可以描述整個系統(tǒng)結(jié)構(gòu)的一些特殊要求,例如系統(tǒng)的備份和容錯結(jié)構(gòu)設(shè)計。份和容錯結(jié)構(gòu)設(shè)計。ATM系統(tǒng)部署模型系統(tǒng)部署模型第第5章章面向數(shù)據(jù)流的軟件設(shè)計方法面向數(shù)據(jù)流的軟件設(shè)計方法面向數(shù)據(jù)流的軟件設(shè)計方法即結(jié)構(gòu)化設(shè)計面向數(shù)據(jù)流的軟件設(shè)計方法即結(jié)構(gòu)化設(shè)計方法,其目標(biāo)是為結(jié)構(gòu)化軟件的設(shè)計提供方法,其目標(biāo)是為結(jié)構(gòu)化軟件的設(shè)計提供一個一個系統(tǒng)化的途徑系統(tǒng)化的途徑。面向數(shù)據(jù)流的設(shè)計方法根據(jù)分析階段對數(shù)面向數(shù)據(jù)流的設(shè)計方法根據(jù)分析階段對數(shù)據(jù)流的分析設(shè)計軟件結(jié)構(gòu),根據(jù)數(shù)據(jù)流圖據(jù)流的分析設(shè)計軟件結(jié)構(gòu),根據(jù)數(shù)據(jù)流圖的特性定義兩種的特性定義兩種“映射映射”并轉(zhuǎn)化為并轉(zhuǎn)化為程序結(jié)構(gòu)程序結(jié)構(gòu)。映射

56、映射DFD( (問題結(jié)構(gòu)問題結(jié)構(gòu)) )軟件系統(tǒng)的結(jié)構(gòu)軟件系統(tǒng)的結(jié)構(gòu)( (程序結(jié)構(gòu)程序結(jié)構(gòu)) )數(shù)據(jù)流圖的層次數(shù)據(jù)流圖的層次信息處理系統(tǒng)一般由信息處理系統(tǒng)一般由數(shù)據(jù)流數(shù)據(jù)流和一系列的和一系列的轉(zhuǎn)轉(zhuǎn)換換構(gòu)成,這些轉(zhuǎn)換將輸入數(shù)據(jù)流變化為輸構(gòu)成,這些轉(zhuǎn)換將輸入數(shù)據(jù)流變化為輸出數(shù)據(jù)流。數(shù)據(jù)流圖就是用來刻畫數(shù)據(jù)流出數(shù)據(jù)流。數(shù)據(jù)流圖就是用來刻畫數(shù)據(jù)流和轉(zhuǎn)換的信息系統(tǒng)建模技術(shù)和轉(zhuǎn)換的信息系統(tǒng)建模技術(shù) 。它提供層次結(jié)構(gòu)讓分析人員能夠方便地表它提供層次結(jié)構(gòu)讓分析人員能夠方便地表示任意抽象級別上的信息系統(tǒng)或其子部分示任意抽象級別上的信息系統(tǒng)或其子部分,并支持,并支持問題分解、逐步求精問題分解、逐步求精的分析方法的分

57、析方法。 初始時,整個信息處理系統(tǒng)可以用頂級(初始時,整個信息處理系統(tǒng)可以用頂級(第級)數(shù)據(jù)流圖表示。第級)數(shù)據(jù)流圖表示。 在數(shù)據(jù)流方法中,對數(shù)據(jù)(數(shù)據(jù)流)的精在數(shù)據(jù)流方法中,對數(shù)據(jù)(數(shù)據(jù)流)的精化是伴隨著對化是伴隨著對轉(zhuǎn)換轉(zhuǎn)換的精化而同步進行的。的精化而同步進行的。 (1)數(shù)據(jù)流圖)數(shù)據(jù)流圖頂級數(shù)據(jù)流圖頂級數(shù)據(jù)流圖數(shù)據(jù)流圖的精化數(shù)據(jù)流圖的精化在進行逐層精化的過程中,必須維持層間在進行逐層精化的過程中,必須維持層間數(shù)據(jù)流圖的平衡,即,數(shù)據(jù)流圖的平衡,即,被精化的轉(zhuǎn)換的輸被精化的轉(zhuǎn)換的輸入、輸出流必須與精化它的數(shù)據(jù)流子圖的入、輸出流必須與精化它的數(shù)據(jù)流子圖的初始輸入流和最終輸出流嚴格一致初始輸入

58、流和最終輸出流嚴格一致。要注意逐層精化必須適可而止,因為設(shè)計要注意逐層精化必須適可而止,因為設(shè)計之前的分析活動只求對問題的全面、清晰之前的分析活動只求對問題的全面、清晰的理解,并不關(guān)心軟件的設(shè)計細節(jié)。的理解,并不關(guān)心軟件的設(shè)計細節(jié)。 (2)數(shù)據(jù)字典)數(shù)據(jù)字典數(shù)據(jù)流圖機制并不足以完整地描述軟件需數(shù)據(jù)流圖機制并不足以完整地描述軟件需求,因為沒有描述數(shù)據(jù)流的內(nèi)容。求,因為沒有描述數(shù)據(jù)流的內(nèi)容。數(shù)據(jù)流圖必須與描述并組織數(shù)據(jù)條目的數(shù)數(shù)據(jù)流圖必須與描述并組織數(shù)據(jù)條目的數(shù)據(jù)字典配套使用。據(jù)字典配套使用。 數(shù)據(jù)條目的定義必須遵循以下原則:精確數(shù)據(jù)條目的定義必須遵循以下原則:精確、簡潔,并且能為用戶方和軟件開發(fā)

59、方共、簡潔,并且能為用戶方和軟件開發(fā)方共同理解。同理解。 數(shù)據(jù)字典的內(nèi)容數(shù)據(jù)字典的內(nèi)容n在數(shù)據(jù)流圖中標(biāo)識數(shù)據(jù)流、數(shù)據(jù)源或外部在數(shù)據(jù)流圖中標(biāo)識數(shù)據(jù)流、數(shù)據(jù)源或外部實體的名稱與別名;實體的名稱與別名;n數(shù)據(jù)類型;數(shù)據(jù)類型;n所有以它作為輸入流或輸出流的轉(zhuǎn)換的列所有以它作為輸入流或輸出流的轉(zhuǎn)換的列表;表;n如何使用該數(shù)據(jù)條目的簡要說明;如何使用該數(shù)據(jù)條目的簡要說明;n數(shù)據(jù)條目的解釋性說明;數(shù)據(jù)條目的解釋性說明;n其它補充說明,例如取值范圍與缺省值,其它補充說明,例如取值范圍與缺省值,有關(guān)的設(shè)計約束等。有關(guān)的設(shè)計約束等。語法語法A+B:語法成分:語法成分A和和B的順序連接;的順序連接;A|B:A或或B

60、;An:n個個A的順序連接。的順序連接。數(shù)據(jù)條目中的語法成分都必須有對應(yīng)描述數(shù)據(jù)條目中的語法成分都必須有對應(yīng)描述。數(shù)據(jù)字典示例電話號碼數(shù)據(jù)字典示例電話號碼電話號碼電話號碼 分機號分機號外線號碼外線號碼分機號分機號 350135023599外線號碼外線號碼 2(市話號碼市話號碼長話號碼長話號碼)長話號碼長話號碼 (區(qū)號區(qū)號市話號碼市話號碼)區(qū)號區(qū)號 任何長度為任何長度為2或或3的數(shù)字串的數(shù)字串市話號碼市話號碼 局號局號分局號分局號局號局號 455448888552分局號分局號 = 任何長度為任何長度為4的數(shù)字串的數(shù)字串小結(jié)小結(jié)利用數(shù)據(jù)字典可以對數(shù)據(jù)流圖中的數(shù)據(jù)流利用數(shù)據(jù)字典可以對數(shù)據(jù)流圖中的數(shù)據(jù)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論