《UML用户指南(第2版.修订版)》目录—导读

简介:


d35b9a27cba706be3a07421fb98eaecfad3b0cc3

版权声明
UML用户指南(第2版.修订版)
Authorized translation from the English language edition, entitled The Unified Modeling Language User Guide, Second Edition, 0321267974 by Grady Booch, James Rumbaugh, and Ivar Jacobson, published by Pearson Education, Inc., publishing as Addison-Wesley, Copyright © 2005 Pearson Education, Inc.

All rights reserved. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from Pearson Education, Inc.

CHINESE SIMPLIFIED language edition published by PEARSON EDUCATION ASIA LTD. and POSTS & TELECOM PRESS Copyright © 2013.

本书中文简体字版由Pearson Education Asia Ltd. 授权人民邮电出版社独家出版。未经出版者书面许可,不得以任何方式复制或抄袭本书内容。

本书封面贴有Pearson Education(培生教育出版集团)激光防伪标签,无标签者不得销售。

版权所有,侵权必究。

内容提要
UML用户指南(第2版.修订版)
本书是UML方面的一部权威著作,3位作者是面向对象方法最早的倡导者、UML的创始人。本版涵盖了UML2.0。书中为UML具体特征的使用提供了指南,描述了使用UML进行开发的过程,旨在让读者掌握UML的术语、规则和惯用法,以及如何有效地使用这种语言,知道如何应用UML去解决一些常见的建模问题。本书由7个部分共33章组成,每章都对一组UML特征及其具体用法进行了详细阐述,其中大部分按入门、术语和概念、常用建模技术、提示和技巧的方式组织。本书还为高级开发人员提供了在高级建模问题中应用UML的一条非常实用的线索。

本书适合作为高等院校计算机及相关专业本科生或研究生“统一建模语言(UML)”课程的教材,也适合从事软件开发的工程技术人员和软件工程领域的研究人员参考。

译者简介
UML用户指南(第2版.修订版)


55145b8b26ba2fb72d3939d15425c0fecce878cd

邵维忠 北京大学信息科学技术学院教授、博士生导师。1970年毕业于北京大学数学力学系,1979至1983年在计算机科学技术系任教并攻读硕士学位。早期主要从事操作系统和软件工程领域的研究。自1991年起注重面向对象建模方法的研究与教学,撰写和翻译了多部关于面向对象方法的学术著作。在软件工程环境、面向对象方法、建模语言、软件复用、构件技术和中间件技术等领域承担了多项国家高技术研究发展计划(863)项目、国家重大基础研究(973)项目和国家自然科学基金项目。曾获国家科技进步二等奖及多项国家部委级奖励。

be5ec4b63418955f1d5763b540c7c5c64a4b47cf

麻志毅 博士,北京大学信息科学技术学院副教授,国家软件工程协会软件工程分会秘书长。主要研究领域为软件建模技术、模型驱动开发技术和软件工程支撑环境等。发表学术论文80余篇,出版著(译)作11部。曾获国家科技进步二等奖和国家科技攻关优秀成果奖等多项国家部委奖励。

be08348b987c3672430feed51b8ce5907d04394d

马浩海 博士、教授、IBM资深软件工程师。2006年在北京大学信息学院获得计算机软件与理论专业理学博士学位。先后就职于内蒙古大学、Platform Computing和IBM Canada。已发表学术论文30余篇。主要研究领域为分布式计算和大规模数据处理、软件工程、面向对象技术、软件建模语言和模型驱动的软件开发技术。

7b1525a4da1b79377a8818a1c408f0e15cefb444

刘辉 博士、副教授。2008年毕业于北京大学信息科学技术学院计算机软件与理论专业,获理学博士学位。同年进入北京理工大学计算机学院从事教学科研工作,入选校优秀青年教师资助计划。目前主要从事软件重构、软件演化、软件维护、软件测试等方面的研究和教学工作。现主持国家自然科学基金两项、教育部博士点基金一项、其他纵向科研项目4项。以第一作者在IEEE Transactions on Software Engineering等期刊及ESECFSE、ASE等国际会议发表学术论文十余篇。

