軟件工程7-史濟民_第1頁
軟件工程7-史濟民_第2頁
軟件工程7-史濟民_第3頁
軟件工程7-史濟民_第4頁
軟件工程7-史濟民_第5頁
已閱讀5頁,還剩75頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、湘 潭 大 學(xué)第第7 7章章 面向?qū)ο笤O(shè)計面向?qū)ο笤O(shè)計軟件設(shè)計概述面向?qū)ο笤O(shè)計建模系統(tǒng)架構(gòu)設(shè)計系統(tǒng)元素設(shè)計面向?qū)ο笤O(shè)計示例7.2 7.2 面向?qū)ο笤O(shè)計建模面向?qū)ο笤O(shè)計建模 面向?qū)ο笤O(shè)計模型 Pressman把OO設(shè)計模型定義為一個金字塔層次結(jié)構(gòu),從下至上分為: 系統(tǒng)架構(gòu)層:描述系統(tǒng)的整體結(jié)構(gòu),使所設(shè)計的軟件滿足客戶定義的需求,并實現(xiàn)支持客戶需求的技術(shù)基礎(chǔ)設(shè)施。 類和對象層:包含類層次關(guān)系,使系統(tǒng)能夠以通用的方式創(chuàng)建并不斷逼近特殊需求,該層還包含每個對象的設(shè)計表示。 消息層:描述對象間的消息模型,建立了系統(tǒng)的外部接口和內(nèi)部接口,包含使得每個對象能夠和其協(xié)作者通信的細節(jié)。 責(zé)任層 :包含針對每個對

2、象的所有屬性和操作的數(shù)據(jù)結(jié)構(gòu)和算法的設(shè)計。OOAOOA模型轉(zhuǎn)換到模型轉(zhuǎn)換到OODOOD模型模型屬性、操作、協(xié)作者對象-行為模型對象-關(guān)系模型類/對象模型用例模型面向?qū)ο笤O(shè)計的任務(wù)面向?qū)ο笤O(shè)計的任務(wù) OOD的軟件設(shè)計可劃分為兩個層次,即系統(tǒng)架構(gòu)設(shè)計和系統(tǒng)元素設(shè)計。設(shè)計過程是循環(huán)漸進的。系統(tǒng)架構(gòu)設(shè)計 軟件系統(tǒng)架構(gòu)是指系統(tǒng)主要組成元素的組織或結(jié)構(gòu),以及其他軟件系統(tǒng)架構(gòu)是指系統(tǒng)主要組成元素的組織或結(jié)構(gòu),以及其他全局性決策,組成元素之間通過接口進行交互。系統(tǒng)架構(gòu)包含全局性決策,組成元素之間通過接口進行交互。系統(tǒng)架構(gòu)包含關(guān)于軟件系統(tǒng)組織的許多重要決定。關(guān)于軟件系統(tǒng)組織的許多重要決定。系統(tǒng)元素設(shè)計 系統(tǒng)元素

3、包括組成系統(tǒng)的類、子系統(tǒng)與接口、包等。系統(tǒng)元素系統(tǒng)元素包括組成系統(tǒng)的類、子系統(tǒng)與接口、包等。系統(tǒng)元素設(shè)計是對每個設(shè)計元素進行詳細設(shè)計。主要的設(shè)計內(nèi)容是:設(shè)計是對每個設(shè)計元素進行詳細設(shè)計。主要的設(shè)計內(nèi)容是: 類類/ /對象設(shè)計;對象設(shè)計; 子系統(tǒng)設(shè)計;子系統(tǒng)設(shè)計;1.1. 包設(shè)計。包設(shè)計。模式的應(yīng)用模式的應(yīng)用 提倡在OOD中充分應(yīng)用設(shè)計模式。 模式的定義 模式是解決某一類問題的方法論,也是對通用問題的通用解決方案。 模式的目的是把解決某類問題的方法總結(jié)、歸納到理論高度,供其他人員在解決類似問題時參考或直接套用。 軟件模式就抽象級別分三種類型 架構(gòu)模式:表示軟件系統(tǒng)基本結(jié)構(gòu)組織方案。 設(shè)計模式:提

4、供對面向?qū)ο蟮木唧w設(shè)計問題的解決方案。 習(xí)慣用法:是指針對具體程序設(shè)計語言的使用模式。 系統(tǒng)架構(gòu)設(shè)計是整個軟件的基礎(chǔ),其設(shè)計質(zhì)量是一個軟件開發(fā)成功與否的關(guān)鍵。 在進行具體元素設(shè)計之前,首先要確定系統(tǒng)的高層結(jié)構(gòu)。系統(tǒng)高層結(jié)構(gòu)為后續(xù)設(shè)計提供一個公共的基礎(chǔ)框架,用以承載逐步演進和累加的設(shè)計內(nèi)容。 系統(tǒng)架構(gòu)設(shè)計的主要活動有6項。7.3 7.3 系統(tǒng)架構(gòu)設(shè)計系統(tǒng)架構(gòu)設(shè)計系統(tǒng)架構(gòu)設(shè)計的系統(tǒng)架構(gòu)設(shè)計的6 6項活動項活動系統(tǒng)高層結(jié)構(gòu)設(shè)計:根據(jù)軟件需求模型和分析模型,套用架構(gòu)模式設(shè)計軟件系統(tǒng)的高層組織結(jié)構(gòu)。確定設(shè)計元素:識別和確定設(shè)計類和子系統(tǒng),將設(shè)計類組織到相應(yīng)的包中,為子系統(tǒng)設(shè)計接口,確定復(fù)用機會等。確定任

