面向对象分析与设计(原书第2版)
作者 : (美)Grady Booch
译者 : 冯博琴 冯岚 薛涛 崔舒宁
出版日期 : 2003-08-01
ISBN : 7-111-12317-4
定价 : 45.00元
教辅资源下载
扩展信息
语种 : 简体中文
页数 : 445
开本 : 16开
原书名 : Object-Oriented Analysis and Design with Applications
原出版社:
属性分类: 教材
包含CD :
绝版 :
图书简介

本书的作者Crady Booth是面向对象技术的先驱,也是Retioml软件公司的首席科学家,他撰写了多本“面向对象开发”和“软件工程”的畅销书籍。本书是Booch的代表作之一,被公认是面向对象理论和方法的经典著作。
本书从概念、方法和应用三个龟度全面深入论述面向对象技术及其表示法。此外,书中还给出大量详实的例子,帮助读者学习和理解面向对象方法以及在实际领域中如何运用面向对象的分析和设计技术来开发软件。全书论述既深刻又浅显易懂,对于高等院校学生,本书是一本好的教材,对于工程技术人员,本书是一本好的参考书。

  本书是UML的开山鼻祖Booch的代表作之一,也是此领域公认的不可替代的权威著作,在推动面向对象技术走向现实应用的过程中发挥了重要的作用,曾两次获得《Software
Development》杂志的Jolt图书大奖 。

  本书吸收了众多项目的丰富经验,从概念、方法和应用三个角度全面深入论述了面向对象技术及其表示法。作者以大量用C++语言实现的实例,阐明各种基本概念,解释面向对象的分析与设计方法,并展示在不同领域卓有成效的应用。
  全书论述既深刻又浅显易懂,对于高等院校的学生,本书是一本好的教材,对于工程技术人员,本书是一本好的参考书。

  GradyBooch是Rational公司的首席科学家,由于他在对象方法和应用中的开拓性工作而受到国际软件开发界的广泛尊敬。他曾撰写过几本有关软件工程和面向对象开发的畅销书(Booch先生主要著作的中文版均已由机械工业出版社出版)。他还赞是《Object Magazine))、 《C++Report》和《Software Development》等杂志的专栏作家,并与Ivar Jacobson和Jim Rumbaugh共同担任了Addison-Wesley公司“对象技术”丛书的主编。

图书特色

Grady Booch是Rational公司的首席科学家,由于他在对象方法和应用中的开拓性工作而受到国际软件开发界的广泛认可。他是《Object Magazine》、《C++ Report》和《Software evelopment》 (中文版《软件研发》杂志已由机械工业出版社引进出版)等杂志重要的专栏作家,同时也是多本关于软件工程和面向对象开发方面畅销书的作者。

图书前言