译者序
UML用户指南(第2版.修订版)
开发一个复杂的软件系统和编写一个简单的程序大不一样。其间的差别,借用G. Booch的比喻,如同建造一座大厦和搭建一个狗窝的差别。大型的、复杂的软件系统开发是一项系统工程,必须按工程学的方法来组织软件生产,需要经过一系列的软件生命周期阶段。这是人们从软件危机中获得的最重要的教益。这一认识促使了软件工程学的诞生。编程仍然是重要的,但是更具有决定意义的是系统建模。只有在分析和设计阶段建立了良好的系统模型,才有可能保证工程的正确实施。由于这一原因,在编程领域出现的许多新方法和新技术,总是很快地拓展到软件生命周期的分析与设计阶段。

面向对象方法正是经历了这样的发展过程,它首先在编程领域兴起,作为一种崭新的程序设计范型引起世人瞩目。继Smalltalk-80之后,20世纪80年代有一大批面向对象编程语言问世,标志着面向对象方法走向成熟和实用。此时,面向对象方法开始向系统设计阶段延伸,出现了一批早期的面向对象设计(OOD)方法。到80年代末期,面向对象方法的研究重点转向面向对象的分析(OOA),并将OOA与OOD密切地联系在一起,出现了一大批面向对象的分析与设计(OOA&D)方法。至1994年,公开发表并具有一定影响的OOA&D方法已达50余种。这种繁荣的局面表明面向对象方法已经深入到分析与设计领域。此后,大多数比较成熟的软件开发组织已经从分析、设计到编程、测试全面地采用面向对象方法,使面向对象无可置疑地成为软件领域的主流技术。

各种OOA&D方法都为面向对象理论与技术的发展做出了贡献。这些方法的主导思想以及所采用的主要概念与原则大体上是一致的,但是也存在不少差异。这些差异所带来的问题是:不利于OO方法的发展,妨碍了技术交流,也给用户的选择带来困惑。在这种形势下,统一建模语言(Unified Modeling Language,UML)应运而生。

UML是在多种面向对象分析与设计方法相互融合的基础上形成的,其发展历史可以大致概括为 4 个阶段。最初的阶段是面向对象方法学家的联合行动,由G. Booch、J. Rumbaugh和I. Jacobson将他们各自的方法结合起来,形成了UML0.9。第二阶段是公司的联合行动,由十多家公司组成UML伙伴组织,共同提出了 UML1.0 和 1.1,于 1997 年被对象管理组织(OMG)正式采纳作为建模语言规范。第三阶段是在OMG控制下对UML规范进行修订和改进,产生了UML1.2、1.3、1.4和1.5等版本。第四阶段是从1999年开始酝酿,并于本世纪初实施的一次重大的修订,推出了UML2.0,继而进行了多次修订,产生了UML2.1到UML2.4一系列版本,提交到国际标准化组织ISO作为建模语言标准的提案,其中各个部分已陆续进入ISO的标准化日程。

UML 用于对软件密集型系统进行详述、可视化、构造和文档化,也可以用于业务建模以及其他非软件系统的建模。UML定义了系统建模所需的概念并给出其可视化表示法,但是它并不涉及如何进行系统建模。因此它只是一种建模语言,而不是一种建模方法。UML是独立于过程的,就是说,它可以适应不同的建模过程。UML的出现使面向对象建模概念和表示法趋于统一和标准化。目前UML已成为被广泛公认的工业标准,拥有越来越多的用户。现今大部分面向对象系统的建模均采用UML。

G. Booch、J. Rumbaugh和I. Jacobson是UML的3位主要奠基人,被称为“三友”,他们为UML的形成和发展做出了卓越贡献。在广大读者的殷切期待中,“三友”联名撰写的 3 本介绍UML以及Rational统一软件开发过程的著作(The Unified Modeling Language User Guide、The Unified Modeling Language Reference Manual和The Unified Software Development Process)于1999年由Addison-Wesley出版,深受广大读者的欢迎,被视为UML方面的权威性著作。在UML2.0问世之后,“三友”对他们的上述3本著作进行了再创作,以适应UML2.0的新内容,作为第2版,于2005年陆续出版。