5、務(wù)管理策略:考慮解決并發(fā)任務(wù)可能引起的沖突或運行性能等問題的策略。分布式實現(xiàn)機制:選擇支持遠程通信的構(gòu)件,給出實現(xiàn)構(gòu)件之間通信的統(tǒng)一方案。數(shù)據(jù)存儲設(shè)計:選擇數(shù)據(jù)庫訪問的支持構(gòu)件,設(shè)計類/對象數(shù)據(jù)結(jié)構(gòu)的存儲、讀寫的操作方法。人機交互設(shè)計:實現(xiàn)人機界面的技術(shù)基礎(chǔ)和工具等。1 1、系統(tǒng)高層結(jié)構(gòu)設(shè)計、系統(tǒng)高層結(jié)構(gòu)設(shè)計 在設(shè)計系統(tǒng)高層結(jié)構(gòu)時,可以選用架構(gòu)模式作為模板來定義系統(tǒng)的高層框架。 常用的架構(gòu)模式 層次架構(gòu)(Layers) 模型-視圖-控制架構(gòu)(Model-View-Control) 管道與過濾器架構(gòu)(Pipes and Filters) 黑板架構(gòu)(Blackboard)系統(tǒng)高層結(jié)構(gòu)設(shè)計系統(tǒng)高層結(jié)

6、構(gòu)設(shè)計 層次架構(gòu)的基本原則是將系統(tǒng)劃分成不同層次,越靠下面的層次,包含的內(nèi)容越具有一般性,或者說與軟件需求中特定應(yīng)用邏輯的關(guān)系越松散。 典型的分層方法 層 次功 能特殊一般應(yīng)用子系統(tǒng)層組成所開發(fā)應(yīng)用的獨特應(yīng)用子系統(tǒng)業(yè)務(wù)專用層該應(yīng)用所屬業(yè)務(wù)類型專用的一些可復(fù)用子系統(tǒng)中間件層提供實用程序的子系統(tǒng),和為異構(gòu)環(huán)境中分布式對象計算提供獨立于平臺的服務(wù)等系統(tǒng)軟件層構(gòu)成實際基礎(chǔ)設(shè)施的軟件,如操作系統(tǒng)、特定硬件的接口、設(shè)備驅(qū)動程序等2 2、確定設(shè)計元素、確定設(shè)計元素 確定設(shè)計元素從分析模型出發(fā),對現(xiàn)有分析類的交互進行分析,以確定設(shè)計元素。主要工作是: 映射分析類到設(shè)計元素映射分析類到設(shè)計元素 一個分析類可以映

7、射為一個設(shè)計類或多個設(shè)計類的組合,也可以將其映射為子系統(tǒng)接口。 如果一個分析類很簡單,并已代表單一獨立的邏輯抽象,可直接映射到設(shè)計類。通常在分析類中,與主動參與者連接的邊界類、控制類和一般的實體類可映射為設(shè)計類。1.如果分析類的職責(zé)比較復(fù)雜,其行為很難由單個設(shè)計類或者設(shè)計類的簡單組合承擔(dān),可將其映射為子系統(tǒng)接口。通常被動參與者對應(yīng)的邊界類被映射為子系統(tǒng)接口。確定設(shè)計元素確定設(shè)計元素 確定子系統(tǒng)確定子系統(tǒng) 子系統(tǒng)實際上是一種特殊的包,這種包具有統(tǒng)一的接口,接口提供了一個封裝層,使得其他模型元素看不到子系統(tǒng)的內(nèi)部設(shè)計。 劃分成幾個子系統(tǒng)需根據(jù)實際情況來確。是否將一組協(xié)作的分析類創(chuàng)建為子系統(tǒng),取決于

8、該協(xié)作是否緊密,是否代表相對獨立的功能,是否可由單獨的設(shè)計團隊來獨立開發(fā)。 確定子系統(tǒng)的一些指導(dǎo)性參考原則: 對象協(xié)作原則。若某個協(xié)作中各個類僅在相互之間交互,并可生成一組定義明確的結(jié)果,應(yīng)將該協(xié)作的類封裝在一個子系統(tǒng)中。 可選性原則。若特定對象協(xié)作代表可選行為,應(yīng)封裝在一個子系統(tǒng)中。 用戶界面原則。若用戶界面獨立于系統(tǒng)中的實體類,應(yīng)創(chuàng)建橫向集成的子系統(tǒng),若用戶界面與它顯示的實體類緊密耦合,應(yīng)創(chuàng)建縱向集成的子系統(tǒng)。 參與者原則。將兩個不同參與者使用的功能分離到不同的子系統(tǒng)。 耦合和內(nèi)聚原則。 分布原則。 確定設(shè)計元素確定設(shè)計元素 定義子系統(tǒng)接口定義子系統(tǒng)接口 子系統(tǒng)是對一組承擔(dān)職責(zé)的設(shè)計元素的

