【好書分享】Object-Oriented Analysis and Design by Booch

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

 ———————————–
作者: Grady Booch/著
出版社: Addison-Wesley Professional; 2 edition
ISBN: 0805353402

內容簡介:
The first edition of Object-Oriented Design with Applications was instrumental in making object-oriented technology a practical reality–hundreds of projects applied Booch’s notation and process to complex problems in diverse domains. In this eagerly-awaited new edition, Grady Booch draws upon the rich and varied results of these projects to offer improved methods for object development and a new, unified notation. With numerous examples, all of which are now implemented in C++, Booch illustrates essential concepts, explains the method, and shows successful applications in a variety of fields. You’ll also find pragmatic advice on a host of issues including classification, implementation strategies, and cost-effective project management.

Features of the New Edition:

  • Presents a new, unified notation that incorporates the best ideas from Booch’s notation and other widely-used methods
  • Uses C++, rapidly emerging as a standard programming language for object development, in all programming examples and applications
  • Includes new examples of real world projects, including a client/server architecture and an application framework
  • Distinguishes between good and bad object-oriented analysis and design and shows how to evaluate architectural tradeoffs to manage complexity
  • Includes extensive new detail on the process and pragmatics of object-oriented analysis and design

This is the essential reference for anyone who implements or manages object technologies, or who wishes to begin exploration of this important new paradigm.

我強烈建議,想要紮實的具備軟體設計基礎功夫,這本書是最佳的選擇!

本書絕對是物件導向的經典著作,內容蘊含了深奧的哲理,而 Booch 卻又能深入淺出藉由其它成熟領域以及自然界的生活化例子,再穿插非常精緻又傳神的插圖來解釋。雖然是 1994 年 10 年前的老書,但,這幾年來,太多僅介紹 UML 表面上的語法的書籍,根本無法如本書可以深入至探討軟體的根本與哲理等的本質性觀念。

對於物件導向思維的分析與設計,絕非從 UML 等表面的語法得知,而應該是從軟體的本質去探索與思考。
光是研讀第一章:Complexity,Booch 開宗明義即提到:軟體的複雜是與生所俱來的(The inherent Complexity of Software)。而所謂物件導向與分析與設計,其實就是藉由其它成熟領域的知識以及觀察大自然關於複雜的現象所體悟到如何管理複雜的哲理,再應對至軟體領域來協助管理這種本質性的複雜。

本書提及,因為觀察複雜的現象、思考複雜的核心,而逐漸找出應對的解決方案,這些解決方案包括了:

  • 抽象(Abstraction)
  • 封裝(Encapsulation)
  • Modularity(不容易翻譯,看起來是模組,不過不然,我個人覺得比較接近是元件(Component)的同義字)
  • 階層(Hierarchy)

物件的模型的單位是物件,所以,對於什麼是物件(Objects)與類別(Classes)、分類(Classification)的依據等,這些觀念均是建立物件模型的最基礎,卻也是最不容易所理解的。

Booch 在以上這些軟體設計的基礎知識,花了很多的篇幅與例子,鉅細靡遺地說明與解釋。同時也可以引導讀者來啟發對這些基礎知識的思考。

這本書的印刷非常精美,我是約兩年前在天壠書局買的,精裝的原文書才新台幣 $750,真的是物超所值!
更令人激賞的是,書本內的插圖真是~會讓讀者有一種無名的喜悅及會心的一笑。例如,前兩個章節是以一隻貓做為插圖的主角,然後來解說如抽象與封裝等觀念。實在是有夠傳神與幽默。 😉

Abstraction illustration

Encapsulation illustration

文章導覽

   

共有 10 則迴響

  1. Hello willeam:

    原來是鼎鼎大名的葉先生。 🙂
    您所寫的「無責任書評」──很物件導向的書評,實在精彩!!

    有本 Peter Coad 「Object Models」 isbn: 0138401179 ,不知您以前曾否閱覽過? 對於建立物件模型,此本書所提出的 “Transaction Pattern” 非常地實務與實際。

  2. 在 VS.Net 2005 裡,Managed C++,或者該改稱 C++/CLI,會正常許多。

    另外,MS 本來就很不可能「廢除 SDK 的函式」,頂多是做為不那麼常用的底層、system-level API。

    Windows 的 API 就像 Unix 一樣,有許多 layers,有的是 AP level,有的是 system call level。從這個角度去看待 .Net WinForms 吧。

  3. 無責任書評──很物件導向的書評
    小啟:既然在前一篇文章聊到了 James Rumbaugh 及 CMM 等往事,乾脆把十年前的舊文找出來回味一下。
    呼!真的整整十年了……當年,怎麼寫得出如此累贅但意氣風發的文字呢?這亦狂亦俠的心…

  4. Hello 水瓶子:

    Windows-based System-level 的 APIs,MS 這幾年內是不會放棄不支援的,畢竟,在此層次的客戶群太多太多了,要說丟就丟,談何容易!

    如同 DirectX,既然是架在 OS 層之上,初期的版本,若是講究系統的效能等因素,那可是個問題,同樣,在 .NET 環境上,也是面臨與之一樣的問題。

    J2EE 是把 OS 封裝成為 Black-box,但,C++ -based 的族群,有如早期 開發 Assembly,是不願意讓 OS 被封裝的,那是會影響到效能的。

    相對地,為何要在 OS 層之上架上一層 J2EE or .NET Framework?
    對應用系統的開發者,尤其是 Enterprise 類型,會更重視到系統的彈性度(包括開發、設計、部署…等等)。

    幾個構面,把它們攤開出來,做全局的綜合比較,當然,包括了市場的趨勢、潮流與客戶需求的導向等問題。可能會比較能做出正確的判斷與決論。 🙂

  5. Hello 水瓶子:

    採用 .NET Solution 是投資的選擇之一,若開發的是屬於 Enterprise 應用系統,採用 .NET 的確是可以節省在 “Coding” 方面的成本。

    我個人不會去限定因個人的好惡而選邊站台,.NET and J2EE ,各有其利弊。

    但,影響系統的效能與彈性等因素,仍是人為的設計因素佔絕大部的成分。

    若您有興趣討論 .NET or J2EE 等平台的具化考量因素,我個人很樂意也很有興趣,可以見面彼此交換一些看法與心得。 🙂

  6. Hi 水瓶子:

    1. 天龍書局買不到嗎? 到 Amazon 買加上運費應該是不便宜的。
    2. 對於 C++ ,我可是一竅不通的。 🙂
    3. 若貴公司的系統是因為新系統的開發是考量 based on .NET,又要 “包容”、”再利用” 舊有以 C++ 所開發的 COM+ 元件的舊系統,那是有可能的。我想貴公司不會沒有理由而轉移到 .NET 的平台開發吧?應該有許多的 “考量” 與 “假設”,這些,是公司決策者應該會說明與解釋給所有技術開發人員吧?

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *