UML - 1 用於敏捷開發的總結

UML的使用方式 
草稿 
藍本 
開發語言

在敏捷開發中我們常以草稿的方式來使用UML。 
 
敏捷開發中我們常用到的圖是類圖跟序列圖。我們用這兩種圖來分析識別領域模型。這些圖形識別出來的概念將形成我們對相關領域描述的一套語言。

1.類圖(Class Diagram)

用來描述對象的類型,是對靜態信息的描述。這些靜態的信息包括類的特性(Features)跟類之間的關係及限制。

- 相關概念

類的特性包括性質(Property)跟操作(Operation)。

 Property包括類的屬性(Attribute)跟關聯(Association)。

 注意操作(Operation)跟方法(Method)的區別。

Operation是過程的聲明。Method是過程的具體實現。這個區別在存在多態的時候比較容易解釋。比如,我們父類裏有doAction(),在不同的子類中有不同的實現。在這種情況下,我們可以說我們有一個operation,並有多個Method的實現。

Generalization, 從軟件開發的角度來看,用繼承(inheritance)可以很好地闡述這個問題。判斷繼承的一個重要原則是李氏替換原則(Liskov Substitution Principle - LSP)。

依賴(Dependency),如果一個單元的相關定義的變換會引起其他單元的變化,我們就可認定着兩者間存在依賴。在軟件設計時。
通過辨識依賴我們可以分析設計在依賴方面的問題。通常我們要做到單向的依賴,環狀依賴的形成是需要我們特別注意避免的。另外,我們儘量要依賴於穩定的單元。接口相對於具體實現要穩定。
根據依賴的定義,其實association,generalization都確立了類之間的依賴關係。但在圖形表達時我們要根據想要表達的核心意圖來選擇是用依賴來表示還是association或generalization。
依賴的傳遞性上是根據具體依賴的種類不同決定的。一般的依賴不具傳遞性。有的也有傳遞性,比如繼承。

-注意點 
在我們識別generalization關係時,注意區分分類(classification)這個概念。原因是generalization是可傳遞的,classification是不傳遞的,它是描述對象跟類型之間的關係。比如,猴子是靈長目,靈長目是動物。靈長目是動物按目的一種分類。我們嘗試應用傳遞關係來組織一下。我們可以說猴子是動物,但我們不能說猴子是動物按目的一種分類。注意這裏“靈長目是動物按目的一種分類”是classification。所以注意這裏“是”的關係不都是generalization。

2.序列圖(Sequence Diagram) 
序列圖是交互圖(Interaction Diagram)的一種。交互圖描述某些行爲上對象之間(注意是對象之間,不是類。另外有可能不僅僅是類的對象之間,可能還有其他參與者)的相互協作的關係。序列圖用來幫助我們捕獲一個場景下的行爲。畫序列圖時,我們常針對一個use case進行,找出實例對象以及他們之間交互的信息來進行圖示。

-作用 
此圖不能清楚地描述算法,但它能清楚地描述出調用關係。這很符合我們敏捷開發的需求。作爲草圖我們無需關注太多算法細節。 
此圖能清楚地辨析出各個對象的職責。作爲OO開發的入門或初級用戶,往往容易寫出集中控制(centralized control)的代碼,因爲這樣更加貼合過程式的思維習慣。而我們提倡分佈的邏輯控制(distributed control),就是把數據跟行爲緊密結合到單一職責的對象上。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章