9、統(tǒng)稱,子系統(tǒng)接口明確定義這些職責(zé),但不約束職責(zé)的實現(xiàn)者和實現(xiàn)方式。子系統(tǒng)接口將其使用方法和實現(xiàn)方式徹底分開。借助子系統(tǒng)接口定義,可以將系統(tǒng)中某一部分的復(fù)雜行為和其他的設(shè)計內(nèi)容進行隔離。 子系統(tǒng)接口只有邏輯上的意義,沒有物理意義,它說明子系統(tǒng)的使用者和子系統(tǒng)服務(wù)的提供者之間共同認可的約定。 確定子系統(tǒng)接口的步驟:為子系統(tǒng)確定一個備選接口集 尋找接口之間的相似點 定義接口依賴關(guān)系 將接口映射到子系統(tǒng) 定義接口所指定的行為定義子系統(tǒng)接口時,首先命名和描述接口,通常在相應(yīng)類的名稱前加前綴“I-”,或?qū)㈩惣由稀癷nterface”來表述子系統(tǒng)接口,并用簡明的文字描述它在系統(tǒng)中的作用;然后定義子系統(tǒng)的行為

10、,即定義操作的集合,取代籠統(tǒng)的職責(zé)。子系統(tǒng)接口中對操作的描述應(yīng)具體化,至少包括: 操作的名稱、返回值含義及類型、使用的參數(shù)名稱即類型、應(yīng)該做什么(包括關(guān)鍵算法)。 3 3、任務(wù)管理策略、任務(wù)管理策略 任務(wù)管理是考慮對多用戶、多任務(wù)的并行處理支持,對并行需求的解決方案有三種: 多處理器方案-將并發(fā)子系統(tǒng)分配到不同的處理器。 操作系統(tǒng)方案-將并發(fā)子系統(tǒng)分配到相同的處理器并由操作系統(tǒng)提供同步控制。 應(yīng)用程序方案-應(yīng)用軟件負責(zé)在適當(dāng)?shù)臅r間從一個代碼分支切換到另一個代碼分支。 兩種實現(xiàn)并行需求的技術(shù): 引進任務(wù)管理部件。 基于進程和線程的控制 。引進任務(wù)管理部件引進任務(wù)管理部件的原因:在多用戶多任務(wù)操作

11、系統(tǒng)上開發(fā)應(yīng)用軟件的需要;在通過任務(wù)描述軟件系統(tǒng)中各子系統(tǒng)間的通信和協(xié)同時,引入任務(wù)概念能簡化某些應(yīng)用的設(shè)計和編碼。Coad和Yourdon建議的任務(wù)管理策略:確定任務(wù)的特征。定義一個協(xié)調(diào)者任務(wù)和與之關(guān)聯(lián)的對象。集成其他任務(wù)和協(xié)調(diào)者。 任務(wù)管理部件的設(shè)計一般遵循如下的步驟與策略:識別由事件驅(qū)動和時間驅(qū)動的任務(wù)。識別關(guān)鍵性任務(wù)、任務(wù)優(yōu)先級以及任務(wù)管理類。任務(wù)管理類是為了實現(xiàn)而引入的專門用于管理和協(xié)調(diào)其他任務(wù)的任務(wù)。定義任務(wù)。說明任務(wù)的名稱、功能、優(yōu)先級任務(wù)與其他任務(wù)的通信方式。 必要時在OOD中擴充有關(guān)任務(wù)的類及對象,調(diào)整原有語法成分,以適應(yīng)任務(wù)定義的要求。 基于進程和線程的控制 進程和線程建模

12、 需要為系統(tǒng)所需的每個獨立控制流創(chuàng)建進程或線程,可以用主動類來建模進程或線程。主動類是指擁有自己的執(zhí)行線程而且能發(fā)起控制活動的類,主動類能與其他主動類并行執(zhí)行。 對進程建模可采用類圖或構(gòu)件圖。進程間的通信是依賴關(guān)系。選課系統(tǒng)的進程建模選課系統(tǒng)的進程建模包含用包含用戶戶界面和界面和與業(yè)務(wù)過與業(yè)務(wù)過程程的交互的交互封裝了封裝了對選課對選課的的處處理理負責(zé)對遺負責(zé)對遺留系留系統(tǒng)統(tǒng)的的訪問訪問,是,是獨獨立立進進程,可被多程,可被多個個用用戶戶共享。共享。 確定進程的生命周期 由設(shè)計人員確定和記錄進程創(chuàng)建與進程銷毀的事件序列,以及創(chuàng)建和刪除的機制。 例子:在選課系統(tǒng)中啟動一個主要進程,其職責(zé)是協(xié)調(diào)整個

