本书分成3个主要部分:概念、方法和应用,其中穿插了大量的补充材料。第1部分研究软件的内在复杂性,以及复杂性的表现方式。本书将对象模型作为一种手段来帮助我们管理这种复杂性;详细地研究了对象模型的基本元素:抽象、封装、模块化、层次结构;讨论了“什么是类?”以及“什么是对象?”等基本问题。由于确定有意义的类和对象是面向对象开发中的关键任务,因此我们花了相当多的时间来研究分类的本质。具体来说,我们研究了生物学、语言学和心理学等其他学科中的分类方法,然后将这些经验应用到发现软件系统中类和对象的问题上。第2部分基于对象模型提出了复杂系统开发的一种方法。针对面向对象的分析与设计,首先提出了一套图形表示法(即UML),然后是一个通用的过程框架。还研究了面向对象开发的实践,具体来说,就是它在软件开发生命周期中的位置以及它对于项目管理意味着什么。第3部分提供了一组5个不简单的例子,涉及不同问题域:系统架构、控制系统、密码分析、数据获取和web开发。之所以选择这些问题域,是因为它们是软件工程师实践过程中遇到的复杂问题的代表。展示某些原则如何应用于简单的问题是很容易的,但是因为我们关注的是为现实世界构建有用的系统,所以我们对如何将对象模型应用于复杂应用程序更加感兴趣。软件系统的开发不同于按菜谱做菜,因此我们强调应用程序的增量式开发,这种开发以一些正确的原则和良好的模型作为指导。