本书由著名编程理论专家所著,是美国麻省理工学院电子工程与计算机科学系的编程实践课程教材。书中讨论了怎样构建具有高可靠性、易于维护和快速修改的软件的开发方法,强调了软件的模块化开发思想,用丰富的实例告诉读者怎样进行模块化并合理地组织各种模块以构成大型软件系统的过程。该书的前8章首次提出编程领域中的一些十分有用的抽象概念,如过程抽象、迭代抽象以及最重要的数据抽象等。此外,本书通过大量的例子,用非形式化的规范来详细定义这些数据抽象,描述模块所需完成的任务,并定义了模块所需的性能边界条件。该书的后7章主要讲述了怎样利用抽象构建大型软件,主要侧重于软件工程的内容,基于类型层次结构提出对于数据抽象的调试、测试、需求分析、自顶向下和迭代的开发过程,还简要介绍了设计模式的概念。这是一本传授思想的书籍,能使读者透过现象看到本质,从而掌握编写程序的关键。本书非常适合作为软件学院的教材,在低年级即可培养学生对于事物的抽象能力。此外,本书也非常适合软件开发人员参考。本书还讨论了以下主题:■展示满足规格的程序实现和封装过程■在程序设计的简单化和性能之间如何权衡■帮助读者理解和推断程序代码的技巧,重点讲解了抽象数据类型和抽象函数■类型层次及其在定义相关数据抽象时的运用■调试、分析和需求分析■采用自顶向下、迭代过程方法和设计模式的程序设计与方法书中的例子采用Java语言描述,但是所提出的技术并不受语言影响。本书也对主要的Java概念进行了介绍,以帮助那些可能对该语言还不太熟悉的程序员。