UML/OOAD好書很多,而且有許多是台灣沒有翻譯的,有些或許有簡體版,但讀起來仍然覺得無法理解,於是有了想要為讀者挑書、讀書兼做心得筆記的想法。

原則上,筆者除了挑選台灣未翻譯的UML/OOAD書籍,針對書籍內容也會有所挑選。一本書的內容有深有淺、有實用有理論、有原著作者擅長或不擅長的主題。所以,一般讀者根本不需從頭讀到尾,時間就是金錢,寧可遵守80/20法則,只花二成時間讀完既關鍵又實用的八成內容。

緣起
其實,我會注意到Peter Coad在1999年出版的《Java Modeling In Color With UML: Enterprise Components and Process》這本書,是因為多年前讀了他在1996年出版的《Object Models: Strategies, Patterns, and Applications》。1996年的那書提到了「交易樣式」(transaction patterns),讓我受益良多,也讓我成為交易樣式的愛用者。

所以,台灣書局進口1999年版的這書時,我才會特別有印象。不過,當時也沒真的買來看,一方面它的書名提到了Java,那時我對Java不熟,另一方面也是跟很多人同樣的藉口—沒時間讀書。至於,對於進口原文書高價位卻步,這就不用說了,相信大家都心知肚明。

在今年8月份UML互助會針對《Design Patterns: Elements of Reusable Object-Oriented Software》一書辦了個讀書會,討論期間,我提到了交易樣式的概念,事後有夥伴跟我提到交易樣式的概念跟《Java Modeling In Color With UML: Enterprise Components and Process》一書中「四色原型」(four archetypes in color)的概念很像。

所以,就在這麼錯過這本書快10年之後,讓我再度興起找這本書來讀讀的想法,反正如果這是本好書,應該經得起10年考驗,舊書今讀,也不賴!

章節結構
四色原型這本書的章節安排挺簡單的,全書正文大約200頁分為6章,第1章簡要說明四色原型的概念,第2~5章則將四色原型的概念應用到數個不同的常見領域中,最後的第6章則提到「特徵驅動開發」(Feature-Driven Development,FDD)。

先說我的挑讀方式,詳讀第1章和第6章,第2~5章挑其中一章比較簡單易懂的領域來讀,其餘章節就先擱著了,日後如果有用到四色原型的概念且遇到其他章節提到的領域時,再回頭來讀。

決定詳讀第1章理由明顯,因為這一章是四色原型的基本概念。至於,挑讀第6章是因為這一章在談FDD,看起來似乎是一種新的軟體開發方式,而且在2002 年出版了《A Practical Guide to Feature-Driven Development》一書,正是在談FDD的應用。我有聽過FDD這個詞,但沒有真的花時間去理解它,所以我可以從第6章初步接觸FDD,判斷是否要找FDD的書來研究一下。

四色原型
「四色原型」是這本書的主要賣點,簡單來說,四色原型是指跨領域、領域中立(domain-neutral)、或者說不侷限特定領域的四種原始的抽象概念,有助於我們定義出不同領域的領域類別(domain class),並且利用四個顏色—粉紅色、黃色、綠色、藍色來表達這四種類別原型。如果,我們套上UML用語的話,可以說,四色原型會有助於建構UML類別圖(class diagram)。

到目前為止,我有下列三個主要疑問,後續小節我也會針對這三個主要問題來探討,問題如下:

1.四色原型是指哪四種類別原型,它們的意義為何?
2.為什麼要用顏色建模,可有什麼好處?
3.四色原型跟交易樣式有什麼關係?

四種類別原型
Peter Coad從多年豐富的實務經驗中發現,在多種不同的領域中,可以抽象出四個彼此相關的類別原型(class archetype)。同時,他也將發現到的四個類別原型,再次應用到更多的異質領域中,證實了四色原型的共同性與實用性。

這四個類別原型的名稱及代表色,如下:

1. 時間片段原型(the moment-interval archetype)—粉紅色。
2. 角色原型(the role archetype)—黃色。
3. 人(組織)、地、物原型(the“party, place or thing”archetype)—綠色。
4. 敘述原型(the description archetype)—藍色。

時間片段原型
時間片段原型是四個原型中,最重要的一個,它在表達一段重要的時間片段。在某一個時間片段,我們可能做了某件需要被記錄,以便日後可以進行追蹤的工作或事情。當然,我們不會以時間片段為名,通常會已發生了什麼樣的事情,或者執行了什麼樣的工作,當做類別的名稱。

例如,我前兩天在網拍網站買了一台榨汁機,賣家指定超商取件,所以在匯款之後我得透過物流配送系統告知取件的資訊,賣家就會將貨品配送到我指定的超商門市。從身為買家的我上線登錄取件資訊,一直到我到超商真正取回貨品,這是一段重要的時間片段,如圖1所示。


圖1:取件的時間片段


此時,我們可以套用時間片段原型的概念,用來記錄這段重要的取件時間片段,如圖2所示。


圖2:取件


再看一個租借的範例,像是租借影片、書籍、車輛等等中的租借時段,其實都是時間片段原型的應用,如圖3所示。


圖3:租借


時間片段原型不僅能應用於一段時間,也可以應用於一個瞬間。比方說,我去便利超商買東西時,便利超商的 POS 系統(point of sale system)只需要記錄銷售發生的時間,像一個時間印記,或者說是一個時間瞬間,如圖4所示。


圖4:銷售


由於,時間片段原型會將其他原型連繫在一起,它是核心又像是靈魂,所以在顏色的考量上,給予它像心臟般醒目的粉紅色。再者,也考量到黑白印刷或手繪等等,不易顯現顏色的情況,所以同時採用《moment-interval》字眼,用以標示出時間片段原型。

額外說明的是,時間片段可能有會有需要獨立出來的細節,這時可以有另一個標記《mi-detail》的粉紅色類別,代表時間片段的細節,如圖5所示。


圖5:時間片段與其細節


例如,一般的賣場銷售就經常有一大串的細節,這時可以同時使用時間片段與時間片段細節的概念,如圖6所示。


圖6:銷售與銷售細項



作者簡介:
邱郁惠
研究OOAD、UML、MDA十餘年,經歷過顧問、專案、教學及寫作工作。離職後創辦UML Blog推廣UML,組織《UML互助會》社群定期舉辦軟體技術講座,出版多本UML專業書籍與電子書。目前擁有OCUP/UML三級認證、PMP認證。角色原型
第二重要的原型是「角色」原型(role archetype),它的代表色是顯眼的黃色,字標為《role》,如圖7所示。


圖7:角色原型


一個人在不同的時刻中,可能扮演著不同的角色,在公司扮演員工,回到家裡扮演父母。人是用不同的角色來參與不同時間片段中的事件、情境。例如,在網拍平台上,針對不同的交易,個人有時扮演買方,有時扮演賣方,這就是角色原型的應用了,如圖8所示。


圖8:賣方和買方都是角色


或者,有許多商家也開始在網拍市場中提供商品、扮演賣方,所以賣方的角色也可能由個人或公司組織來扮演,如圖9所示。


圖9:個人和商家都可能扮演賣方角色


既然,四色原型彼此相關聯,我們也可以試著將角色原型和時間片段原型兜在一起,一塊套用,形成如圖10的模樣。


圖10:角色原型與時間片段原型


不過,角色原型談的更廣泛,包括人、組織、地、物都可能在扮演不同的角色。人或組織扮演不同的角色,這個觀念比較容易理解,至於地、物扮演角色的觀念比較不直覺,書中也沒有多做解釋,不太理解,想了很久也想不到什麼樣適當的範例,所以翻了翻書中的範例,節錄了局部,關於物與角色的例子。

先看到圖11的例子,產品(Product)是物品(thing),已售產品(ProductBeingSold)是它的角色。不太懂?再看圖12的例子,物料(MatlResource)是物品,已訂物料(MatlBeingOrdered)和已用物料(MatlBeingUsed)都是它的角色。好像有點懂了!


圖11:產品與已售產品(節錄自Pater Coad的書)



圖12:物料、已訂物料與已用物料(節錄自Pater Coad的書)


分析Peter Coad書中的範例,我覺得物品的角色更像是物品的「狀態」(state),也就是說,Peter Coad把物品的狀態當作是物品的角色。我想應該還會有不同的解釋,這是我目前的想法,寫出來供您參考!

於是,我自己試著舉一個圖書館借書的範例,每一本書都有三個重要的狀態—預約書、借出書、館藏書,所以我依照這三個狀態設計出書籍的三個角色,如圖13所示。


圖13:書籍與其三個角色


至於,地方(place)的角色,我也比照狀態的概念,舉了個停車位的範例,每一個停車位有兩個重要的狀態—已停車位或空車位,所以我同樣依照這兩個狀態設計出停車位的兩個角色,如圖14所示。


圖14:停車位、已停車位與空車位


下一期再繼續介紹其他二種概念原型,包括敘述原型以及人(組織)、地、物原型。

此外,這系列還有另外3期,將分別探討為什麼Peter Coad會採用這四種顏色建模,四色原型和一般常見的交易樣式有什麼關係。還會講解書中的範例,讓讀者能夠了解四色原型如何運用。最後會談到在「特徵驅動開發」中,要如何運用四色原型,敬請期待。



作者簡介:
邱郁惠
研究OOAD、UML、MDA十餘年,經歷過顧問、專案、教學及寫作工作。離職後創辦UML Blog推廣UML,組織《UML互助會》社群定期舉辦軟體技術講座,出版多本UML專業書籍與電子書。目前擁有OCUP/UML三級認證、PMP認證。

熱門新聞

Advertisement