安徽工程科技學(xué)院計算機系_第1頁
安徽工程科技學(xué)院計算機系_第2頁
安徽工程科技學(xué)院計算機系_第3頁
安徽工程科技學(xué)院計算機系_第4頁
安徽工程科技學(xué)院計算機系_第5頁
已閱讀5頁,還剩83頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

軟件工程

SoftwareEngineering

安徽工程科技學(xué)院計算機系2007.052023/1/111安徽工程科技學(xué)院計算機系第十章面向?qū)ο蟮脑O(shè)計方法設(shè)計用例實現(xiàn)方案設(shè)計技術(shù)支撐方案設(shè)計用戶界面精化設(shè)計模型2023/1/112安徽工程科技學(xué)院計算機系面向?qū)ο蟮脑O(shè)計方法本章采用基于UML的面向?qū)ο笤O(shè)計方法將分析模型轉(zhuǎn)換為設(shè)計模型。面向?qū)ο蟮姆治瞿P椭饕身攲蛹軜?gòu)圖、用例與用例圖、領(lǐng)域概念模型構(gòu)成。設(shè)計模型則包含以包圖表示的軟件體系結(jié)構(gòu)圖,以交互圖表示的用例實現(xiàn)圖,完整、精確的類圖,以及針對復(fù)雜對象的狀態(tài)圖、用以描述流程化處理過程的活動圖等。第十章面向?qū)ο蟮脑O(shè)計方法2023/1/113安徽工程科技學(xué)院計算機系面向?qū)ο蟮脑O(shè)計方法處理轉(zhuǎn)換過程的任務(wù)(1)針對分析模型用例,設(shè)計用UML交互圖表示的實現(xiàn)方案。(2)設(shè)計技術(shù)支撐設(shè)施。在大型軟件項目中,往往需要一些技術(shù)支撐設(shè)施來幫助業(yè)務(wù)需求層面的類或子系統(tǒng)完成其功能。這些設(shè)施本身并非業(yè)務(wù)需求的一部分,但卻為多種業(yè)務(wù)需求的實現(xiàn)提供公共服務(wù),例如,數(shù)據(jù)的持久存儲服務(wù)、安全控制服務(wù)、遠程訪問服務(wù)等。在面向?qū)ο笤O(shè)計中,需要研究這些技術(shù)支撐設(shè)施的實現(xiàn)方式以及它們與業(yè)務(wù)需求層面的類及子系統(tǒng)之間的關(guān)系。第十章面向?qū)ο蟮脑O(shè)計方法2023/1/114安徽工程科技學(xué)院計算機系面向?qū)ο蟮脑O(shè)計方法(3)設(shè)計用戶界面。(4)針對分析模型中的領(lǐng)域概念模型,以及第(2)、第(3)兩個步驟引進的新類,完整、精確地確定每個類的屬性、操作,完整地標(biāo)示類之間的關(guān)系。為了實現(xiàn)軟件重用,為了實現(xiàn)強內(nèi)聚、松耦合等軟件設(shè)計原則,還可以對前面形成的類圖進行各種微調(diào),最終形成足以構(gòu)成面向?qū)ο蟪绦蛟O(shè)計的基礎(chǔ)和依據(jù)的詳盡類圖。

第十章面向?qū)ο蟮脑O(shè)計方法2023/1/115安徽工程科技學(xué)院計算機系面向?qū)ο蟮能浖O(shè)計過程第十章面向?qū)ο蟮脑O(shè)計方法2023/1/116安徽工程科技學(xué)院計算機系

10.1設(shè)計用例實現(xiàn)方案本節(jié)介紹UML交互圖的語言機制和用例實現(xiàn)方案的設(shè)計方法。UML的交互圖包括順序圖和協(xié)作圖,適于用例實現(xiàn)方案的表示。用例實現(xiàn)方案的設(shè)計方法有三個步驟:(1)提取邊界類、實體類和控制類;(2)構(gòu)造交互圖;(3)根據(jù)交互圖精化類圖。第十章面向?qū)ο蟮脑O(shè)計方法2023/1/117安徽工程科技學(xué)院計算機系10.1.1順序圖

10.1設(shè)計用例實現(xiàn)方案2023/1/118安徽工程科技學(xué)院計算機系UML四種類型的消息(1)簡單消息(SimpleMessage)

以一種簡單、抽象的函數(shù)表示對象之間的信息傳遞,不考慮通信過程的內(nèi)部細節(jié)。簡單消息在UML順序圖中用普通的有向箭頭表示。(2)同步消息(SynchronousMessage)

消息源發(fā)出消息后必須等待消息處理過程完畢并返回處理結(jié)果后,消息源才可繼續(xù)執(zhí)行后續(xù)操作。前面所述的自調(diào)用消息應(yīng)該是同步的。同步消息的表示圖元與簡單消息相同,這表明UML在缺省情形下認為簡單消息即為同步消息。10.1設(shè)計用例實現(xiàn)方案2023/1/119安徽工程科技學(xué)院計算機系UML四種類型的消息(3)異步消息(AsynchronousMessage)表示,消息源發(fā)出消息后不必等待消息處理過程的返回,即可繼續(xù)執(zhí)行自己的后續(xù)操作。異步消息主要用于描述實時系統(tǒng)中的并發(fā)行為。異步消息在UML順序圖中用一種特別的單向箭頭表示,見圖10.2中的“msg1”。(4)返回消息(Returnmessage)表示前面發(fā)送的消息的處理過程完結(jié)之后的返回結(jié)果。返回消息應(yīng)該是同步的。在許多情況下,可以隱藏返回消息,但也可顯式標(biāo)出返回消息以示強調(diào)。返回消息用虛線有向箭頭表示,見圖10.2中的“msg6”。一個對象可以通過發(fā)送標(biāo)準(zhǔn)消息“new”來創(chuàng)建另一個對象。當(dāng)一個對象被刪除或自我刪除時,該對象的生命線上的相應(yīng)時間點應(yīng)該用叉號(對象生命線終結(jié)符)標(biāo)識。10.1設(shè)計用例實現(xiàn)方案2023/1/1110安徽工程科技學(xué)院計算機系10.1.2協(xié)作圖協(xié)作圖用于描述相互合作的對象間的交互關(guān)系和鏈接關(guān)系。雖然順序圖和協(xié)作圖都用來描述對象間的交互關(guān)系,但它們的側(cè)重點不一樣。順序圖強調(diào)消息交互的時間序,協(xié)作圖則強調(diào)交互對象間的靜態(tài)鏈接關(guān)系。從外觀看,協(xié)作圖并不采用單獨的維度來表示時間推移,因此,協(xié)作圖中的對象可以在二維平面中自由占位。對象之間的鏈接用于表示消息傳遞通道,消息標(biāo)示于鏈接之上,消息的箭頭指明消息的傳遞方向。在協(xié)作圖中,消息的描述內(nèi)容包含名稱、參數(shù)、返回值以及序列號,返回值和序列號是可選的。10.1設(shè)計用例實現(xiàn)方案2023/1/1111安徽工程科技學(xué)院計算機系協(xié)作圖

