面向对象分析与设计(第3版)(修订版)
  • 推荐0
  • 收藏9
  • 浏览836

面向对象分析与设计(第3版)(修订版)

(美)Grady Booch(格雷迪.布奇),Robert A. Maksimchuk(罗伯特.A.马克西)等 (作者)  王海鹏 , 潘加宇 (译者)

  • 丛  书:Jolt大奖精选丛书
  • 书  号:978-7-121-28666-7
  • 出版日期:2016-05-27
  • 页  数:608
  • 开  本:16(185*235)
  • 出版状态:上市销售
  • 原书名: Object-Oriented Analysis and Design with Applications (Third Edition)
  • 原书号:020189551X
  • 维护人:符隆美
本书是UML创始人Grady Booch的代表作之一。
全书分为理论和应用两部分。理论部分深刻剖析了面向对象分析与设计(OOAD)的概念和方法。应用部分连续列出了5个不同类型、不同领域的应用,描述如何从初始阶段到交付阶段,将OOAD理论和方法应用到项目中。应用部分所涉及的领域包括系统架构、数据获取、密码分析、控制系统和Web开发,还给出了一些关于重要问题的有效建议,包括分类、实现策略和高性价比的项目管理。书中介绍的概念都基于牢固的理论基础。同时,作者十分注重实效,基于其丰富的经验,面向软件工程实践者的实际需要,提出了改进的对象开发方法,用于解决系统和软件开发者面临的复杂问题;运用大量例子说明了基本概念,解释了方法,并展示了在不同领域的成功应用。

书中的表示法采用最新的UML 2.0,因此本书是学习UML 2.0不可多得的参考书。本书非常适合实际系统和软件的开发者、系统分析师或架构师、项目经理阅读,也可以作为高等院校软件工程和高级编程课程的教材使用。

