图书前言

毋庸置疑,面向对象的方法已成为现代软件开发中最主流的方法,即使是最新的SOA、云计算等概念也都是建立在面向对象方法基础之上的进一步抽象。与此同时,自1997年UML正式诞生,到2011年发布的UML 2.4.1,经历了多个版本的发展和完善,UML已成为建模语言的国际标准(ISO 19501和ISO 19505),基于UML的面向对象分析设计方法也日益成熟。然而,由于UML只是提供了一种标准的表示法,在分析设计过程中,什么时候以什么方式使用什么UML模型等具体的建模实践并没有在UML中定义,而这才是广大软件开发人员所要掌握的实践技能,也是本书所关注的内容。

本书目标

本书系统地介绍了利用最新的UML 2进行面向对象分析与设计的过程,全书的主要目标包括以下三个方面。

 ◆

OO(面向对象): 建立对象的思维方式,对面向对象思想和理论有深入的理解; 

 ◆UML(统一建模语言): 能够熟练地使用UML表达面向对象的设计思想; 

 ◆Model(建模): 运用面向对象的一般原则和模式进行应用系统的分析和设计建模。

组织结构

本书总体结构可以分为三大部分。第一部分为基础概念,包括第1章和第2章。其中,第1章为上升到面向对象,通过案例引出面向对象的方法,并重点介绍了对象技术中的几个核心概念。第2章为可视化建模技术基础,全面介绍了有关UML 2的组织结构和内容。这些基础概念将在后续的分析设计中被广泛使用。

第二部分为面向对象的分析,包括第3、4、5章。第3章为业务建模,原始业务是需求分析的出发点,本章简要地介绍了业务建模的基本概念和方法,并提供了一些实践指南。第4章为用例建模,系统地介绍了利用UML用例模型进行需求定义的过程和实践。第5章为用例分析,介绍了如何围绕第4章所建立的用例模型进行面向对象分析的方法和实践。

第三部分为面向对象的设计,包括第6、7、8、9、10章。其中,第6和7章为设计基础,分别介绍了有关面向对象设计的基本原则和模式,这些原则和模式将有效地指导后续的设计过程。第8章为架构设计,介绍了如何在系统的全局范围内,基于分析活动的成果定义设计元素、设计机制等内容,从而构造系统的组织结构。第9章为构件设计,介绍了如何在系统的局部设计各个细节,包括用例设计、子系统设计、类设计和数据库设计等方面的内容。第10章为从模型到代码,简单地介绍了设计模型和代码之间的映射,为后续编码做准备。

在案例设计方面,本书设计了两个贯穿全书的案例: 旅店预订系统和旅游业务申请系统。这两个案例各有侧重,通过它们,读者不仅可以掌握UML建模的基本方法,还可以全面了解在整个系统开发过程中从分析模型到设计模型不断演化的过程。此外,在各个章节中,针对一些特定的知识点,设计了各种小的案例进行阐述,这些案例包括第1章开篇的素数问题、第2章的图书馆管理系统、第3章的饭店系统、第6章的咖啡机系统、第7章的可复用按钮等。

有关UML内容,本书从两个层面进行介绍: 首先在第2章对UML基本概念、组织结构和各种模型进行了系统、初步的介绍; 之后则在后续的分析设计实践中针对一些重点UML模型的使用进行详细、深入的论述,使读者在掌握UML基本概念之后,能够在需要的地方进行应用,有关各章节中涉及的UML模型和核心概念如下表所示。

章节章 节 名 称章节性质UML模型核心概念

第1章上升到面向对象基础对象技术、类、对象

第2章可视化建模技术基础*(全部)UML组织结构

第3章业务建模业务活动图业务参与者、业务用例、活动

第4章用例建模需求用例图用例、参与者、用例关系

第5章用例分析分析顺序图、类图用例实现,分析类(边界类、控制类和实体类)

第6章面向对象的设计原则设计基础通信图设计原则

第7章面向对象的设计模式设计基础模式、设计模式、GRASP

第8章架构设计设计包图、部署图构架、设计元素、设计机制、进程、线程

第9章构件设计设计类图、状态机图、构件图接口、子系统、组合结构操作、方法、状态、关系

第10章从模型到代码实现正向工程、逆向工程

有关UML工具的选择,也是读者所关心的问题。市面上有很多商业的或开源的UML工具,这些工具各有特点,但其核心建模功能都相差不大。工具本身只是一种实现手段,选择哪款UML工具,并不影响对本书概念的理解和实践。本书中的UML模型主要采用IBM Rational Rose 2003和Sparx Systems Enterprise Architect 7.5,都不算最新的工具,够用即可。选择Rose是因为笔者从最早学习UML开始就一直使用该工具,虽然有点老,但能满足大部分建模需求; 不过由于Rose 2003不支持最新的UML 2,所以针对UML 2中的新概念选择了Enterprise Architect(没有选择IBM Rational的后续版本RSA是因为这个工具集过于庞大,更倾向于一个集成开发平台,不适合作为一个普通的UML工具进行介绍; 此外,其默认的图形样式颜色较淡,不适合放在书中展示)。当然,这两个工具也无法覆盖到所有的UML概念,因此书中有些模型是选择其他的UML工具或一些绘图工具完成的。

致谢

本书是笔者在北航软件学院近10年的研究生面向对象分析与设计课程教学基础上编写而成的,非常感谢软件学院的领导、教师和学生提供这样的交流平台,书中大部分内容和案例都是通过此课程的教学不断形成和完善的。还要特别感谢在课程教学和教材编写过程中提供帮助的姚淑珍教授、林广艳副教授、杨文龙教授、孟岩老师等学院老师和企业导师。此外在这期间,笔者还曾参加过IBM组织的面向对象分析与设计课程培训、UML China公开课等,也曾为一些软件企业进行过有关方面的培训,这些来自企业的经历也充实了课程和教材内容,在此一并表示感谢。最后,还需要感谢我的家人,正是因为她们无私的奉献才使得我有更多的精力投入到课程教学和教材编写中。

编者

2012年10月