雖然協(xié)作圖不強調(diào)消息傳遞的時間序,但借助于序列號可以表達時間序,序列號較大的消息發(fā)生較晚。消息序列號可以采用線性編號,但采用適當(dāng)?shù)亩嗉壘幪枙瓜⒅g的結(jié)構(gòu)關(guān)系更清晰。如果一個對象在消息的交互過程中被創(chuàng)建,則可在對象名稱之后標(biāo)以{new}。類似地,如果一個對象在交互期間被刪除,則可在對象名稱之后標(biāo)以{destroy}。10.1設(shè)計用例實現(xiàn)方案2023/1/1112安徽工程科技學(xué)院計算機系

典型的協(xié)作圖例“1.1msg2”表明msg2是“對象1”為了處理“1.msg1”而發(fā)送的第一條消息“1.2msg4”是“對象1”為了處理“1.msg1”而發(fā)送的第二條消息“1.1.1msg3”表明msg3是“對象2”為了處理“1.1msg2”而發(fā)送的第一條消息,依此類推。10.1設(shè)計用例實現(xiàn)方案2023/1/1113安徽工程科技學(xué)院計算機系協(xié)作圖的兩種等價表示

10.1設(shè)計用例實現(xiàn)方案2023/1/1114安徽工程科技學(xué)院計算機系10.1.3提取邊界類、實體類和控制類邊界類描述目標(biāo)軟件系統(tǒng)與外部環(huán)境的交互,主要任務(wù):(1)界面控制:包括輸入數(shù)據(jù)的格式及內(nèi)容轉(zhuǎn)換,輸出結(jié)果的呈現(xiàn),軟件運行過程中界面的變化與切換等。(2)外部接口:實現(xiàn)目標(biāo)軟件系統(tǒng)與外部系統(tǒng)或外部設(shè)備之間的信息交流和互操作。主要關(guān)注跨越目標(biāo)軟件系統(tǒng)邊界的通信協(xié)議。(3)環(huán)境隔離:將目標(biāo)軟件系統(tǒng)與操作系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)、應(yīng)用服務(wù)器中間件等環(huán)境軟件進行交互的功能與特性封裝于邊界類之中,使目標(biāo)軟件系統(tǒng)的其余部分盡可能地獨立于環(huán)境軟件。在UML類圖中,邊界類往往附加UML構(gòu)造型《boundary》作為特別標(biāo)識。10.1設(shè)計用例實現(xiàn)方案2023/1/1115安徽工程科技學(xué)院計算機系提取邊界類、實體類和控制類例如,“家庭保安系統(tǒng)”中的邊界類有“輸入鍵盤接口類”、“傳感器接口類”、“警報器接口類”、“報警電話接口類”和“顯示面板接口類”。實體類表示目標(biāo)軟件系統(tǒng)中具有持久意義的信息項及其操作。實體類的操作具有“內(nèi)向收斂”特征,它們僅向目標(biāo)軟件系統(tǒng)的其余部分提供讀、寫信息項內(nèi)容的必要的操作接口,并不涉及業(yè)務(wù)邏輯處理。實體類的UML構(gòu)造型為《entity》。例如,“家庭保安系統(tǒng)”中的“異常事件”為實體類。10.1設(shè)計用例實現(xiàn)方案2023/1/1116安徽工程科技學(xué)院計算機系提取邊界類、實體類和控制類控制類作為完成用例任務(wù)的責(zé)任承擔(dān)者,協(xié)調(diào)、控制其他類共同完成用例規(guī)定的功能或行為。對于比較復(fù)雜的用例,控制類通常并不處理具體的任務(wù)細節(jié),但是它應(yīng)知道如何分解任務(wù),如何將子任務(wù)分派給適當(dāng)?shù)妮o助類,如何在輔助類之間進行消息傳遞和協(xié)調(diào)??刂祁惖腢ML構(gòu)造型為《control》。例如,“家庭保安系統(tǒng)”中,“用戶命令處理器”和“監(jiān)測器”均為控制類。

10.1設(shè)計用例實現(xiàn)方案2023/1/1117安徽工程科技學(xué)院計算機系提取邊界類、實體類和控制類在討論了邊界類、實體類和控制類的基本概念之后,下面介紹如何從分析模型中的用例描述和領(lǐng)域概念模型出發(fā)獲取這些類。通常情況下,執(zhí)行者與用例之間的一種通信連接對應(yīng)一個邊界類。但是,如果兩個以上的用例與同一執(zhí)行者交互,并且這些交互具有共同的行為、完成相同或類似的任務(wù),就可以考慮用同一邊界類實現(xiàn)用例與執(zhí)行者之間的交互。這就意味著邊界類的作用范圍可以超越單個用例。10.1設(shè)計用例實現(xiàn)方案2023/1/1118安徽工程科技學(xué)院計算機系提取邊界類、實體類和控制類實體類源于領(lǐng)域概念模型。有時也需要認真研讀用例描述,從中發(fā)掘具有持久意義的信息項。如果執(zhí)行者的屬性需要持久保存,也可以建立相應(yīng)于執(zhí)行者的實體類。假設(shè)一個實體類A僅僅被系統(tǒng)中的另一個類B引用,并且系統(tǒng)勿需關(guān)心A的行為特征,那么,為了簡化設(shè)計模型,應(yīng)將A中信息項直接作為B的屬性。如果A被系統(tǒng)中的多個類引用,或者A具有不容忽略的行為特征,那么應(yīng)將A作為獨立的實體類。10.1設(shè)計用例實現(xiàn)方案2023/1/1119安徽工程科技學(xué)院計算機系提取邊界類、實體類和控制類一個用例通常對應(yīng)一個控制類。如果不同用例的任務(wù)有較多類似之處,也可以考慮在多個用例的實現(xiàn)方案中共享同一控制類,此種情況應(yīng)審慎對待,不同用例所需要的控制、協(xié)調(diào)行為往往會有差異。對于那些事件流非常簡單的用例,可以不設(shè)獨立的控制類,直接在邊界類中設(shè)置控制、協(xié)調(diào)功能,邊界類在實體類的幫助下完成用例要求的功能及行為。10.1設(shè)計用例實現(xiàn)方案2023/1/1120安徽工程科技學(xué)院計算機系10.1.4構(gòu)造交互圖在標(biāo)識邊界類、實體類和控制類之后,接下來的任務(wù)是,將分析模型中的用例描述轉(zhuǎn)化成UML交互圖,以交互圖作為用例的精確實現(xiàn)方案。用例描述中已包含事件流說明。事件流中的事件應(yīng)直接對應(yīng)于交互圖中的消息,而事件間的先后關(guān)系體現(xiàn)為交互圖中的時序,對消息的響應(yīng)則構(gòu)成消息接收者的職責(zé)。這種職責(zé)在后續(xù)的設(shè)計活動中將被確立為類的方法。10.1設(shè)計用例實現(xiàn)方案2023/1/1121安徽工程科技學(xué)院計算機系構(gòu)造交互圖對于比較復(fù)雜的用例,僅僅依靠控制類、邊界類和實體類會使單個控制類過于龐大、復(fù)雜,它既承擔(dān)控制、協(xié)調(diào)的任務(wù),又承擔(dān)復(fù)雜的計算任務(wù)。在設(shè)計復(fù)雜用例的實施方案時,應(yīng)考慮為控制類設(shè)置一些獨立的輔助類,讓控制類將一些任務(wù)委托給輔助類完成。如,在圖6.16所表示的“家庭保安系統(tǒng)”類圖中,“系統(tǒng)配置管理器”和“日志管理器”就是這種意義上的輔助類。10.1設(shè)計用例實現(xiàn)方案2023/1/1122安徽工程科技學(xué)院計算機系構(gòu)造交互圖UML順序圖的橫向排列次序用例的主動執(zhí)行者用戶界面的邊界類控制類實體類和輔助類外部接口和環(huán)境隔離層的邊界類目標(biāo)軟件系統(tǒng)的邊界之外的被動執(zhí)行者按此布局,在順序圖中不應(yīng)該出現(xiàn)穿越控制類生命線的消息,即,主動執(zhí)行者向界面類發(fā)出命令,界面類將命令進行適當(dāng)轉(zhuǎn)換后傳送至控制類,控制類通過消息請求輔助類、實體類的幫助,協(xié)調(diào)、控制它們共同完成來自主動執(zhí)行者的命令。10.1設(shè)計用例實現(xiàn)方案2023/1/1123安徽工程科技學(xué)院計算機系構(gòu)造交互圖控制類或輔助類可以向右側(cè)的邊界類發(fā)送消息,將信息或外部處理請求由邊界類傳向外部系統(tǒng)(被動執(zhí)行者)。在用例描述中,許多用例除主事件流外,往往還包含備選事件流,以說明在某些特殊或者異常情況下的事件和響應(yīng)動作序列。為易于理解,在設(shè)計模型中應(yīng)該用分離的UML交互圖分別表示事件流和每個備選事件流。按照上述布局規(guī)則繪制的典型的順序圖如圖10.4所示10.1設(shè)計用例實現(xiàn)方案2023/1/1124安徽工程科技學(xué)院計算機系典型布局規(guī)則下的順序圖

