Object-Oriented Analysis and Design with
  Applications (2nd Edition)

  Grady Booch /著
  Addison-Wesly出版
  售價:69.99美元
  Amazon四顆星


曾有讀者反應,前幾期中譯本書評,我只有針對原文書籍的內容做介紹,卻沒有提及翻譯的水準。基本上,我很欽佩這些譯者們的用心,這是份吃力但不一定討好的工作。再者,前幾期我所介紹的中譯本,我覺得翻譯品質可說都在水準之上,讀者們可以不用擔心。
不過,現在是該介紹原文著作的時候了,畢竟要從事專業軟體設計這一行,不看原文書是不行的。

《Object-Oriented Analysis and Design with Applications》是UML三巨頭之一Grady Booch在物件導向分析/設計最具代表性的著作,我所介紹的版本為第二版,暌違13年之後,今年又增訂了第三版,主要新增的內容是將塑模語言改為UML2.0,並深入探討整個軟體生命周期的每一個階段。

軟體雖然複雜,但已能從其他領域找到釐清之道
本書分為三大部分:第一部分為概念(Concepts),包括複雜度的闡述與觀察、物件模型的建構、類別與物件的區別、分類;第二部分為方法論(Methodology),包括塑模的語法(這裡主要揭露出類別圖、狀態機圖、物件互動圖)、巨觀(Macro)與微觀(Micro)開發流程、專案管理與規畫等;第三部分為案例分析,包括天氣監控、Client/Server庫存追蹤、AI人工智慧,甚至Framework 等系統的分析與設計,以及簡單程式碼的展現。

第一部分的價值最高,作者在闡述軟體複雜本質時,藉由PC硬體產業與大自然植物行光合作用的例子,解釋其它領域是如何應對複雜度,這一部分實在精彩。作者從中帶出物件第一個哲理:封裝(Encapsulation)是解決軟體複雜度的根本。封裝往往具有階層性,能將混沌的表象帶往有機的次序,呈現出簡單的結構。將大自然運作機制等其他領域所帶給我們的智慧,轉化成解決軟體系統複雜性的方法與技巧,即為所謂的物件導向分析與設計。

本書的插圖相當有意思。作者怎麼介紹抽象(Abstraction)呢?插圖上有兩位貴婦人,一個看到的是毛茸茸的肥貓;另一個則是看到這隻肥貓的骨架與器官組織。這就說明了軟體開發各種不同角色的人員,往往會有不同的觀點,有需求面的外部觀點,也有結構面的內部觀點。但,觀點仍須保持一致,才能維繫其本質的調和。這讓我想到金剛經的一句話:「凡所有相,皆是虛妄,若見諸相非相,即見如來。」也就是說,不要執著在單一的觀點上,運用抽象的本能,才能看到蘊藏於諸多表象背後的那一隻貓(如來)了。

書中對於物件導向的基礎概念,揭露出抽象、封裝、模組性(Modularity)、階層性 (Hierarchy)等。在物件與類別部分,也花了不少篇幅說明什麼是物件、什麼是類別,兩者之間的關係又是如何……等。這一章節絕對是奠定物件導向基礎的關鍵,讀者必須要相當用心思考體會關於物件與類別的區別,以及類別之間的關係。

物件導向的哲理,存在於你我的生活周遭
看完本書第一部分後,我更確定所有物件導向的觀念,都可以從生活面找到解釋。當你從生活中體悟出一番心得,用來解釋封裝、介面等物件導向精髓,周遭其他朋友同事也逐漸能接受、認同你的論點時,就不會認為學習軟體設計是件苦差事了。

物件導向是種觀念,源自人類應用在其它領域的成功經驗,以及大自然所蘊含的根本道理,能用來克服與應對複雜度與變動性高的軟體系統。所以,不要從程式語言的觀點學習物件導向,這是本末倒置的做法,程式語言只是工具,工具受限於實體的IT技術,而無法有效表達物件導向的概念,那會讓你只是站在「用」的角度看待物件導向,把它當作技術而已。當你覺得「不好用」、「無法用」時,你就會認為它是一種不適切的技術,無法應用在現實。

以多型(Polymorphism)來說,這好像很難解釋,非得要透過程式語言的撰寫與執行才能理解?錯!日常生活隨處可見多型的例子,例如:椅子。椅子的種類包括課桌椅、電腦椅、吧臺椅、按摩椅等,都能提供給人「坐」的服務(Service)。人就是客戶端(Client),他可以享受椅子所提供的服務。

椅子其實就是一種抽象的概念,上述各種類型的椅子,則是具體(Concrete)呈現的物件。而這也可以用來解釋一般化(椅子)—特殊化(各類型的椅子),均提供「坐」的服務,但坐的方式卻不太一樣。甚至,從「坐」的服務,又能衍生出椅子應該提供「可坐性」這樣的介面,只要能實現 (Implement)可坐性的介面(Interface),都可以算是椅子的一種。所以,大石頭可以讓人坐著,所以它也能算是椅子,但它可不是從椅子所繼承(Inheritance)而來。許多物件導向的哲理,就存在於生活中,信手拈來皆可解釋,而且充滿樂趣。

本書的基礎理論相當紮實,各種物件導向概念的解釋都相當清楚。但美中不足之處,是沒有整理得很清楚,看的人要稍微有一些底子,才能釐清這些概念之間的關連性。另外,本書的文字敘述還真是多,字也挺小的,對第一次看原文書籍的讀者來說會是很大的煎熬。還好,有豐富的插圖讓你時時會心一笑,使本書不至於太過沈悶。

《作者簡介》王克明
台北工專五專部電子科畢業。HSDc軟體設計顧問,擔任包括鋼鐵、保險、股票等多項領域系統架構開發顧問,以及軟體設計課程專職講師。

相關閱讀:
軟體設計必讀經典(1)以簡約之道介紹UML最實用的部分
軟體設計必讀經典(2)物件導向分析與設計入門
軟體設計必讀經典(3)洞悉易學難精的Use Case
軟體設計必讀經典(4)知易行難的極致軟體製程
軟體設計必讀經典(5)用科學化方式搞懂設計模式
軟體設計必讀經典(6)RUP活用,也可以是敏捷開發
軟體設計必讀經典(7)重構讓程式回到應有位置
軟體設計必讀經典(9)優質使用者介面,源自好的狀態圖設計
軟體設計必讀經典(10)幫助SA紮穩UML底子的實務手冊
軟體設計必讀經典(11)反覆測試與修正,讓錯誤消失

熱門新聞

Advertisement