第五章 核心製作
5.3 使用Rational Rose繪製UML
UML 統一模塑語言(Unified Modeling Language)是一種用來描繪 軟體藍圖的標準語言,可以運用它在我們軟體開發過程中的各階段,
針對有關系統進行視覺描述(Visualizing)、提出具體規範
(Specifying)、設計(Constructing)及將系統文件化(Documenting)。
統一模塑語言象徵統一了 Booch(由 Grandy Booch 大師擁護)、
Objectory(由 Ivar Jacobson 擁護)和 OMT(由 James Rumbaugh 擁護)
等方法,進而提昇這些方法的繼承者,並且更進一步的將三位大師的 方法融合在一起,保持與過去的相容性。統一模塑語言的目標是要成 為一個共通的、穩定的,及表達物件導向發展方法的基礎語言。
Rational Rose(Rational Object-oriented Software Engineering) 為軟體發展人員提供了一整套視覺化建模(UML)工具。這種建模語言可 以提供給程式師來對程式邏輯進行建模。其實關於繪製 UML 的 CASE TOOL 倒是有不少,像是 MS 的 Visio、Sybase 的 PowerDesigner、Borland 的 Together、Visual Object Modelers 的 Visual UML…等。然而選用 這套軟體的主要原因,是因為指導老師的推薦,加上此軟體是網路上 網友們一致公認繪製 UML 的最佳軟體,並由上述所說的三位 UML 大師 鼎力相助完成,是將 UML 發揮到最淋漓盡致的分析工具。
UML 的最新版本是 2.0,但我們能拿到的軟體 Rational Rose98 裡 面仍是採用 UML1.1 的規格,與 2.0 方法有所出入。不過沒關係,使用 UML 的終極目標是不變的。
UML 主要分成幾種圖:使用案例圖(Use Case Diagram)、類別圖 (Class Diagram)、互動圖(Interaction Diagram,又分為循序圖 (Sequence Diagram)和合作圖(Collaboration Diagram))、活動圖 (Activity Diagram)、狀態圖(State Diagram) 、元件圖(Component Diagram)、部署圖(Deployment Diagram)等。
首先,圖 5.2 是所有使用案例圖形模組的套裝類別庫(Package)之 間的主要元件關係圖,此目的乃先為整個系統作一個高階檢視的分 析。虛線表示其為相依關係,另外,圖 5.2 右方文字框是此圖的註解。
圖 5.2 Main Component Diagram
圖 5.3 Player Use Case Diagram
圖 5.3 是圖 5.2 中的 Player Use-Case Model 細觀後所顯示出的使 用案例圖,目的在於描述系統功能的需求。實線表示此使用案例圖的 互動方向,而一個橢圓形則代表一個 Use Case。另外,以人形符號表 示的動作者(Actor),代表一個外部系統(類別),關於這些系統的描述 與關聯性會在其他套裝類別庫詳細說明。而在繪製一個使用案例圖的 時候,要注意遵守一個 Use Case 會對特定的 Actor 產生可觀察的結果 值,且一個 Actor 也必須要和所分析的系統產生互動。
圖 5.4 是『Play Game In Story Mode』劇情模式之 Use Case 的類 別圖。類別圖是沒有時間概念的,目的只在於呈現系統中之靜態結構。
其中空心箭頭代表一般化關係(Generalization),菱形箭頭代表聚合 關係(Aggregation)。另外,黃色方塊也是代表一個類別,與動作者不 同在於,動作者是觸發使用案例的主動因素,所有的使用案例圖都是 依照動作者所產生的一連串動作的動作順序(也就是情境
(Scenario)),而繪製出來的;類別則是被動於使用案例間的呼叫與使
圖 5.4 Play Game In Story Mode 的 Class Diagram 用,並沒有能產生一些情節的描述。
圖 5.5 是『Play Game In Story Mode』這個 Use Case 的循序圖,
上面一排的 cApp、cCharacter…等,是指這個使用案例所關連到的類 別,下面則是此情境之流程經過,依照 1、2、3 的順序編號下去,至 14 後又開始循環於 2、3、4 繼續下去,完整的表示出在劇情模式下程 式的呼叫執行流程。
圖 5.6 是我們整個遊戲專案的UML繪製的完整工作瀏覽視窗,可以 明顯看出每一個Use Case都會細分為Class Diagram和Sequence Diagram,而我們整個UML的繪製,就是依照這種模式一直細繪下去,
最後即可繪製出類別關係圖(Rose繪出的所有類別定義,如圖 5.7 的所 列),在這裡因為篇幅的關係,其他類的圖形就不再贅述。詳細的UML 各類圖形繪製與最新改版消息,可參考其官方網站
http://www.uml.org/。或是上http://www.dotspace.idv.tw/ 點空間 網站瀏覽更詳細的 UML 說明。
圖 5.5 Play Game In Story Mode 的 Sequence Diagram
圖 5.6 Rose工作瀏覽視窗(Browser) 圖 5.7 Rose 定義類別列表
以上部份是先繪製 UML,然後[Tools]->[Check Model]通過,並利 用 Rose 的[Tools]->[C++]->[Code Generation]產生程式碼架構,接 著再寫程式的過程,稱為正向工程(Forward Engineering),有正向工 程當然也有逆向工程(Reverse Engineering)。當程式碼寫好後,可利 用 Rose 所附的 Rose C++ Analyzer 來完成逆向工程,產生 UML 圖形,
不過 Rose 98 逆向工程的功能較不完全,只能取出某一些類別的定義,
雖然較不完整,但還是可以與之前所繪製的圖做個比較。