10.1設(shè)計用例實現(xiàn)方案2023/1/1125安徽工程科技學(xué)院計算機系構(gòu)造協(xié)作圖

由于順序圖能夠非常直觀地表達事件(消息)的時序,所以它比協(xié)作圖更多地用于描述用例的實現(xiàn)方案。但是,當(dāng)需要強調(diào)類之間的聯(lián)系或連接時,就需要繪制協(xié)作圖。協(xié)作圖的布局規(guī)則控制類位于中心主動執(zhí)行者和作為用戶界面的邊界類位于左上方作為外部接口和環(huán)境隔離層的邊界類位于右上方輔助類和實體類分別位于控制類的左下、右下方。按照此布局規(guī)則繪制的典型的協(xié)作圖如圖10.5所示。10.1設(shè)計用例實現(xiàn)方案2023/1/1126安徽工程科技學(xué)院計算機系典型布局規(guī)則下的協(xié)作圖

10.1設(shè)計用例實現(xiàn)方案2023/1/1127安徽工程科技學(xué)院計算機系例家庭保安系統(tǒng)在“家庭保安系統(tǒng)”中,用例“傳感器監(jiān)測”和“命令處理”的實現(xiàn)方案分別見圖10.6和圖10.7。為簡潔,圖10.6和圖10.7未表示這兩個用例中的日志功能,圖10.7也未考慮配置命令的處理。10.1設(shè)計用例實現(xiàn)方案2023/1/1128安徽工程科技學(xué)院計算機系圖10.6“傳感器監(jiān)測”用例的順序圖10.1設(shè)計用例實現(xiàn)方案2023/1/1129安徽工程科技學(xué)院計算機系圖10.7“命令處理”用例的順序圖10.1設(shè)計用例實現(xiàn)方案2023/1/1130安徽工程科技學(xué)院計算機系10.1.5精化類圖在UML交互圖中,對每個類的對象都規(guī)定了它必須響應(yīng)的消息以及類的對象之間的消息傳遞通道。前者對應(yīng)于類的操作,后者則對應(yīng)于類之間的連接關(guān)系。因此,可以利用交互圖精化分析模型中的類圖,將交互圖中出現(xiàn)的新類添加到原有類圖中,并且對相關(guān)的類進行精化,定義其屬性和操作。原則上,每個類都應(yīng)該有一個操作來響應(yīng)交互圖中指向其對象的那條消息。但是,這并不意味著消息與操作一定會一一對應(yīng),因為類的一個操作可能具有響應(yīng)多條消息的能力。同理,兩個類之間的一條連接關(guān)系也可以為多條消息提供傳遞通道。為了簡化設(shè)計模型,也為了提高重用程度,設(shè)計人員應(yīng)該盡量使用已有的操作來響應(yīng)新消息,并盡量使用已存在的連接路徑作為消息傳遞的通道。如果兩個類之間存在明確、自然的聚合或組合關(guān)系,則可以在類圖中直接用相應(yīng)的UML圖元符號表示類間的聚合和組成關(guān)系,這兩個關(guān)系均可提供消息傳遞通道。10.1設(shè)計用例實現(xiàn)方案2023/1/1131安徽工程科技學(xué)院計算機系精化類圖接下來討論如何根據(jù)交互圖確立類的屬性。類的操作完成消息響應(yīng)責(zé)任的能力,來源于兩方面的知識,一是類本身具有的信息,即類的屬性,二是類能夠找到的其他類,通過其他類協(xié)助其完成消息響應(yīng)。在綜合考慮這兩個因素之后,類的操作應(yīng)該明確哪些子任務(wù)可通過消息傳遞路徑委托給其他類完成,哪些子任務(wù)必須由自身完成。根據(jù)后一種子任務(wù)的需要,結(jié)合領(lǐng)域和業(yè)務(wù)知識即可推導(dǎo)出類應(yīng)具有的屬性。在圖6.16的基礎(chǔ)上,得出“家庭保安系統(tǒng)”的類圖如圖10.8所示。為簡潔見,圖10.8僅標(biāo)出控制類“監(jiān)測器”和“用戶命令處理器”的方法,以及實體類“異常事件”的屬性,有興趣的讀者可自行添加其余的屬性和方法。10.1設(shè)計用例實現(xiàn)方案2023/1/1132安徽工程科技學(xué)院計算機系圖10.8“家庭保安系統(tǒng)”的精化類圖10.1設(shè)計用例實現(xiàn)方案2023/1/1133安徽工程科技學(xué)院計算機系10.2設(shè)計技術(shù)支撐方案在許多軟件項目中,應(yīng)用功能往往都需要一組技術(shù)支撐機制為其提供服務(wù)。例如,對分布式應(yīng)用軟件(包括電子商務(wù)應(yīng)用、企業(yè)ERP系統(tǒng)等)而言,需要數(shù)據(jù)持久存儲服務(wù)、安全控制服務(wù)、分布式事務(wù)管理服務(wù)、并發(fā)與同步控制服務(wù)、可靠消息服務(wù)等。這些技術(shù)支撐設(shè)施并非業(yè)務(wù)需求的直接組成部分,但形態(tài)各異的業(yè)務(wù)處理功能全都有賴于它們提供的公共技術(shù)服務(wù)。讓每個業(yè)務(wù)功能的設(shè)計者直接面對裸機、基本操作系統(tǒng)或基本網(wǎng)絡(luò)環(huán)境來完成軟件實現(xiàn)方案,那是不可思議的。第十章面向?qū)ο蟮脑O(shè)計方法2023/1/1134安徽工程科技學(xué)院計算機系設(shè)計技術(shù)支撐方案技術(shù)支撐方案應(yīng)該為多個用例的軟件實現(xiàn)提供技術(shù)服務(wù),所以,它應(yīng)該成為整個目標(biāo)軟件系統(tǒng)中全局性的公共技術(shù)平臺。當(dāng)用戶需求發(fā)生變化時,技術(shù)支撐方案應(yīng)具有良好的穩(wěn)定性。這就要求軟件設(shè)計者選用開放性和可擴充性較好的技術(shù)支撐方案。如果目標(biāo)軟件系統(tǒng)的頂層架構(gòu)采用分層方式,那么,技術(shù)支撐方案應(yīng)該位于層次結(jié)構(gòu)中的較低層次。10.2設(shè)計技術(shù)支撐方案2023/1/1135安徽工程科技學(xué)院計算機系設(shè)計技術(shù)支撐方案技術(shù)支撐方案的設(shè)計取決于目標(biāo)軟件系統(tǒng)對公共技術(shù)服務(wù)的需求設(shè)計人員對軟件技術(shù)手段的把握和選取如,對分布式應(yīng)用系統(tǒng),設(shè)計人員必須了解分布構(gòu)件技術(shù)、基于應(yīng)用服務(wù)器的軟件開發(fā)技術(shù)等。本節(jié)的后續(xù)部分以數(shù)據(jù)持久存儲服務(wù)、并發(fā)與同步控制服務(wù)為例,探討技術(shù)支撐方案的設(shè)計方法,最后介紹技術(shù)支撐方案與用例實施方案的融合。10.2設(shè)計技術(shù)支撐方案2023/1/1136安徽工程科技學(xué)院計算機系10.2.1數(shù)據(jù)持久存儲服務(wù)

