unified: 統(tǒng)一的
簡單理解:是對現(xiàn)實的簡化,是對系統(tǒng)從語義上近似的抽象。
模型的作用:
建模方法 = 建模語言 + 建模過程
建模語言定義了用于表示設計的符號(通常是圖形符號)
建模過程描述進行設計所需要遵循的步驟
建模的四原則:
一般/特殊(分類)結構:表現(xiàn)事務的一般與特殊的關系。術語稱為泛化與特化的關系。
組裝結構:表現(xiàn)對象類之間的部分與整體關系。
實例連接:表現(xiàn)對象間的靜態(tài)聯(lián)系。通過對象的屬性來表現(xiàn)對象之間的關系。
消息連接:對象之間的通信聯(lián)系。表現(xiàn)對象行為的動態(tài)聯(lián)系。
對象模型通常由五個層次組成:
主題(Subject)層:主題給出分析模型的總體概貌,是控制讀者在同一時間所能考慮的模型規(guī)模的機制。
類-&-對象(Class & Object)層:對象是數(shù)據及其處理的抽象。它反映了保存有關信息和與現(xiàn)實世界交互的能力。
結構(Structure)層:結構表示問題域的復雜性。類 - 成員結構反映了一般 - 特殊關系,整體 - 部分結構反映了整體 - 部分的關系。
屬性(Attribute)層:屬性是數(shù)據元素,用來描述對象或分類結構的實例,可在圖中給出并在對象的儲存中指定,即給出對象定義的同時,指定屬性。
服務(Serves)層:服務是接收到消息后必須執(zhí)行的一些處理,可在圖上標明它并在對象的儲存中指定,即給出對象定義的同時,定義服務。
五個層次就像合并在一起的五個透明的圖層一樣,每一層從不同角度將對象模型更細化、更具體化。
面向對象的模型的五個層次對應著分析建模的五個主要活動。這五個活動的工作可以不按順序進行,也沒必要完成一項活動后才開始另一項活動工作。也就是說,五個主要活動可以同時(并行)處理;可以從較高抽象層轉移到較低的具體層,然后再返回到較高抽象層繼續(xù)處理;當系統(tǒng)分析員在確定類-&-對象的同時,想到該類的服務,則可以先確定服務后,再返回去繼續(xù)尋找類-&-對象;沒有必要遵循自頂向下,逐步求精的原則。
設計系統(tǒng)結構:一個軟件由若干子系統(tǒng)組成,一個子系統(tǒng)由若干組件構成,設計系統(tǒng)結構的主要任務就是設計組件與子系統(tǒng),以及它們相互的靜態(tài)和動態(tài)關系。
系統(tǒng)結構兩種形式:層次結構、塊狀結構。
問題論域子系統(tǒng):問題論域子系統(tǒng)負責實現(xiàn)領域的業(yè)務服務。應包括與應用領域的業(yè)務直接相關的全部類與對象。對OOA模型中的某些類、對象、結構、屬性、操作進行調整。
人機交互子系統(tǒng):主要任務是設計系統(tǒng)界面。內容包括:用戶分類、描述交互場景、設計人機交互操作命令、操作順序,設計人機交互類如窗口、對話框、菜單等。
數(shù)據管理子系統(tǒng):數(shù)據管理子系統(tǒng)負責數(shù)據的管理:錄入、操縱、檢索、存儲、輸出等。設計數(shù)據管理子系統(tǒng)的主要任務是:確定數(shù)據管理方法,設計數(shù)據庫邏輯結構和物理結構,設計實現(xiàn)數(shù)據管理的對象類。
任務管理子系統(tǒng):一個系統(tǒng)運行時將有相當數(shù)量的進程被激活執(zhí)行。任務管理子系統(tǒng)的任務就是協(xié)調和管理進程。設計軟件系統(tǒng)內部模塊運行的管理機制,把事件驅動、時鐘驅動、優(yōu)先級管理等任務分配給軟、硬件執(zhí)行。
設計優(yōu)化:設計的結果要盡可能的優(yōu)化,盡量提高系統(tǒng)的性能。各性能指標之間常存在矛盾,應權衡考慮選取一個折衷方案。 準則:弱耦合、強內聚、減少通信開銷、良好的可擴充性。
步驟:
詳細的步驟(不是固定的):
(1)發(fā)現(xiàn)對象
根本出發(fā)點:問題域和系統(tǒng)責任
問題域側重于從客觀存在的事物發(fā)現(xiàn)系統(tǒng)中的對象,系統(tǒng)責任側重于從系統(tǒng)范圍內的每一項職責由哪些對象來完成發(fā)現(xiàn)對象,兩者同時考慮,只考慮問題域導致不知道哪些事物以及他們的那些特征該舍棄,那些該提取,容易使某些功能實現(xiàn)不了;只考慮系統(tǒng)責任,使系統(tǒng)中的對象不能真實反映問題域。
例如:書和衣服若從問題域抽象得到的一定是完全不同的類,如果在系統(tǒng)中僅被作為銷售商品時,那么他們就具有相同的屬性和方法,此時,我們就可以將他們合并為一個類商品
(2)抽象出對象類
幾種常見問題:
視圖的分類:
這5種視圖組合構成UML完整模型。
下面詳細分析這五種視圖:
用途:描述系統(tǒng)應該具備的功能,即被稱為參與者的外部用戶所能觀察到的功能。
用例視圖是幾個視圖的核心,它的內容直接驅動其他視圖的開發(fā)。
用途:描述用例視圖中提出的系統(tǒng)功能的實現(xiàn)。邏輯視圖既描述系統(tǒng)的靜態(tài)結構,也描述系統(tǒng)內部的動態(tài)協(xié)作關系。
組成:靜態(tài)結構在類圖和對象圖中進行描述;動態(tài)模型在狀態(tài)圖、時序圖、協(xié)作圖以及活動圖中進行描述。
用途:考慮資源的有效利用、代碼的并行執(zhí)行以及系統(tǒng)環(huán)境中異步事件的處理。
組成:狀態(tài)圖、協(xié)作圖和活動圖。
用途:描述系統(tǒng)的實現(xiàn)模塊以及它們之間的依賴關系
用途:顯示系統(tǒng)的物理部署,并描述位于節(jié)點實例上的運行組件實例的部署情況 。例如一個程序或對象在哪臺計算機上執(zhí)行,執(zhí)行程序的各節(jié)點設備之間是如何連接的。
主要分為兩類:靜態(tài)圖和動態(tài)圖。
(1)靜態(tài)圖
UML中有5種靜態(tài)圖:用例圖、類圖、對象圖、組件圖和配置圖。
(2)動態(tài)圖:
UML中有4種動態(tài)圖:時序圖、協(xié)作圖、狀態(tài)圖、活動圖
UML中的事物包括結構事物、行為(動作)事物、組織(分組)事物、注釋事物。
結構事物包括7種:類、接口、協(xié)作、用例、活動類、組件和節(jié)點。
接口: 接口是指類或組件所提供的、可以完成特定功能的一組操作的集合,換句話說,接口描述了類或組件的對外的、可見的動作。
協(xié)作:協(xié)作定義了交互的操作,是一些角色和其他元素一起工作,提供一些合作的動作。這些動作比元素的總和要大。因此,協(xié)作具有結構化、動作化、維的特性。一個給定的類可能是幾個協(xié)作的組成部分。這些協(xié)作代表構成系統(tǒng)的模式的實現(xiàn)。協(xié)作在UML中用一個虛線畫的橢圓和它的名字來表示。
用例:用例描述一系列的動作,這些動作是系統(tǒng)對一個特定角色執(zhí)行,產生值得注意的結果的值。在模型中use case通常用來組織動作事物。Use case是通過協(xié)作來實現(xiàn)的。
在UML 中,use case為一個實線橢圓,通常還有它的名字。
活動類:活動類是對擁有線程并可發(fā)起控制活動的對象(往往稱為主動對象)的抽象。它的對象有一個或多個進程或線程?;顒宇惡皖惡芟嘞?,只是它的對象代表的元素的行為和其他的元素是同時存在的。
在UML 中活動類的畫法和類相同,只是邊框用粗線條。
組件:組件是物理上或可替換的系統(tǒng)部分,它實現(xiàn)了一個接口集合。在一個系統(tǒng)中,你可能會遇到不同種類的組件,例如COM+ 或JAVA BEANS。
組件在UML中用如下的圖表示:
節(jié)點通常用如下的圖形表示:
動作事物主要有兩種:交互和狀態(tài)機。
(1)交互
是由一組對象之間在特定上下文中,為達到特定的目的而進行的一系列消息交換而組成的動作。交互中組成動作的對象的每個操作都要詳細列出,包括消息、動作次序(消息產生的動作),連接(對象之間的連接)。
在UML 中消息畫成帶箭頭的直線,通常加上操作的名字。
狀態(tài)機是對象的一個或多個狀態(tài)的集合。
分組事物是UML模型中負責分組的部分,可以把它看作一個個盒子,每個盒子里面的對象關系相對復雜,而盒子與盒子之間的關系相對簡單。成組事物只有一種:包。
包是一種有組織地將一系列元素分組的機制。
屬于這一類的只有注釋。注釋即是UML模型的解釋部分。
在UML圖中,一般表示為折起一角的矩形。
為圖中的模型元素增加了語義。
以自由的文本形式出現(xiàn)的。
信息類型是不被UML解釋的一個字符串。
UML 中預定義的特性:
文檔(Documentation)
職責(Responsibility)
永久性(Persistence)
并發(fā)性(Concurrency)
兩種通用劃分(General Division):
1. 型-實例(值)
描述一個通用描述符與單個元素項之間的對應關系。
2. 接口-實現(xiàn)
實例:
(1)構造型
由建模者設計的新的模型元素。
新的模型元素的設計要以UML已定義的模型元素為基礎。
(2)標記值
附加到任何模型元素上的命名的信息塊。
(3)約束
用某種形式化語言或自然語言表達的語義關系的文字說明。