作为计算机专业人员,我们努力地去构建有用而且能够运转的系统;作为软件工程师,我们面临着在计算和人力资源不足的条件下创建复杂系统的任务的困境。在过去的几年里,面向对象技术在计算机科学的不同领域都有所发展,成为管理各种系统内在复杂性的有效手段。对象模型已经被证明是一个非常有力而且统一的概念。
  对第1版的改动
  在本书第1版出版以后,面向对象的技术已实际成为产业化软件开发的主流。面向对象模式在全世界范围内开始使用,涉及各种领域(例如银行事务的管理、保龄球道的自动控制、公用事业的管理以及人体基因图谱的绘制等)。许多下一代操作系统、数据库系统、电话系统、航空电子系统以及多媒体应用程序都在用面向对象技术编写。的确,许多这样的项目之所以采用了面向对象技术,仅仅是因为没有其他的方式更能经济地产生一个持久且有弹性的编程系统。
  近几年来,成百上千的项目已经应用了本书中描述的表示法和过程 。通过我们自己项目设计的经验以及同我们进行交流的其他设计人员所提供的有用信息,我们发现了一些方式可用来改善我们的方法,特别是在更好地叙述一个过程、添加和澄清一些有可能遗漏或在表示法中难以表达的特定语义以及尽可能地简化表示法这些方面。
  这段时间中, 出现了许多其他的方法,包括Jacobson、Rumbaugh、Coad和Yourdon、Constantine、Shlaer 和 Melior、 Martin 和 Odell、 Wassennan、 Goldberg 和 Rubin、 Embley、Wirfs-Brock、Goldstein和Alger、Henderson-Sellers、Firesmith以及其他人的工作。Rumbaudl的工作特别有趣,因为他指出我们的方法之间相似之处远多于不同之处。我们研究了其中的大部分方法,同使用它们的开发人员和管理者面谈,并尽可能自己试验这些方法。我们对如何在项目中成功地运用面向对象技术更感兴趣,而不是仅仅由于情绪上或历史上的原因教条式地坚持实践,所以我们试图从每一种方法中汲取最好的部分,并将其包含到我们自己的工作中。我们非常感谢所有人在这个领域中所作出的基础性的、独一无二的贡献。
  为了更好地推动软件开发行业,特别是面向对象技术,应该有一套比较标准的表示法。因此,这个版本提出了一套统一的表示法,尽可能地消除我们的表示法同其他人的表示法之间的表面差别,特别是跟Jacobson的表示法和Rumbaugh的表示法之间的差别。像从前一样,为了鼓励不受限制地使用这种方法,这套表示法可用于公共领域。
  第2版的目标、读者以及结构仍然同第1版一致。尽管这样,还是有五个主要的不同点。
  首先,扩展了第5章,从而提供更多关于这套统一表示法的具体细节。为了加深读者对这套表示法的理解,我们明确地对基本元素和高级元素作出了区分。另外,我们还特别关注这套表示法的各个视图之间是如何相互集成在一起的。
  其次,对第6、7章也进行了扩展,主要阐述面向对象的分析和设计的过程和模式。同时对第2版中的标题作出了修改,从而更好地反映出一个事实,即开发过程确实是包含分析和设计的。  
  第三,使用C++来描述正文中所有的编程示例。C++这门语言正迅速成为许多应用程序领域的事实上的标准;另外,大多数用其他语言编程的专业开发人员也能读懂C++。这并不是说我们就把其他语言(像Smalltalk、CLOS、Ada还有Eiffel等)看得不重要。本书的要点在于分析和设计,而且由于需要描述一些具体的例子,因此我们就选择使用相对通用的编程语言来表现。在具体使用的时候,我们会描述相对于其他语言来说较新的语义及其对方法的影响。  ,
  第四,第2版介绍了几个新的应用程序示例。其中用到的惯用法和体系结构框架已经出现在各种各样的应用程序领域,这些示例就利用了这些实践。举例来说,客户/服务器计算提供了修改过的应用程序示例的基础。
  最后,几乎每一章都提供了从第1版以来出现的相关面向对象技术的参考文献和讨论。
  目标
  本书在面向对象系统构建方面提供了实用指导。其特定的目标为: 
  · 提供对一个对象模型基础概念的正确理解。
  · 促进对表示法体系和面向对象分析和设计过程的掌握。
  · 教授在不同的问题域中面向对象开发的实际应用。
  在此指出的概念是基于牢固的理论基础,但本书首先是一本注重实效的书,主要讨论软件工程界的实际需要和所关心的问题。
  读者对象
  本书既是为计算机专业人员也是为学生编写的。
  · 对于从事实际工作的软件工程师,本书将展示如何高效使用面向对象的技术解决实际问题。
  · 对于系统分析人员或构架师,本书将提供一个从需求到实现的路径,而它是通过面向对象的分析和设计来实现的。我们帮助分析人员或构架师提高识别能力,即把不好的面向对象的结构与好的面向对象的结构区分开来,并在现实情况反常时权衡可选方案的利弊。也许最重要的就是,我们提供了对复杂系统进行推理的新方法。
  · 对于程序管理者,本书可以帮助他们更好地理解如何分配开发组的人力资源以及如何管理与复杂软件系统相关联的风险。
  · 对于工具构建者和工具使用者,本书提供了一套严格的面向对象开发的表示法和过程的解决方案,作为计算机辅助软件工程(CASE)工具的基础。
  · 对于学生,本书提供了一些必要的指导,使得学生能够掌握复杂系统开发的科学艺术中的一些重要技巧。
  本书不仅适合于专业研讨班和个人学习使用,也适合作为高等院校本科生和研究生课程的教材。它主要阐述了软件开发的方法,对于软件工程和高级编程的课程是非常合适的,而且可以作为一些涉及到某些特定的面向对象编程语言课程的补充教材。