設(shè)計數(shù)據(jù)持久存儲服務(wù)的目的是,將目標(biāo)軟件系統(tǒng)中依賴于系統(tǒng)運行環(huán)境的數(shù)據(jù)存取部分與其他部分分離。數(shù)據(jù)存取通過一般的數(shù)據(jù)管理系統(tǒng)(如文件系統(tǒng)、關(guān)系數(shù)據(jù)庫或面向?qū)ο髷?shù)據(jù)庫)實現(xiàn),實現(xiàn)細節(jié)因數(shù)據(jù)存儲介質(zhì)的種類而異,但這些細節(jié)被集中在數(shù)據(jù)持久存儲服務(wù)中,系統(tǒng)的其他部分與存儲介質(zhì)的種類和數(shù)據(jù)存儲的實現(xiàn)方法無關(guān)。這樣既有利于軟件的擴充、移植和維護,又簡化了軟件設(shè)計、編碼和測試的過程。10.2設(shè)計技術(shù)支撐方案2023/1/1137安徽工程科技學(xué)院計算機系數(shù)據(jù)持久存儲服務(wù)

數(shù)據(jù)持久存儲服務(wù)的設(shè)計包括,定義數(shù)據(jù)格式和定義數(shù)據(jù)存取操作兩部分。(1)定義數(shù)據(jù)格式。根據(jù)目標(biāo)軟件系統(tǒng)對數(shù)據(jù)存儲的需求,考慮持久存儲介質(zhì)的特性,設(shè)計數(shù)據(jù)的存儲格式。如,針對文件系統(tǒng),需要定義用于保存數(shù)據(jù)的文件類別、每類文件的記錄格式;針對關(guān)系數(shù)據(jù)庫,需要定義表格的字段名稱、類型、關(guān)鍵字、約束條件等;針對面向?qū)ο髷?shù)據(jù)庫(OODB),數(shù)據(jù)格式的定義相對簡單,因為OODB直接支持對象的存儲和讀取。10.2設(shè)計技術(shù)支撐方案2023/1/1138安徽工程科技學(xué)院計算機系數(shù)據(jù)持久存儲服務(wù)(2)定義數(shù)據(jù)存取操作。數(shù)據(jù)持久存儲服務(wù)至少包含數(shù)據(jù)的存儲和讀取兩種操作。存儲操作負責(zé)將實體對象中的屬性數(shù)據(jù)寫至持久存儲介質(zhì)讀取操作則負責(zé)從持久存儲介質(zhì)中的序列化數(shù)據(jù)恢復(fù)對象的屬性值??梢远x適用于所有實體類的存取操作,也可以分別針對不同的實體類定義不同的存取操作。數(shù)據(jù)存取操作一般以服務(wù)類的形式為系統(tǒng)的其他部分提供數(shù)據(jù)持久存儲服務(wù)。

在引入持久存儲服務(wù)之后,目標(biāo)軟件系統(tǒng)的其他部分對持久存儲介質(zhì)的訪問必須通過該服務(wù)進行,不能直接訪問。10.2設(shè)計技術(shù)支撐方案2023/1/1139安徽工程科技學(xué)院計算機系10.2.2并發(fā)與同步控制服務(wù)

設(shè)計并發(fā)與同步控制服務(wù)的目的是,將目標(biāo)軟件系統(tǒng)中依賴于系統(tǒng)運行環(huán)境的并發(fā)與同步控制部分和其他部分分離,其他部分中有關(guān)并發(fā)與同步控制功能的實現(xiàn)均通過該服務(wù)來完成。并發(fā)與同步控制服務(wù)提供的功能包括:(1)進程/線程的定義與啟動;(2)進程/線程的終止;(3)進程/線程的狀態(tài)查詢;(4)同步點的設(shè)置及進程/線程在同步點的信息交換,等。這些功能應(yīng)封裝在服務(wù)類之中。10.2設(shè)計技術(shù)支撐方案2023/1/1140安徽工程科技學(xué)院計算機系10.2.3技術(shù)支撐方案與用例

實現(xiàn)方案的融合