Jolt大奖素有“软件业之奥斯卡”的美称,本丛书精选自Jolt历届获奖图书,以植根于开发实践中的独到工程思想与杰出方法论为主要甄选方向。
出版说明
经久不息的回荡
今时的读书人,不复有无书可读之苦,却时有品种繁多而无从择优之惑,
甚而专业度颇高的技术书领域,亦日趋遭逢乱花迷眼的境地。此时,若得觅权
威书评,抑或有公信力的排行榜,可按图索骥,大大增加选中好书的命中率。
然而,如此良助,不可多得,纵观中外也唯见一枝独秀——素有“软件业奥斯
卡”之美誉的 Jolt 奖!
震撼世界者为谁
在计算设备已经成为企业生产和日常生活之必备工具的今天, 专业和大众
用户对于软件的功能、 性能和用户体验的要求都在不断提高。 在这样的背景下,
如何能够发挥出软件开发的最高效率和最大效能, 已经是摆在每一个从业者面
前的重大课题,而这也正是 Jolt 大奖横空出世的初衷及坚持数年的宗旨。
Jolt 大奖历时 20 余年, 在图书及软件业知名度极高, 广受推崇。 奖如其名,
为引领计算机科学与工程发展主流, Jolt 坚持将每年的奖项只颁给那些给整个
IT 业界带来震撼结果的图书、工具、产品及理念等,因一流的眼光及超高的专
业度而得以闻名遐迩,声名远播。
除图书外, Jolt 针对软件产品设有诸多奖项分类,如配置管理、协作工具、
数据库引擎/数据库工具、设计工具/建模、开发环境、企业工具、库/框架、移
动开发工具等。但图书历来是 Jolt大奖中最受瞩目且传播最广的一个奖项分支。
Jolt 曾设有通用类图书、技术类图书等分类,每个分类又设有“卓越奖”( Jolt
Award,一般为一个)和“生产力奖”( Productivity Award,一般为 2 或 3 个)。
IV 面向对象分析与设计(第 3 版)(修订版)
获奖技术图书一经公布,即打上经典烙印,可谓一举“震撼全世界”(赞助商
Jolt 可乐的广告词)。
作为计算机技术图书的后进,我们总在追问——是谁在震撼世界,是谁在
照亮明天? Jolt 大奖恰似摆在眼前的橱窗, 让我们可以近距离观看潮流在舞蹈,
倾听震撼在轰鸣!
朝花夕拾为哪般
Jolt 像是一年一度的承诺,在茫茫书海中为我们淘砺出一批批经得起岁月
冲刷的杰作, 头顶桂冠的佳作也因而得以一批批引进中国, 为国人开阔了眼界,
滋补了技术养分。然而,或因技术差距造就的生不逢时、水土不服,或因翻译、
制作的不如人意,抑或是疏于宣传等诸多原因,这些经典著作在国内出版后,
尽管不乏如获至宝的拥趸,却仍不为诸多人所知,从而与大量本应从中获益的
读者擦肩而过。既然这生生错失的遗憾本不该发生,则更不应延续。为此,我
们邀国外出版同行、国内技术专家一道,踏上朝花夕拾之路,竭力为广大读者
筛选出历久弥新、震撼依旧的 Jolt 图书精品。
Jolt 获奖图书皆由业界专家一致评出,并得到软件从业人员的高度认可,
虽然这些书今天读来, 不再能看到 20 世纪史诗时代那般日新月异的理论突破,
以及依赖于高深繁复的科学研究所取得的系统化成果, 更多是在日复一日的开
发实践中总结和提炼出来的工程思想和方法论。重新选材之所以有所弃取,从
Jolt 多年来的评奖规律中可窥端倪——
一万小时真理见
凡是在工程思想领域取得革命性、颠覆性突破的图书,就被归于“震撼”
获奖分类。比如,从基于过程的程序设计模型过渡到面向对象的全新模型,就
是软件开发思想上的一次带来巨大震撼的革命;再比如,打破传统的瀑布模型
而转向持续集成的软件交付模型,这也是一场业界的重大思想转变。像这样的
重大思想突破,可以说是数年甚至数十年一遇的,而荣获 Jolt 大奖的图书中更
为常见的,则是基于最佳实践的“生产效率”获奖者。获得此类殊荣的图书,
都是作者们从平凡的、重复的,甚至用一般人的眼光看来不怎么起眼的日常开
经久不息的回荡 重看面向对象V
发实践中,以独具的慧眼、过人的耐心和大胆的创新,闯开一条不平常道路的
心血与经验总结。
这些图书所涉及的主题,都是普通的软件开发人员每天要面对的工作——
代码阅读、 撰写测试用例、 修复软件问题……但就是这样貌似平淡无奇的工作,
是否能每一天、每一个项目都做好,着实拉开了软件开发人员素质的差距,也
决定了软件企业开发出来的产品和服务的质量。我们中国有一句古话,叫作熟
能生巧;某位著名企业家也说过一句家喻户晓的名言:“把简单的事千百万次
地做好,就是不简单的。”这些朴素而实际的真理,同样也是本套丛书最能彰
显的所谓程序员精神。它建立在脚踏实地的实践基础之上,也充满了对于自由
和创新的向往。
名作可堪比名曲
就不因岁月流逝而褪色来说,与这些 Jolt 名作相媲美者,只有那些百年响
彻、震撼古今的经典名曲。希望本丛书带给大家的每部著作,也如百听不厌的
乐曲,掩卷良久方余音绕梁,真知存心。仔细想来,软件开发与古典音乐岂非
有异曲同工之妙?既是人类心智索问精确科学的探究, 亦是寻觅美学享受的追
求。工程是艺术的根基,而艺术是工程的极致。衷心地希望各位读者能够认真
阅读本丛书的本本珍品,并切实地用于自 己的日常工作中,在充分享受大师魅
力的同时,为中国的软件事业谱写更多、更震撼的乐章。
VI 面向对象分析与设计(第 3 版)(修订版)
谨以本书献给 Jan:
我的朋友,我的爱人,我的妻子。
——Grady
重看面向对象VII
重看面向对象
软件的本质是什么?从不同的角度来看,会有不同的答案。有人认为是程
序加文档, 有人认为是人机交互,有人认为是增删改查, 有人认为是抽象模型,
而我认为是算法。
计算机科学的基石是图灵机抽象:一个输入集合,一个输出集合,一个内
部状态集合,一个计算规则集合。这个抽象十分强大,我们甚至可以认为一头
奶牛也是一个图灵机:吃的是草,挤的是奶。
一个表达式也是一个图灵机,其中的操作数是输入,求值的结果是输出。
一个函数也是图灵机,参数是输出,返回值是输出。编程或设计软件就是在通
用图灵机的基础上,设计一个具体的图灵机。我们设计软件接受怎样的输入,
设计软件内部的状态,设计表示计算规则的代码,设计软件的输出。
近年来逐渐流行的函数式编程,就是建立在这个抽象的基础上。而且函数
式编程的思想由来已久,可以追溯到最古老的高级语言之一: Lisp。这种思想
非常简单:给定一个输入集合,经过函数的处理,给出一个输出集合。由此也
导出了 Map-Reduce 等流行的架构设计模式: 一个计算集群仍然是一个图灵机。
纯粹的函数有一点不足, 它没有内部状态。 可以说, 它是简化了的图灵机。
但在有些时候,我们确实需要内部状态。根据内部状态的不同,对于同样的输
入,可能给出不一样的输出。于是便有了闭包的概念,它是一个函数加上相关
的上下文环境状态。这样,我们可以毫无困难地构建任何具体的图灵机(好吧,
正确实现一个算法还是比较困难的)。
闭包可以看成是拥有内部状态的函数,这就相当于一个简单的对象,它只
有一个方法。反过来,对象可以看成是几个闭包,它们共享了内部状态。所以
有人说:闭包是懒人的对象,对象是懒人的闭包。因此,函数式编程和面向对
VIII 面向对象分析与设计(第 3 版)(修订版)
象思想,在底层基础上是一致的。
面向对象思想的历史和函数式一样久远。实际上,它们都是我们在设计算
法时的一种抽象。只有利用抽象概念,才能实现人与人之间的沟通。“你想吃
苹果吗?”这里的“苹果”就是一个抽象概念,它隐藏了苹果实现的许多细节。
人的大脑喜欢工作在一组抽象概念上。名词是结构或存在的抽象,动词是行为
或过程的抽象。
我们在设计算法时,既需要函数抽象,也需要对象抽象。今天,面向对象
和函数式编程的思想在各种编程语言中融合,可以说是殊途同归。
抽象是强大的工具,但用得不好,也会产生不良的后果。最重要的问题,
就是创建太多不必要的抽象。毕竟,抽象只是我们脑中的概念,我们可以创造
出任何概念。比如上帝和各种鬼神,直到科学家说,在科学的系统里不需要假
设存在一个上帝。面向对象在这方面遇到的问题比较多。举例来说,一个 Java
的 Hello world 程序,就要涉及好几个概念,直接导致程序的代码比较长。而
在函数式编程中, 这通常只是一次函数调用。又比如, 在一个使用 Struts、 Spring、
Hibernate 构建的 Java Web 应用程序中,处理一个 Get 请求的调用栈,可能是
长长的一串。数据在不同的概念抽象之间反复倒手,白白浪费了计算资源。
任何两种观点都是互补的。 面向对象思想在过去的软件开发中取得了辉煌
的成绩。函数式编程让我们能从另一个角度审视面向对象,更进一步体会面向
对象抽象的强大,也发现面向对象中一些误用的地方。如无必要,勿增实体。
也许我们不需要假设以太的存在,就能解释光在真空中的传播。
多年后重读这本书, 促使我重新思考, 需要利用哪些抽象来设计我的算法。
这些年来,这本书让我受益良多,再次向大家郑重推荐。
王海鹏
2016 年 1 月 5 日
特别的 Booch,特别的书IX
特别的Booch,特别的书
以下几点也许是您购买本书的理由。
1.读过 Robert C. Martin 的 Agile Principles 的读者,很容易注意到该书前
言的第一句话,“ Bob,你说过去年就能写完这本书的——Claudia Frers 在 1999
年 UML World 大会上抱怨。”“这本书”指的是 Robert C. Martin 在 20 世纪 90
年代的代表作 Designing Object-Oriented C++ Application using the Booch
Method。 Agile Principles 本来是作为 Designing 一书的第 2 版。 由此可见, Robert
C. Martin 深受 Booch 的影响。
2. Grady Booch 是最早提出面向对象分析设计方法的方法学家之一。 20
多年来, Grady Booch 一直担任 Rational 公司的首席科学家,随着 Rational 成
长,收购别人,被别人收购, CEO 换了又换,他也没有离开。 Grady Booch 是
UML 三友中唯一的 IBM 院士。
3 . Grady Booch 非 常 “ 与 时 俱 进 ”, 其 Blog ( http://www.ibm.com/
developerworks/blogs/ page/gradybooch)更新频繁,即使在心脏主动脉瘤动手
术期间, 他也一直在病床上更新 Blog。他还热衷于 Second Life, 认为 Second Life
是一条协作软件开发的新道路。 Grady Booch 在 Second Life 上的化身叫作 Alem
Theas。 Dr. Dobb 在给他颁发程序设计杰出奖( Excellence in Programming Award)
的时候,就是在 Second Life 上进行的。
4.本书是真正展示 Booch 思想的书。我们可以在 UML 三友署名的 UML
系列书籍封面上看到 Grady Booch 的名字,但其中大多数工作是由 James
Rumbaugh 完成的。
5.本书分为理论和应用两部分。理论部分(概念和方法)的叙述朴实无
华,标题简洁:“复杂性”、“对象模型”、“类和对象”、“分类”、“表示法”、“过
X 面向对象分析与设计(第 3 版)(修订版)
程”……用平实的语言把内容剖析得很透彻。应用部分连续列出了 5 个不同类
型、不同领域的应用,描述如何从初始阶段到交付阶段,把前面所授方法应用
到项目中。
? 基于卫星的导航系统:聚焦于系统架构;
? 列车交通控制系统:聚焦于系统需求;
? 人工智能解密系统:聚焦于分析;
? 气象站数据采集系统:聚焦于分析到初步的设计;
? 雇员休假跟踪 Web 应用系统:聚焦于详细设计和实现。
6.书中的表示法采用最新的 UML 2.0,画图工具是 IBM Rational Software
Architect 和 Sparx Systems Enterprise Architect。也就是说, Grady Booch 使用了
非 IBM 公司的 UML 工具来写自己的书。
潘加宇
前言XI
前 言
人类渴望得到精神上的宁静、美学上的成就、家庭的安全、正义和自由。
这一切都不能通过工业化的生产效率来直接满足。但是,生产效率让人们得到
充足的物质享受,而不至于与匮乏苦苦斗争。这为精神、美学和家庭事务赢得
了时间,也使得社会能够将一些特殊的技能赋予司法机构以及维护权利的机构。
Harlan Mills
DPMA and Human Productivity
作为计算机专业人员,我们努力地去构建能工作而且有用的系统;作为软
件工程师, 我们面临着在计算资源和人力资源有限的条件下创建复杂系统的任
务。面向对象( OO)技术已经发展为管理许多不同种类的系统中内在复杂性
的手段。对象模型已被证明是非常有力和统一的概念。
对第 2 版的改动
在本书第 2 版出版以后,我们看到了一些重要的技术进步,其中一些突出
的进步如下。
? 与因特网的高带宽、无线连接已经非常普遍;
? 纳米技术已经出现,并开始提供有价值的产品;
? 机器人在火星表面漫步;
? 计算机生成的特效使得在电影中能够完全逼真地再现任何想象中的
世界;
? 出现了个人气垫船;
? 手机已无处不在,使用非常方便;
? 获得了人类基因图谱;
XII 面向对象分析与设计(第 3 版)(修订版)
? 面向对象技术已经在工业软件开发中成为主流技术。
在世界各地都能见到面向对象技术被使用。但是,我们仍然遇到许多人,他
们还没有采用面向对象的开发方式。对于这两类人,本书的新版本都很有价值。
对于面向对象分析与设计( OOAD)的新手,本书提供了下列信息。
? 面向对象的概念支持和演进式的观点;
? 如何在系统开发生命周期中应用 OOAD 的例子;
? 对系统和软件开发中使用的标准表示法统一建模语言(UML 2.0)的介绍。
对于有经验的 OOAD 实践者,本书从不同的角度提供了价值。
? 即使对于有经验的实践者, UML 2.0 也是新的。这是可以看到的表示
法方面的重要区别。
? 根据前一版本所收到的反馈,更加关注建模。
? 通过本书的概念部分的学习,可以了解在面向对象的世界中,“为什么
事情总是像它们现在的样子”。许多人可能从没研究过面向对象( OO)
概念本身的发展,即使有所了解,在初次学习 OO 方法时,也许未能
理解其重要性。
本书这一版和以前的版本相比有四项主要区别,如下所示。
1. UML 2.0 已经正式得到了通过,第 5 章将介绍 UML 2.0。为了加强读
者对这种表示法的理解,特别区分了它的基本元素和高级元素。
2.这一版在应用程序的章节中引入了一些新的领域和背景。例如,应用
程序的领域范围很广,包括从高级系统架构到基于 Web 的系统的设计细节等
各种不同层次的抽象。
3.在前一版出版时,作为 OO 编程的概念来说, C++相对还是比较新的。
读者告诉我们,这种强调不再是主要的考虑。现在有大量的 OO 编程和技术书
籍及培训,还有许多为 OO 开发而设计的编程语言。因此,大部分关于编码的
讨论被删除了。
前言XIII
4.最后,响应读者的要求,这一版更关注 OOAD 建模方面。应用程序章
节将展示如何利用 UML,其中每一章强调了整个开发生命周期中的一个阶段。
本书的目标
本书在面向对象系统构建方面提供了实用指导。它的具体目标如下。
? 提供对对象模型的基础概念及其发展变化的正确理解;
? 帮助读者掌握面向对象分析和设计的表示法和过程;
? 介绍在不同的问题域中面向对象分析和设计的实际应用。
本书介绍的概念都基于牢固的理论基础,但本书首先是一本注重实效的
书,面向架构师和软件开发者等软件工程实践者的实际需要。
读者对象
本书既是为计算机专业人员也是为学生编写的。
? 对于实际系统和软件的开发者,本书将展示如何高效地利用面向对象
技术来解决实际问题。
? 对于系统分析师或架构师,本书将利用面向对象的分析与设计,提供
一条从需求到实现的途径。 我们帮助分析人员或架构师提高识别能力,
以区分不好的面向对象的结构与好的面向对象的结构,并在现实情况
反常时权衡可选的设计方案。也许最重要的就是,我们提供了一些让
复杂系统变得有条理的新方法。
? 对于项目经理,本书可以帮助他们更好地理解开发团队的资源分配、
软件品质、测量指标以及管理与复杂软件系统相关的风险。
? 对于学生,本书提供了一些必要的指导,使得学生能够开始掌握复杂
系统开发的科学与艺术中的一些重要技巧。
本书不仅适合专业研讨班和个人学习使用, 也适合作为高等院校本科生和
研究生课程的教材。因为它主要阐述了软件开发的方法,所以非常适合软件工
XIV 面向对象分析与设计(第 3 版)(修订版)
程和高级编程等课程, 也可以作为涉及具体面向对象编程语言的课程的补充阅
读材料。
本书的组织结构
本书分成 3 篇:概念、方法和应用,其中穿插了大量的补充材料。
概念
第 1 篇研究软件的内在复杂性及其表现方式。 本书将对象模型作为一种手
段来帮助我们管理这种复杂性,详细地研究了对象模型的基本元素——抽象、
封装、模块化、层次结构,讨论了“什么是类?”以及“什么是对象?”等基
本问题。由于确定有意义的类和对象是面向对象开发中的关键任务,因此我们
花了相当多的时间来研究分类的本质。具体来说,我们研究了生物学、语言学
和心理学等其他学科中的分类方法, 然后将这些经验应用到发现软件系统中类
和对象的问题上。
方法
第 2 篇基于对象模型提出了复杂系统开发的一种方法。 针对面向对象的分
析与设计,首先提出了一套图形表示法(即 UML),然后是一个通用的过程框
架。还研究了面向对象开发的实践,具体来说,就是它在软件开发生命周期中
的位置以及它对于项目管理意味着什么。
应用程序
第 3 篇提供了一组( 5 个)不简单的例子,涉及不同问题域:系统架构、
控制系统、密码分析、数据获取和 Web 开发。之所以选择这些问题域,是因
为它们是软件工程师实践过程中遇到的复杂问题的代表。 展示某些原则如何应
用于简单的问题是很容易的, 但是因为我们关注的是为现实世界构建有用的系
统,所以我们对如何将对象模型应用于复杂应用程序更加感兴趣。软件系统的
前言XV
开发不同于按菜谱做菜,因此我们强调应用程序的增量式开发,这种开发以一
些正确的原则和良好的模型作为指导。
补充材料
本书中穿插了大量的补充材料。多数章节中都有补充材料,这些材料对重
要的主题提供了相关的信息。本书包括了一个关于面向对象编程语言的附录,
其中总结了一些常见语言的特征,还提供了常用术语的词汇表,以及一个扩展
的分类参考书目,列出了关于对象模型的参考资料。
工具说明
读者总是会问创建本书中的图使用了什么工具。 我们主要使用两个很好的
工具来画图: IBM Rational Software Architect 和 Sparx Systems Enterprise
Architect。为什么不只用一个?市场的实际情况是,没有哪一种工具可以做所
有的事情。实践 OOAD 的时间越长,最后就会发现有些特别的情况是所有工
具都不支持的。(在这种情况下,可能需要寻求基本的绘图工具来展示你的想
法。)但是,不要让这些很少的情况阻止你使用健壮的 OOAD 工具,如我们提
到的这两种工具。
本书的阅读方法
对于本书可以一页一页地读,也可以不按现有的组织形式阅读。如果想对
对象模型中的基本概念或面向对象开发的动机有较深的理解, 那么就应该从第
1 章开始依次读下去。如果只对面向对象开发分析与设计中的表示法和过程感
兴趣,就从第 5 章和第 6 章开始阅读。第 7 章对使用这种方法管理项目的管理
者来说特别有用。如果对针对特定问题域的面向对象技术的应用程序更感兴
趣,则可以在第 8~12 章中任选一章或者全部阅读。
XVI 面向对象分析与设计(第 3 版)(修订版)
致 谢
我把本书献给我的妻子 Jan,感谢她的爱和支持。
在第 1 版和第 2 版的写作过程中,一些人促成了我的面向对象开发思想。
对于他们的贡献,我特别要感谢,他们是: Sam Adams、 Mike Akroid、 Glenn
Andert、 Sid Bailin、 Kent Beck、 Dave Bernstein、 Daniel Bobrow、 Dick Bolz、
Dave Bulman、 Kayvan Carun、 Dave Collins、 Damian Conway、 Steve Cook、 Jim
Coplien、 Brad Cox、 Ward Cunningham、 Tom DeMarco、 Mike Devlin、 Richard
Gabriel、 William Genemaras、 Adele Goldberg、 Ian Graham、 Tony Hoare、 Jon
Hopkins、 Michael Jackson、 Ralph Johnson、 James Kempf、 Norm Kerth、 Jordan
Kreindler、 Doug Lea、 Phil Levy、 Barbara Liskov、 Cliff Longman、 James
MacFarlane、 Masoud Milani、 Harlan Mills、 Robert Murray、 Steve Neis、 Gene
Ouye、 Dave Parnas、 Bill Riddel、 Mary Beth Rosson、 Kenny Rubin、 Jim Rumbaugh、
Kurt Schmucker、 Ed Seidewitz、 Dan Shiffman、 Dave Stevenson、 Bjarne Stroustrup、
Dave Thomas、 Mike Vilot、 Tony Wasserman、 Peter Wegner、 Iseult White、 John
Williams、 Lloyd Williams、 Niklaus Wirth、 Mario Wolczko 和 Ed Yourdon。
本书的相当一部分实践来自我参与并在世界各地开发的复杂软件系统, 这
些系统的开发公司包括 Alcatel、 Andersen Consulting、 Apple、 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、 NTT、 Philips、 Rockwell
International、 Shell Oil、 Symantec、 Taligent 和 TRW。我曾有机会与数百名专
业软件工程师和他们的经理协作,我要谢谢他们的帮助,是他们让本书与真实
世界的问题相关。
致谢XVII
特别要感谢 Rational 对我的工作的支持。还要谢谢 Tony Hall,他的卡通画给
本书带来了亮点,否则这本书就只是一本乏味的技术书籍。最后,我要谢谢我的 3
只猫——Camy、 Annie 和 Shadow,在我写作的许多个深夜,它们总是陪伴着我。
——Grady Booch
我要感谢我的家人,他们必须忍受我参与编写这本书的漫长日子。感谢我
的父母,他们培育了我高尚的职业道德。感谢 Mary T.O’ Brien,她为我提供了
这个机会,这才使我开始了大量的后续工作。感谢 Chris Guzikowski 帮助推动
这项工作直至完成。我要感谢合著者,感谢你们允许我加入这项工作,也感谢
你们在这个项目中的努力工作和贡献。最后,我要衷心感谢 Grady 多年前编写
的本书的第 1 版, 这本书是关于面向对象分析与设计最早的、 最基础的书之一。
——Bob Maksimchuk
我想表达对家人的感激,他们给了我爱和支持,这是我所有努力的基础。
感谢 Grady 给我机会,让我能够在他的经典著作的第 3 版中做出贡献。最后,
我要感谢 Bob Maksimchuk 在我成为一名作者的过程中所给予的指导。
——Mike Engle
我要将本书献给我的母亲 Jean Smith,她鼓励我参加这项工作。我也要表
达我对家人 Russell、 Alyssa 和 Logan 的爱和感激,感谢他们的支持和鼓励。感
谢 Bob Maksimchuk 和 Mike Engle,是他们让我有机会参与这项工作。
——Bobbi J. Young
我要特别感谢我的丈夫 Bob 和两个孩子——Katherine 和 Ryan,他们的爱
和支持给我了真正的灵感。
——Kelli A. Houston
感 谢 我 们 的 审 稿 者 , 特 别 是 Davyd Norris 和 Brian Lyons 。 感 谢
Addison-Wesley 所有参与本书的其他工作人员,特别是 Chris Zahn,他不仅参
与了这项工作,而且保持了这项长时间工作的连贯性。
XVIII 面向对象分析与设计(第 3 版)(修订版)
作者简介
Grady Booch 在软件架构、软件工程和建模领域的创新工作是世界知名
的。从 1981 年 Rational 公司创建开始,他就一直担任该公司的首席科学家。
Grady 于 2003 年 3 月成为了 IBM 院士( IBM Fellow)。
Grady 是统一建模语言( UML)最早的开发者之一,也是几个 Rational 产
品的最早开发者之一。 Grady 曾担任世界各地一些复杂的软件密集型项目的架
构师和架构指导者。
Grady 是 6 本畅销书的作者,包括 UML Users Guide 和 Object-Oriented
Analysis with Applications。 Grady 发表了几百篇有关软件工程的技术文章,其
中包括在 20 世纪 80 年代早期发表的文章,这些文章最先提出了面向对象设
计的术语和实践。他曾在世界各地演讲和接受咨询。
Grady 是美国计算机协会( ACM)、美国电气电子工程师学会( IEEE)、美
国科学促进会( AAAS)、有社会责任的计算机专家协会( CPSR)的成员。他
是 IBM 院士、 ACM 院士、 世界技术网络院士, 也是软件开发论坛梦想家。 Grady
是敏捷联盟、 Hillside 集团和软件架构师世界学院的创始委员会成员,也是
Northface 大学的顾问委员会成员。
Grady 于 1977 年从美国空军学院获得学士学位,于 1979 年从加州大学圣
巴巴拉分校获得电子工程科学硕士学位。
Grady 与他的妻子和他的猫生活在科罗拉多。他的兴趣包括阅读、旅行、
唱歌和弹奏竖琴。
Robert A. Maksimchuk 是 Unisys Chief Technology Office 的一名研究主
管。他关注新出现的建模技术,目的是提升 Unisys 3D 可视企业建模框架的战
略方向。 Bob 为这项任务带来了不同行业的大量系统工程、建模、面向对象分
作者简介XIX
析与设计的专业知识。他是 UML for Mere Mortals 和 UML for Database Design
的合著者,也写了许多文章。他曾经周游世界各地,在各种技术论坛上作为重
要演讲者发言,举办关于 UML 和面向对象开发的研讨会和培训。 Bob 是电气
电子工程师学会( IEEE)和国际系统工程学会( INCOSE)的成员。
Michael W. Engle 是洛克希德马丁公司的首席工程师。 他有超过 26 年的
技术和管理经验——从项目启动到运营支持,涵盖了完整的系统开发生命周
期。利用系统工程师、软件工程师和系统架构师的背景, Mike 运用了面向对
象技术,为复杂的系统开发提供创新的开发方式。
Bobbi J. Young, Ph.D.,是 Unisys Chief Technology Office 的一名研究主
管。她有着多年的 IT 行业从业经验,与商业公司和国防部合同供应商一同工
作。 Young 博士是一名咨询师,她在项目管理、企业架构、系统工程和面向对
象分析与设计方面提供现场指导。在她的职业生涯中,她关注于系统生命周期
过程和方法学,同时也关注企业架构。 Young 博士拥有生物学、计算机科学和
人工智能学位,她获得了管理信息系统的博士学位,也曾是美国海军预备役的
一名指挥官(已退伍)。
Jim Conallen 是 IBM Rational 的模型驱动开发战略小组的一名软件工程
师。在这个小组中,他积极参与,将对象管理集团( OMG)的模型驱动架构
( MDA)计划应用于 IBM Rational 的模型工具中。 Jim 在基于资产的开发和可
复用资产规范( RAS)领域也很活跃。 Jim 经常在会议上演讲,也经常写文章。
他的专业领域是 Web 应用开发。
他开发了 UML 的 Web 应用扩展( WAE)。这是对 UML 的一种扩展,
让开发者能够利用 UML 在合适的抽象和细节层面上对 Web 应用的架构进
行建模。这项工作是 IBM Rational Rose 和 Rational XDE Web Modeling 功能
的基础。
Jim 与人合著了两个版本的 Building Web Applications with UML,第一个版
本采用微软公司的 ASP 技术,后一个版本采用 J2EE 技术。
Jim 的经验也来自于加入 Rational 之前的工作, 那时他曾是独立的咨询师、
XX 面向对象分析与设计(第 3 版)(修订版)
Peace Corps 的志愿者和大学讲师。他还是 3 个孩子的父亲。 Jim 从 Widener 大
学获得了计算机和软件工程的学士学位和硕士学位。
Kelli Houston 是 IBM Rational 的 IT 咨询专家。她是 IBM 内部方法的方法
架构师,负责编写方法并集成 IBM 的方法。除了方法架构师的角色, Kelli 还
在 IBM 内部领导 Rational Method Composer( RMC)特别兴趣小组( SIG)工
作, 为客户和 IBM 内部咨询师提供有效使用 RMC 方面的咨询和现场指导服务。
目录XXI

