编辑推荐
2012震撼本土原创!
这是一本讲软件的分析、设计与建模的书
这是一本将晦涩的概念与项目的实践紧密结合的书
这是一本让您与似是而非的感觉做个了断的书
这是一本充满思想与智慧的书
……
字字珠玑,醍醐灌顶
从来没有一本书,带给软件开发人员如此醍醐灌顶的感受。
开发人员梦寐以求的“九阳真经”,真正助您打通软件开发“任督二脉”。
万众瞩目的《大象——Thinking in UML》(
第二版),大陆和台湾地区同步重磅推出。
面对眼花缭乱的软件开发新技术,是选择继续疲于应付?还是毕其功于一役?
CSDN超级名博Coffeewoo 之12年软件分析设计与建模纯甘经验分享。
内容简介
《大象:Thinking in UML(第2版)》以UML为载体,将面向对象的分析设计思想巧妙地融入建模过程中,通过贯穿全书的实例将软件系统开发过程中方方面面的知识有机地结合在一起,用生动的语言和精彩的事例将复杂枯燥的软件过程讲解得津津有味。
全书分为四个部分。第一部分讲述面向对象分析的一些基本概念,及学习建模需要了解的一些基本知识。第二部分对UML的基础概念重新组织和归纳整理,进行扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。第三部分以一个实例贯穿全篇,阐述如何使用UML从头到尾地实施一个项目。第四部分针对在现实中经常遇到并且较难掌握的问题进行深入的探讨,升华在前几篇学习到的知识。
《大象:Thinking in UML(第2版)》可供正在学习编程、软件工程等知识,准备将来从事IT行业的读者、正努力向设计师或系统分析员转变的技术人员及期望对软件分析设计更上一层楼的设计人员学习和提高之用。
作者简介
谭云杰,CSDN专家博客coffeewoo博主。资深架构师,PMP获得者,擅长于系统建模和系统分析设计。从事过电力、政府、航空等多个行业的管理软件开发工作和工作流中间件产品的研发工作,拥有十多个软件项目的分析设计经验和架构设计经验,其中不乏中型和大型软件项目。目前就职于某著名跨国软件企业中国研发中心,从事产品研发工作。
作者使用UML进行系统分析建模至今已十年有余,对系统建模、分析和设计有深刻而独道的见解。在其博客上发表的OO系统分析员之路系列文章短短时间内便获得了十几万的点击量,深受读者的喜爱。
目录
大象希形
再版序
写给读者的话
关于本书
如何阅读本书
免费下载资源使用说明
Part I 你需要了解
第1章 为什么需要UML
1.1 面向过程还是面向对象
1.1.1 面向过程方法
1.1.2 面向过程的困难
1.1.3 面向对象方法
1.1.4 面向对象的困难
1.2 UML带来了什么
1.2.1 什么是UML
1.2.2 统一语言
1.2.3 可视化
1.2.4 从现实世界到业务模型
1.2.5 从业务模型到概念模型
1.2.6 从概念模型到设计模型
1.2.7 面向对象的困难解决了吗
1.3 统一过程简介
1.3.1 RUP是什么
1.3.2 RUP与UML
1.3.3 RUP与软件工程
1.3.4 RUP与最佳实践
1.3.5 RUP与本书
第2章 建模基础
2.1 建模
2.2 用例驱动
2.3 抽象层次
2.4 视图
2.5 对象分析方法
Part II 在学习中思考
第3章 UML核心元素
3.1 版型
3.2 参与者
3.2.1 基本概念
3.2.2 发现参与者
3.2.3 业务主角
3.2.4 业务工人
3.2.5 参与者与涉众的关系
3.2.6 参与者与用户的关系
3.2.7 参与者与角色的关系
3.2.8 参与者的核心地位
3.2.9 检查点
3.3 用例
3.3.1 基本概念
3.3.2 用例的特征
3.3.3 用例的粒度
3.3.4 用例的获得
3.3.5 用例和功能的误区
3.3.6 目标和步骤的误区
3.3.7 用例粒度的误区
3.3.8 业务用例
3.3.9 业务用例实现
3.3.10 概念用例
3.3.11 系统用例
3.3.12 用例实现
3.4 边界
3.4.1 边界决定视界
3.4.2 边界决定抽象层次
3.4.3 灵活使用边界
3.5 业务实体
3.5.1 业务实体的属性
3.5.2 业务实体的方法
3.5.3 获取业务实体
3.6 包
3.7 分析类
3.7.1 边界类
3.7.2 控制类
3.7.3 实体类
3.7.4 分析类的三高
3.8 设计类
3.8.1 类
3.8.2 属性
3.8.3 方法
3.8.4 可见性
3.9 关系
3.9.1 关联关系(association)
3.9.2 依赖关系(dependency)
3.9.3 扩展关系(extends)
3.9.4 包含关系(include)
3.9.5 实现关系(realize)
3.9.6 精化关系(refine)
3.9.7 泛化关系(generalization)
3.9.8 聚合关系(aggregation)
3.9.9 组合关系(composition)
3.10 组件
3.10.1 完备性
3.10.2 独立性
3.10.3 逻辑性
3.10.4 透明性
3.10.5 使用组件
3.11 节点
3.11.1 分布式应用环境
3.11.2 多设备应用环境
第4章 UML核心视图
4.1 静态视图
4.1.1 用例图
4.1.2 类图
4.1.3 包图
4.2 动态视图
4.2.1 活动图
4.2.2 状态图
4.2.3 时序图
4.2.4 协作图
第5章 UML核心模型
5.1 用例模型概述
5.2 业务用例模型
5.2.1 业务用例模型主要内容
5.2.2 业务用例模型工件的取舍
5.2.3 何时使用业务用例模型
5.3 概念用例模型
5.3.1 概念用例模型的主要内容
5.3.2 获得概念用例
5.3.3 何时使用概念用例模型
5.4 系统用例模型
5.4.1 系统用例模型的主要内容
5.4.2 获得系统用例
5.5 领域模型
5.5.1 读者须知
5.5.2 基本概念
5.5.3 领域模型的主要内容
5.6 分析模型
5.6.1 如何使用分析模型
5.6.2 分析模型的主要内容
5.6.3 分析模型的意义
5.7 软件架构和框架
5.7.1 软件架构
5.7.2 软件框架
5.7.3 何时使用架构和框架
5.8 设计模型
5.8.1 设计模型的应用场合
5.8.2 设计模型的主要内容
5.8.3 从分析模型映射到设计模型
5.9 组件模型
5.9.1 何时使用组件模型
5.9.2 广义组件的用法
5.10 实施模型何时使用实施模型
第6章 统一过程核心工作流简介
6.1 业务建模工作流程
6.1.1 工作流程
6.1.2 活动集和工件集
6.1.3 业务建模的目标和场景
6.2 系统建模工作流程
6.2.1 工作流程
6.2.2 活动集和工件集
6.2.3 系统建模的目标
6.3 分析设计建模工作流程
6.3.1 工作流程
6.3.2 活动集和工件集
6.3.3 分析设计的目标
6.3.4 推荐的分析设计工作流程简介
6.4 实施建模工作流程
6.4.1 工作流程
6.4.2 活动集和工件集
6.4.3 推荐的实施建模工作流程
第7章 迭代式软件生命周期
Part III 在实践中思考
第8章 准备工作
8.1 案例说明
8.2 了解问题领域
8.2.1 了解业务概况
8.2.2 整理业务目标
8.3 做好涉众分析
8.3.1 什么是涉众
8.3.2 发现和定义涉众
8.3.3 涉众分析报告
8.4 规划业务范围
8.4.1 规划业务目标
8.4.2 规划涉众期望
8.5 整理好你的思路
8.5.1 划分优先级
8.5.2 规划需求层次
8.5.3 需求调研计划
8.6 客户访谈技巧
8.6.1 沟通的困难
8.6.2 沟通技巧
8.7 提给读者的问题
第9章 获取需求
9.1 定义边界
9.1.1 盘古开天--从混沌走向清晰
9.1.2 现在行动:定义边界
9.1.3 进一步讨论
9.1.4 提给读者的问题
9.2 发现主角
9.2.1 女娲造人--谁来掌管这个世界
9.2.2 现在行动:发现主角
9.2.3 进一步讨论
9.2.4 提给读者的问题
9.3 获取业务用例
9.3.1 炎黄之治--从愚昧走向文明
9.3.2 现在行动:获取业务用例
9.3.3 进一步讨论
9.3.4 提给读者的问题
9.4 业务建模
9.4.1 商鞅变法--强盛的必由之路
9.4.2 现在行动:建立业务模型
9.4.3 进一步讨论
9.4.4 提给读者的问题
9.5 领域建模
9.5.1 风火水土--寻找构成世界的基本元素
9.5.2 现在行动:建立领域模型
9.5.3 进一步讨论
9.5.4 提给读者的问题
9.6 提炼业务规则
9.6.1 牛顿的思考--揭穿苹果的秘密
9.6.2 现在行动:提炼业务规则
9.6.3 进一步讨论
9.6.4 提给读者的问题
9.7 获取非功能性需求
9.7.1 非物质需求--精神文明是不可缺少的
9.7.2 现在行动:获取非功能性需求
9.7.3 进一步讨论
9.7.4 提给读者的问题
9.8 主要成果物提给读者的问题
第10章 需求分析
10.1 关键概念分析
10.1.1 阿基米德杠杆--找到撬动地球的支点
10.1.2 现在行动:建立概念模型
10.1.3 进一步讨论
10.1.4 提给读者的问题
10.2 业务架构
10.2.1 拼图游戏--我们也想造个世界
10.2.2 现在行动:建立业务架构
10.2.3 进一步讨论
10.2.4 提给读者的问题
10.3 系统原型
第11章 系统分析
11.1 确定系统用例
11.1.1 开始规划--确定新世界的万物
11.1.2 现在行动:确定系统用例
11.1.3 现在行动:描述系统用例
11.1.4 进一步讨论
11.1.5 提给读者的问题
11.2 分析业务规则
11.2.1 设定规则--没有规矩不成方圆
11.2.2 现在行动:分析业务规则
11.2.3 提给读者的问题
11.3 用例实现
11.3.1 绘制蓝图--世界将这样运行
11.3.2 现在行动:实现用例
11.3.3 进一步讨论
11.3.4 提给读者的问题
11.4 软件架构和框架
11.4.1 设计架构--新世界的骨架
11.4.2 什么是软件架构
11.4.3 什么是软件框架
11.4.4 软件架构的基本构成
11.4.5 应用软件架构
11.4.6 提给读者的问题
11.5 分析模型
11.5.1 设计功能零件--让世界初步运转起来
11.5.2 现在行动:建立分析模型
11.5.3 进一步讨论
11.5.4 提给读者的问题
11.6 组件模型
11.6.1 设计功能部件--构建世界的基础设施
11.6.2 现在行动:建立组件模型
11.6.3 进一步讨论
11.6.4 提给读者的问题
11.7 部署模型
11.7.1 安装零部件--组装一个新世界
11.7.2 现在行动:建立部署模型
11.7.3 提给读者的问题
第12章 系统设计
12.1 系统分析与系统设计的差别
12.2 设计模型
12.2.1 按图索骥--为新世界添砖加瓦
12.2.2 现在行动:将分析模型映射到设计模型
12.2.3 进一步讨论
12.2.4 提给读者的问题
12.3 接口设计
12.3.1 畅通无阻--构建四通八达的神经网络
12.3.2 现在行动:设计接口
12.3.3 进一步讨论
12.3.4 提给读者的问题
12.4 包设计
12.4.1 分工合作--组织有序世界才能更好
12.4.2 现在行动:设计包
12.4.3 进一步讨论
12.5 提给读者的问题
第13章 数据库设计
13.1 关公战秦琼--面向对象与关系模型之争
13.2 相辅相成--面向对象的数据库设计
13.3 平衡的艺术--数据库设计的方法和策略
13.3.1 OR-Mapping策略
13.3.2 对象-关系平衡策略
13.4 进一步讨论--数据库设计到底有多重要
第14章 开发
14.1 生成代码
14.1.1 现在行动:生成代码
14.1.2 进一步讨论
14.2 分工策略
14.2.1 纵向分工策略
14.2.2 横向分工策略
14.2.3 选择适合你的开发分工策略
Part IV 在提炼中思考
第15章 测试
15.1 质量保证--新世界需要稳健运行
15.2 设计和开发测试例
15.3 提给读者的问题
第16章 理解用例的本质
16.1 用例是系统思维
16.2 用例是面向服务的
16.3 善用用例方法
第17章 理解用例驱动
17.1 用例与项目管理
17.2 用例与可扩展架构
第18章 用例驱动与领域驱动
18.1 用例驱动与领域驱动的差异
18.2 领域驱动的理想与现实
18.3 如何决定是否采用领域驱动方法
第19章 理解建模的抽象层次
19.1 再讨论抽象层次
19.1.1 层次高低问题
19.1.2 层次不交叉问题
19.2 如何决定抽象层次
19.3 抽象层次与UML建模的关系
第20章 划分子系统的问题
20.1 面向对象的子系统问题
20.2 UC矩阵还适用吗
20.3 如何划分子系统
第21章 学会使用系统边界
21.1 边界是面向对象的保障
21.2 利用边界来分析需求
21.2.1 边界分析示例一
21.2.2 边界分析示例二
21.3 边界意识决定设计好坏
第22章 学会从接口认知事物
22.1 怎样描述一件事物
22.2 接口是系统的灵魂
第23章 学会正确选择
23.1 屁股决定脑袋--学会综合权衡
23.2 理辩则明--学会改变视角
第24章 学会使用设计模式
24.1 如何学习设计模式
24.2 如何使用设计模式
附录 UML视图常用元素参考
图目录
表目录
后记
精彩书摘
大象希形
■可遇而不可求
中国象棋,只有32棵棋子,规则简单,但水平高低之间,不在于是否掌握了马走日象走田。正如UML,简单说只有元素、视图与模型,但水平高低之间,绝不在于谁能在视图之上画出各种元素堆积的模型,而是在于谁能够借助UML提供的这些工具,灵活自如地为复杂项目的开发提供一个成熟的、统一的、系统的、广泛适用的系统分析设计与建模方法,即软件的统一过程。
说到统一过程,不能不提一下RUP,正是由于RUP与UML师出同门,造就了RUP在软件统一过程中的霸主地位。不过一提到RUP,文档、模型、迭代、组件、架构、软件层次等词汇,嚼蜡般的概念扑面而来,可以想象学习的感受。RUP的官方文档晦涩而枯燥;相关的图书,缺少透彻的理解与思想,有时还不如官方文档好看。痛苦在于,明明你知道RUP就是把守通向实现技术自由之梦想之路的任督二脉,却又无力打通。而于菜鸟同志们来说,层出不穷的开发框架,云山雾罩的设计模式,庞大复杂的体系和概念、无处着力的分析设计与建模从何学起?如何学起?
这就是一本解决这些问题的书。
坦率地说,这样的书不是策划而来,全凭幸运之神的眷顾。而于广大读者,这是一部可遇而不可求的技术宝作。
■天上人间
有句俗话叫吃水不忘挖井人,说起UML,不能忘记Ivar,James,Grady这三个UML的创始人———三位方法学大师,在软件领域,他们是教父级人物。但是并非所有读者都认可这个观点,原因是他们饱受UML与RUP之晦涩复杂之苦,并且始终也未得其门而入。不能被大众所掌握,再巧妙再高深的知识也只是形同鸡肋。
本书第一版的字字句句,如鹈鹕灌顶,使好多困扰本人多年的似是而非的晦涩技术概念,茅塞顿开。本书第二版面市之际,我已经知道,那种无以言表的美好感觉,并非我的独自感受,两万余名第一版的读者,无不向谭云杰老师致以深深的敬意。正是因为大家的感恩心情,使谭老师在软件技术的征途上,这三年来更加时刻不敢懈怠;正是因为大家的感恩心情,谭老师又斟出了自己多年来对于面向对象的数据库的分析、设计与建模方面的心得,与朋友们共勉。这就有了本书的第二版。
有一点必须声明,作者本人非常惶恐于拿他与Ivar,James,Grady三位大师相提并论。本人也并没有任何对三位大师的不恭之意,我只是想说:三位大师在天上,谭老师在人间。
■大象
老子说,大象希形,大音希声。我的理解大概是,象至极大,形之其次;音至极美,声之其次;器至极巧,工之其次。能把UML讲得如蛋清般清沏,已属罕见,在读完这书之后,又突然发现已然把朝夕膜拜的RUP之精髓收于囊中,同时让开发框架、软件架构、设计模式、分析、设计与建模等庞大而复杂的概念,再也不像如梗在喉,真的难以形容这是一种多么美妙的感觉。之余,不得不叹服作者功力之厚、思想之深、语言之美、构思之巧,一切莫不象至极大,故此书第一版,命名为《大象》。
对于本书的第二版,我依然认为这是一个最为贴切的名字。
……
前言/序言
大象:Thinking in UML(第2版) 电子书 下载 mobi epub pdf txt