技術(shù)支撐方案往往包含數(shù)個公共技術(shù)服務(wù)子系統(tǒng)。這些子系統(tǒng)無論其規(guī)模大小和內(nèi)部復(fù)雜度高低,都應(yīng)該提供數(shù)量較少的外部接口。所有的上層應(yīng)用功能對公共技術(shù)服務(wù)的調(diào)用均通過訪問這些外部接口而實現(xiàn)。為了融合技術(shù)支撐方案和用例實施方案,只需要對相應(yīng)的UML交互圖中添加必需的公共技術(shù)服務(wù)子系統(tǒng)接口,讓控制類的對象與該接口所代表的公共服務(wù)對象進行消息交互。對于數(shù)據(jù)持久存儲服務(wù),與之交互的可以是實體類或者控制類。至于這些接口在交互圖中的布局位置,則依其所提供服務(wù)的性質(zhì)的不同而有所變化:10.2設(shè)計技術(shù)支撐方案2023/1/1141安徽工程科技學(xué)院計算機系技術(shù)支撐方案與用例實現(xiàn)方案的融合(1)先考慮數(shù)據(jù)持久存儲服務(wù)。在引入此服務(wù)以后,用例中有關(guān)數(shù)據(jù)持久的實現(xiàn)有兩種策略:一是讓控制類對象調(diào)用此服務(wù)實現(xiàn)數(shù)據(jù)存取實體類對象在數(shù)據(jù)保存的過程中先向控制類對象提供數(shù)據(jù),再由控制類對象調(diào)用服務(wù)將數(shù)據(jù)存至持久介質(zhì)(如數(shù)據(jù)庫、文件等),數(shù)據(jù)讀取的過程則為此過程的逆過程。二是讓實體類對象直接調(diào)用此服務(wù)實體類對象負責(zé)自己的數(shù)據(jù)的讀取和保存。相比較而言,后者更為簡潔、自然。對于圖10.4,如果右側(cè)的邊界類與公共數(shù)據(jù)持久存儲服務(wù)子系統(tǒng)的接口類的功能多有重疊,應(yīng)該考慮將二者合并。10.2設(shè)計技術(shù)支撐方案2023/1/1142安徽工程科技學(xué)院計算機系技術(shù)支撐方案與用例實現(xiàn)方案的融合(2)再考慮安全控制服務(wù)。此類服務(wù)的子系統(tǒng)接口在順序圖中應(yīng)位于控制類的緊鄰右側(cè)。(3)最后考慮分布式事務(wù)管理服務(wù)、并發(fā)與同步控制服務(wù)及可靠消息服務(wù)。它們的接口類在順序圖中可以位于控制類與右邊邊界類之間的任意位置,但不應(yīng)插入兩個輔助類或兩個實體類中間。10.2設(shè)計技術(shù)支撐方案2023/1/1143安徽工程科技學(xué)院計算機系技術(shù)支撐方案與用例實現(xiàn)方案的融合現(xiàn)在討論技術(shù)支撐方案之類圖與迄今獲得的其他類圖的融合問題。如果前者比較簡單,可以考慮將技術(shù)支撐方案的類圖直接與其他類圖合并,并建立公共技術(shù)服務(wù)類與其他類之間的必要連接。此時,有必要在公共技術(shù)服務(wù)類上以UML構(gòu)造型進行特殊標(biāo)識。如果公共技術(shù)服務(wù)子系統(tǒng)中包含較多的服務(wù)類,它們應(yīng)單獨構(gòu)成類圖,利用UML的包機制進行適當(dāng)分組,并將這些包置于系統(tǒng)的體系結(jié)構(gòu)圖中的較低層次(相對而言,應(yīng)用功能應(yīng)位于較高層次)。10.2設(shè)計技術(shù)支撐方案2023/1/1144安徽工程科技學(xué)院計算機系10.3設(shè)計用戶界面需求分析和軟件設(shè)計階段都必須考慮人機交互問題。需求分析階段要確定人機交互的

屬性和外部服務(wù)設(shè)計階段要給出有關(guān)人機交互的所有系統(tǒng)成份,包括:用戶如何操作

系統(tǒng)、系統(tǒng)如何響應(yīng)命令、系統(tǒng)顯示信息的報表格式等。第十章面向?qū)ο蟮脑O(shè)計方法2023/1/1145安徽工程科技學(xué)院計算機系設(shè)計用戶界面HIC設(shè)計的策略與步驟為:(1)熟悉用戶并對用戶分類。設(shè)計人員應(yīng)深入用戶環(huán)境,考慮用戶需要完成的任務(wù)、完成這些任務(wù)需要什么工具支持以及這些工具對用戶是否適用。不同類型的用戶要求不同,一般可按技術(shù)熟練程度、

工作性質(zhì)和訪問權(quán)限對用戶分類,以便盡量照顧到所有用戶的合理要求,并優(yōu)先滿足某些特權(quán)用戶。(2)按用戶類別分析用戶工作流程與習(xí)慣。在用戶分類的基礎(chǔ)上,從每類中選取一個用戶代表,建立包括下列內(nèi)容的調(diào)查表,并通過對調(diào)查結(jié)果的分析判斷用戶對操作界面的需求和愛好:·姓名·期望軟件用途·特征(年齡、文化程度、限制等)·主要要求與愛好·技術(shù)熟練程度·任務(wù)客觀場景描述10.3設(shè)計用戶界面2023/1/1146安徽工程科技學(xué)院計算機系設(shè)計用戶界面(3)設(shè)計并優(yōu)化命令系統(tǒng)。在設(shè)計一個新命令系統(tǒng)時,應(yīng)盡量遵循用戶界面的一般原則和規(guī)范,必要時參考一些優(yōu)秀的商品軟件。根據(jù)用戶分析結(jié)果確定初步的命令系統(tǒng),然后再優(yōu)化。命令系統(tǒng)既可為若干菜單、菜單欄,亦可為一組按鈕。10.3設(shè)計用戶界面2023/1/1147安徽工程科技學(xué)院計算機系設(shè)計用戶界面優(yōu)化命令系統(tǒng)應(yīng)考慮命令的順序,一般常用命令居先,命令的順序與用戶工作習(xí)慣保持一致;根據(jù)外部服務(wù)之間的聚合關(guān)系組織相應(yīng)的命令,總體功能對應(yīng)父命令,部分功能對應(yīng)子命令;充分考慮人類記憶的局限性(即所謂“7±2”原則或“3×3”原則),命令系統(tǒng)最好組織為一棵兩層的多叉樹;應(yīng)盡可能減少用戶完成一個操作所需的動作(如點按、拖曳和擊鍵等),并為熟練用戶提供操作捷徑10.3設(shè)計用戶界面2023/1/1148安徽工程科技學(xué)院計算機系設(shè)計用戶界面(4)設(shè)計用戶界面的各種細節(jié)。此步驟包括:設(shè)計一致的用戶界面風(fēng)格;耗時操作的狀態(tài)反饋;“undo”機制;幫助用戶記憶操作序列;自封閉的集成環(huán)境等。此類問題的詳細討論見“第十二章