现在我们翻译的《UML用户指南》第2版(The Unified Modeling Language User Guide, Second Edition)是“三友”上述3本著作中的一本,是阅读另外两本著作的基础。书中为如何使用UML提供了指南,旨在让读者掌握UML的术语、规则和惯用法,学会如何有效地使用UML进行开发,如何应用UML去解决常见的建模问题。实际上,这不仅仅是一部深入介绍UML的技术文献,而且处处闪烁着作者在方法学方面的真知灼见,凝结了作者在软件工程、面向对象方法、构件技术等诸多领域的经验和智慧。该书语言生动、深入浅出、实例丰富、图文并茂。对于想学习和使用UML的广大读者,这是一本难得的好书。该书的宗旨并不是全面地介绍UML,也不是完整地介绍软件开发过程,这些内容属于“三友”的另外两本著作。

承担这样一本好书的翻译工作是1项愉快而又严肃的任务。尽管我们对UML进行过多年的研究,并且翻译过该书的第1版,但是在新版的翻译中仍不敢有驾轻就熟的心理。对翻译中遇到的一些疑难问题,往往要经过反复讨论,并通过对UML的进一步研究,才能获得比较准确的译法。忠实于原文是我们始终遵循的宗旨,但是原著中存在着个别前后不一致或者与UML规范不一致的现象,译文中采用了两种处理方式:对比较明显的错误在译文中做了订正,并通过译者注加以说明;对不太明显的错误按原文翻译,并在译者注中指出疑点。

本书的第一个译本于2006年6月由人民邮电出版社出版。承蒙广大读者的厚爱,先后9次印刷,累计印数达15 000册。在此期间,UML2的版本升级并未影响本书的适用性,因为本书的宗旨并不是全面地介绍UML某个版本的具体细节,而是引导读者学习和使用UML。人民邮电出版社为满足广大读者的迫切需求,决定再次出版这本书,趁此机会我们对2006年的译稿进行了全面的审核和修订。修订范围涉及全书各章,以及前言、术语表、附录和译者注,对一些翻译不太准确或前后不一致的地方逐一做了订正,对文字上不够通顺的地方也进行了修改。

书中的科技术语译法以国标GB/T11457《信息技术 软件工程术语》1和我国计算机界权威性工具书《计算机科学技术百科全书》2为基准。其中有几个比较关键的术语(例如use case和classifier等),一些曾经流行的不同译法使读者对这些术语的含义产生了截然不同的理解。关于这些术语的译法问题,我们在《中国计算机学会通讯》2010年第1期上刊登的一篇短文曾对此专门加以论述,我们也将这篇短文附在本书最后,供读者参考。

本书的翻译和相关研究得到了高可信软件技术教育部重点实验室和北京大学信息科学技术学院的大力支持。北京大学软件研究所建模研究小组所开展的研究工作对本书的翻译提供了可靠的依据。在此,谨向上述单位和相关个人致以衷心感谢。同时,我们诚恳地希望广大读者对书中可能存在的疏漏和错误之处给予批评和指正。

译者

2012年10月于北京

1国家技术监督局.信息技术 软件工程术语 GB/T 11457——2006.北京:中国**标准出版社,2006
2张效祥主编,计算机科学技术百科全书(第二版).北京:清华大学

前言
UML用户指南(第2版.修订版)
统一建模语言(Unified Modeling Language,UML)是一种用于对软件密集型系统的制品进行可视化、详述、构造和文档化的图形语言。UML给出了一种描绘系统蓝图的标准方法,其中既包括概念性的事物(如业务过程和系统功能),也包括具体的事物(如用特定的编程语言编写的类、数据库模式和可复用的软件构件)。

本书旨在教会读者如何有效地使用UML。

本书涵盖了UML 2.01。

目标
在本书中,读者将获益于以下几点。

明白UML是什么,不是什么,以及为什么UML对于开发软件密集型系统的过程非常重要。
掌握UML的术语、规则和惯用法,一般说来,还将学会如何有效地使用这种语言。
知道如何应用UML去解决许多常见的建模问题。
本书为UML具体特征的使用提供了参考资料,但它不是一本全面的UML参考手册。全面的参考请参阅我们编写的The Unified Modeling Language Reference Manual第2版(Rumbaugh、Jacobson、Booch合著,Addison-Wesley出版公司2005年出版)2。