结构
  本书分成三个主要部分——概念、方法以及应用——并穿插了大量的补充材料。
  概念
  第一部分研究软件的内在复杂性,以及复杂性的表现方式。我们将对象模型作为一种手段来帮助我们管理这种复杂性。我们详细地研究了对象模型的基本元素:抽象、封装、模块性、层次、定型、并发和持久性,并讨论了像“类是什么”以及“对象是什么”等基本问题。由于识别有意义的类和对象是面向对象开发中的关键任务,因此我们花费了大量时间研究分类的性质。特别地,我们研究了像生物学、语言学和心理学等其他学科中分类的方法。然后将这些经验应用到发现软件系统中类和对象的问题上。
  方法
  第二部分基于对象模型提出复杂系统开发的一种方法。针对面向对象的分析和设计,我们首先提出一套图形表示法,然后是它的过程。我们还研究了面向对象开发的模式——特别是它在软件开发生命周期的位置以及它对于项目管理的具体含义。
  应用
  最后一部分提供了一个包括五个完整而且有价值的示例的集合,这个集合涉及到不同问题域的选择,包括数据获取、应用程序框架、客户/服务器信息管理、人工智能以及命令和控制。我们之所以选择这些特定问题域,是因为它们是软件工程师实践过程中遇到的复杂问题的代表。演示某些理论如何应用于简单问题是很容易的,但是因为我们的重心在于为现实世界构建有用的系统,所以我们对如何将对象模型应用于复杂应用程序更加感兴趣。一些用户可能还不熟悉我们所选的问题域,所以在开始应用程序之前首先对涉及到的基础技术(例如数据库设计和黑板系统体系结构)进行简短的讨论。软件系统的开发不同于按食谱做菜;因此我们强调应用程序的增量开发,这种开发以许多正确的原则和完善的模型作为指导。
  补充材料
  大量的补充资料穿插在整本书中。多数章在框线部分加入补充材料,对重要的主题提供信息,例如不同面向对象编程语言中方法调用的机制。本书还包括一个面向对象编程语言方面的附录,其中详细讨论了基于对象和面向对象编程语言之间的区别以及两类语言的基本特性和发展。对那些不熟悉某个面向对象编程语言的读者,我们用示例提供了一些常用语言特征的概要。我们还提供了常用术语的词汇表以及一个扩展的分类参考书目来提供有关对象模型研究资料的参考文献。在本书内封前的插页中提供了面向过程开发方法中表示法和过程的小结。
  本书用法
  本书可以一页一页地读,也可以不按现有的组织形式使用。如果你想对对象模型中基本概念或者面向对象开发的动机有一个较深的理解,那么应该从第1章开始依次读下去。如果你只对面向对象开发分析与设计中的表示法和过程感兴趣,就从第5章或第6章开始;第7章对使用这种方法管理项目的管理者来说特别有用。如果你对针对特定问题域的面向对象技术的应用程序更感兴趣,就可以从第8章到第12章中任选一章或全部阅读。
  感谢
  我将本书献给我的妻子Jan,感谢她的支持。
  从第1版和第2版以来,一些个人的意见和建议使得我的想法在面向对象开发中逐渐成
型。我对于他们的贡献深表感谢,特别感谢:Sam Adams、Mike Akroid、Glenn Andert、Sid
Bailin、Kent Beck、Daniel Bobrow、Dick Bolz、Dave Bulman、Dave Bernstein、Kayvan Canm、Dave
Collins、Steve Cook、Damian Conway、Jim Coplien、Brad Cox、Ward Cunningham、Tom DeMarco、
Mike Devlin、Richard Gabriel、William Genemaras、Adele Goldberg、lan Graham、Tony Hoare、Jon
Hopkins、MichaelJackson、Ralph Johnson、James Kempf、Norm Kerth、Jontan Kreindler、Doug Lea、
Phil Levy、Barbara Liskov、Cliff Longman、James MacFarlane、Masoud Milani、Harlan Mills、Robert
Murray,Steve Neis、Gene Ouye、Dave Pamas、Bill Riddel、Mary Beth Rosson、Kenny Rubin、Jim
Rumbaugh、Kurt Schmucker、Ed Seidewitz、Dan Shiffman、Dave Stevenson、Bjarne Stroustrvp、Dave
Thomas、MikeVilot、Tony Wasserman、Peter Wegner、Iseult White、John Williams、Lloyd Williams、
MarioWolczko、NiklausWirth和EdYourdon。
  本书中很大一部分有实用价值的材料来自我为世界范围内的大公司(如Apple、Alcatel、
Andersen Consulting、AT&T、Autotrol、Bell Northern Research、Boeing、Borland、Computer Sciences
Corporation、Contel、Ericsson、Ferranti、General Electric、GTE、Holland Signaal、Hughes Aircraft
Company、IBM、Lockheed、Martin Marietta、Motorola、NTF、Philips、Rockwell International、SheU
Oil、Symantec、Taligent和TRW)开发的复杂软件系统。我有机会同成百上千的专业软件工程师以及他们的管理者进行交流,非常感谢他们的帮助使得本书紧密联系现实世界中的问题。
  这里要特别感谢Rational公司对我的工作的大力支持。同时感谢编辑Dan Joraanstad在本书写作过程中对我的鼓励,感谢TonyHall,他的卡通图案使得一本技术书变得生动活泼。