13、系統(tǒng)的行為。 解:該進程依次產(chǎn)生許多下級控制線程來監(jiān)視系統(tǒng)設(shè)備和來自課程目錄系統(tǒng)的事件。這些進程和線程的創(chuàng)建可用UML的主動類表示。創(chuàng)建進程和線程的時序圖創(chuàng)建進程和線程的時序圖 在進程間分布模型元素 在定義了運行在實現(xiàn)環(huán)境中的進程后,還需要確定在進程內(nèi)應(yīng)該執(zhí)行的進程類和子系統(tǒng)。 進程為類或子系統(tǒng)提供了一個執(zhí)行環(huán)境。設(shè)計元素與進程的關(guān)系設(shè)計元素與進程的關(guān)系 4 4、分布式實現(xiàn)機制、分布式實現(xiàn)機制 為實現(xiàn)分布式結(jié)構(gòu),需完成以下工作。 確定網(wǎng)絡(luò)拓撲配置 將設(shè)計元素分配到網(wǎng)絡(luò)節(jié)點 節(jié)點容量(指內(nèi)存量和處理能力)節(jié)點容量(指內(nèi)存量和處理能力) 通信介質(zhì)帶寬(總線、通信介質(zhì)帶寬(總線、LANLAN、WAN

14、WAN) 硬件與通信鏈路的可用性、重選路由硬件與通信鏈路的可用性、重選路由 對冗余與容錯能力的要求對冗余與容錯能力的要求 響應(yīng)時間要求響應(yīng)時間要求 吞吐量要求吞吐量要求 網(wǎng)絡(luò)拓撲配置圖網(wǎng)絡(luò)拓撲配置圖 設(shè)計分布處理機制 實現(xiàn)分布在不同網(wǎng)絡(luò)節(jié)點上的應(yīng)用邏輯之間的交互,需要底層類庫的支持。介紹基于java類庫來實現(xiàn)分布處理。 基于RMI(遠程方法調(diào)用)的應(yīng)用程序由java對象構(gòu)成,一個java對象可調(diào)用另一個遠程結(jié)點上的java對象的方法。 采用RMI實現(xiàn)分布處理機制的步驟: 引入可直接利用的類庫引入可直接利用的類庫 建立一些有建立一些有rolerole標識的類,代表實際設(shè)計元素標識的類,代表實際設(shè)

15、計元素 描述分布機制的靜態(tài)結(jié)構(gòu)描述分布機制的靜態(tài)結(jié)構(gòu) 基于基于RMIRMI的分布處理機制的分布處理機制 5 5、數(shù)據(jù)存儲設(shè)計、數(shù)據(jù)存儲設(shè)計 對于實例數(shù)據(jù)需要持久保存的類,需要設(shè)計一種統(tǒng)一的存儲、讀取和修改數(shù)據(jù)的方法。 例子:利用java機制實現(xiàn)數(shù)據(jù)的存儲管理,實現(xiàn)將類實例數(shù)據(jù)存儲到關(guān)系數(shù)據(jù)庫中,其步驟有:引入JDBC相關(guān)類庫 (java.sql包中的類 )構(gòu)造一些具有role標識的類,代表實際設(shè)計元素 描述持久存儲機制的靜態(tài)結(jié)構(gòu) 描述機制的典型應(yīng)用場景 持久存儲機制的靜態(tài)結(jié)構(gòu)持久存儲機制的靜態(tài)結(jié)構(gòu) 初始化與數(shù)據(jù)庫的連接初始化與數(shù)據(jù)庫的連接 創(chuàng)建創(chuàng)建PersistentClassPersiste

16、ntClass的實例的實例 人機交互設(shè)計人機交互設(shè)計 分類分析用戶特點,設(shè)計不同界面分類分析用戶特點,設(shè)計不同界面 增加用戶界面專用的類與對象增加用戶界面專用的類與對象 利用快速原型演示,改進界面設(shè)計利用快速原型演示,改進界面設(shè)計 7.4 7.4 系統(tǒng)元素設(shè)計系統(tǒng)元素設(shè)計 子系統(tǒng)設(shè)計子系統(tǒng)設(shè)計 子系統(tǒng)設(shè)計主要針對子系統(tǒng)內(nèi)部所包含的設(shè)計元素及子系統(tǒng)設(shè)計主要針對子系統(tǒng)內(nèi)部所包含的設(shè)計元素及其交互。其交互。 分包設(shè)計分包設(shè)計 分包的目的是使設(shè)計元素更加有序,呈現(xiàn)出更明顯分包的目的是使設(shè)計元素更加有序,呈現(xiàn)出更明顯的高內(nèi)聚、低耦合特征。的高內(nèi)聚、低耦合特征。 類類/ /對象設(shè)計對象設(shè)計 主要解決主要解

17、決3 3個問題:個問題: 如何實現(xiàn)分析類中的邊界類、實體類和控制類。如何實現(xiàn)分析類中的邊界類、實體類和控制類。 如何應(yīng)用設(shè)計模式。如何應(yīng)用設(shè)計模式。 系統(tǒng)架構(gòu)中的全局性決定如何在類設(shè)計中體現(xiàn)。系統(tǒng)架構(gòu)中的全局性決定如何在類設(shè)計中體現(xiàn)。 子系統(tǒng)設(shè)計,其步驟是:子系統(tǒng)設(shè)計,其步驟是: 將子系統(tǒng)行為分配給子系統(tǒng)元素將子系統(tǒng)行為分配給子系統(tǒng)元素 描述子系統(tǒng)元素描述子系統(tǒng)元素 說明子系統(tǒng)的依賴關(guān)系說明子系統(tǒng)的依賴關(guān)系 分包設(shè)計分包設(shè)計 分包的原則分包的原則 描述包之間的依賴關(guān)系描述包之間的依賴關(guān)系 包之間的耦合關(guān)系包之間的耦合關(guān)系 類類/ /對象設(shè)計,其步驟包括:對象設(shè)計,其步驟包括:1.1. 創(chuàng)建初始

18、設(shè)計類;定義操作、方法、狀態(tài)、屬性、創(chuàng)建初始設(shè)計類;定義操作、方法、狀態(tài)、屬性、依賴關(guān)系、關(guān)聯(lián)關(guān)系、泛化關(guān)系;解決用例沖突依賴關(guān)系、關(guān)聯(lián)關(guān)系、泛化關(guān)系;解決用例沖突和處理非功能性需求等。和處理非功能性需求等。子系統(tǒng)設(shè)計子系統(tǒng)設(shè)計 將子系統(tǒng)行為分配給子系統(tǒng)元素將子系統(tǒng)行為分配給子系統(tǒng)元素 子系統(tǒng)的外部行為是通過它所實現(xiàn)的接口來定義。子系統(tǒng)的外部行為是通過它所實現(xiàn)的接口來定義。當(dāng)子系統(tǒng)實現(xiàn)了某個接口時,就必須實現(xiàn)該接口定當(dāng)子系統(tǒng)實現(xiàn)了某個接口時,就必須實現(xiàn)該接口定義的每個操作;反過來,這些操作會由子系統(tǒng)所包義的每個操作;反過來,這些操作會由子系統(tǒng)所包含的設(shè)計元素上的操作來實現(xiàn)。含的設(shè)計元素上的操作

19、來實現(xiàn)。 子系統(tǒng)中的設(shè)計元素間協(xié)作關(guān)系,可用說明子系統(tǒng)子系統(tǒng)中的設(shè)計元素間協(xié)作關(guān)系,可用說明子系統(tǒng)行為的時序圖來描述。設(shè)計子系統(tǒng)的內(nèi)部行為時,行為的時序圖來描述。設(shè)計子系統(tǒng)的內(nèi)部行為時,對子系統(tǒng)實現(xiàn)的接口進行的每個操作,都可以畫一對子系統(tǒng)實現(xiàn)的接口進行的每個操作,都可以畫一個或多個相應(yīng)的子系統(tǒng)交互時序圖。個或多個相應(yīng)的子系統(tǒng)交互時序圖。 子系統(tǒng)交互圖用于說明子系統(tǒng)行為是如何通過子系子系統(tǒng)交互圖用于說明子系統(tǒng)行為是如何通過子系統(tǒng)元素之間的交互來實現(xiàn)的。統(tǒng)元素之間的交互來實現(xiàn)的。課程目錄子系統(tǒng)時序圖課程目錄子系統(tǒng)時序圖 子系統(tǒng)設(shè)計子系統(tǒng)設(shè)計 描述子系統(tǒng)元素描述子系統(tǒng)元素 可以創(chuàng)建一個或多個類圖來表

20、示子系統(tǒng)包含的元素可以創(chuàng)建一個或多個類圖來表示子系統(tǒng)包含的元素以及它們之間的關(guān)系。也可以用狀態(tài)圖來表現(xiàn)子系以及它們之間的關(guān)系。也可以用狀態(tài)圖來表現(xiàn)子系統(tǒng)可能出現(xiàn)的狀態(tài)及其變遷。統(tǒng)可能出現(xiàn)的狀態(tài)及其變遷。 課程目錄子系統(tǒng)內(nèi)部類圖課程目錄子系統(tǒng)內(nèi)部類圖 說明子系統(tǒng)的依賴關(guān)系說明子系統(tǒng)的依賴關(guān)系 當(dāng)子系統(tǒng)包含的某個元素使用了另一個子系統(tǒng)中的某當(dāng)子系統(tǒng)包含的某個元素使用了另一個子系統(tǒng)中的某個元素的行為時,就在它們所屬的子系統(tǒng)間創(chuàng)建了依個元素的行為時,就在它們所屬的子系統(tǒng)間創(chuàng)建了依賴關(guān)系。賴關(guān)系。如果一個子系統(tǒng)的模型元素引用了另一個子系統(tǒng)的模如果一個子系統(tǒng)的模型元素引用了另一個子系統(tǒng)的模型元素,則設(shè)計人

21、員不能輕易移去該模型元素或?qū)⒛P驮?,則設(shè)計人員不能輕易移去該模型元素或?qū)⒛P驮氐男袨橹匦路峙浣o其他元素。型元素的行為重新分配給其他元素。創(chuàng)建依賴關(guān)系時,還要確保子系統(tǒng)和接口之間沒有循創(chuàng)建依賴關(guān)系時,還要確保子系統(tǒng)和接口之間沒有循環(huán)的依賴關(guān)系,子系統(tǒng)不能既實現(xiàn)一個接口又依賴該環(huán)的依賴關(guān)系,子系統(tǒng)不能既實現(xiàn)一個接口又依賴該接口。接口。子系統(tǒng)間依賴關(guān)系子系統(tǒng)間依賴關(guān)系 分包設(shè)計分包設(shè)計 為便于理解,在層次結(jié)構(gòu)的基礎(chǔ)上劃分更細的為便于理解,在層次結(jié)構(gòu)的基礎(chǔ)上劃分更細的組織單元,一種常用方法是把設(shè)計元素分組放組織單元,一種常用方法是把設(shè)計元素分組放入特定包中,分包的目的是使設(shè)計元素更加有入特定包中,

