分析樣式:預約與使用可重複運用物體

(An Analysis Pattern for Reservation and Use of Reusable Entities)

作者

Eduardo B. Fernandez and Xiaohong Yuan

Dept. of Computer Science and Engineering,

Florida Atlantic University

Boca Raton, FL 33431

ed | xhyuan @cse.fau.edu

 

譯者

邱志良 Arthur@swTaiwan.com

HTTP://www.swTaiwan.com

摘要

本分析樣式(Analysis Pattern)描述如何預約與使用可重複運用的物體,以使用案例(Use Case)定義需求,並以類別模型(Class Model)、狀態圖(State Diagram)、與循序圖(Sequence Diagram)進行細部描述。同時,本樣式也相當於一個最小且完整的語意 (Semantic) 單元。

 

1. 簡介說明

本文將介紹一個分析樣式,以對於可重複運用個體進行預約與後續使用。由於此樣式強調應用模型的語意,而非著重於彈性的加強,因此可歸類為[Fer98]中所稱的語意分析樣式。

我們認為,從需求開始模塑,將使得這些樣式更為實用。舉例來說,從需求中找出一些樣式,以得到初始雛形模式,可以做為後續設計的指引方針,更進而設計出系統框架與軟體元件。

在樣式中,我們將會把焦點集中在預約行為,而暫且不提相關的擴充、例外、與其他變化;因為這些都可以稍後再行加入,以制定成專門描述預約所用的樣式語言。

 

2. 問題敘述

客戶(例如個人或是機構)需對可重複運用個體(例如旅館房間、交通工具、表演會座位)進行預約,隨後才能實際使用。而這些個體則依照其種類,或性質的近似程度,劃分為不同群組,並且都有數量上的限制。

這也意謂著,預約時需要指定個體的種類,與將使用的日期。如果該欲預約的種類仍有空餘的個體,則先為客戶預留下來;但要到實際使用時,才會真的配置個體,並且留下使用紀錄。

需注意的是,這些個體都是可以被重複運用的。客戶並不永久佔有個體,而只是擁有權利,在一段特定的時間中使用它們。也就是說,使用紀錄(不管是明列或者是暗示)將同時扮演著合約的角色,載明著使用人需負責讓物體保持在良好的狀態,並於使用後歸還。

圖一顯示顧客預約旅館房間的類別圖(Class Diagram)。其中,『Customer』與『Room』兩個類別(Class)間的關係(Association),描述著顧客每一次的預約;『Reservation』這個關聯類別(Association Class),則記載著一般預約時所需的相關資訊。 類別『Availability』說明房間結構與佔用的情形。

 

圖一、預約旅館房間

 

3. 依循原則

此處依循下列 原則:

l          遵從一般分析原則:分析模型必須忠實反映需求,並且剔除實作的細節。

l          基礎的語意:樣式必須呈現一個基礎的語意單元,具備單純與簡潔的性質,並且要能涵蓋許多變異的情況。這種手法在n[Ngu98] 中,被稱為「極小化(Minimal)」的應用。

l          模塑現實世界的文件:預約紀錄與使用紀錄除了存在於軟體系統中外,通常還會留下實體紙張的文件。

 

樣式描述語言(Pattern Language)也需包含便利且有效率的客戶服務(例如包含排隊設施),以及可靠度的保障(例如包含例外情形處理的條款)

 

4. 解決方案

4.1 需求

解決方案需實現以下的使用案例:

l          預約:參與者(Actor)為客戶(可以是個人或機構);要求從某日開始,在一段指定的期間內,預備使用一個指定種類的物體。如果該類仍有空餘的物體,則准以登錄,相關資訊則記載於預約記錄文件內。

l          使用已預約的個體:本使用案例的參與者,與預約使用案例中的參與者相同;使用個體前需先產生使用記錄,並且在使用完畢後,歸還物體以供後續運用。

l          變更預約內容: 對已經存在的預約記錄進行修改,意謂著將更改預約內容並取消舊的預約。

l          取消預約:對已經存在的預約記錄進行取消作業,某些機構並制定取消預約的後續處理原則。

 

請注意預約與取消預約時,都需要有變更預約內容的功能。此外,上列使用案例已經省略了例外流程的處理說明。

 

4.2 類別模型

圖二是完成上述使用案例所需的類別圖分析。圖中區別了可預約物體的種類(Entity_Type』類別),以及到使用時才真實分配的獨立個體(Entity』類別)。『UseRecord』類別代表使用記錄;『Availability』類別表達了需對物體佔用情形,進行檢查與追蹤的通用概念;至於『Reservation』類別則包含一般預約記錄中的資訊。『Reservation』類別與『UseRecord』類別之間的關係,指明了使用記錄需立基於預約資訊上。

 

圖二、預約與使用樣式的類別圖

 

4.3 動態觀點

圖三與圖四顯示了最重要類別的狀態圖。例如,預約可能處於”Created”狀態或者 “Confirmed”狀態。圖五的循序圖則描述了預約與後續使用的場景。

圖三、『Reservation』類別的狀態圖

 

 

圖四、『UseRecord』類別的狀態圖

 

圖五、預約與使用的循序圖

 

 

