翻譯自《Applying UML and Patterns 2nd edition》(目前已出至第三版)的《UML與樣式徹底研究》,是物件導向分析與設計最為暢銷的入門教科書之一,也是筆者踏入軟體設計領域的第一本書。
《UML與樣式徹底研究》的大綱架構,可說是最為標準的典型軟體工程式教科書。作者Craig Larman把他多年來豐富的教學經驗全都濃縮在本書內。第二版並導入UP(Unified Process)流程框架到大綱目錄內,讓讀者能大致掌握UP的 Milestone階段目標,與每次往覆(Iteration)的產出(Artifacts)。
系統開發的基本:了解需求
對軟體設計入門者而言,關於「需求」的討論是本書最有價值的部分。這本書是以需求作為系統開發的初端,再進而導出系統內部的結構分析、設計至實作等。使用案例模型(Use Case Model)的建立,是功能性需求當中最重要、用來發掘並記錄需求的一種機制,它會影響到系統開發之後的諸多環節。
UP所倡導的「4+1 View」,即是以使用案例作為驅動,並且涵蓋整個專案的重心所在。
本書在使用案例敘述部分寫得相當好,同時也揭露多種不同的寫作格式與風格,讓讀者得以選擇適合的需求寫作方式。除了使用案例外,作者也介紹輔助規格(記錄非功能性需求)、企業規則、字彙表、專案願景等其它功能需求,其實,這也是UP建議在需求製程的產出。參考範例的寫作方式不錯,但不要全盤照收,以免造成不必要的儀式與負擔。
物件導向分析設計精髓:物件責任的分派
物件責任的分派(Responsibility Assign)是本書最精彩之處,也是其它書籍所看不到的。
對SA/SD而言,責任的分派容易被忽略,相對來說卻最重要。要把軟體作「軟」,物件責任的分派是關鍵。舉例來說,誰負責訂購總額的計算?一般SA並不重視這個,可能就寫在表單(Form)、Stored-Procedure,或者功能性的物件上,導致行為的分散,因此造成系統的混亂與複雜。
如何熟練指派責任是SA在物件設計中最重要的事,作者提出GRASP(General Responsibility Assignment Software Patterns)的設計原則,裡面提出5種重要的責任設計樣式。
其中,高內聚力(High Cohesion)與低耦合性(Low Coupling),決定了軟體核心的穩定性。但兩者也經常相互衝突,它們之間的關係,可比擬為軟體工程的陰與陽,互相牽制且彼此影響。
系統內部的靜態結構分析:找出物件
至於如何找出建構領域模型,進而產出軟體規格設計圖的部分,作者仍是以傳統的方式──找名詞,以歸納概念性類別。雖然他又列出概念性類別分類清單,來協助SA找物件,但這仍不是個好方法,因為這是從需求的片段記錄來找尋物件,但需求並不穩定,相對來說,也不容易找出最具本質性(Essential)的核心物件。
當初我在看這一部分時,著實疑惑甚久,後來閱讀了Peter Coad《Object Modeling》一書,揭露出以交易為核心,來找出本質性的領域物件的作法,才總算得到滿意的解決方案。
以POST系統開發案例,串連各章節觀念
後面幾個章節,一般的讀者其實可以忽略不看。例如:利用設計樣式設計出永續性框架(Persistent Framework)。由於.NET的ADO.NET,以及J2EE的Hibernate等,都作得很好,我們只需學會如何使用即可。
總體而論,全書以一個POST系統開發為案例研討對象,包含需求分析記錄、領域模型建立、物件責任分派、系統規格模型設計等。讓讀者能透過案例跟著內容操作,將所有章節的觀念串連起來。
本書與《UML 精華》都是我鼓勵軟體從業人員必買的兩本好書,由於中譯本的翻譯品質甚佳,建議軟體公司都擺上一本,甚至舉辦讀書會鑽研一番。
UML與樣式徹底研究(Applying UML and Patterns)
Craig Larman /著
趙光正/譯
培生出版
售價:720元
《作者簡介》
王克明
台北工專五專部電子科畢業。現於HSDc軟體設計顧問團隊擔任架構師/顧問/講師。興趣為整體架構性的思考與學習、期貨投機操作與閱讀。
相關閱讀:
軟體設計必讀經典(1)以簡約之道介紹UML最實用的部分
軟體設計必讀經典(3)洞悉易學難精的Use Case
軟體設計必讀經典(4)知易行難的極致軟體製程
軟體設計必讀經典(5)用科學化方式搞懂設計模式
軟體設計必讀經典(6)RUP活用,也可以是敏捷開發
軟體設計必讀經典(7)重構讓程式回到應有位置
軟體設計必讀經典(8)由生活出發,輕鬆領會物件導向
軟體設計必讀經典(9)優質使用者介面,源自好的狀態圖設計
軟體設計必讀經典(10)幫助SA紮穩UML底子的實務手冊
軟體設計必讀經典(11)反覆測試與修正,讓錯誤消失
熱門新聞
2025-12-12
2025-12-15
2025-12-12
2025-12-12
2025-12-15
2025-12-12