22、分包的目的是使設(shè)計元素更加有序,呈現(xiàn)出明顯的高內(nèi)聚低耦合特征。支持大序,呈現(xiàn)出明顯的高內(nèi)聚低耦合特征。支持大型復(fù)雜系統(tǒng)的開發(fā)。型復(fù)雜系統(tǒng)的開發(fā)。 分包設(shè)計分包設(shè)計 分包的原則分包的原則 描述包之間的依賴關(guān)系描述包之間的依賴關(guān)系 包之間的耦合關(guān)系包之間的耦合關(guān)系 分包設(shè)計分包設(shè)計 分包的原則分包的原則 將邊界類打包兩種策略:如果系統(tǒng)接口可能被替換,或可能會發(fā)生較大更改,應(yīng)將接口與設(shè)計模型的其他部分隔離;如果接口不易被替換或更改,則應(yīng)對系統(tǒng)服務(wù)進行分包,將邊界類和功能相關(guān)的實體類及控制類放在一起。對于在功能上與任何實體或控制類都不相關(guān)的必選邊界類,應(yīng)將它們和屬于同一接口的邊界類一起放置在單獨的包中

23、。分包設(shè)計分包設(shè)計 將功能相關(guān)的類打包判斷兩個類是否在功能上相關(guān)的幾個實用標準:如果一個類個類的行為為或結(jié)構(gòu)結(jié)構(gòu)的變變化使得另一個類個類必須須相應(yīng)變應(yīng)變化,這兩個類這兩個類就是功能相關(guān)關(guān)的,應(yīng)屬應(yīng)屬于同一個個包。從從某個類開個類開始,檢查從檢查從系統(tǒng)統(tǒng)中刪刪除該類該類所帶來帶來的影響響,可以查查明一個類與個類與另一個類個類是否功能相關(guān)關(guān)。如果兩個對兩個對象進進行大量的消息交互,或以其他復(fù)雜復(fù)雜的方式互相通信,這兩個對這兩個對象功能相關(guān)關(guān)。如果某個邊個邊界類類的功能是顯顯示一個個特定的實實體類類,它與該實它與該實體類類功能相關(guān)關(guān)。如果兩個類與兩個類與同一個參與個參與者交互,或受到對對同一個參與個

