1. UML--Unified Modeling Languagelanguage: 語(yǔ)言 modeling: 建模
unified: 統(tǒng)一的
2. 模型簡(jiǎn)單理解:是對(duì)現(xiàn)實(shí)的簡(jiǎn)化,是對(duì)系統(tǒng)從語(yǔ)義上近似的抽象。 模型的作用:
- 精確捕獲和表達(dá)項(xiàng)目的要求與應(yīng)用領(lǐng)域中的知識(shí),以使各方面利益相關(guān)者能夠理解并達(dá)成一致;
- 便于用戶和各個(gè)領(lǐng)域的專家評(píng)審;
- 降低復(fù)雜度;
- 提高開(kāi)發(fā)效率和質(zhì)量;
- 模型可以作為軟件系統(tǒng)維護(hù)和升級(jí)時(shí)的文檔。
建模方法 = 建模語(yǔ)言 + 建模過(guò)程 建模語(yǔ)言定義了用于表示設(shè)計(jì)的符號(hào)(通常是圖形符號(hào)) 建模過(guò)程描述進(jìn)行設(shè)計(jì)所需要遵循的步驟
建模的四原則: - 選擇建立什么樣的模型對(duì)如何發(fā)現(xiàn)和解決問(wèn)題具有重要的影響。
- 每個(gè)模型可以有多種表達(dá)方式。
- 最好的模型總是能夠切合實(shí)際。
- 孤立的模型是不完整的。任何好的系統(tǒng)都是由一些幾乎獨(dú)立的模型拼湊出來(lái)的。
3. 面向?qū)ο蟮幕居^點(diǎn)- 客觀世界由對(duì)象組成。
- 具有相同數(shù)據(jù)和相同操作的對(duì)象可以歸并為一個(gè)類。從一個(gè)類可以派生出許多對(duì)象。
- 類可以派生出子類,子類和父類形成類的層次結(jié)構(gòu)。
- 對(duì)象之間通過(guò)消息相互聯(lián)系。
- 面向?qū)ο?對(duì)象+類+繼承+通信
一般/特殊(分類)結(jié)構(gòu):表現(xiàn)事務(wù)的一般與特殊的關(guān)系。術(shù)語(yǔ)稱為泛化與特化的關(guān)系。
組裝結(jié)構(gòu):表現(xiàn)對(duì)象類之間的部分與整體關(guān)系。
實(shí)例連接:表現(xiàn)對(duì)象間的靜態(tài)聯(lián)系。通過(guò)對(duì)象的屬性來(lái)表現(xiàn)對(duì)象之間的關(guān)系。
消息連接:對(duì)象之間的通信聯(lián)系。表現(xiàn)對(duì)象行為的動(dòng)態(tài)聯(lián)系。
4. 面向?qū)ο蠓治龅幕具^(guò)程- 發(fā)現(xiàn)對(duì)象,從對(duì)象中抽象出類的定義。
- 識(shí)別對(duì)象的內(nèi)部特征。定義屬性和服務(wù)
- 識(shí)別對(duì)象的外部關(guān)系。建立一般/特殊結(jié)構(gòu)、整體/部分結(jié)構(gòu)、實(shí)例連接、消息連接
- 劃分主題,建立主題圖。
- 定義用例,建立交互圖。發(fā)現(xiàn)活動(dòng)者、定義用例
- 建立詳細(xì)說(shuō)明。模型的詳細(xì)定義與解釋,分散在其它活動(dòng)之中
- 原型開(kāi)發(fā)??煞磸?fù)進(jìn)行
5. 面向?qū)ο蠓治龅膶哟?/span>對(duì)象模型通常由五個(gè)層次組成:
- 類與對(duì)象層
- 屬性層
- 服務(wù)層
- 結(jié)構(gòu)層
- 主題層
主題(Subject)層:主題給出分析模型的總體概貌,是控制讀者在同一時(shí)間所能考慮的模型規(guī)模的機(jī)制。 類-&-對(duì)象(Class & Object)層:對(duì)象是數(shù)據(jù)及其處理的抽象。它反映了保存有關(guān)信息和與現(xiàn)實(shí)世界交互的能力。 結(jié)構(gòu)(Structure)層:結(jié)構(gòu)表示問(wèn)題域的復(fù)雜性。類 - 成員結(jié)構(gòu)反映了一般 - 特殊關(guān)系,整體 - 部分結(jié)構(gòu)反映了整體 - 部分的關(guān)系。 屬性(Attribute)層:屬性是數(shù)據(jù)元素,用來(lái)描述對(duì)象或分類結(jié)構(gòu)的實(shí)例,可在圖中給出并在對(duì)象的儲(chǔ)存中指定,即給出對(duì)象定義的同時(shí),指定屬性。 服務(wù)(Serves)層:服務(wù)是接收到消息后必須執(zhí)行的一些處理,可在圖上標(biāo)明它并在對(duì)象的儲(chǔ)存中指定,即給出對(duì)象定義的同時(shí),定義服務(wù)。 五個(gè)層次就像合并在一起的五個(gè)透明的圖層一樣,每一層從不同角度將對(duì)象模型更細(xì)化、更具體化。
面向?qū)ο蟮哪P偷奈鍌€(gè)層次對(duì)應(yīng)著分析建模的五個(gè)主要活動(dòng)。這五個(gè)活動(dòng)的工作可以不按順序進(jìn)行,也沒(méi)必要完成一項(xiàng)活動(dòng)后才開(kāi)始另一項(xiàng)活動(dòng)工作。也就是說(shuō),五個(gè)主要活動(dòng)可以同時(shí)(并行)處理;可以從較高抽象層轉(zhuǎn)移到較低的具體層,然后再返回到較高抽象層繼續(xù)處理;當(dāng)系統(tǒng)分析員在確定類-&-對(duì)象的同時(shí),想到該類的服務(wù),則可以先確定服務(wù)后,再返回去繼續(xù)尋找類-&-對(duì)象;沒(méi)有必要遵循自頂向下,逐步求精的原則。