译者简介

冯博琴 冯岚 薛涛 崔舒宁:暂无简介

译者序

20世纪90年代以来,面向对象技术成为计算机领域中的一种主流技术,它的出现被认为是程序设计方法学方面的一场实质性革命。在学术界,面向对象的方法与技术已经成为最受关注的研究热点之一;在产业界,越来越多的公司从传统的软件开发技术转向面向对象技术,特别是在一些发达国家,几乎所有的新软件开发都全面或部分地采用面向对象技术。随着经济建设和高新科技的迅速发展及计算机应用技术的普及,我国许多高等院校将面向对象方法与技术这门课程作为计算机及相关专业学生的必修课,而社会上各种面向对象技术培训班也大量涌现,这些都说明面向对象方法在计算机科学技术领域占据着重要地位。
  本书的作者Crady Booch是面向对象技术的先驱,也是Rahonal软件公司的首席科学家,他撰写了多本“面向对象开发”和“软件工程”的畅销书籍。本书是作者的代表作之一,被公认为是面向对象理论和方法的经典著作,该书从概念、方法和应用三个角度全面深入地论述面向对象技术及其表示方法。此外,书中还给出大量详实的例子,帮助读者学习和理解面向对象方法以及在实际领域中如何运用面向对象的分析和设计技术来开发软件。全书论述既深刻又浅显易懂,对于大专院校学生以及相关技术人员,本书是一本十分难得的教材和参考书。
  本书共分三部分:概念、方法和应用。第一部分主要对面向对象分析设计的基本概念、主要步骤、典型特点、关键问题等进行较为详细的介绍和阐述。该部分共分4章。第1章讲述软件固有的复杂性、复杂系统的结构和设计复杂系统的概念;第2章介绍对象模型的演化、对象模型的要素以及如何应用对象模型;第3章介绍对象的本质、对象间的关系、类的本质、类间的关系、类和对象的相互影响以及有关建立高质量的类和对象的方法;第4章探讨正确分类的重要性、识别类和对象及关键的抽象和机制。
  本书的第二部分主要讲述面向对象的表示法、面向对象的开发过程和语用学。该部分共分3章。第5章讲述面向对象表示法的要素、类图、状态转换图、对象图、交互图、模块图和进程图;第6章介绍面向对象开发过程的原则和开发过程;第7章介绍开发过程的步骤。
  本书的第三部分主要讲述面向对象分析设计在各个领域的应用。该部分共分5章。第8章介绍面向对象分析设计方法在气象监测站数据采集中的应用;第9章介绍面向对象分析设计方法在基于类库的框架结构上的应用;第10章介绍面向对象分析设计方法在库存跟踪系统的客户朋艮务器计算中的应用;第11章介绍面向对象分析设计方法在人工智能密码分析中的应用;
  第12章介绍面向对象分析设计方法在交通管理中的应用。
  本书由冯博琴教授组织翻译,第1章—第5章由冯岚翻译,第6章由胡英萍、冯岚翻译,第7章由符蓉翻译,第8章由王伟翻译,第9章由薛亮翻译,第10章由汪齐名翻译,第11章由管涛翻译,第12章及附录由胡英萍、夏红翻译,全书由薛涛、朱丹军、崔舒宁审校,冯博琴教授统稿。由于译者水平有限,错误在所难免,请读者不吝指正!
  译 者
  2002年4月于西安交通大学

