[转]四色原型图
四色原型是誕生于90年代,現在被廣泛使用的一種系統分析方法,如Borland的Together架構師版,準確地說,是由Peter Coad 和 Mark Mayfield首先提出[Coad92],然后由David North拓展[Coad95-97]
前面已經說過,域建模是整個軟件系統的龍頭,在現代Java技術如JiveJdon3.0開始之前,我們都是需要領域建模,也就是在UML中畫出類圖,然后標記上類圖四種關系(關聯、依賴、繼承和實現),但是這些只是UML圖的表面,只是一種畫圖技巧,就象CAD畫圖一樣,你可能沒有被告知:這個類圖是怎么出來的?為什么選用關聯而不是依賴,這些實際都屬于分析領域的知識,而四色圖可以說為我們這種分析提煉提供了一種模板或分析框架,這樣我們可以按圖索驥去分析每個陌生的系統,我們擁有強大的分析方法工具。
moment-interval archetype
這是一個很重要的原型,重要在于時間概念上:某個時刻(moment)或一段很短時間(interval)內. 意味在某個時刻發生的事情因為業務要求或合法性原因需要跟蹤;或者過一段時間以后,應該是很短的時間,可以幫助我們尋找到它。
賣東西是在某個時刻發生的,它有發生日期和時間。租賃行為是在一段時間內發生,從開始出租和歸還所租物品;預定也是持續一段時間,什么時候預定;什么時候過期等。
這些我們都使用moment-interval原型來表達,UML圖如下:
?? ??
Moment-intervals是和組件模型捆綁在一起,代表了組件模塊關注的核心和靈魂,在一個Model中,Moment-intervals經常封裝的是最關鍵的方法,為讓其顯目,moment-interval的UML圖我們使用粉紅顏色表示。在代碼上用@標識符標識:
/** @archetype moment-interval*/
public class Sale {
public BigDecimal calcTotal(){
}
private int number;
private Date date;
}
在任何領域中,我們都能尋找moment-intervals原型并且開始建模,在原材料資源管理系統中,我們可以這樣對待從報價單(RFQ)到購買訂單(PO)直至發票,在一個制造管理系統中,我們也就可以將一個計劃的過程和步驟分析到實際過程和詳細步驟。
原型在幫助指導建模方面一個有效方式是:它能標識那些被包含在Model模型中的類(Classes)以便于區分,原型不只是簡化了類的區別;原型還可以區分類的行為職責(responsibilities),例如類的屬性,方法等。
role archetype
角色原型比較容易理解,任何一個系統都需要人或某個組織介入運行,例如論壇系統需要注冊者角色發言;銷售訂單需要業務員角色制定,等等。
這里有一個Party原型定義:它表示一個可標識、可定位的單元,這個單元有自己正常的狀態并且能夠自主控制自己的一些行為,通常情況下,人或組織是一種Party,但象護照,身份證等注冊性標志等都可以作為Party。
注意,并不是說Party或人或組織就是Role原型,必須Party或人或組織參與一種活動后才為角色,就象張三在電影中表演皇帝,他只有參與電影表演才是皇帝角色;李四在XX公司的角色才是經理,他只有參與這家公司運作才是角色經理;否則他們只是一個Party原型。
所以,Role角色是Party扮演的(a role that a Party plays),Party是角色Role的扮演者(role-player)。
當我們在建模時,對于一個角色扮演者,可以有他自己的核心屬性如名稱、年齡(以人為例子),也可以有與業務相關的方法,比如一個小店,當店老板去收錢時,他的角色就是收銀員(cashier),此時可以將與收銀員角色相關業務特點加于其上;當然,同時他也可以是老板(Owner)角色。那么下圖中authorizedFor方法就是參與每個角色的行為,當他作為某個角色被授權登錄后,與此角色相關的業務特點就應用在他身上。
大家已經注意到了:角色原型在UML中是使用黃顏色標識的。角色模型是第二重要的原型,所以使用黃色。
我們已經知道,Party是一個又自主行為、能夠控制自己行為的表示,如人或組織,還有其他沒有自主行為的表示,也就是某個地方或位置或某個事情,我們一般稱( place, or thing),不但Party可以成為角色,而且 place或thing也可以成為角色,比如,一個商品Product可能又兩種角色:在銷售過程中商品;正在使用的商品。
party, place, or thing archetype
上面我們說過,party place或thing都可以成為角色原型,注意到角色原型中的UML圖,party圖是以綠色表達。
Party表示有自己正常的狀態并且能夠自主控制自己的一些行為,通常情況下,人或組織是一種Party,但象護照,身份證等注冊性標志等都可以作為Party。
Place or thing表示一樣不會說話沒有行為的東西,例如商品,當然這個商品可以扮演不同角色,既可以是零售的一個電源插座;也可以批發系統中的一個電源插座,它是被賣的,可能在不同業務系統被賣的方式不一樣。
description archetype
種類description原型其實是第三重要的原型,一般情況下,它類似目錄級別catalog-entry-like的種類,例如某個商品電源插座屬于家用電器這個種類,當然家用電器又屬于電器這個目錄,是一個樹形的目錄結構。例如論壇中帖子和回帖之間也是一種種類原型。
比如你的紅色福克斯是福特生產的一輛轎車,它有車牌號、購買日期、顏色和里程表等,這些代表Thing原型,那么作為轎車這個種類來說,它有一些種類屬性,例如:生產廠家、生產批號、適用顏色等,這些屬性是轎車這類所有車輛都共有的。
在設計模式這個實現級別,我們通常使用組合模式來實現種類原型。
Description原型在UML中使用藍色表達。
四色原型圖
每個原型圖有屬性和連接(關聯 依賴等關系)兩個部分組成。
=====================分割線====================
?
2.5.?舉例
比如,“人”就是一個Desc,而“亞洲人”、“黃種人”也是一個Desc,亞洲人和黃種人都屬于“人”這個Desc的子Desc,即Desc可以是一個樹結構。
具體到每一個人的時候,“張三”、“李四”就是一個PPT了。因為張三和李四是獨一無二的,他們都有唯一標識符可以被識別、區分(比如身份証號、指紋等,視不同的系統需求采用不同的唯一標識)。
?
?
2.6.?總結
如果以PPT為中心,那么以上概念可以總結為:什么東西(人或事物)通過什么方式(身份)進行什么操作(業務)。
即當?PPT是Role時,可以調用MI。例如當張三是學生時,可以去上課。
如果以Desc為中心,那么以上概念可以總結為:什么什么類型的東西進行什么操作(業務)。
即MI調用Desc。例如人都可以睡覺。
規則1:PPT不能直接與 MI打交道,它必須通過Role或者Desc才能操縱MI。
為什么要隔絕MI直接訪問 PPT?
如果MI直接訪問PPT會帶來以下問題:
1.?PPT如果直接參與MI,那么PPT就會擁有MI 環境中的屬性,比如電腦在維修時必須記錄維修結果,在銷售時必須記錄售價,那么PPT隨著MI的增加會不斷地膨脹,每增加一種MI,PPT就要修改一次。
2.?兩個MI之間業務是完全不同的,PPT中有些屬性對某一個MI來說,根本是無用的。例如電腦的價格,對維修來說是無用的。
3.?MI直接使用PPT,還會帶來MI之間的資料隔絕性問題。有些PPT的屬性對某一MI是不允許訪問的,如果MI直接使用PPT,那么就無法保密資料。
例如,電腦的折扣可能是保密的,不應該讓維修知道。
增加Role之后,上述問題迎刃而解:
每增加一種PPT,就相應地增加一個 Role,凡是與此MI相關的屬性,都放在Role中。這樣既避免了PPT的頻繁修改,也避免了資料訪問的問題。
可以這么描述Role:只有當事物(PPT)具有某個身份(Role)時,它才擁有與業務(MI)相關的屬性(字段和方法)。
4.?特征驅動開發
4.1.?特征
特征是一個具有客戶價值的功能。
特征描述的模板:
<action>?the?<result>?<by?|?for?|?of?|?to>?a(n)?<object>
object表示一個人、地點或物品,即包括角色、時刻時段、分類目錄條目的描述。
例如:
Calculate?the?total?of?a?sale(計算一次銷售的總額)。
Calculate?the?total?purchase?by?a?customer(計算一個客戶總采購額)。
4.2.?特征集
特征集是一組業務上相關的特征。
特征集描述的模板:
<action><-ing>?a(n)?<object>
<object>?management
例如:
making?a?product?sale(進行一次產品銷售)。
5.?為什么需要四色原型分析
一個模塊,必須有活動(MI)、參加活動的對象(Role),以及活動資源(PPT),才能組成一個有業務含義的模塊。
?
?
總結
- 上一篇: 主流分辨率
- 下一篇: matlab中分析时域波形,实验1 信号