24、參與者更改的影響響,這兩個類這兩個類功能相關(guān)關(guān)。如果兩個類兩個類之間間存在某些關(guān)關(guān)系,它們它們功能相關(guān)關(guān)。一個類與創(chuàng)個類與創(chuàng)建其實實例的類類功能相關(guān)關(guān)。分包設(shè)計分包設(shè)計 不應(yīng)將兩個類放在同一個包中的標準: 與不同參與者相關(guān)的兩個類不應(yīng)放在同一個包中。 可選類和必選類不應(yīng)放在同一個包中。 松散耦合的類不宜放在同一個包中。包的依賴關(guān)系包的依賴關(guān)系 描述包之間的依賴關(guān)系描述包之間的依賴關(guān)系 包依賴關(guān)系顯示了對某些類的修改如何波及系統(tǒng)的其他部分。 說包A依賴于包B,是指包B中某些類的改動會影響到包A中的類。 通常在高層次的視圖上顯示包依賴關(guān)系,能使開發(fā)人員在高層次上度量系統(tǒng)的復(fù)雜度。 要杜絕包之間相互

25、依賴對方的現(xiàn)象。包之間的耦合關(guān)系包之間的耦合關(guān)系 遵循高內(nèi)聚低耦合設(shè)計原則來確定和調(diào)整包之間的依賴關(guān)系,其一般原則: 消除包之間的互相依賴關(guān)系。 復(fù)用價值較高的包不要依賴復(fù)用價值較低的包。在層次架構(gòu)中,包應(yīng)只依賴于同一層及下一層的包。 依賴關(guān)系一般不應(yīng)跨層。 不要讓包直接依賴包含實現(xiàn)子系統(tǒng)接口的系統(tǒng)元素的包。即不要直接依賴這類包中的設(shè)計元素,而是依賴相應(yīng)的子系統(tǒng)接口。University ArtifactsUniversity Artifacts包內(nèi)元素的類圖包內(nèi)元素的類圖 類類/ /對象設(shè)計對象設(shè)計 類/對象設(shè)計是設(shè)計工作的核心。子系統(tǒng)、包以及協(xié)作關(guān)系等設(shè)計元素,只說明了類的組合方式或協(xié)同操