本书描述了使用UML进行开发的过程,但并没有提供对于开发过程的完整参考资料。开发过程是The Unified Software Development Process(Jacobson、Booch、Rumbaugh合著,Addison-Wesley出版公司1999年出版)3一书的重点。

最后,本书提供了如何运用UML去解决许多常见建模问题的提示和技巧,但没有讲述如何去建模。本书类似于一本编程语言的用户指南,它教用户如何使用语言,而不教用户如何编程。

读者对象
进行软件开发、部署和维护的人员均可使用UML。本书主要针对用UML进行建模的开发组成员,但它也适用于为了理解、建造、测试和发布一个软件密集型系统而一起工作的人员,他们要阅读这些模型。虽然这几乎包含了软件开发组织中的所有角色,但本书特别适合下述人员阅读:分析员和最终客户(他们要详细说明系统应该具有的结构和行为)、体系结构设计人员(他们设计满足上述需求的系统)、开发人员(他们把体系结构转换为可执行的代码)、质量保证人员(他们检验并确认系统的结构和行为)、库管理人员(他们创建构件并对构件进行编目)、项目及程序管理者(他们一般是把握方向的领导者,要进行有序的管理,并合理地分配资源,以保证系统的成功交付)。

使用本书的人员应该具有面向对象概念的基本知识。如果读者具有面向对象编程的经验或懂得面向对象的方法,就能更容易掌握本书内容,但这并不是必需的。

怎样使用本书
初次接触UML的开发人员最好按顺序阅读本书。第2章提出了UML的概念模型,读者应特别予以注意。所有的章节都是这样组织的——每一章建立在前面各章的内容之上,循序渐进。

至于正在寻求用UML解决常见建模问题的有经验的开发人员,可以按任意顺序阅读本书。读者应该特别注意在各章中提到的常见建模问题。

本书的组织及特点
本书主要由7个部分组成:

第一部分 入门
第二部分 对基本结构建模
第三部分 对高级结构建模
第四部分 对基本行为建模
第五部分 对高级行为建模
第六部分 对体系结构建模
第七部分 结束语
本书还包含两个附录:UML表示法概要和Rational统一过程概要。在附录后,提供了一个常见术语表和一个索引。

每章都描述了针对UML具体特征的用法,其中的大部分按下述4节的方式组织:

(1)入门;

(2)术语和概念;

(3)常用建模技术;

(4)提示和技巧。

第3节“常用建模技术”提出一组常见建模问题并予以解决。为了便于读者浏览本书找到这些UML的应用场合,每一个问题都标有一个明显的标题,如下例所示。

对体系结构模式建模

每一章都从它所涵盖的特征概要开始,如下例所示。

本章内容
主动对象、进程和线程
对多控制流建模
对进程间通信建模
建立线程安全的抽象
类似地,把附加的解释和一般性的指导分离出来作为注解,如下例所示。

注解
UML中的抽象操作对应于C++中的纯虚操作;叶子操作对应于C++的非虚操作。
UML的语义是非常丰富的,因此对一个特征的描述自然会涉及另一个特征。在这种情况下,在自然段的最后部分标注交叉引用,正如本段这样。

【第25章讨论构件。】

在图中使用灰色字4是为了表明这些文字不是模型本身的一部分,只是用于解释模型。程序代码用Courier字体表示以示区别,如this example。

致谢
作者向Bruce Douglass、Per Krol和Joaquin Miller表示感谢,谢谢他们帮助审阅了第2版的书稿。

