四色原型的思考

yananay發表於2009-05-27
學習四色原型有一段時間了,不過始終學得不明不白。與之相比,DDD倒是比較簡單,實踐起來也比較容易。今天又看了一些四色原型的文章,有點心得,到這和大家討論一下吧!不過我們們還是和DDD進行參照著討論。

1、領域物件 與 MI

首先是DDD。DDD的重點是“領域物件”,一切複雜過程的結果,落實到紙面上的,其實就是領域物件的關係圖,說得更直白一些,其實就是 類圖。這並不奇怪,因為DDD其實就是物件導向設計的精華。

那麼四色原型呢?它的重點是"MI",這並非本人亂扯,原書就是這麼寫的。那麼 moment-interval 是啥呢?其實就是一個“動詞”,我的理解是他一定是一個“動詞”,例如 銷售,記賬,傳送 等等。那麼什麼樣的動詞應該被歸納為 MI 呢?我的理解就是 DDD 的分析過程中,所指的“關鍵性動詞”。業務雖然複雜,但是最後我們總是能歸納出關鍵性的動詞,這些動詞其實也就是我們業務模型的核心。

這裡尤其想討論的一點:
jdon 上包括其他很多人的觀點是:MI 相當於 DDD 中的service。我想說這是嚴重的誤人子弟。在 DDD 中,一個關鍵性的動作不可能存在於 service 中,而是應該存在於 領域物件中。所以結論就是: MI 不是 DDD 中的任何東西,而且 MI 的一些方法有可能會歸結到領域物件中。甚至,MI直接就是一個領域模型。
(以上是我個人觀點,正確與否大家討論)

2、ppt 和 role

雖然四色原型的作者告訴我們:Role 是第二位重要的元素,但是我覺得 ppt 其實和 role 是同樣重要的,尤其更多的時候,當你沒有分析出 ppt 的時候,你也分析不出來 role。
例如,車是一個 ppt,壞掉的車則是車的一個role,良好的車也是車的一個role。在這種情況下,我們需要先分析出 ppt 這個東西。

誤區:大家一提到 role,就必然聯想到人。可實際上,在四色原型的分析方式裡,很多物品也可以作為role。所以,很多人會把物品之類“沒有生命的東西”分析成ppt,或者一個ppt的多個狀態,這都是錯的。

3、desc

desc這個元素是起到描述性作用的。大家都說它相當於 DDD 中的值物件,我覺得很正確----至少有助於理解這個抽象的東西。

4、四色原型,DDD 到底應該選擇哪個?

四色原型其實正如其名字一樣,是一種分析模式,而不是設計模式
所以,分析階段採用四色原型,而在設計階段採用 DDD 應該是可以的。
不過---------在我的實際體會中,並沒有遇到過如此複雜的系統,需要用四色原型去分析明白,然後用 DDD 去設計的,都是憑藉分析關鍵的字詞,簡單的討論,畫一些交流的圖,然後就可以歸納出領域物件,領域物件都有了,四色原型也就沒有用了。

所以,在我看來,四色原型更像是一個學術理論的東西,雖然它可以幫助你分析一個業務如何設計更合理,但是它並不是必需的,而且遵循著迭代的模式,與其分析四色原型,不如畫一些草紙,隨時討論來得方便。
即使是設計一些比較底層的架構,我也仍然認為不斷的迭代,重構,分析領域模型會來得更快。

照這麼說不是白學了?非也!分析階段,適當的執行四色原型會有好處的,請注意:適當。

歡迎大家討論~

[該貼被yananay於2009-05-27 15:16修改過]

[該貼被admin於2009-06-03 13:42修改過]

相關文章