《软件入门与提高丛书:UML2软件建模入门与提高》从初学者的角度出发,由浅入深、循序渐进地介绍统一建模语言UML的相关知识,书中提供了大量操作UML的示例。另外,还向读者提供了很多实战案例和上机练习,用于演练。
本书共分为16章,内容包括面向对象思想和软件建模分类,UML发展历史、组成元素、体系结构、建模流程和应用领域,常用的UML建模工具,用例图、类图、对象图和包图、状态机图、活动图、顺序图和时间图、通信图和交互概览图、组件图和部署图,UML到关系型数据库的映射,UML与统一过程,UML与Java语言的映射,以及UML与设计模式等。最后一章提供了一个综合的案例。
本书示例新颖,内容丰富,涉及面广泛,适合所有的UML初学者学习,也可以帮助有基础知识的读者提高创建UML模型图的技能。另外,对于大中专学生和培训班的学生来说,本书更是一本不可多得的教材和自学用书。
UML是英文Unified Modeling Language的缩写,又称为统一建模语言,或者标准建模语言,它是始于1997年的一个OMG标准,是一个支持模型化和软件系统开发的图形化语言,可为软件开发的所有阶段提供模型化和可视化支持。面向对象的分析与设计方法在20世纪80年代末至90年代中出现了一个高潮,UML正是这个高潮的产物,它不仅统一了Booch、Rumbaugh和Jacobson的表示方法,而且做了进一步的发展,并最终统一为大众所接受的标准建模语言。
本书内容
全书共分16章,主要内容如下。
第1章:面向对象和软件建模。从模型开始介绍,接着介绍面向对象思想的三大要素、三大模型、常用的三层开发方法、软件建模知识,最后介绍常用的建模分类。
第2章:UML入门基础。着重介绍UML的基础知识,包括UML的概念、发展历史、目标、组成元素、体系结构、建模流程以及应用领域等内容。
第3章:UML建模工具。从目前众多的UML建模工具中挑选出应用最广泛且在建模工具中最有影响力的3种工具(Visio、Enterprise Architect和PowerDesigner)进行介绍。
第4章:用例图。介绍用例图的构成、设计和使用,包括用例图的组成部分、各个部分成员的确定和使用,以及如何绘制完整的用例图等。
第5章:类图。详细介绍UML中的类图,包括类图中的类、抽象类、接口和各种关系的实现等内容,还介绍如何使用类图进行建模。
第6章:对象图和包图。首先介绍对象图,包括概念、组成、绘制和阅读,以及如何建模等;然后介绍包图,包括概念、组成、分类、设计原则以及如何建模等。
第7章:状态机图。详细介绍状态机图的绘制,首先介绍状态机图的基本内容,包括概念、标记、状态类型和状态机图的应用等,然后介绍状态机图中的转移元素,最后介绍组合状态。
第8章:活动图。详细介绍活动图的绘制,其内容包括活动图的定义、作用、与状态机图的区别、组成元素和活动转换等。
第9章:顺序图和时间图。介绍UML中的两种交互图,即顺序图和时间图。顺序图描述系统对象之间的交互顺序,但是这个顺序没有细致的时间刻度,只是一个大概的流程,而时间图弥补了这个不足,它们共同绘制了系统对象间交互的顺序和时间。
第10章:通信图和交互概览图。首先对通信图的概念进行介绍,然后介绍通信图中的消息、对象的创建和消息迭代等内容,最后介绍交互图和交互概览图的绘制。
第11章:绘制UML的实现图。首先介绍组件图的绘制和建模,然后介绍部署图的绘制和建模。
第12章:UML到关系型数据库的映射。着重介绍如何将UML类图中的类和关系映射到关系型数据库表。首先介绍基本结构的映射,然后介绍泛化关系和关联关系的映射,最后介绍完整性与约束检查以及存储过程、触发器和索引等内容。
第13章:UML与统一过程。首先讨论软件开发过程和成熟标准,然后详细介绍一种使用UML的过程,即统一过程,最后简单介绍使用UML过程的一般特征。
第14章:UML与Java语言映射。主要介绍UML类图映射为Java语言实现的方法,包括转换为Java类、转换原则、转换类之间的关联、泛化关联以及包和接口等。
第15章:UML与设计模式。首先介绍模式的一些基本概念,接着介绍UML对设计模式的支持,然后通过具体的示例讨论如何使用设计模式进行系统设计。
第16章:即时通信系统。综合UML建模系统的各类模型,通过对即时通信系统的分析,绘制该系统的UML模型图,包括用例图、静态图、行为图和交互图等多种图形。
本书特色
本书内容详细、示例丰富,知识面广,全面地讲解了UML的应用和开发。本书最大的特点体现在如下几个方面。
(1)知识全面,内容丰富
本书紧密围绕UML的相关知识展开详细的讲解,涵盖了实际开发应用中的具体应用代码。
(2)理论和示例结合
书中几乎每一个知识点都有丰富而典型的示例,而且每一章最后都会通过一个或多个综合的实战介绍该章的知识。作为一本UML入门类型的书,将理论和实践很好地结合起来进行讲解,让读者最容易快速掌握。
(3)应用广泛,提供文档
对于大多数的精选实战案例,都会向读者提供详细的实现步骤,结构清晰简明,分析深入浅出,而且有些实战案例贴近实际。
(4)网站技术支持
读者在学习或者工作的过程中,如果遇到实际问题,可与我们取得联系,作者会在第一时间给予帮助。
(5)贴心的提示
为了便于读者阅读,书中还穿插着一些技巧、提示等小贴士,体例约定如下。
提示:通常是一些提醒,让读者加深印象或提供建议及解决问题的方法。
注意:提出学习过程中需要特别注意的一些知识点和内容,或者相关信息。
技巧:通过简短的文字,指出知识点在应用时的一些小窍门。
读者对象
本书适合作为软件开发入门者的自学用书,也适合作为高等院校相关专业的教学参考书,还可供开发人员查阅、参考。本书特别适合下列人员阅读:
UML初学者。
各大中专院校的在校学生和相关授课教师。
准备从事与UML应用相关工作的人员。
作者团队
除了封面署名作者之外,参与本书编写的人员还有程朝斌、王咏梅、郝军启、王慧、郑小营、张浩华、王超英、张凡、赵振方、张艳梅等,在此表示感谢。在本书的编写过程中,我们力求精益求精,但难免存在一些不足之处,恳请广大读者批评指正。
编 者
第1章 面向对象和软件建模1
1.1 模型2
1.2 面向对象的思想3
1.2.1 了解面向对象3
1.2.2 面向对象的三大要素5
1.2.3 面向对象的三大模型7
1.2.4 面向对象的常用三层8
1.2.5 面向对象的开发方法10
1.3 软件建模11
1.3.1 软件建模概述11
1.3.2 建模的三要素11
1.3.3 面向对象建模12
1.4 建模分类14
1.4.1 业务建模14
1.4.2 数据建模16
1.4.3 应用程序建模16
1.5 思考与练习17
第2章 UML入门基础19
2.1 UML概述20
2.1.1 UML简介20
2.1.2 UML发展历史21
2.1.3 UML的目标22
2.2 UML的基本组成23
2.2.1 建模元素23
2.2.2 关系26
2.2.3 图28
2.2.4 规则30
2.2.5 通用机制31
2.2.6 UML标准通用机制34
2.3 UML其他内容40
2.3.1 UML的体系结构40
2.3.2 UML建模流程41
2.3.3 UML的应用领域42
2.4 UML 2.0概述42
2.5 思考与练习44
第3章 UML建模工具45
3.1 使用建模工具需知46
3.1.1 建模工具的作用46
3.1.2 选择建模工具的方法47
3.1.3 常用建模工具48
3.2 Visio 201049
3.2.1 Visio 2010简介49
3.2.2 实战——绘制论坛系统的用例图51
3.3 Enterprise Architect 854
3.3.1 Enterprise Architect 8简介54
3.3.2 实战——绘制论坛系统的类图57
3.4 PowerDesigner 16.5 61
3.4.1 PowerDesigner简介62
3.4.2 实战——安装
PowerDesigner 16.563
3.4.3 实战——绘制活动图65
3.4.4 实战——生成模型报告68
3.4.5 实战——对MySQL进行反向工程70
3.5 思考与练习73
第4章 用例图75
4.1 用例图简介76
4.2 用例图的构成78
4.2.1 系统78
4.2.2 参与者79
4.2.3 用例79
4.2.4 关系80
4.3 使用参与者81
4.3.1 参与者的确定81
4.3.2 参与者的使用82
4.4 用例的使用83
4.4.1 识别用例83
4.4.2 用例描述87
4.5 关系88
4.5.1 关联关系88
4.5.2 泛化关系89
4.5.3 包含关系90
4.5.4 扩展关系91
4.6 实战——图书馆管理系统用例图92
4.7 思考与练习97
第5章 类图101
5.1 类图和元素102
5.1.1 类图概述102
5.1.2 类104
5.1.3 抽象类109
5.1.4 接口109
5.2 依赖关系110
5.2.1 依赖关系概述110
5.2.2 依赖关系分类111
5.3 关联关系113
5.3.1 关联关系概述113
5.3.2 常见的关联118
5.3.3 聚合关联121
5.3.4 组合关联122
5.3.5 建立关联123
5.4 泛化关系123
5.4.1 泛化关系概述124
5.4.2 常用的泛化125
5.4.3 泛化集126
5.4.4 泛化约束127
5.5 实现关系128
5.6 类图建模步骤130
5.7 实战——构建病房监护系统的类型131
5.8 思考与练习133
第6章 对象图和包图137
6.1 了解对象138
6.1.1 对象概述138
6.1.2 对象符号139
6.2 对象图142
6.2.1 对象图概述142
6.2.2 绘制和阅读对象图143
6.2.3 使用对象图建模144
6.3 对象图和类图144
6.4 实战——绘制订单管理系统的对象图145
6.5 了解包146
6.5.1 包概述146
6.5.2 包的符号147
6.6 包图149
6.6.1 包图概述149
6.6.2 包图分类150
6.6.3 包导入和包合并152
6.6.4 使用包图建模154
6.6.5 包图设计原则154
6.7 实战——绘制剧院系统的包图157
6.8 思考与练习159
第7章 状态机图161
7.1 状态机图简介162
7.1.1 状态机概述162
7.1.2 状态机标记163
7.1.3 状态类型165
7.1.4 状态机图的应用166
7.2 转移167
7.2.1 转移简介167
7.2.2 事件168
7.2.3 动作170
7.2.4 活动与延迟事件171
7.2.5 转移的类型172
7.3 组合状态174
7.3.1 顺序状态174
7.3.2 并发状态174
7.3.3 同步状态175
7.3.4 历史状态175
7.3.5 子状态机引用176
7.4 实战——自动存取款系统状态机图178
7.5 思考与练习180
第8章 活动图181
8.1 活动图的基本概念182
8.1.1 活动图的定义182
8.1.2 活动图的作用182
8.1.3 活动图的主要元素183
8.1.4 理解活动与动作184
8.1.5 活动图与状态图的区别186
8.2 活动图的元素详解186
8.2.1 动作状态186
8.2.2 活动状态186
8.2.3 开始和结束状态187
8.2.4 分支与合并188
8.2.5 分叉与汇合190
8.2.6 对象流191
8.2.7 泳道192
8.3 活动转换193
8.3.1 转移193
8.3.2 判定194
8.3.3 发送和接收信号动作195
8.3.4 事件和触发器195
8.3.5 可中断区间196
8.3.6 异常197
8.4 实战——活动图的应用198
8.5 思考与练习200
第9章 顺序图和时间图203
9.1 顺序图简介204
9.2 顺序图的构成205
9.2.1 对象205
9.2.2 生命线和激活期208
9.2.3 消息209
9.2.4 序号210
9.2.5 参数212
9.2.6 激活期规范213
9.3 消息类型217
9.3.1 同步消息217
9.3.2 异步消息218
9.3.3 反身消息219
9.3.4 接收发送消息220
9.3.5 消息分支和从属流220
9.4 组合片段222
9.4.1 组合片段简介222
9.4.2 选项组合片段224
9.4.3 备选组合片段225
9.4.4 循环组合片段226
9.4.5 引用组合片段227
9.5 时间图228
9.5.1 时间图概述228
9.5.2 时间图的构成229
9.5.3 时间约束234
9.5.4 替代表示法235
9.6 实战——团购系统顺序图236
9.7 思考与练习241
第10章 通信图和交互概览图245
10.1 通信图简介246
10.1.1 通信图概述246
10.1.2 对象与类角色247
10.1.3 关联角色与链接248
10.1.4 消息250
10.2 消息序号和控制点251
10.2.1 消息序号252
10.2.2 消息控制点252
10.3 创建对象253
10.4 消息迭代253
10.4.1 对象的迭代254
10.4.2 消息的迭代254
10.5 交互图255
10.6 交互概览图256
10.6.1 交互概览图简介256
10.6.2 绘制交互概览图257
10.7 实战——在线报考系统的交互图257
10.8 思考与练习259
第11章 绘制UML的实现图261
11.1 了解组件262
11.1.1 组件概述262
11.1.2 组件的符号262
11.2 组件图265
11.2.1 组件图概述265
11.2.2 组件间的关系267
11.2.3 组件图和类图268
11.2.4 实战——绘制组件图268
11.3 使用组件图建模269
11.3.1 对源代码建模270
11.3.2 对可执行体的发布建模270
11.3.3 对物理数据库建模271
11.3.4 对可适应的系统建模272
11.4 了解节点272
11.4.1 节点的符号272
11.4.2 节点和组件的区别273
11.5 部署图274
11.5.1 部署图概述274
11.5.2 部署图的关系275
11.5.3 实战——绘制部署图276
11.6 使用部署图建模278
11.6.1 对嵌入式系统建模278
11.6.2 对客户/服务器建模279
11.6.3 对全分布式系统建模280
11.7 思考与练习281
第12章 UML到关系型数据库的映射285
12.1 关系型数据库与UML模型286
12.1.1 关系型数据库管理系统286
12.1.2 UML模型286
12.2 基本结构映射287
12.2.1 主键的生成287
12.2.2 属性类型到域的映射288
12.2.3 属性到列的映射289
12.3 泛化关系的映射289
12.3.1 所有类的映射289
12.3.2 除无属性外类的映射291
12.3.3 父类属性下移291
12.3.4 子类属性上移292
12.3.5 映射方法比较293
12.4 关联关系的映射294
12.4.1 一对一关联的映射294
12.4.2 零或一对一关联的映射295
12.4.3 一对多关联的映射295
12.4.4 多对多关联的映射297
12.4.5 聚合和组合关系的映射298
12.4.6 映射时应避免的情况298
12.5 完整性与约束检查299
12.5.1 父表的约束300
12.5.2 子表的约束301
12.6 其他相关问题302
12.6.1 存储过程302
12.6.2 触发器302
12.6.3 索引303
12.7 实战——软件公司UML模型的映射303
12.8 思考与练习305
第13章 UML与统一过程309
13.1 软件开发过程简介310
13.2 定义和理解软件工程的过程311
13.3 软件成熟标准:CMM311
13.3.1 使用CMM的意义311
13.3.2 CMM等级312
13.3.3 CMM框架314
13.3.4 CMM结构315
13.4 RUP简介316
13.4.1 使用RUP的意义316
13.4.2 什么是RUP317
13.4.3 RUP的特点318
13.4.4 RUP六大开发经验320
13.5 RUP二维开发模型321
13.5.1 时间维322
13.5.2 RUP的静态结构324
13.6 RUP工作流程326
13.6.1 初始阶段326
13.6.2 细化阶段327
13.6.3 构造阶段328
13.6.4 交付阶段329
13.7 RUP的核心工作流329
13.7.1 商业建模329
13.7.2 需求329
13.7.3 分析和设计331
13.7.4 实现332
13.7.5 测试332
13.7.6 部署333
13.7.7 配置和变更管理333
13.7.8 项目管理334
13.7.9 环境334
13.8 如何在过程中使用UML334
13.8.1 以架构为中心334
13.8.2 用例驱动335
13.8.3 UML对迭代开发的支持335
13.8.4 UML图与工作流程之间的关系336
13.9 思考与练习336
第14章 UML与Java语言映射339
14.1 模型映射为Java的实现340
14.1.1 转换为Java类340
14.1.2 转换原则341
14.2 实现常见关联342
14.2.1 基本关联342
14.2.2 强制对可选或者强制关联343
14.2.3 可选对可选关联344
14.2.4 可选对多关联345
14.2.5 强制对多关联346
14.2.6 多对多关联346
14.2.7 关联类的实现347
14.2.8 聚合关联的实现348
14.2.9 组合关联的实现348
14.3 实现泛化349
14.4 特殊模型的映射350
14.4.1 包350
14.4.2 接口350
14.4.3 枚举352
14.5 实战——类图与Java的工程化352
14.5.1 正向工程352
14.5.2 逆向工程355
14.6 思考与练习357
第15章 UML与设计模式359
15.1 了解模式360
15.2 软件设计模式360
15.2.1 了解设计模式360
15.2.2 设计模式的诞生362
15.2.3 设计模式的原则363
15.2.4 设计模式的分类364
15.3 设计模式的元素366
15.3.1 关键元素366
15.3.2 其他元素367
15.4 创建型模式367
15.4.1 了解创建型模式368
15.4.2 简单工厂模式368
15.4.3 工厂方法模式372
15.4.4 抽象工厂模式375
15.4.5 单例模式380
15.5 结构型模式384
15.5.1 了解结构型模式384
15.5.2 适配器模式385
15.5.3 外观模式388
15.6 观察者模式390
15.6.1 了解观察者模式390
15.6.2 实战——自定义观察者模式391
15.7 思考与练习393
第16章 即时通信系统395
16.1 系统建模概述396
16.1.1 系统开发的背景396
16.1.2 系统建模的基本步骤396
16.2 系统分析397
16.2.1 系统结构397
16.2.2 需求分析398
16.3 用例图398
16.3.1 确定参与者399
16.3.2 确定用例399
16.3.3 绘制系统用例图400
16.4 静态图402
16.4.1 即时通信类402
16.4.2 即时通信类图404
16.5 行为图405
16.5.1 行为分析405
16.5.2 用户聊天的活动图406
16.5.3 可疑言论处理活动图406
16.6 交互图408
16.6.1 用户登录顺序图408
16.6.2 离线消息顺序图409
16.6.3 言论处理顺序图409
16.6.4 在线通信顺序图410
16.6.5 交互概览图411
16.7 组件图412
附录 各章思考与练习答案415