人機界面設(shè)計”。10.3設(shè)計用戶界面2023/1/1149安徽工程科技學(xué)院計算機系設(shè)計用戶界面(5)增加用戶界面專用的類與對象。用戶界面專用類的設(shè)計與所選用的圖形用戶界面(GUI)工具或者支持環(huán)境有關(guān)。一般而言,需要為窗口、菜單、對話框等界面元素定義相應(yīng)的類,這些類往往繼承自GUI工具或者支持環(huán)境提供的類庫中的父類。最后,還需要針對每個與用戶命令處理相關(guān)的界面類,定義控制設(shè)計模型中的其他類的方法。(6)利用快速原型演示,改進界面設(shè)計。為人機交互部分構(gòu)造原型,是界面設(shè)計的基本技術(shù)之一。為用戶演示界面原型,讓他們直觀感受目標(biāo)軟件系統(tǒng)的使用方法,并評判系統(tǒng)是否功能齊全、方便好用。10.3設(shè)計用戶界面2023/1/1150安徽工程科技學(xué)院計算機系10.4精化設(shè)計模型經(jīng)過前面的分析和設(shè)計步驟,設(shè)計模型已相當(dāng)豐富,包含了較完整的靜態(tài)結(jié)構(gòu)模型(頂層架構(gòu)圖、類圖)和動態(tài)行為模型(交互圖)?,F(xiàn)在有必要對這些模型再進行分析、優(yōu)化,以生成高質(zhì)量的設(shè)計模型,為后續(xù)的實現(xiàn)階段奠定堅實基礎(chǔ)。第十章面向?qū)ο蟮脑O(shè)計方法2023/1/1151安徽工程科技學(xué)院計算機系精化設(shè)計模型設(shè)計模型精化的任務(wù)(1)以頂層架構(gòu)圖為基礎(chǔ),精化目標(biāo)軟件系統(tǒng)的體系結(jié)構(gòu)。(2)精化類之間的關(guān)系。(3)精化類的屬性和操作。(4)針對具有明顯狀態(tài)轉(zhuǎn)換特征的類,設(shè)計狀態(tài)圖。(5)針對比較復(fù)雜的類方法,設(shè)計活動圖。本節(jié)首先介紹UML狀態(tài)圖,然后依次介紹完成上述任務(wù)的方法。10.4精化設(shè)計模型2023/1/1152安徽工程科技學(xué)院計算機系10.4.1狀態(tài)圖狀態(tài)圖用來描述一個特定類的對象的所有可能狀態(tài)以及因事件而引起的狀態(tài)轉(zhuǎn)移。狀態(tài)圖的結(jié)點包含狀態(tài)名和活動(activity)兩部分內(nèi)容?;顒邮强蛇x的,它們又分為四種:(1)entry活動:一旦對象進入該狀態(tài),相應(yīng)的活動被觸發(fā)執(zhí)行。(2)exit活動:一旦對象離開該狀態(tài),相應(yīng)的活動被觸發(fā)執(zhí)行。(3)do活動:當(dāng)對象位于該狀態(tài)時,執(zhí)行相應(yīng)的活動,對象的狀態(tài)不變。(4)on-event活動:當(dāng)對象位于該狀態(tài)并且接收到某一事件后,執(zhí)行相應(yīng)的事件響應(yīng)活動。10.4精化設(shè)計模型2023/1/1153安徽工程科技學(xué)院計算機系狀態(tài)圖

在狀態(tài)圖的狀態(tài)轉(zhuǎn)移邊上可以附加以下信息:事件名(事件參數(shù)表)[條件表達式]/動作^事件目標(biāo).事件名(事件參數(shù)表)。第一個事件是引發(fā)對象狀態(tài)變遷的觸發(fā)事件;條件表達式表示此轉(zhuǎn)移邊所代表的狀態(tài)遷移的發(fā)生條件;動作表示對象在進行狀態(tài)遷移的同時還將執(zhí)行的處理功能;最后一個事件表示對象在進行狀態(tài)遷移時還可以向其他對象發(fā)送事件。所有上述語法成分都是可選項。如果狀態(tài)轉(zhuǎn)移邊上沒有觸發(fā)事件,表明對象在到達該邊的源結(jié)點時,內(nèi)部活動執(zhí)行完畢后自動觸發(fā)狀態(tài)遷移,但是,是否真正發(fā)生狀態(tài)遷移還取決于條件表達式的真假,如果條件表達式不存在,則認為遷移條件恒成立。10.4精化設(shè)計模型2023/1/1154安徽工程科技學(xué)院計算機系狀態(tài)圖一張狀態(tài)圖可以包含一個初態(tài),一到多個終態(tài)。基本的UML狀態(tài)圖見圖6.5。UML的狀態(tài)圖是一種結(jié)構(gòu)化的狀態(tài)圖,即,其狀態(tài)可以進一步細分為多個子狀態(tài),子狀態(tài)之間可以擁有“and”、“or”兩種關(guān)系。對象處于復(fù)合狀態(tài)s1ands2當(dāng)且僅當(dāng)對象既處于子狀態(tài)s1,又處于子狀態(tài)s2;對象處于復(fù)合狀態(tài)s1ors2當(dāng)且僅當(dāng)對象既處于子狀態(tài)s1或者處于子狀態(tài)s2。10.4精化設(shè)計模型2023/1/1155安徽工程科技學(xué)院計算機系狀態(tài)圖

帶有復(fù)合狀態(tài)的UML狀態(tài)圖見圖10.9。圖中,“active”狀態(tài)是由“process”和“auth”兩個子狀態(tài)經(jīng)過and合成構(gòu)成的復(fù)合狀態(tài)在“active”的任一子狀態(tài)上,如果發(fā)生了“cancel”事件,對象將進入“Cancelled”狀態(tài)。在“Authorizing”狀態(tài)下,如果權(quán)限驗證失敗,則立即進入“Rejected”狀態(tài)。在對象到達“active”狀態(tài)的兩個and子狀態(tài)的終態(tài)“Dispatching”和“Authorized”并執(zhí)行完這些狀態(tài)中的活動(圖10.9中未標(biāo)出)之后,對象進入“Delivered”狀態(tài)。10.4精化設(shè)計模型2023/1/1156安徽工程科技學(xué)院計算機系圖10.9帶復(fù)合狀態(tài)的UML狀態(tài)圖“process”狀態(tài)由“Checking”、“Waiting”和“Dispatching”三個子狀態(tài)經(jīng)過or合成構(gòu)成“auth”

