四色原型分析與SpecFlow

  • 3604
  • 0

摘要:四色原型分析與SpecFlow

源起:

物件導向系統,建立一個領域模型是首要之事,模型的好壞幾乎決定了系統的所有面向。一直以來,只有四色原型在這一塊上建立理論。

四色原型:

有興趣的人可去先去研讀http://www.ithome.com.tw/itadm/article.php?c=52750。對四種原型如何取用,我已經翻來覆去思考了好幾年。可以大略這麼解釋,所有的活動都是交易,有各種人事物會參予,結束後狀態會改變,並留下一條記錄,何年何月何日誰誰誰一起做了什麼,最後的結果是什麼。有些東西很固定,參予活動卻不會改變狀態,而且可以拿來解釋另一個東西。有時候我們會為了參加活動的不同,而建立不同的身份。

紅色(Moment-Interval):

是一種活動、交易記錄,一定有個時間的欄位,標示發生的時間。

綠色(Party-Place-Thing):

人事地,交易的元素。

藍色(Description):

對綠色的描述,或是綠色的群集,不會在活動中改變屬性。

黃色(Role):

可以從兩個方面來思考。
1、Permission:用來呈現綠色的實體可以加入什麼紅色的活動
2、State Pattern:狀態模式,每參加完一個活動,就產生一個狀態物件,可以放狀態的邏輯

NPetshop的Shopping模型

1、Petshop是很奇怪的,它可以一次買好幾隻狗,所以Item上有單價與數量。賣出後,數量會有所異動。我之所以沒把Item當成綠色,是因為它沒有狀態,一群狗會有什麼狀態?可以擁有狀態是綠色的特徵。
2、灰色的Shopping是DDD中Value Object的概念,Shopping只是Memory中的物件,一個暫時的容器。
3、CreditCard與Address一樣是Value Object的概念。

Feature

伴隨四色原型分析,是Feature Driven Development的方法論。當我們擁有一個Domain Model,就可以建立feature來描述整理我們的需求。

feature的語法如後:action result (by|for|of|to) a(n) object
feature Set的語法如後:action(ing) a(n) object,一個feature Set包含很多feature
Subject Area的語法如後:object management,一個Subject Area包含很多feature
 
feature Set:CheckOut Order
features:
    make new Order for Shopping
    assign Credit Card to Order
    assign BillingAddress to Order
    assign ShippingAddress to Order
    decrease Quantity for Item

SpecFlow

又或者搭配BDD框架,可以寫成如下的語法,好像測試性更好

Feature: CheckOut Order

Scenario: Make new Order for Shopping
Given Price Of Koi is NT18.5
And I have buy 5 Kois into the Shopping
When I Make New Order
Then TotalPrice Of the Order should be NT92.5

程式

目前的程式架構如下,可以開始來設計系統了。