26、作方式。 類/對象設(shè)計主要考慮的3個問題:如何實現(xiàn)分析類中的邊界類、實體類和控制類。如何實現(xiàn)分析類中的邊界類、實體類和控制類。在解決類設(shè)計中的實現(xiàn)問題時如何應(yīng)用設(shè)計模式。在解決類設(shè)計中的實現(xiàn)問題時如何應(yīng)用設(shè)計模式。系統(tǒng)架構(gòu)中的全局性決定如何在類設(shè)計中體現(xiàn)。系統(tǒng)架構(gòu)中的全局性決定如何在類設(shè)計中體現(xiàn)。 創(chuàng)建初始設(shè)計類設(shè)計邊界類:對于分析階段確定的邊界類,在設(shè)計時要根據(jù)實現(xiàn)平臺和技術(shù),創(chuàng)建額外的類來支持設(shè)計的GUI和外部的系統(tǒng)交互。用戶界面邊界類的設(shè)計需要遵循系統(tǒng)架構(gòu)中關(guān)于人機交互界面的決定,要依賴項目可用的界面開發(fā)工具。代表到其他系統(tǒng)的接口的邊界類被建模為子系統(tǒng),因為它們有復(fù)雜的內(nèi)部行為。如果接口

27、行為簡單,可選擇一種或多種設(shè)計類來表示這一接口,即對每一協(xié)議、接口或API采用單一的設(shè)計類,并說明有關(guān)使用標準以及有關(guān)詳細的特殊需求。設(shè)計實體類在分析中,實體類代表系統(tǒng)中的信息單元,實體對象通常是被動的和持久性的。出于性能的考慮,設(shè)計中可能要強制重組某些實體類。類的重新設(shè)計類的重新設(shè)計 不具有持久性持久數(shù)據(jù)類代理持久數(shù)據(jù)類設(shè)計控制類如果控制類僅僅是從邊界類到實體類的通路,則可省略。下面的情況要考慮將控制類轉(zhuǎn)變?yōu)樵O(shè)計類:控制類封裝了重要的控制流程行為;控制類封裝的行為可能發(fā)生變更;控制類的行為必須分布到多個進程/處理器;控制類封裝的行為需要事物管理。由此,設(shè)計控制類時至少要考慮以下問題:復(fù)雜性。

28、邊界類和實體類可以處理簡單的控制或協(xié)調(diào)行為,但應(yīng)用程序的復(fù)雜程度高,可采用控制類來提供與協(xié)調(diào)事件流有關(guān)的行為。變更的可能性。如果事件流更改的可能性大,則需要設(shè)置專門的控制類。分布和性能。應(yīng)用程序需要在不同結(jié)點上運行的需求會要求設(shè)計模型元素專用性,這種專用性一般是通過添加控制對象,并將邊界類行為與實體類行為分布到控制類上來實現(xiàn)的。事務(wù)管理。管理事務(wù)是典型的協(xié)調(diào)活動,如果沒有處理事務(wù)管理的框架,則需要一個或多個事務(wù)管理器類用于交互作用,以確保事務(wù)的完整性。 定義操作 研究每個類的職責(zé),為職責(zé)確定操作;研究類所參與的用例的行為,查看用例中如何使用該類的操作;研究用例的特殊需求,確保類的操作覆蓋用例的

29、行為。 用例中通常無法提供足以確定類的所以操作的有關(guān)信息,因此要增加一些典型的操作,如初始化類的實例,驗證類的兩個實例是否等同等,創(chuàng)建類的實例的副本等。 (1)命名和說明操作 對于每項操作,應(yīng)定義如下內(nèi)容: 操作名。應(yīng)簡短并隱含操作得到的結(jié)果。 返回類型。是操作返回對象的類。 簡短說明。 參數(shù)。簡明、易懂,參數(shù)個數(shù)不宜多。需要時可拆分操作。 參數(shù)的簡短說明。 (2)定義操作可見性 可見性的類型: 公有:+ 保護:# 私有:- 設(shè)計中盡可能選擇限定性最強但仍可完成操作目標的可見性。通過查看交互圖,確定每條消息是來自對象外,還是來自子類,或者來自類本身。 (3)定義操作的作用域 操作的作用域分實例