狀態(tài)由“Authorizing”、和“Authorized”兩個子狀態(tài)經(jīng)過or合成構(gòu)成。10.4精化設(shè)計模型2023/1/1157安徽工程科技學(xué)院計算機系10.4.2精化體系結(jié)構(gòu)精化體系結(jié)構(gòu)的目的是,尋找一種包的劃分方案,使得每個包直接包含的類的數(shù)量適中,包的邊界清晰、自然,并且包間的耦合度較低。在包圖中,包間耦合度取決于包間依賴關(guān)系,而依賴關(guān)系又取決于分屬于兩個包的類之間的關(guān)系。類之間的耦合程度(從高到低)排列:(1)繼承關(guān)系。(2)構(gòu)成關(guān)系。(3)聚合關(guān)系。(4)關(guān)聯(lián)關(guān)系。(5)依賴關(guān)系。(6)兩個類的對象受同一執(zhí)行者變化的影響。10.4精化設(shè)計模型2023/1/1158安徽工程科技學(xué)院計算機系精化體系結(jié)構(gòu)在分析過程中,用包圖表示了目標(biāo)軟件系統(tǒng)的頂層架構(gòu)。隨著分析和設(shè)計不斷深入,原有包圖中的包可能包含了過多的類,此時需要對其進行分拆。按照軟件工程“強內(nèi)聚、松耦合”的原則,這種分拆應(yīng)該具有某種自然劃分的性質(zhì),并且盡可能降低劃分以后的子包之間的耦合度。如果擬將包P拆分成子包P1和P2,但包P中的類C與包P1和包P2中的類都存在相當(dāng)密切的聯(lián)系,那么可以考慮將C根據(jù)包P1和包P2的自然特征劃分成兩個類C1和C2,C1置入P1,C2置入P2,此后P1和P2形成松耦合關(guān)系。如果對C的分拆難以進行,那就要考慮將C移入較低層次的另一個包Q中,讓P1、P2均依賴于Q。弱化包間耦合的另一方法是調(diào)整類的擺放位置,將它們從一個包移至另一更合適的包。有時也可以考慮適當(dāng)?shù)睾喜⒁恍┌?,甚至不排除將?shù)個包合并后再重新劃分,最終達到“強內(nèi)聚、松耦合”的目標(biāo)。10.4精化設(shè)計模型2023/1/1159安徽工程科技學(xué)院計算機系精化體系結(jié)構(gòu)完全排除包間的依賴關(guān)系既無必要,也不合理。但是以下原則要盡量遵守:(1)避免包間的循環(huán)依賴關(guān)系,即,排除包P1依賴于包P2、P2又依賴于P1的情形(2)在層次結(jié)構(gòu)中,位于較低層次的通用包不應(yīng)當(dāng)依賴于較高層次中的專用包。(3)在層次結(jié)構(gòu)中,較高層次的包可以依賴于較低層次的包,但此種依賴應(yīng)盡量在相鄰的層次間發(fā)生。(4)如果針對某些子系統(tǒng)專門劃分了接口包和實現(xiàn)包,那么,其他與該子系統(tǒng)相關(guān)的包只能依賴于接口包,不能依賴于實現(xiàn)包。

10.4精化設(shè)計模型2023/1/1160安徽工程科技學(xué)院計算機系10.4.3精化類之間的關(guān)系本步驟的任務(wù)是在前面已獲得的類圖的基礎(chǔ)上,詳細研究類之間的連接關(guān)系:(1)根據(jù)這些連接的語義強度將它們精確地判定為UML的依賴、關(guān)聯(lián)、聚合或構(gòu)成關(guān)系之一;(2)確定連接的方向及參與連接的類的對象之間的數(shù)量對應(yīng)關(guān)系;(3)根據(jù)軟件重用的要求及軟件結(jié)構(gòu)簡潔化、清晰化的要求優(yōu)化類之間的關(guān)系。10.4精化設(shè)計模型2023/1/1161安徽工程科技學(xué)院計算機系精化類之間的關(guān)系前面確立的類之間的連接關(guān)系主要是在類的對象之間構(gòu)筑消息傳遞通道。為了在對象obj1與對象obj2之間實現(xiàn)消息傳遞,面向?qū)ο蟮某绦蛟O(shè)計機制提供四種手段:(1)引用全局對象。obj1直接引用作為全局對象的obj2。(2)通過參數(shù)傳遞。obj2作為obj1的某項操作中的實在參數(shù)。(3)引用局部對象。在obj1的某項操作的函數(shù)體中創(chuàng)建或獲取obj2。(4)通過類的成員變量。obj2作為obj1所屬類的屬性的取值。

10.4精化設(shè)計模型2023/1/1162安徽工程科技學(xué)院計算機系精化類之間的關(guān)系前三種類型的連接具有暫時性,obj1與obj2之間的連接僅在obj1的某項操作的執(zhí)行過程中建立,操作完成后連接即告終結(jié)。這種暫時性連接用UML的依賴關(guān)系表示。對最后一種具有穩(wěn)定性的連接關(guān)系,需要進一步分析。如果參與連接的兩個類在現(xiàn)實世界中存在“皮之不存,毛將焉附”型的部分—整體關(guān)系,則用UML的構(gòu)成關(guān)系表示。否則,如果它們在現(xiàn)實世界中仍存在“多個整體對象可共享同一部件對象”的部分—整體關(guān)系,則用UML的普通聚合關(guān)系表示。如果以上兩種假設(shè)均不成立,則原連接關(guān)系精化成UML中普通的關(guān)聯(lián)關(guān)系。10.4精化設(shè)計模型2023/1/1163安徽工程科技學(xué)院計算機系圖10.10UML關(guān)聯(lián)類在某些情況下,系統(tǒng)需要表示關(guān)聯(lián)關(guān)系本身具有的屬性和操作,將這些屬性或操作置放于參與關(guān)聯(lián)的兩個類之任何一個均會破壞設(shè)計模型的自然性。此時需要使用UML的關(guān)聯(lián)類,如圖10.10所示。10.4精化設(shè)計模型2023/1/1164安徽工程科技學(xué)院計算機系關(guān)聯(lián)類的精化設(shè)計

10.4精化設(shè)計模型2023/1/1165安徽工程科技學(xué)院計算機系關(guān)聯(lián)類的精化設(shè)計UML的依賴、聚合和構(gòu)成關(guān)系的方向性是非常明顯的。對UML的關(guān)聯(lián)關(guān)系,設(shè)計人員要仔細推敲雙向關(guān)聯(lián)的必要性,盡量將關(guān)聯(lián)單向化,僅保留確有必要的雙向關(guān)聯(lián)。因為,單向關(guān)聯(lián)更簡單、實現(xiàn)代價更小。對于UML的關(guān)聯(lián)、聚合和構(gòu)成關(guān)系,需進一步考慮參與關(guān)聯(lián)的類的對象之間的數(shù)量對應(yīng)關(guān)系以及雙方對象在關(guān)聯(lián)中扮演的角色,如圖10.10和圖10.11所示。10.4精化設(shè)計模型2023/1/1166安徽工程科技學(xué)院計算機系關(guān)聯(lián)類的精化設(shè)計在精化類之間的關(guān)系時,往往需要考慮到軟件重用的需要而對類結(jié)構(gòu)進行調(diào)整:(1)如果允許修改被重用的類,那么可以將被重用的類與當(dāng)前設(shè)計模型中的類的共同屬性和共同操作抽取至公共父類,然后適當(dāng)調(diào)整兩個子類的定義。如圖10.12所示。(2)否則,可以采用“委托”的辦法,在擬重用的類和被重用的類之間建立單向關(guān)聯(lián)關(guān)系。如此,擬重用的類即可通過關(guān)聯(lián)關(guān)系使用被重用的類的屬性和操作。如圖10.13所示。10.4精化設(shè)計模型2023/1/1167安徽工程科技學(xué)院計算機系為實現(xiàn)軟件重用而調(diào)整類結(jié)構(gòu)

