本書分成3個主要部分:概念、方法和應用,其中穿插了大量的補充材料。第1部分研究軟件的內在復雜性,以及復雜性的表現方式。本書將對象模型作為一種手段來幫助我們管理這種復雜性;詳細地研究了對象模型的基本元素:抽象、封裝、模塊化、層次結構;討論了“什么是類?”以及“什么是對象?”等基本問題。由于確定有意義的類和對象是面向對象開發(fā)中的關鍵任務,因此我們花了相當多的時間來研究分類的本質。具體來說,我們研究了生物學、語言學和心理學等其他學科中的分類方法,然后將這些經驗應用到發(fā)現軟件系統(tǒng)中類和對象的問題上。第2部分基于對象模型提出了復雜系統(tǒng)開發(fā)的一種方法。針對面向對象的分析與設計,首先提出了一套圖形表示法(即UML),然后是一個通用的過程框架。還研究了面向對象開發(fā)的實踐,具體來說,就是它在軟件開發(fā)生命周期中的位置以及它對于項目管理意味著什么。第3部分提供了一組5個不簡單的例子,涉及不同問題域:系統(tǒng)架構、控制系統(tǒng)、密碼分析、數據獲取和web開發(fā)。之所以選擇這些問題域,是因為它們是軟件工程師實踐過程中遇到的復雜問題的代表。展示某些原則如何應用于簡單的問題是很容易的,但是因為我們關注的是為現實世界構建有用的系統(tǒng),所以我們對如何將對象模型應用于復雜應用程序更加感興趣。軟件系統(tǒng)的開發(fā)不同于按菜譜做菜,因此我們強調應用程序的增量式開發(fā),這種開發(fā)以一些正確的原則和良好的模型作為指導。