5. 後續推論

本樣式可引導出以下推論:

l          本樣式適用於旅館房間預約、大樓會議場地預約、飛機座位預約、表演會座位預約、書籍與錄影帶的預約等。如此多樣的變化應用,代表本式樣已經掌握了這類問題的基礎論點。同時,它也相單簡單易懂。

l          本樣式呈現了使用案例中所有的觀點,但又不涉及實作。

l          類別模型中明確模塑了『Reservation』類別與『UseRecord』類別,以忠實對應這類系統中的基本文件。這將使得保存預約與使用的歷史記錄變得容易,並且也明示『UseRecord』類別即扮演法律合約的角色。

 

但是,本樣式所提及的情境也非完全一成不變:

l          當預約表演會座位或是飛機航班座位時,會取得實體的門票或機票;但是當預約交通工具或是旅館房間時,即便有確認函,也沒有實體的門票。在此,門票或機票也同時代表合約。

l          關於汽車的預約,在實際取車時,預約記錄會被明確地轉換為合約;相對地,旅館預約則在顧客住宿登入時轉換成合約。

l          對於汽車與旅館房間預約作業,特定物體要到實際使用時才予以分配;但是對於表演會座位與飛機航班座位的預約作業而言,預約時就已分派了實際的位置。

l          有些物體(例如汽車、房間)是以日期區間來預約;而其他物體(例如飛機航班座位)則可能以特定事件為單位來預約。

l          合約可能在無事先預約的情形下產生;而預約後也可能不會去使用。

 

同時,還有好些論點也未曾提及:

l          對於物體週邊環境的描述。例如,以飛機座位來看,就還牽涉到航機、機場、中途降落點的數目等。

l          如何追蹤物體可用的空餘數量。

l          當物體完全沒有空餘時,如何讓這些預約請求排隊等候。

l          如何處理具優先權的客戶。

l          帳單處理。

l          歷史記錄處理。

 

最後,例外處理流程也暫時擱置,例如:預約後卻不使用的情形、接受超額預約的情形等。這些方面都可以在制定樣式描述語言,或者樣式家族時,再予以一並考量,我們將之保留成未來的工作項目。

 

6. 應用案例

我們在文獻與經驗裡,找到了以下這些應用情形:

l          [Bak97] 為表演會或飛機航班預約座位

l          [Fer98a] 預約旅館房間

l          [SA98] 預約交通工具

l          [Fer98a] 預約圖書館中的書籍

l          [Fer98a][Joh96] 預約錄影帶出租店中的錄影帶

 

6. 相關樣式

NATURE計畫中有些樣式,例如資源配置與資源使用的樣式,從不同的角度,強調了一些相同的觀點;Coad [Coa97] 中提到的資源請求樣式也有些共通性質;Fowler [Fow97] 同樣討論資源配置與規劃;[Fer97]中的預約與隨後的生產單元配置,則與本樣式有些一致的看法。但是,以上這些相關樣式中,物體都不能被重複運用,而且也不需存留使用紀錄。

[Bra98] 中提到書籍與錄影帶的預約,但是並未考量使用被預約物體的情形;本樣式應用了 [Joh96] 型別物件樣式(Type Object pattern),這情形就正如同 [Fer98] 中所指出的,複雜的樣式通常包含了一些具備獨立意義的子樣式。

 

參考文獻

[Bak97] S. Baker, CORBA: Distributed objects using Orbix, Addison-Wesley 1997.

[Bra98] R.T.V.Braga, F.S.R.Germano, and P.C.Masiero, "A confederation of patterns for resource management", Procs. of PLOP'98,  http://jerry.cs.uiuc.edu/~plop/plop98

[Coa97] P. Coad, “Object models: Strategies, patterns, and applications” (2nd Edition), Yourdon Press, 1997.

[Fer97] E. B. Fernandez and Z. W. Peng, “ An object-oriented model for manufacturing inventory control systems”, Tech. Report TR-CSE-97-30, Dept. of Computer Science and Eng., Florida Atlantic University, April 1997.

[Fer98] E. B. Fernandez, “Building systems using analysis patterns”, Procs. 3rd Int. Soft. Architecture Workshop (ISAW3), Orlando, FL, November 1998. 37-40.

[Fer98a] E. B. Fernandez, Class Notes for COP5330, Introduction to Objected-Oriented Software Design, Dept. of Computer Science, Florida Atlantic University, Boca Raton, Florida.

[Fow97] M. Fowler, Analysis patterns – Reusable object models, Addison-Wesley, 1997.

[Gam95] E. Gamma et al. Design Patterns – Elements of reusable object-oriented software, Addison-Wesley 1995.

[Joh98] R. Johnson and B. Woolf, "Type Object", Chapter 4 in Pattern Languages of Program Design 3, Addison-Wesley, 1998.

[Nat98] NATURE project, http://www.city.ac.uk/~az533/main.html

[Ngu] K. Nguyen and T. Dillon, "An alternative solution to the observation pattern problem", in PLOP98. http://jerry.cs.uiuc.edu/~plop/plop98/final_submissions

[SA98] Software Architects. Exercise in course SA4012, Testing Object-Oriented Systems, 1998.