UML简史
通常公认的第一种面向对象语言是1967年由Dahl和Nygaard在挪威开发的Simula-67。虽然该语言从来没有得到大量拥护者,但是它的概念给后来的语言以很大启发。Smalltalk在20世纪80年代早期得到了广泛的使用,到20世纪80年代晚期跟着出现了其他的面向对象语言,如Objective C、C++和Eiffel等。方法学家面对新型面向对象编程语言的涌现和不断增长的应用系统复杂性,开始试验用不同的方法来进行分析和设计,由此在20世纪80年代出现了面向对象建模语言。在1989年到1994年之间,面向对象的方法从不足10种增加到50多种。面对这么多的方法,很多用户很难找到一种完全满足他们要求的建模语言,于是就加剧了所谓的“方法战”。一些杰出的方法脱颖而出,其中包括Booch方法、Jacobson的OOSE(面向对象的软件工程)和Rumbaugh的OMT(对象建模技术)。其他的重要方法还有Fusion方法、Shlaer-Mellor方法和Coad-Yourdon方法。这些方法中的每一种方法都是完整的,但是每一种方法又都被认为各有优点和缺点。简单来说,Booch方法在项目的设计和构造阶段的表达力特别强,OOSE对以用况作为一种途径来驱动需求获取、分析和高层设计提供了极好的支持,而OMT对于分析和数据密集型信息系统最为有用。

到20世纪90年代中期,一个关键的想法开始形成。当时Grady Booch(Rational软件公司)、James Rumbaugh(通用电气公司)、Ivar Jacobson(Objectory公司)和其他一些人开始从彼此的方法中取长补短,他们的共同成果开始在全球范围内被公认为是领导性的面向对象方法。作为Booch方法、OOSE方法和OMT方法的主要作者,促使我们 3 个人创建统一建模语言的原因有3个。第一,我们的方法已经在朝着相互独立的方向演化,而我们希望它朝着一个方向演化,这样可以消除任何不必要的和不合理的潜在差别,因为这样的差别会加重用户的疑惑。第二,通过统一我们的方法,能够给面向对象的市场带来一定的稳定,能够让人们使用一种成熟的建模语言去设计项目,使工具开发人员把焦点集中于最有用的特征。第三,希望我们的合作能够改进早期的3种方法,帮助我们吸取教训,解决以前的方法不能妥善处理的问题。

统一工作之始,我们确立了3个工作目标。

(1)运用面向对象技术对系统进行从概念到可执行制品的建模。

(2)解决复杂系统和关键任务系统中固有的规模问题。

(3)创造一种人和机器都可以使用的建模语言。

设计一种用于面向对象分析和设计的语言与设计一种编程语言不同。首先,必须缩小问题范围:这种语言是否应包含需求描述?这种语言是否应支持可视化编程?其次,必须在表达能力和表达的简洁性之间做好平衡。太简单的语言会限制能够解决问题的范围,而太复杂的语言会使开发人员无所适从。在统一现有方法的情况下,也必须小心从事。若对语言进行太多的改进,会给已有用户造成混乱;若不对语言进行改进,则会失去赢得更广大的用户群和使语言得到简化的时机。UML的定义力争在这些方面做出最好的选择。

1994年10月,Rumbaugh加入Booch所在的Rational公司,自此正式开始了UML的统一工作。我们的计划最初注重于联合Booch方法和OMT方法。“统一方法”(当时的名称)0.8版本(草案)在1995年10月发布。差不多就在那时,Jacobson也加入了Rational公司,于是UML项目的范围又做了扩充,把OOSE也结合进来。经过我们的努力,在1996年6月发布了UML 0.9版本。1996 年全年,我们都在软件工程界征求和收集反馈意见。在此期间,明显地有很多软件组织把UML作为商业战略来考虑。我们与几个愿意致力于定义一个强大而完善的UML的组织一起成立了一个UML伙伴组织。对UML 1.0版本做出贡献的合作伙伴有DEC、HP、I-Logix、Intellicorp、IBM、ICON Computing、MCI Systemhouse、Microsoft、Oracle、Rational、TI和Unisys。这些合作伙伴协作产生的UML 1.0版本是一个定义明确、富有表现力、强大、可应用于广泛问题域的建模语言。Mary Loomis帮助说服OMG(对象管理组织)发布了一个标准建模语言的提案需求(RFP)。在1997年1月,作为对该提案的响应,UML 1.0作为标准化的建模语言提交给OMG。

