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