6. 面向?qū)ο蠓治龅幕驹瓌t- 抽象原則(類 對(duì)象 一般類 屬性 服務(wù))
- 分類原則(把具有相同屬性和服務(wù)的對(duì)象化為一類)
- 聚合原則(將整體化為若干部分)
- 關(guān)聯(lián)原則(用關(guān)聯(lián)原則可以明確的表示對(duì)象之間的靜態(tài)聯(lián)系,實(shí)例連接)
- 消息通信原則(動(dòng)態(tài)聯(lián)系)
7. 面向?qū)ο笤O(shè)計(jì)基本過(guò)程- 設(shè)計(jì)對(duì)象與類;
- 設(shè)計(jì)系統(tǒng)結(jié)構(gòu);
- 設(shè)計(jì)問(wèn)題論域子系統(tǒng);
- 設(shè)計(jì)人機(jī)交互子系統(tǒng);
- 設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng);
- 設(shè)計(jì)任務(wù)管理子系統(tǒng);
- 設(shè)計(jì)優(yōu)化,提高系統(tǒng)的性能。
設(shè)計(jì)系統(tǒng)結(jié)構(gòu):一個(gè)軟件由若干子系統(tǒng)組成,一個(gè)子系統(tǒng)由若干組件構(gòu)成,設(shè)計(jì)系統(tǒng)結(jié)構(gòu)的主要任務(wù)就是設(shè)計(jì)組件與子系統(tǒng),以及它們相互的靜態(tài)和動(dòng)態(tài)關(guān)系。 系統(tǒng)結(jié)構(gòu)兩種形式:層次結(jié)構(gòu)、塊狀結(jié)構(gòu)。
問(wèn)題論域子系統(tǒng):?jiǎn)栴}論域子系統(tǒng)負(fù)責(zé)實(shí)現(xiàn)領(lǐng)域的業(yè)務(wù)服務(wù)。應(yīng)包括與應(yīng)用領(lǐng)域的業(yè)務(wù)直接相關(guān)的全部類與對(duì)象。對(duì)OOA模型中的某些類、對(duì)象、結(jié)構(gòu)、屬性、操作進(jìn)行調(diào)整。
人機(jī)交互子系統(tǒng):主要任務(wù)是設(shè)計(jì)系統(tǒng)界面。內(nèi)容包括:用戶分類、描述交互場(chǎng)景、設(shè)計(jì)人機(jī)交互操作命令、操作順序,設(shè)計(jì)人機(jī)交互類如窗口、對(duì)話框、菜單等。
數(shù)據(jù)管理子系統(tǒng):數(shù)據(jù)管理子系統(tǒng)負(fù)責(zé)數(shù)據(jù)的管理:錄入、操縱、檢索、存儲(chǔ)、輸出等。設(shè)計(jì)數(shù)據(jù)管理子系統(tǒng)的主要任務(wù)是:確定數(shù)據(jù)管理方法,設(shè)計(jì)數(shù)據(jù)庫(kù)邏輯結(jié)構(gòu)和物理結(jié)構(gòu),設(shè)計(jì)實(shí)現(xiàn)數(shù)據(jù)管理的對(duì)象類。 任務(wù)管理子系統(tǒng):一個(gè)系統(tǒng)運(yùn)行時(shí)將有相當(dāng)數(shù)量的進(jìn)程被激活執(zhí)行。任務(wù)管理子系統(tǒng)的任務(wù)就是協(xié)調(diào)和管理進(jìn)程。設(shè)計(jì)軟件系統(tǒng)內(nèi)部模塊運(yùn)行的管理機(jī)制,把事件驅(qū)動(dòng)、時(shí)鐘驅(qū)動(dòng)、優(yōu)先級(jí)管理等任務(wù)分配給軟、硬件執(zhí)行。
設(shè)計(jì)優(yōu)化:設(shè)計(jì)的結(jié)果要盡可能的優(yōu)化,盡量提高系統(tǒng)的性能。各性能指標(biāo)之間常存在矛盾,應(yīng)權(quán)衡考慮選取一個(gè)折衷方案。 準(zhǔn)則:弱耦合、強(qiáng)內(nèi)聚、減少通信開(kāi)銷、良好的可擴(kuò)充性。
8. 類的設(shè)計(jì)原則- 類公共接口的單獨(dú)成員應(yīng)該是類的操作符。
- 類A的實(shí)例不應(yīng)該直接發(fā)送消息給類B的成員。
- 操作符是公共的,當(dāng)且僅當(dāng)類實(shí)例的用戶可用。
- 屬于類的每個(gè)操作符要么訪問(wèn)、要么修改類的某個(gè)數(shù)據(jù)。
- 類必須盡可能少地依賴其他類。
- 兩個(gè)類之間的互相作用應(yīng)該是顯式的。
- 繼承結(jié)構(gòu)的父類應(yīng)該是目標(biāo)概念的抽象模型。
9. 基于UML的面向?qū)ο蠓治鲈O(shè)計(jì)過(guò)程步驟: - 識(shí)別系統(tǒng)的用例和角色。通過(guò)需求分析;最后得到用例圖。
- 進(jìn)行系統(tǒng)分析,并抽象出類。
- 設(shè)計(jì)系統(tǒng)和系統(tǒng)中的類及其行為。
- 結(jié)構(gòu)設(shè)計(jì) 定義包(子系統(tǒng))、包間依賴關(guān)系、主要通信機(jī)制
- 詳細(xì)設(shè)計(jì) 細(xì)化包內(nèi)容,清晰描述類及其實(shí)例行為
詳細(xì)的步驟(不是固定的): - 發(fā)現(xiàn)對(duì)象,從對(duì)象中抽象出類的定義。
- 識(shí)別對(duì)象的內(nèi)部特征。定義屬性和服務(wù)。
- 識(shí)別對(duì)象的外部關(guān)系。建立一般/特殊結(jié)構(gòu)、整體/部分結(jié)構(gòu)、實(shí)例連接、消息連接。
- 劃分主題,建立主題圖。
- 定義用例,建立交互圖。發(fā)現(xiàn)活動(dòng)者、定義用例。
- 建立詳細(xì)說(shuō)明。模型的詳細(xì)定義與解釋,分散在其它活動(dòng)之中。
- 原型開(kāi)發(fā)??煞磸?fù)進(jìn)行
10. 發(fā)現(xiàn)對(duì)象和定義類(1)發(fā)現(xiàn)對(duì)象 根本出發(fā)點(diǎn):?jiǎn)栴}域和系統(tǒng)責(zé)任 問(wèn)題域側(cè)重于從客觀存在的事物發(fā)現(xiàn)系統(tǒng)中的對(duì)象,系統(tǒng)責(zé)任側(cè)重于從系統(tǒng)范圍內(nèi)的每一項(xiàng)職責(zé)由哪些對(duì)象來(lái)完成發(fā)現(xiàn)對(duì)象,兩者同時(shí)考慮,只考慮問(wèn)題域?qū)е虏恢滥男┦挛镆约八麄兊哪切┨卣髟撋釛?,那些該提取,容易使某些功能?shí)現(xiàn)不了;只考慮系統(tǒng)責(zé)任,使系統(tǒng)中的對(duì)象不能真實(shí)反映問(wèn)題域。 例如:書和衣服若從問(wèn)題域抽象得到的一定是完全不同的類,如果在系統(tǒng)中僅被作為銷售商品時(shí),那么他們就具有相同的屬性和方法,此時(shí),我們就可以將他們合并為一個(gè)類商品
(2)抽象出對(duì)象類 幾種常見(jiàn)問(wèn)題:
- 從問(wèn)題域抽象出的完全不同的若干類對(duì)象經(jīng)系統(tǒng)責(zé)任為目標(biāo)的抽象保留下來(lái)的屬性和方法完全相同。解決方法:合并
- 出現(xiàn)屬性和服務(wù)相似的類。解決方法:建立一般/特殊結(jié)構(gòu)或整體/部分結(jié)構(gòu)
- 出現(xiàn)對(duì)同一事物的重復(fù)描述。
11. UML中的視圖視圖的分類:
- 用例視圖 系統(tǒng)使用實(shí)例
- 邏輯視圖 系統(tǒng)邏輯結(jié)構(gòu)
- 組件視圖 系統(tǒng)構(gòu)成
- 并發(fā)視圖 系統(tǒng)并發(fā)特性
- 配置視圖 系統(tǒng)的配置
這5種視圖組合構(gòu)成UML完整模型。 下面詳細(xì)分析這五種視圖: 用途:描述系統(tǒng)應(yīng)該具備的功能,即被稱為參與者的外部用戶所能觀察到的功能。
用例視圖是幾個(gè)視圖的核心,它的內(nèi)容直接驅(qū)動(dòng)其他視圖的開(kāi)發(fā)。
用途:描述用例視圖中提出的系統(tǒng)功能的實(shí)現(xiàn)。邏輯視圖既描述系統(tǒng)的靜態(tài)結(jié)構(gòu),也描述系統(tǒng)內(nèi)部的動(dòng)態(tài)協(xié)作關(guān)系。
組成:靜態(tài)結(jié)構(gòu)在類圖和對(duì)象圖中進(jìn)行描述;動(dòng)態(tài)模型在狀態(tài)圖、時(shí)序圖、協(xié)作圖以及活動(dòng)圖中進(jìn)行描述。
用途:考慮資源的有效利用、代碼的并行執(zhí)行以及系統(tǒng)環(huán)境中異步事件的處理。
組成:狀態(tài)圖、協(xié)作圖和活動(dòng)圖。
用途:描述系統(tǒng)的實(shí)現(xiàn)模塊以及它們之間的依賴關(guān)系
用途:顯示系統(tǒng)的物理部署,并描述位于節(jié)點(diǎn)實(shí)例上的運(yùn)行組件實(shí)例的部署情況 。例如一個(gè)程序或?qū)ο笤谀呐_(tái)計(jì)算機(jī)上執(zhí)行,執(zhí)行程序的各節(jié)點(diǎn)設(shè)備之間是如何連接的。
12. UML中包含九種圖主要分為兩類:靜態(tài)圖和動(dòng)態(tài)圖。 (1)靜態(tài)圖 UML中有5種靜態(tài)圖:用例圖、類圖、對(duì)象圖、組件圖和配置圖。
(2)動(dòng)態(tài)圖:
UML中有4種動(dòng)態(tài)圖:時(shí)序圖、協(xié)作圖、狀態(tài)圖、活動(dòng)圖
13. UML中的事物UML中的事物包括結(jié)構(gòu)事物、行為(動(dòng)作)事物、組織(分組)事物、注釋事物。
結(jié)構(gòu)事物包括7種:類、接口、協(xié)作、用例、活動(dòng)類、組件和節(jié)點(diǎn)。
類:類是具有相同屬性、相同方法、相同語(yǔ)義和相同關(guān)系的一組對(duì)象的集合。 接口: 接口是指類或組件所提供的、可以完成特定功能的一組操作的集合,換句話說(shuō),接口描述了類或組件的對(duì)外的、可見(jiàn)的動(dòng)作。 協(xié)作:協(xié)作定義了交互的操作,是一些角色和其他元素一起工作,提供一些合作的動(dòng)作。這些動(dòng)作比元素的總和要大。因此,協(xié)作具有結(jié)構(gòu)化、動(dòng)作化、維的特性。一個(gè)給定的類可能是幾個(gè)協(xié)作的組成部分。這些協(xié)作代表構(gòu)成系統(tǒng)的模式的實(shí)現(xiàn)。協(xié)作在UML中用一個(gè)虛線畫的橢圓和它的名字來(lái)表示。 用例:用例描述一系列的動(dòng)作,這些動(dòng)作是系統(tǒng)對(duì)一個(gè)特定角色執(zhí)行,產(chǎn)生值得注意的結(jié)果的值。在模型中use case通常用來(lái)組織動(dòng)作事物。Use case是通過(guò)協(xié)作來(lái)實(shí)現(xiàn)的。 在UML 中,use case為一個(gè)實(shí)線橢圓,通常還有它的名字。 活動(dòng)類:活動(dòng)類是對(duì)擁有線程并可發(fā)起控制活動(dòng)的對(duì)象(往往稱為主動(dòng)對(duì)象)的抽象。它的對(duì)象有一個(gè)或多個(gè)進(jìn)程或線程?;顒?dòng)類和類很相象,只是它的對(duì)象代表的元素的行為和其他的元素是同時(shí)存在的。 在UML 中活動(dòng)類的畫法和類相同,只是邊框用粗線條。 組件:組件是物理上或可替換的系統(tǒng)部分,它實(shí)現(xiàn)了一個(gè)接口集合。在一個(gè)系統(tǒng)中,你可能會(huì)遇到不同種類的組件,例如COM+ 或JAVA BEANS。 組件在UML中用如下的圖表示:  節(jié)點(diǎn):節(jié)點(diǎn)是一個(gè)物理元素,它在運(yùn)行時(shí)存在,代表一個(gè)可計(jì)算的資源,如一臺(tái)數(shù)據(jù)庫(kù)服務(wù)器等。通常占用一些內(nèi)存和具有處理能力。一個(gè)組件集合一般來(lái)說(shuō)位于一個(gè)節(jié)點(diǎn),但有可能從一個(gè)結(jié)點(diǎn)轉(zhuǎn)到另一個(gè)節(jié)點(diǎn)。
節(jié)點(diǎn)通常用如下的圖形表示:

動(dòng)作事物主要有兩種:交互和狀態(tài)機(jī)。 (1)交互 是由一組對(duì)象之間在特定上下文中,為達(dá)到特定的目的而進(jìn)行的一系列消息交換而組成的動(dòng)作。交互中組成動(dòng)作的對(duì)象的每個(gè)操作都要詳細(xì)列出,包括消息、動(dòng)作次序(消息產(chǎn)生的動(dòng)作),連接(對(duì)象之間的連接)。 在UML 中消息畫成帶箭頭的直線,通常加上操作的名字。
 (2)狀態(tài)機(jī) 狀態(tài)機(jī)是對(duì)象的一個(gè)或多個(gè)狀態(tài)的集合。

分組事物是UML模型中負(fù)責(zé)分組的部分,可以把它看作一個(gè)個(gè)盒子,每個(gè)盒子里面的對(duì)象關(guān)系相對(duì)復(fù)雜,而盒子與盒子之間的關(guān)系相對(duì)簡(jiǎn)單。成組事物只有一種:包。 包是一種有組織地將一系列元素分組的機(jī)制。
屬于這一類的只有注釋。注釋即是UML模型的解釋部分。 在UML圖中,一般表示為折起一角的矩形。

14. UML通用機(jī)制為圖中的模型元素增加了語(yǔ)義。 
以自由的文本形式出現(xiàn)的。 信息類型是不被UML解釋的一個(gè)字符串。

UML 中預(yù)定義的特性: 文檔(Documentation) 職責(zé)(Responsibility) 永久性(Persistence) 并發(fā)性(Concurrency)
兩種通用劃分(General Division): 1. 型-實(shí)例(值) 描述一個(gè)通用描述符與單個(gè)元素項(xiàng)之間的對(duì)應(yīng)關(guān)系。 
2. 接口-實(shí)現(xiàn) 實(shí)例: 
(1)構(gòu)造型 由建模者設(shè)計(jì)的新的模型元素。 新的模型元素的設(shè)計(jì)要以UML已定義的模型元素為基礎(chǔ)。 
(2)標(biāo)記值 附加到任何模型元素上的命名的信息塊。

(3)約束 用某種形式化語(yǔ)言或自然語(yǔ)言表達(dá)的語(yǔ)義關(guān)系的文字說(shuō)明。

|