『目』與『F』
物件導向設計是近十年來軟體工程很重要的課題,除了物件程式設計的技巧、方法論、設計流程以外,工具也是相當重要。在Rational Rose 被IBM併購之前我就使用過它的 UML 設計工具,當時它是我電腦的必備軟體之一,因為不只是上課、做系統需要,我甚至會用它來做一般事務的知識管理。
但隨著UML的快速改版,Rose的改版速度也相當的快,不僅如此,價格飆升也相當的快,快到我追不到。於是,我開始改用open source的一些方案,例如 ArgoUML以及在 Eclipse 上的UML。然而,這些系統的穩定性都不夠。後來,在資訊處中開始使用搭配 power builder 的 power designer,雖然功能與穩定性不錯,但推廣的狀況卻不是很好。
這幾年的感覺是,不要太拘泥於軟體工具的選擇,應該回歸到設計的本質,其實紙筆就是最好的工具,相互討論就是最好的方法論。軟體工具採用反而造成相互討論的困難,對設計造成傷害。一群人圍在圓桌上討論設計圖才是最重要的。
用紙筆做UML的設計還是有技巧的。過去我劃類別圖時先劃上一個像『目』的圖案 -- 其中最上面的格子寫上類別名稱、第二個格子寫上屬性、第三個格子寫上方法名稱 -- 但這個方法不好。因為屬性與方法的個數會在討論的過程中不斷的新增,所以固定大小的『目』造成了許多的不便。如左上圖的『F』則保留討論上的彈性,你可以在討論的過程中不斷的加上屬性與類別名稱,且名稱的長度也不會受限。直到你的設計告一段落(例如討論好一些 sequence diagram)才將F關住,成為『目』。
我特別將『F』設計成一個圖形,藉此,傳達軟體設計上『互動』、『敏捷』、『慎重』的重要性。工具依舊是重要的,但在設計初期的時候。我還是強烈的建議使用紙筆來做腦力激盪。
白板和照相機是你的好朋友...
回覆刪除這是Agile Modeling(AM)的基本原理之一。大約2000年初期,Scott W. Ambler提出Agile Modeling的主張,這項主張包括11項核心原則與6項補充,此外尚有13項核心實用與8項補充,在核心實用中,有一項:"Use the simplest tools",根據這項主張,你可以在白板、紙張甚至於餐巾或餐紙繪製主要模式,諸如使用個案圖,類別圖或依序圖等等,但是這種主張並非反對CASE工具,如Rose之類。雖然使用簡單的工具有諸多好處,例如便宜、無限制使用者、具可攜性、彈性行(用甚麼都可以)、容易使用等,此外也逼你只畫一些必要的圖,這就符合所謂"Travel light"的AM核心原則之一,不過主要的好處是可以promote 反覆與漸進發展方法,好處之外也有一些壞處,如很多人不能接受,而且使用上也有些侷限,不適合為永久文件,不容易分散(distribute)等等,但這些缺乏點似乎也不盡然,大家如看看Craig Larman的"Applying UML and Patterns,3rd Edition",許多模式圖也用手工繪製,總之,用於思考、討論與初步設計,簡單工具是可為大家採用。至於Newtype所提的照相機是可用,但不是很方便,例如我就沒有好的照相機可用,而且照相技術不佳,因此我時常用筆紙繪製CRC card。薛文可以說「深獲我心」,因此提出長篇意見,不過如「市場需要」我倒願意為文與大家討論。
回覆刪除最近開始念UML的bible書籍,才深深體會到這個工具的好處
回覆刪除新手在一開始畫真的綁手綁腳的,線條的運用,抽象化的程度
不過在做比較大的專案的時候,使用UML可以說幾乎是必要得
我個人的習慣也是先用紙筆開始寫,最後出來的想法在用UML表示
使用UML可以讓需求溝通更容易,所以早點學會如何運用是一件好事
昨天上課的時候,范姜老師也提到一般的學生再畫class diagram,常常只寫出operation, 而屬性往往不是沒有 或是就一兩個,真的很一針見血,所以未來還要再多多磨練才是~