10.4精化設(shè)計模型2023/1/1168安徽工程科技學(xué)院計算機系圖10.13采用委托法實現(xiàn)軟件重用10.4精化設(shè)計模型2023/1/1169安徽工程科技學(xué)院計算機系精化繼承關(guān)系接下來,考慮利用繼承關(guān)系精化設(shè)計模型。可以從已有的類出發(fā),尋找某些類之間的公共屬性和操作,引進新的父類捕獲公共性,從而簡化設(shè)計模型;也可以在一定范圍內(nèi)按照某種準(zhǔn)則將所有的類劃分為數(shù)個集合,針對每個集合的特性設(shè)計一個父類,讓集合中的所有類成為該父類的子類,這樣就通過引入新父類達到了分組管理相關(guān)類的目的。此外,如果設(shè)計模型中出現(xiàn)了多重繼承,而目標(biāo)軟件系統(tǒng)擬采用的程序設(shè)計語言不支持多重繼承,那就應(yīng)該將多重繼承化解為單重繼承,化解方法如圖10.14所示。10.4精化設(shè)計模型2023/1/1170安徽工程科技學(xué)院計算機系圖10.14將多重繼承化解為單重繼承10.4精化設(shè)計模型2023/1/1171安徽工程科技學(xué)院計算機系類的精化最后,根據(jù)“強內(nèi)聚、松耦合”、簡單性、自然性等軟件工程原則,對類之間的結(jié)構(gòu)關(guān)系可以進行如下優(yōu)化:(1)合并相互通信頻繁的類。屬性和操作都非常簡單的類可以合并至其他類中。(2)分拆規(guī)模過大的類。特別地,如果一個類的屬性可以區(qū)分為常用和罕用兩部分,那么,為提高軟件效率,可以將其分拆為一個“常用”類和數(shù)個“罕用”類,并在前者和后者之間建立聚合關(guān)系,“罕用”類的實例應(yīng)按需創(chuàng)建。(3)定義嵌入類。如果類class1和類class2之間存在關(guān)聯(lián)關(guān)系,但class2的對象在整個軟件系統(tǒng)中僅被class1的對象使用,并且class2規(guī)模不大,那么可以考慮將class2嵌入class1的內(nèi)部。引進嵌入類的好處是使設(shè)計模型更加簡單,付出的代價是,無論是否有必要,類class2的對象都將隨class1對象的實例化而存在,這樣可能浪費存儲10.4精化設(shè)計模型2023/1/1172安徽工程科技學(xué)院計算機系10.4.4精化類的屬性和操作對于類的每項屬性,在設(shè)計模型中,可以定義屬性的名稱、類型、初始值、取值范圍及屬性說明,后三項內(nèi)容是可選的。操作的基本內(nèi)容包括名稱、參數(shù)表(含參數(shù)的名稱和類型)、返回類型、功能描述。如果操作比較復(fù)雜,還需要用文字或UML活動圖說明操作的實現(xiàn)算法。屬性和操作的作用范圍有以下三種:(1)public:

對軟件系統(tǒng)中的所有類均可見。(2)protected:僅對本類及其子類可見。(3)private:僅對本類可見。確定屬性和操作的作用范圍的基本原則是,盡量縮小作用范圍,每個類僅公開那些為直接響應(yīng)消息所必需的操作。原則上,屬性不宜公開,如果確有必要讓其他類讀取或者設(shè)置該屬性的值,應(yīng)通過在本類中增設(shè)相應(yīng)的get/set函數(shù)來實現(xiàn)。10.4精化設(shè)計模型2023/1/1173安徽工程科技學(xué)院計算機系精化類的屬性和操作類的屬性和操作還可區(qū)分為類級和實例級兩種。類級的屬性和操作為該類的所有實例對象所共享,它們在系統(tǒng)運行期間僅有單份拷貝。實例級的屬性和操作則在類的每個實例對象中擁有一份獨立拷貝,這些拷貝之間互不影響。為了提高運行效率,有時需要在對象的生命同期中保存經(jīng)計算生成的一些中間結(jié)果,以免重復(fù)計算,用空間換時間。此時可以引入導(dǎo)出屬性作為類的私有屬性。但是,在業(yè)務(wù)邏輯處理過程中,要特別注意導(dǎo)出屬性值容易失效的問題。

10.4精化設(shè)計模型2023/1/1174安徽工程科技學(xué)院計算機系精化類的屬性和操作按照本章前面所述的方法和過程,最終得出“家庭保安系統(tǒng)”的類圖如圖10.15所示。圖10.15與圖10.8的區(qū)別在于,顯式標(biāo)出了關(guān)聯(lián)類的對象之間的數(shù)量對應(yīng)關(guān)系,并且引進了技術(shù)支撐方案中的服務(wù)類。圖10.15中未標(biāo)出的類的屬性和方法留給有興趣的讀者自行添加。10.4精化設(shè)計模型2023/1/1175安徽工程科技學(xué)院計算機系2023/1/1176安徽工程科技學(xué)院計算機系10.4.5設(shè)計狀態(tài)圖狀態(tài)圖適于表示跨越多個用例的單個對象的行為。在面向?qū)ο蟮脑O(shè)計過程中,并不需要對所有類的對象都繪制狀態(tài)圖,只要針對具有明顯的狀態(tài)特征、并且具有比較復(fù)雜的狀態(tài)-事件-響應(yīng)行為的類設(shè)計狀態(tài)圖即可。在“家庭保安系統(tǒng)”中,“監(jiān)測器”類的對象具有比較明顯的狀態(tài)特征,其狀態(tài)圖表示如圖10.16所示。10.4精化設(shè)計模型2023/1/1177安徽工程科技學(xué)院計算機系圖10.16“監(jiān)測器”對象的狀態(tài)圖10.4精化設(shè)計模型2023/1/1178安徽工程科技學(xué)院計算機系10.4.6設(shè)計活動圖活動圖適于表示用例中的事件流和過程,也可以用來表示復(fù)雜的算法以及并發(fā)處理進程。在面向?qū)ο蟮脑敿氃O(shè)計過程中,并不需要對所有類的方法都繪制活動圖,只要針對具有比較復(fù)雜的處理過程、并且比較重要的方法設(shè)計活動圖即可。此外,如果需要強調(diào)處理過程中并行性,應(yīng)該使用活動圖。在“家庭保安系統(tǒng)”中,“用戶命令處理”類中的procCmd方法和“監(jiān)測器”類中的analyseSensorData方法相對比較復(fù)雜,它們的活動圖分別見圖

溫馨提示

  • 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. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論