目录

目录 阅读
第1篇 概念
第1章 复杂性
第2章 对象模型
第3章 类与对象
第4章 分类
第2篇 方法
第5章 表示法
第6章 过程
第7章 实战
第3篇 应用
第8章 系统架构——基于卫星的导航
第9章 控制系——交通管理
第10章 人工智能——密码分析
第11章 数据采集——气象监测站
第12章 Web 应用——休假跟踪系统

读者评论

同系列书

  • 代码质量

    Diomidis Spinellis(季奥米季斯.斯宾耐立思) (作者) 左飞 (译者)

    本书重点讨论代码的非功能特性,深入讲述代码如何满足重要的非功能性需求,如可靠性、安全性、可移植性和可维护性,以及时间效率和空间效率。 本书从apache w...

    ¥89.00
  • 面向对象分析与设计(第3版)

    Grady Booch(格雷迪.布奇)Robert A. Maksimchuk(罗伯特.A.马克西)Bobbi J. Young(迈克尔.W.恩格尔)Jim Conallen(波比.J.勇)Kelli (作者) 潘加宇 (译者)

    本书又是一本注重实效的书,面向架构师和软件开发者等软件工程实践者的实际需要。本书通过大量例子说明了基本概念,解释了方法,并展示了在不同领域的成功应用。全书分为理...

    ¥99.00
  • 持续集成:软件质量改进和风险降低之道

    Paul M. Duvall (保罗.M. 杜瓦尔)Steve Matyas (史蒂夫.迈耶斯) Andrew Glover(安德鲁.格洛弗) (作者) 王海鹏 (译者)

    本书全面深入地讨论持续集成的各个方面。本书介绍了一种增加项目可见性、降低项目失败风险的有效实践。许多软件开发的资深人士认定,这种方法非常不错。本书除了介绍持续集...

    ¥59.00
  • 灾难拯救:让软件项目重回轨道

    Bennatan(本拿塔) (作者) 侯艳飞 (译者)

    本书是作者在几十年软件项目管理实践经验的基础上写成的,它为软件项目拯救提供了一套易理解的、便于操作的和有效的方法。本书偏重实践而非理论,共分为13章。第1章为绪...

    ¥59.00
  • 代码阅读(含光盘1张)

    Diomidis Spinellis(季奥米季斯·斯宾耐立思) (作者) 左飞 (译者)

    阅读代码是程序员的基本技能,同时也是软件开发、维护、演进、审查和重用过程中不可或缺的组成部分。本书首次将阅读代码作为一项独立课题,系统性地加以论述。本书引用的代...

    ¥79.00