图书目录

第1章 复杂性
1.1 软件固有的复杂性
1.1.1 简单软件系统与复杂软件系统的特性
1.1.2 为什么软件具有固有的复杂性
1.1.3 不限制复杂性的后果
1.2 复杂系统的结构
1.2.1 复杂系统示例
1.2.2 复杂系统的5个属性
1.2.3 有组织的复杂性与紊乱的复杂性
1.3 还混乱状态以秩序
1.3.1 分解的作用
补充材料:分析和设计方法的分类
1.3.2 抽象的作用
1.3.3 层次的作用
1.4 设计复杂系统
1.4.1 工程是科学也是艺术
1.4.2 设计的含义
1.5 小结
1.6 进一步阅读材料 

第2章 对象模型
2.1 对象模型的演化
2.1.1 软件工程的趋势
2.1.2 对象模型的基础
2.1.3 面向对象编程、面向对象设计和面向对象分析
补充材料:对象模型的基础
2.2 对象模型的要素
2.2.1 编程范例的种类
2.2.2 抽象
2.2.3 封装
2.2.4 模块化
2.2.5 层次
2.2.6 类型定义
2.2.7 并发性
2.2.8 持续性
2.3 应用对象模型
2.3.1 对象模型的优点
2.3.2 对象模型的应用
2.3.3 未解决的问题
2.4 小结
2.5 进一步阅读材料

第3章 类和对象
3.1 对象的本质
3.1.1 什么是对象以及什么不是对象
3.1.2 状态
3.1.3 行为
3.1.4 标识
3.2 对象间的关系
3.2.1 关系的种类
3.2.2 链
3.2.3 聚合
3.3 类的本质
3.3.1 什么是类以及什么不是类
3.3.2 接口和实现
3.3.3 类的生命期
3.4 类间的关系
3.4.1 关系的种类
3.4.2 关联
3.4.3 继承
补充材料:调用方法
3.4.4 聚合
3.4.5 使用
3.4.6 实例化
3.4.7 元类
3.5 类和对象的相互作用
3.5.1 类和对象间的关系
3.5.2 分析和设计中类和对象的角色
3.6 有关建立高质量的类和对象
3.6.1 衡量抽象的质量
3.6.2 选择操作
3.6.3 选择关系
3.6.4 选择实现
3.7 小结
3.8 进一步阅读材料

第4章 分类
4.1 正确分类的重要性
4.1.1 分类和面向对象的开发
4.1.2 分类的困难
4.2 识别类和对象
4.2.1 经典的方法与现代的方法
补充材料:一个分类问题
4.2.2 面向对象分析
4.3 关键的抽象和机制
4.3.1 识别关键的抽象
4.3.2 识别机制
4.4 小结
4.5 进一步阅读材料
第二部分 方 法

第5章 表示法
5.1 表示法的要素
5.1.1 多重观察的需要
5.1.2 模型与视图
5.1.3 逻辑模型与物理模型
5.1.4 静态语义与动态语义
5.1.5 工具的角色
5.2 类图
5.2.1 基本要素:类和它们之间的关系
5.2.2 基本要素:类类别
5.2.3 高级概念
5.2.4 规格说明
5.3 状态转换图
5.3.1 基本要素:状态和状态转换
5.3.2 高级概念
5.3.3 规格说明
5.4 对象图
5.4.1 基本要素:对象和它们之间的关系
5.4.2 高级概念
5.4.3 规格说明
5.5 交互图
5.5.1 基本要素:对象和交互
5.5.2 高级概念
5.6 模块图
5.6.1 基本要素:模块和它们之间的依赖性
5.6.2 基本要素:子系统
5.6.3 高级概念
5.6.4 规格说明
5.7 进程图
5.7.1 基本要素:处理器、设备和连接
5.7.2 高级概念
5.7.3 规格说明
5.8 应用表示法
5.8.1 面向对象开发的产品
5.8.2 伸缩性
5.9 小结
5.10 进一步阅读材料