在1997年1月至7月之间,合作伙伴的队伍不断扩大,实际上包括了所有对最初OMG的提议做出贡献的公司,它们是Andersen Consulting、Ericsson、ObjecTime Limited、Platinum Technology、PTech、Reich Technologies、Softeam、Sterling Software和Taskon。为了制定UML规范,并把UML与其他的标准化成果结合起来,成立了一支由MCI Systemhouse公司的Cris Kobryn领导并由Rational公司的Ed Eykholt管理的语义任务组。在1997年7月,把UML的修改版(1.1版本)提交给OMG,申请进行标准化审查。1997年9月,OMG的分析与设计任务组(Analysis and Design Task Force,ADTF)和OMG的体系结构部接受了该版本,并把它提交给OMG的全体成员进行表决。1997年11月14日,UML 1.1版本被OMG采纳。

几年来,UML一直由OMG的修订任务组(Revision Task Force,RTF)维护,陆续研发了UML的1.3、1.4和1.5版本。从2000年到2003年,一个经过扩充了的新的伙伴组织制定了一个升级的UML规范,即UML 2.0。由IBM的Bran Selic领导的定案任务组(Finalization Task Force,FTF)对这个版本进行了为期一年的评审,UML 2.0的正式版本于2005年初被OMG采纳。UML 2.0是对UML 1的重大修订,包括了大量的新增特性。此外,基于先前版本的经验,UML 2.0对先前版本的构造物做了很多的修改。可以在OMG的网站www.omg.org上获得当前的UML规范文档。

UML是很多人的工作成果,它的思想来自于大量的先前工作。重新构造一个贡献者的完整列表将是一项很大的历史性研究工程,根据对UML影响大小来识别那么多的先驱者就更为困难了。同所有的科学研究和工程实践一样,UML只是站在巨人肩上而已。

1 UML2.0发布之后版本已多次更新,各个版本统称为UML2,目前最新的版本是UML2.4。本书绝大部分内容对UML2.0之后的各个版本仍然适应。——译者注
2中文版已由机械工业出版社出版,中文书名《UML参考手册》。——编者注
3中文版已由机械工业出版社出版,中文书名《统一软件开发过程》。——编者注
4本书中用灰色字代替原版中的蓝字表示这种区别。——编者注
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

目录
前言
第一部分 入门
第1章 为什么要建模
1.1 建模的重要性
1.2 建模原理
1.3 面向对象建模t
第2章 UML介绍
2.1 UML概述
2.2 UML的概念模型
2.3 体系结构
2.4 软件开发生命周期
第3章 Hello, World!
第二部分 对基本结构建模
第4章 类
第5章 关系
第6章 公共机制
第7章 图
第8章 类图
第三部分 对高级结构建模
第9章 高级类
第10章 高级关系
第11章 接口、类型和角色
第12章 包
第13章 实例
第14章 对象图
第15章 构件
第四部分 对基本行为建模
第16章 交互
第17章 用况
第18章 用况图
第19章 交互图
第20章 活动图
第五部分 对高级行为建模
第21章 事件和信号
第22章 状态机
第23章 进程和线程
第24章 时间和空间
第25章 状态图
第六部分 对体系结构建模
第26章 制品
第27章 部署
第28章 协作
第29章 模式和框架
第30章 制品图
第31章 部署图
第32章 系统和模型
第七部分 结束语
第33章 应用UML
附录A UML表示法
附录B Rational统一过程
术语表
索引

相关文章
|
7月前
|
uml
UML之类图
UML之类图
98 1
|
7月前
|
数据可视化 Java uml
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
IDEA中一个被低估的功能,一键把项目代码绘制成UML类图
363 1
|
4月前
|
Java uml
使用工厂方法模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实
该博客文章通过UML类图和Java代码示例,展示了如何使用工厂方法模式设计一个支持加法、减法、乘法和除法运算的计算机程序,并严格按照类图设计实现程序。
|
4月前
|
Java uml
1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程
该博客文章展示了如何使用简单工厂模式设计一个程序,该程序能够根据用户输入的运算符(加、减、乘、除)对两个数进行计算,并提供了相应的UML类图和Java源码实现。
1、使用简单工厂模式设计能够实现包含加法(+)、减法(-)、乘法(*)、除法(/)四种运算的计算机程序,要求输入两个数和运算符,得到运算结果。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程