我學UML建模系列之《基礎篇》

2022-02-19 17:28:47 字數 1932 閱讀 6896

在開始講述uml之前還有幾個重要的概念必須要理解的。這些是uml中隱含的,非常重要的概念。但這些概念是很難理解的,不會用uml的表面原因是不知道在**用,怎麼用,本質上是沒有搞懂這些概念。下面將對這些概念逐一說明:

一、建模

建模是通過對客觀事物建立一種抽象的方法用以表徵事物並獲得對事物本身的理解,同時把這種理解概念化,將這些邏輯概念組織起來,構成一種對所觀察的物件的內部結構和工作原理的便於理解的表達方式。

下圖為業務建模公式:

二、用例驅動

用例驅動是乙個非常重要的概念,或者說整個軟體生產過程就是乙個用例驅動。實現用例是必須要做的事情,一旦用例實現了,那麼問題領域就解決了。這就是用例驅動方法的原則。

用例驅動包括以下內容:

。邏輯檢視:系統只有乙個邏輯檢視,該檢視以圖形的方式說明關鍵的用例實現,包括子系統和類。

。程序檢視:系統中有乙個程序檢視,該檢視以圖形的方式說明了處理活動在系統中程序的詳細組織結構,其中包括類和子系統到程序或執行緒中的對映。

。部署檢視:系統只有乙個部署檢視,該檢視以圖形的方式說明了處理活動在系統中的各節點的分布,包括程序和執行緒的物理分布。

。實施檢視:實施檢視的作用是獲取為實施定製的架構決策,它通常包含以下內容:

1、列舉實施模型中的所有子系統

2、描述子系統如何組織為層次和分層次的構件圖

3、描述子系統間的匯入依耐的關係**

實施檢視的作用哉:

1、個人團隊和分包商分配實施工作,

2、估算要開發,修改,刪除的**數量

3、闡明大規模復用理由

4、考慮發布策略

以下是用例檢視的**:

三、抽象層次

抽象層次是物件導向中極其重要又難以撐握的知識。首先,抽象層次越高,具體資訊就越少,但是概括力又最強,反之概括資訊越豐富,結果越確定。相反概括力就沒有那麼明顯。從資訊的表達能力上說,抽象層次越高,表達能力越豐富,越容易理解。很多使用uml的朋友都會覺得選擇用例的粒度是一件很困難的事,實際上,選擇用例粒度困難的本質是由於沒有找準抽象層次產生的。

抽象有兩種方法,一是自頂向下,另一種是自底向上,自頂向下的方法實用於讓人們從頭開始認識事物。例如汽車的工作方式是從發動機,感測裝置,變速器等較高層次的概念來講就更容易明白,如果降乙個層次從改動機原理來講就不容易讓人明白。如果再降乙個層次從熱力學與力學原理來講就更沒有人能聽懂。自底向上的方式適用於在實踐中改進和提高的認識。例如在實踐中發現發動機的問題,並改進或提高發動機的效能或者更換新的發動機,以便提汽車的整體效能。在軟體程式設計中主體上應採用自頂向下的方法,用少量的概念覆蓋系統需求,再逐步降低抽象層次,直到編寫**。同時應當輔以自底向上的方法,通過總結在較低抽象層次的實踐經驗來改進較高層次的概念以提公升軟體的質量。

下圖為統一過程一般抽象層次過程圖:

四、檢視

檢視是uml中另乙個非常重要的概念,檢視用於組織uml元素,表達出模型某一方面的元素。檢視的準確應用是建立好模型的乙個重要因素。 視角是人們觀察事物的角度,不同的人從不同角度觀察到事物也不相同,視角是針對檢視來說的,不同的視角展示了同樣資訊的不同認知角度以便於理解。一方面,從資訊的展示的角度來說,恰當的視角可以讓觀察者更容易抓住資訊的本質;另一方面,從觀察者角度來說,他只會關心資訊中他所感興趣的一部份,其它的視角對他來說沒有多大意義。因此在展示資訊時選擇適當的視角並展示給適當的觀察者是十分必要的。

五、物件分析方法

物件分析方法具有以下特性:

。一切都是物件

。物件是獨立的

。物件都具有原子性

。物件都是可抽象的

。物件都有層次性

以下為物件分析方法**:

切記:當明白以上這些本質後,對以後能快速理解建模有著非常重要的意義。

我教你學之登錄檔基礎篇

1.1 登錄檔的概念 windows的登錄檔實質上是乙個龐大的資料庫,用來儲存計算機軟硬體的各種配置資訊其內容有幾下幾個方面 1.2 登錄檔與早期ini檔案的區別 在早期的windows作業系統中 如windows 3.x 中是通過兩個擴充套件名為ini的檔案 system.ini和win.ini ...

身為學霸的我學習linux系統之基礎篇

大學的我是乙個很上進的學生,我們學校有乙個eda實驗室,裡面的師哥師姐都很厲害,經常參加學校裡的一些電子類競賽,還有機會參加省內的電子競賽,並且成績好的還進了國賽。看著他們可以學到課堂上學不到的東西,可以做自己想做的事情,真的好羨慕啊。一次機會,eda實驗室的老師要招人,當時很高興,興沖沖的就去找老...

重構之路系列 首篇之我對重構的看法

首先承認,我不是牛人,並且距牛人也差的很遠。雖然有三年多的.net開發經驗和若干年的front end開發經驗,但是對於.net,當然也可以說是c 了解的並不多。由於所在公司的原因,我在從第一家軟體公司跳槽後基本就是處於吃老本的姿態。因為對於我現在的公司而言,專案的穩定性是第一位的,至於projec...