相关图书

软件架构设计:大型网站技术架构与业务架构融合之道

余春龙 (作者)

本书系统化地阐述了技术架构与业务架构的方法论与实践。本书内容分为5大部分,第1部分从行业背景出发定义架构的概念与范畴;第2部分细致讨论架构所需的计算机功底,包括...

¥49.00

MySQL 8 Cookbook(中文版)

(美) 卡西克·阿皮加 特拉 (Karthik Appigatla) (作者) 周彦伟 孟治华 王学芳 (译者)

MySQL 8.0 的发布是MySQL 发展历史上的一个重要里程碑,也是开源数据库领域内的一个大事件。针对这个版本,MySQL 官方团队做了太多的工作,从查询优...

 

iOS和macOS性能优化:Cocoa、Cocoa Touch、Objective-C和Swift

[德] Marcel Weiher (作者) 李俊阳 马超 程伟 孙莹 译 (译者)

随着应用功能的日益增加,性能问题也逐渐浮出水面,进入我们的视野之中。本书作者Marcel Weiher在性能调优领域有着丰富的经验,在他的带领下,你将会了解如何...

¥99.00

Scala编程(第3版)

Martin Odersky;Lex Spoon;Bill Venners (作者) 高宇翔 (译者)

本书由直接参与Scala开发的一线人员编写,因而对原理的解读和应用的把握更加值得信赖。本书面向具有一定编程经验的开发者,目标是让读者能够全面了解和掌握Scala...

¥144.00

质量全面管控——从项目管理到容灾测试

葛长芝 (作者)

本书专门为有志于软件测试的工程师打开软件测试的大门,笔者结合案例讲解测试实践技术,主要内容有:项目管理、项目需求管理、代码质量控制、自动化部署、软件测试、安全测...

¥49.00

Spring MVC Cookbook中文版

Alex Bretet (作者) 张龙 (译者)

本书由浅入深地介绍了当今流行的Java Web框架Spring MVC的方方面面,从基础的环境搭建到微服务设计与架构,再到持久化、REST API构建、认证与测...

¥69.00