第6章 过程
6.1 首要原则
6.1.1 成功项目的特点
6.1.2 走向合理的设计过程
6.2 开发的微观过程
6.2.1 概述
6.2.2 识别类和对象
6.2.3 识别类和对象的语义
6.2.4 识别类和对象之间的关系
6.2.5 实现类和对象
6.3 开发的宏观过程
6.3.1 概述
6.3.2 概念建立
6.3.3 系统分析
6.3.4 系统设计
6.3.5 演化
6.3.6 维护
6.4 小结
6.5 进一步阅读材料

第7章 运用环境
7.1 管理和计划
7.1.1 风险管理
7.1.2 任务计划
7.1.3 走查
7.2 人员配备
7.2.1 资源配置
7.2.2 开发组角色
7.3 版本管理
7.3.1 集成
7.3.2 配置管理和版本控制
7.3.3 测试
7.4 复用
7.4.1 复用的元素
7.4.2 建立复用制度
7.5 质量保证和度量标准
7.5.1 软件质量
7.5.2 面向对象的度量标准
7.6 文档化
7.6.1 开发遗产
7.6.2 文档化的内容
7.7 工具
7.7.1 工具类别
7.7.2 牵涉的机构人员
7.8 特殊话题
7.8.1 具体领域的话题
7.8.2 技术转变
7.9 面向对象开发的益处和风险
7.9.1 面向对象开发的益处
7.9.2 面向对象开发的风险
7.10 小结
7.11 进一步阅读材料

第三部分 应 用

第8章 数据采集:气象监测站
补充材料:气象监测站需求
8.1 分析
8.1.1 确定问题的边界
8.1.2 场景
8.2 设计
8.2.1 体系结构框架
8.2.2 框架机制
8.3 演化
8.3.1 版本发布计划
8.3.2 传感器机制
8.3.3 显示机制
8.3.4 用户界面机制
8.4 维护
8.5 进一步阅读材料

第9章 框架:基础类库
9.1 分析
9.1.1 确定问题的边界
补充材料:基础类库需求
9.1.2 模式
9.2 设计
9.2.1 策略问题
9.2.2 宏观组织
9.2.3 类家族
9.2.4 微观组织
9.2.5 时间和空间的语义
9.2.6 存储管理
9.2.7 异常条件
9.2.8 迭代
9.2.9 同步
9.3 演化
9.3.1 类接口设计
9.3.2 支持类
9.3.3 工具
9.4 维护
9.5 进一步阅读材料

第10章 客户/服务器计算:库存清单
跟踪系统
10.1 分析
10.1.1 确定问题边界
补充材料:库存清单跟踪系统需求
10.1.2 客户/服务器计算
10.1.3 场景
10.1.4 数据库模型
10.1. 5 SQL
10.1.6 模式分析
10.2 设计
10.2.1 客户/服务器体系结构
10.2.2 事务机制
10.2.3 构建客户程序
10.3 演化
10.3.1 版本发布管理
10.3.2 应用程序生成器
10.4 维护
10.5 进一步阅读材料

第11章 人工智能:密码分析
11.1 分析
11.1.1 确定问题边界
补充材料:密码分析需求
11.1.2 黑板框架的体系结构
11.1.3 知识源分析
11.2 设计
11.2.1 黑板框架的体系结构
11.2.2 知识源的设计
11.2.3 控制器的设计
11.3 演化
11.3.1 集成黑板框架
11.3.2 增加新的知识源
11.4 维护
11.4.1 增加新的功能
11.4.2 改变需求
11.5 进一步阅读材料

第12章 命令与控制:交通管理
12.1 分析
12.1.1 确定问题边界
补充材料:交通管理系统需求
12.1.2 系统需求与软件需求
12.1.3 关键的抽象与机制
12.2 设计
12.2.1 信息传递
12.2.2 列车时刻表计划
12.2.3 显示
12.2.4 传感器数据获取
12.3 演化
12.3.1 模块结构
12.3.2 子系统规格说明
12.4 维护
12.4.1 增加新功能
12.4.2 改变目标硬件
12.5 进一步阅读材料
后记
附录 面向对象的编程语言
术语表
参考文献
分类书目

教学资源推荐
作者: 郑人杰 马素霞 等编著
作者: (英)Ian Sommerville
参考读物推荐
作者: 葛志春 刘志成 聂艳明 冯向科
作者: (美)Martin Fowler
作者: (美)John D.Musa