30、作用域和類作用域。 實例作用域的操作是對類的實例執(zhí)行的操作。 如果一個操作適合于類的所以實例,它就是類作用域的操作。表示類作用域的操作是在操作字符串加有下劃線。定義操作的類圖定義操作的類圖 定義方法 方法是對操作的實現(xiàn),由具體的程序設(shè)計語言完成。 方法說明了實現(xiàn)操作的具體方式,其內(nèi)容通常涉及操作的參數(shù)、類的屬性及關(guān)系在方法中的使用。如果方法的內(nèi)容需要采用特定的算法,應(yīng)用文字或圖示進行說明。定義狀態(tài) 某些操作行為依賴于接收方對象的狀態(tài)。如果一個類有一些重要的動態(tài)行為,具有多種狀態(tài),就可以創(chuàng)建狀態(tài)圖。 可以通過2種方法來確定一個類是否具有重要的動態(tài)行為: 檢查類的屬性??疾煲粋€類的實例在屬性值不同

31、時如何表現(xiàn),因為檢查類的屬性??疾煲粋€類的實例在屬性值不同時如何表現(xiàn),因為對象的行為不同,其狀態(tài)也不同。對象的行為不同,其狀態(tài)也不同。 檢查類的關(guān)聯(lián)。注意關(guān)聯(lián)重數(shù)中帶檢查類的關(guān)聯(lián)。注意關(guān)聯(lián)重數(shù)中帶0 0的關(guān)聯(lián),的關(guān)聯(lián),0 0表示這個關(guān)聯(lián)是可選表示這個關(guān)聯(lián)是可選的。關(guān)聯(lián)存在和不存在時類的實例是否表現(xiàn)相同。若不同,則可能的。關(guān)聯(lián)存在和不存在時類的實例是否表現(xiàn)相同。若不同,則可能有多種狀態(tài)。有多種狀態(tài)。每個狀態(tài)轉(zhuǎn)換事件都與狀態(tài)關(guān)聯(lián)。根據(jù)對象的狀態(tài),操作可能有不同的行為,轉(zhuǎn)換事件描述這種情況在何時發(fā)生。操作的方法描述應(yīng)該根據(jù)特定狀態(tài)的信息進行更新,表明操作對不同狀態(tài)應(yīng)該做什么。開設(shè)課程類的狀態(tài)圖開設(shè)課

32、程類的狀態(tài)圖 定義屬性 在方法的定義和狀態(tài)的確定中,確定了類執(zhí)行其操作所需的屬性。 屬性為類實例提供了信息存儲空間,并表示類實例的狀態(tài)。 在分析階段,一般只需指明屬性名,在設(shè)計階段,對每種屬性,需要定義以下內(nèi)容: 屬性名。通常是名詞。屬性名。通常是名詞。 屬性類型。實現(xiàn)語言支持的基本數(shù)據(jù)類型。屬性類型。實現(xiàn)語言支持的基本數(shù)據(jù)類型。 屬性默認值或初始值。屬性默認值或初始值。 屬性的可見性。屬性的可見性。 要檢查以確保所有的屬性都是必需的。標明屬性的類圖標明屬性的類圖 定義依賴關(guān)系類A的對象a與類B的對象b通信,a能夠向b發(fā)送消息的必要條件是a能夠引用b,其概念在協(xié)作圖中表現(xiàn)為a到b的連接。在面向

33、對象軟件系統(tǒng)中,a通過4種方式引用b,對應(yīng)于從a到b的4種類型的連接可見度。 全局。全局。b b是可以在全局范圍內(nèi)直接引用的對象。是可以在全局范圍內(nèi)直接引用的對象。 參數(shù)。參數(shù)。b b作為作為a a的某一項操作的參數(shù)或返回值。的某一項操作的參數(shù)或返回值。 局部。局部。b b在在a a的某一操作中充當(dāng)臨時變量。的某一操作中充當(dāng)臨時變量。 域。域。b b作為作為a a的數(shù)據(jù)成員。的數(shù)據(jù)成員。 全局、參數(shù)和局部這3種類型連接可見度具有暫時性,即b和a之間的連接僅在執(zhí)行某個操作的過程中被建立,執(zhí)行完后連接關(guān)系解除。在靜態(tài)結(jié)構(gòu)中,這3種類型的連接被建模為類A對類B的依賴關(guān)系。 域的連接可見度具有穩(wěn)定性和永久性,在靜態(tài)結(jié)構(gòu)中這種連接被建模為類A到類B的關(guān)聯(lián)關(guān)系及其強化形式。定義依賴關(guān)系的類圖定義依賴關(guān)系的類圖 定義關(guān)聯(lián)關(guān)系關(guān)聯(lián)關(guān)系是一種結(jié)構(gòu)化關(guān)系,在后續(xù)的實施活動中,其內(nèi)容將作為類定義的組成部分。確認類之間存在的關(guān)聯(lián)關(guān)系后,有條件進一步明確或改進其細節(jié)內(nèi)容。聚集還是組合選擇聚集還是組合會決定怎樣設(shè)計對象的創(chuàng)建和刪除。屬性還是組合要決定對單個類使用屬性還是組合關(guān)系,應(yīng)以所表示概念之間的耦合度為依據(jù),如果正在建模的概念之間聯(lián)系很緊密,應(yīng)使用屬性,如果概念易于獨立進行變更,則應(yīng)使用組合關(guān)系。還可從3方面考察特征來決定是否使用類和組合關(guān)系。一是特征是否需要獨立

溫馨提示

  • 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

提交評論