簡易軟件開發流程
實踐中,use case and description、class diagram與sequence diagram三者搭配,幾乎是UML項目的基本類型,所以在分工或外包的設計文檔中,通常少不了這三款UML圖。常見的開發程序是並行建構use case、description與class diagram,接着才構建sequence diagram以及按圖編碼,如下圖所示。

一個軟件系統,對外提供各種服務(use case描述)。外部行為由於環境、市場、政策等等因素具有動態行為以及不可預測性。無論系統對外服務多么不確定性,運作方式差異多么大,他所依賴的系統內部結構都是穩定的。一個系統只有一個內部結構,class diagram正是描述系統內部這種未定的靜態結構。軟件開發過程中,class diagram不是一蹴而就的,需要與use case、sequence diagram多次迭代更新后才能逐步穩定下來。
上圖涉及的三種UML圖功能如下:
use case:表示系統對外提供的服務
sequence diagram:表示軟件內部對象交互的情況。
class diagram:用來呈現系統內部的靜態結構,而這樣的靜態結構通常可以直接對應代碼,因此,從程序員的角度來看,類圖是最值得關注的UML圖。
association
在OO的認識論中,世界的本質是由對象組成的,平時看上去相互無關的獨立對象在不同驅動力和規則的作用下體現出不同的運動過程,然后這些過程便展現出了我們這個生動的世界。在軟件設計中,我們往往采用領域術語做類,識別類的具體手段有軟件專家Sally Shlaer和Stephen J.Mellor提出的對象種類理論,以及軟件專家Peter Coad提出的transaction patterns。本文的重點不是如何設計類,而是如何刻畫類與類之間的關系。

類與類之間的關系,有過C++等面向對象語言基礎的人很容易理解。上圖對應的inheritance、access level、virtual class在C++中都有語法支撐,大多數C++程序員很容易理解這些概念。
對象之間的關系則要豐富的多。C++中我們使用類來描述某種事物的共同特性,使用對象來描述具體事務的共同特性的實際值,有的甚至還有個性的實際值。對象很少獨立存在,通常會與其他種類的對量產生關系,達到1+1>2的效果。本文重點講述對象與對象之間的關系,不過雖說是對象之間的關系,但是體現在class diagram上還是在類與類之間建立聯系,用來表達兩個類所產生對象之間的關系。
static relationship
static relationship包括association、aggregation、composition。這三種關系在C++類定義代碼里面可以直接體現出來,才C++中attributes、static relationship的實現方法相同,都當作靜態的數據來處理,因此static relationship也會想attributes一樣收到access level的限制,進而影響到子類繼承后的使用情況。static relationship中最常見的又是association,只要兩個對相見需要協作,都能和association扯上勾
