《大象Thinking in UML》已经发售!简介及目录

本书由互动出版网首发,购买地址:

本书将在全国各大书店发售,比互动网晚一周,根据路上运输时间不同,全国各大书店的见货时间也会有几天的差异。相信最迟11月底全国各大书店都能买到了。

封面

简介


关于本书

     提到Thinking这个词,读者大多会想到一本经典技术书籍《Thinking in java》。之所以《Thinking in Java》会成为经典,原因在于这本书并不是教授读者Java语言本身,而是透过Java语言深入讨论其背后的思想和方法。授人以鱼不如授人以渔。

本书是讲述UML的,同样,本书也不是一本纯粹教授UML语法的书籍,而是通过UML这个表象来深入探讨面向对象的分析方法,同时将结合软件工程,传达基于对象的思考方法。分析模式和推导过程以及它们在软件工程的各个阶段如何发挥作用。本书冠以Thinking in UML这一名称正是为了切合这个主题。作者不敢奢望本书会成为《Thinking in Java》一样的经典书籍,但是作者在本书中倾尽了自己在面向对象分析和设计领域中的实践和经验积累。至少对那些尚未能够深入此领域,感觉面向对象仍然似是而非的朋友们,本书中将要传达的那些思路将会是一条线索,至少能够帮助你找到通往面向对象分析的大门。

本书在编写过程中,以大量实际项目中会遇到的实例引出问题,讲述作者对这一问题的分析思路和解决办法。再进一步升华,通过对实例的评点,分析思路的归纳和扩展,上升到面向对象方法理论。逐步引导读者由点到面,由表及里,最后由对工具的使用上升到思想的高度,从而能够自如地跳出工具使用的局限,真正从方法和思想的高度来看待和解决现实的问题。本书中的很多内容和思想将是你在其他书籍中看不到的。

本书分为四部分,由浅入深,从基础到高级,每个章节都有具体的实例进行说明,同时作者将耗费更多的篇幅来评点和阐述这些实例。在某些章节最后还会就一些关键概念和不容易理解的地方提出问题,让读者自行思考。

第一部分为准备篇,需要了解。在这一部分中,作者将从面向对象的困难和需要入手,讲述面向对象分析的一些基本概念,由此提出为什么需要UML这一话题。另一方面,也讲述了接下来学习建模需要了解的一些基本知识。

第二部分为基础篇,在学习中思考。在这一部分中,作者将从实用的角度对UML的基础概念重新组织和归纳整理,同时进行一些扩展和讨论,引申出针对UML的这些概念在面向对象方法中应用方法的思考。这些内容将覆盖绝大部分实际工作的需要。通过这一部分的学习,读者将从另一个角度了解UML,知道UML能够做什么。

第三部分为进阶篇,在实践中思考。在这一部分中,作者将以一个实例贯穿全篇,以软件过程为纲,阐述在第一部分中学习到的那些UML元素和视图将如何在一个实际的软件过程中发挥作用,如何相互配合将一份原始需求经过层层分析和推导,最终形成可执行的代码。并且这个过程将是可验证的和可追溯的。读者在阅读本部分的时候,应关注分析过程和推导过程,思考从需求到实现是如何保证可验证性和可追溯性的。通过这一部分的学习,读者将能够学会如何使用UML来从头到尾地实施一个项目。

第四部分为总结篇,在提炼中思考。在这一部分中,每个章节均会针对一个在现实中经常遇到并且较难掌握的问题进行深入的探讨。这些探讨将有助于提升面向对象的思考能力,升华在前两部分学习到的知识。

本书中用到的UML图使用Rose绘制,完整的工程文件收录在本书附带的光盘中。

由于作者水平有限,很多内容是自己的经验总结,出现错误在所难免,欢迎广大读者批评指正。读者在阅读本书的过程中有任何不清楚的问题和批评建议,可以到作者的博客http://blog.csdn.net/offeewoo留言,或者发邮件到coffeewoo@gmail.com,作者将尽力给您答疑解惑,您的批评建议也将鞭策作者做得更好。


如何阅读本书

本书并不是一本纯粹的入门书籍。尽管在准备篇和基础篇当中也会大量讲解面向对象和UML的基础知识,不过作者仍然假设读者具备基础的面向对象知识,掌握至少一门面向对象的语言,最好参与过一个完整的软件项目。虽然这些上述的假设并不妨碍读者学习本书中的知识,但是如果具有这些经验,对书中提到的一些解决问题的思路会有更深刻的体会,也更有助于理解书中的一些内容。

作者预期的读者大约有如下几类:

正在学习编程。软件工程等知识,准备将来从事IT行业的读者。这类读者最缺乏的知识是对实际项目了解,难以体会一个完整的项目与编写几千行代码之间的差别,毕竟,曾经在书本上所学的知识与实践需要是有距离的。本书展示了一个完整的软件生命周期,它将有助于读者将课本中学到的知识与真正的项目开发实践结合起来,真正理解什么是软件,理解软件工程如何实施,而不仅仅停留在代码和书本层面。

已经进入IT行业,具有一定编程经验和项目经验,正努力向设计师。系统分析员转变的技术人员们。在编程人员向设计师成长的过程中,本书中的许多思想方法是极具价值的。相信这些知识会成为您成长的助推器。

已经从事设计工作,期望对软件有更深的了解的读者们。本书中包含大量针对现实问题的分析,提出了解决问题的办法,并且进行了总结。相信这些内容将会对您进一步提高分析设计水平有直接的帮助。

对那些实际项目经验不太多的读者来说,本书中的一些内容或许会让人觉得“没有意义”或“不可理解”这是正常的。因为分析和设计是在编程基础上的抽象,而软件方法则是大量编程经验的归纳和总结。正如歌中唱的那样,不经历风雨怎么见彩虹,没有经历过软件项目的困难和折磨,或许就不会产生学习分析设计技术和软件方法的动机,没有在编程过程当中发现问题,就难以理解为什么要进行分析和设计,难以理解为什么采用这样而不是那样的软件方法。尽管如此,作者仍然鼓励这些初学者阅读本书,本书中的经验和思想均来自于作者的实际工作经验,也许暂时不能理解,但是当有一天遇到问题时,读者或许很快能够想起本书中曾经讨论过的问题。这些知识能够帮助初学者尽快成长。

在本书中,大量讲述和讨论面向对象的分析方法。设计方法,并且涉及到整个软件生命周期的各个方面。尽管在基础篇中会讲述关于UML的基础知识,但并不局限于介绍UML本身,在讲述UML基础概念的同时,作者也加入了很多实践经验,希望读者能够从中获益。

在阅读准备篇时,对于经验不够的读者可以大致浏览以获得面向对象方法的基本理解,在后续的章节中回头温习这些方法,逐步加深理解直至真正掌握面向对象的分析和设计方法。

在阅读基础篇时,读者应当将核心元素。核心视图。核心模型这三个章节中的内容贯穿起来理解。简单地说,核心元素描述基本事物,核心视图表达这些事物构成的某种有意义的观点,核心模型则使用核心视图来描述需求。系统。设计等等。

在阅读进阶篇时,读者应当关注书中的实例,掌握这个实例是如何从需求一直做到测试的。理解每个步骤之间的演变过程,弄清楚软件生命周期各阶段具体要完成的工作,掌握这些阶段是如何被推导的,并且是如何保证可回溯的。另一方面,在每个章节里,除了讲解实例之外,都有进一步讨论的内容。在进一步讨论里,作者将就实例讨论更多更深的内容,希望读者能够加深理解,举一反三,联系到自己实际的工作中,解决实际问题。

在高级篇中,作者就一些问题单独进行讨论,对经验较多的读者来说有助于提高分析设计水平。

最后,软件是一种实践知识,仅仅靠书本不可能成为高手。书本只能给出思路和知识点,而掌握和消化这些知识则必须在实践中去完成。学习知识,多实践,多思考,再回头温习,是快速成长的唯一捷径。在此预祝读者能够迅速进步,达到期望的职业目标。


目录

第一部分  准备篇——需要了解

1  为什么需要UML. 2

1.1  面向过程还是面向对象... 2

1.1.1  面向过程方法... 3

1.1.2  面向过程的困难... 4

1.1.3  面向对象方法... 6

1.1.4  面向对象的困难... 8

1.2  UML带来了什么... 10

1.2.1  什么是UML. 10

1.2.2  统一语言... 11

1.2.3  可视化... 12

1.2.4  从现实世界到业务模型... 14

1.2.5  从业务模型到概念模型... 15

1.2.6  从概念模型到设计模型... 17

1.2.7  面向对象的困难解决了吗... 18

1.2.7.1  从现实世界到业务模型... 18

1.2.7.2  从业务模型到概念模型... 19

1.2.7.3  从概念模型到设计模型... 19

1.3  统一过程简介... 20

1.3.1  RUP是什么... 20

1.3.2  RUPUML. 22

1.3.3  RUP与软件工程... 23

1.3.4  RUP与最佳实践... 25

1.3.5  RUP与本书... 25

2  建模基础... 27

2.1  建模... 27

2.2  用例驱动... 29

2.3  抽象层次... 31

2.4  视图... 32

2.5  对象分析方法... 34

第二部分  基础篇——在学习中思考

3  UML核心元素... 38

3.1  版型... 38

3.2  参与者... 39

3.2.1  基本概念... 39

3.2.1.1  参与者位于边界之外... 39

3.2.1.2  参与者可以非人... 40

3.2.2  发现参与者... 40

3.2.3  业务主角... 42

3.2.4  业务工人... 43

3.2.5  参与者与涉众的关系... 44

3.2.6  参与者与用户的关系... 45

3.2.7  参与者与角色的关系... 45

3.2.8  参与者的核心地位... 45

3.2.9  检查点... 46

3.3  用例... 47

3.3.1  基本概念... 47

3.3.2  用例的特征... 48

3.3.3  用例的粒度... 50

3.3.4  用例的获得... 52

3.3.5  用例和功能的误区... 54

3.3.6  目标和步骤的误区... 57

3.3.7  用例粒度的误区... 59

3.3.8  业务用例... 61

3.3.9  业务用例实现... 62

3.3.10  概念用例... 63

3.3.11  系统用例... 64

3.3.12  用例实现... 64

3.4  边界... 65

3.4.1  边界决定视界... 66

3.4.2  边界决定抽象层次... 66

3.4.3  灵活使用边界... 67

3.5  业务实体... 68

3.5.1  业务实体的属性... 68

3.5.2  业务实体的方法... 69

3.5.3  获取业务实体... 69

3.6  ... 71

3.7  分析类... 73

3.7.1  边界类... 74

3.7.2  控制类... 75

3.7.3  实体类... 75

3.7.4  分析类的三高... 76

3.8  设计类... 77

3.8.1  ... 78

3.8.2  属性... 78

3.8.3  方法... 78

3.8.4  可见性... 78

3.9  关系... 79

3.9.1  关联关系(association... 79

3.9.2  依赖关系(dependency... 80

3.9.3  扩展关系(extends.. 80

3.9.4  包含关系(include... 81

3.9.5  实现关系(realize... 81

3.9.6  精化关系(refine... 82

3.9.7  泛化关系(generalization... 83

3.9.8  聚合关系(aggregation... 83

3.9.9  组合关系(composition... 83

3.10  组件... 84

3.10.1  完备性... 85

3.10.2  独立性... 85

3.10.3  逻辑性... 85

3.10.4  透明性... 85

3.10.5  使用组件... 85

3.11  节点... 87

3.11.1  分布式应用环境... 88

3.11.2  多设备应用环境... 88

4  UML核心视图... 90

4.1  静态视图... 90

4.1.1  用例图... 90

4.1.1.1  业务用例视图... 90

4.1.1.2  业务用例实现视图... 92

4.1.1.3  概念用例视图... 92

4.1.1.4  系统用例视图... 92

4.1.1.5  系统用例实现视图... 93

4.1.2  类图... 94

4.1.2.1  概念层类图... 95

4.1.2.2  说明层类图... 95

4.1.2.3  实现层类图... 95

4.1.3  包图... 97

4.2  动态视图... 97

4.2.1  活动图... 98

4.2.1.1  用例活动图... 98

4.2.1.2  对象活动图... 101

4.2.1.3  泳道... 101

4.2.1.4  业务场景建模... 102

4.2.1.5  用例场景建模... 103

4.2.2  状态图... 104

4.2.3  时序图... 106

4.2.3.1  业务模型时序图... 106

4.2.3.2  概念模型时序图... 109

4.2.3.3  设计模型时序图... 110

4.2.4  协作图... 110

4.2.4.1  业务模型协作图... 112

4.2.4.2  概念模型协作图... 113

4.2.4.3  设计模型协作图... 113

5  UML核心模型... 116

5.1  用例模型概述... 116

5.2  业务用例模型... 118

5.2.1  业务用例模型主要内容... 120

5.2.2  业务用例模型工件的取舍... 120

5.2.3  何时使用业务用例模型... 121

5.3  概念用例模型... 122

5.3.1  概念用例模型的主要内容... 123

5.3.2  获得概念用例... 124

5.3.3  何时使用概念用例模型... 124

5.4  系统用例模型... 125

5.4.1  系统用例模型的主要内容... 125

5.4.2  获得系统用例... 127

5.5  领域模型... 128

5.6  分析模型... 130

5.6.1  如何使用分析模型... 131

5.6.2  分析模型的主要内容... 133

5.6.3  分析模型的意义... 134

5.7  软件架构和框架... 135

5.7.1  软件架构... 136

5.7.1.1  业务架构... 136

5.7.1.2  软件架构... 138

5.7.1.3  架构描述... 139

5.7.2  软件框架... 141

5.7.3  何时使用架构和框架... 142

5.8  设计模型... 142

5.8.1  设计模型的应用场合... 143

5.8.2  设计模型的主要内容... 144

5.8.3  从分析模型映射到设计模型... 146

5.9  组件模型... 147

5.9.1  何时使用组件模型... 149

5.9.2  广义组件的用法... 149

5.10  实施模型... 150

5.10.1  何时使用实施模型... 151

6  统一过程核心工作流简介... 152

6.1  业务建模工作流程... 153

6.1.1  工作流程... 153

6.1.2  活动集和工件集... 153

6.1.3  业务建模的目标和场景... 156

6.1.3.1  场景 #1——组织图... 156

6.1.3.2  场景 #2——领域建模... 156

6.1.3.3  场景 #3——单业务多系统... 156

6.1.3.4  场景 #4——通用业务模型... 157

6.1.3.5  场景 #5——新业务... 157

6.1.3.6  场景 #6——修改... 157

6.2  系统建模工作流程... 157

6.2.1  工作流程... 157

6.2.1.1  分析问题... 158

6.2.1.2  理解涉众需求... 158

6.2.1.3  定义系统... 159

6.2.1.4  改进系统定义... 159

6.2.1.5  管理系统规模... 159

6.2.1.6  管理需求变更... 159

6.2.2  活动集和工件集... 160

6.2.2.1  前景... 160

6.2.2.2  涉众请求... 161

6.2.2.3  需求属性... 162

6.2.2.4  软件需求规约... 162

6.2.2.5  用例示意板... 162

6.2.3  系统建模的目标... 162

6.3  分析设计建模工作流程... 163

6.3.1  工作流程... 163

6.3.1.1  定义和改进架构... 164

6.3.1.2  分析行为... 165

6.3.1.3  设计组件(构件)... 166

6.3.1.4  设计数据库... 169

6.3.2  活动集和工件集... 170

6.3.3  分析设计的目标... 171

6.3.4  推荐的分析设计工作流程简介... 171

6.4  实施建模工作流程... 173

6.4.1  工作流程... 173

6.4.2  活动集和工件集... 174

6.4.3  推荐的实施建模工作流程... 175

7  迭代式软件生命周期... 179

第三部分  进阶篇——在实践中思考

8  准备工作... 182

8.1  案例说明... 182

8.2  了解问题领域... 183

8.2.1  了解业务概况... 183

8.2.2  整理业务目标... 183

8.3  做好涉众分析... 184

8.3.1  什么是涉众... 184

8.3.2  发现和定义涉众... 184

8.3.2.1  业主... 185

8.3.2.2  业务提出者... 185

8.3.2.3  业务管理者... 185

8.3.2.4  业务执行者... 186

8.3.2.5  第三方... 186

8.3.2.6  承建方... 186

8.3.2.7  相关的法律法规... 186

8.3.2.8  用户... 187

8.3.3  涉众分析报告... 187

8.3.3.1  涉众概要... 187

8.3.3.2  涉众简档... 189

8.3.3.3  用户概要... 190

8.3.3.4  用户简档... 191

8.3.3.5  消费者统计... 192

8.4  规划业务范围... 193

8.4.1  规划业务目标... 193

8.4.2  规划涉众期望... 193

8.5  整理好你的思路... 194

8.5.1  划分优先级... 194

8.5.1.1  涉众优先级标准... 195

8.5.1.2  期望优先级标准... 195

8.5.1.3  优先级矩阵... 195

8.5.2  规划需求层次... 196

8.5.2.1  第一层次:业务架构... 196

8.5.2.2  第二层次:业务流程... 196

8.5.2.3  第三层次:工作细节... 197

8.5.3  需求调研计划... 197

8.6  客户访谈技巧... 198

8.6.1  沟通的困难... 198

8.6.2  沟通技巧... 199

8.6.2.1  建立平等的对话平台... 200

8.6.2.2  做足准备工作... 200

8.6.2.3  以我为主... 200

8.6.2.4  改变沟通策略... 201

8.6.2.5  把握需求节奏... 201

8.6.2.6  记录与反馈... 201

8.7  提给读者的问题... 202

9  获取需求... 203

9.1  定义边界... 203

9.1.1  盘古开天——从混沌走向清晰... 203

9.1.2  现在行动:定义边界... 204

9.1.3  进一步讨论... 206

9.1.3.1  第一个讨论... 206

9.1.3.2  第二个讨论... 207

9.1.3.3  第三个讨论... 208

9.1.4  提给读者的问题... 209

9.2  发现主角... 210

9.2.1  女娲造人——谁来掌管这个世界... 210

9.2.2  现在行动:发现主角... 210

9.2.2.1  第一个例子... 211

9.2.2.2  第二个例子... 211

9.2.3  进一步讨论... 214

9.2.3.1  第一个讨论... 214

9.2.3.2  第二个讨论... 215

9.2.3.3  第三个讨论... 215

9.2.3.4  第四个讨论... 216

9.2.3.5  第五个讨论... 216

9.2.4  提给读者的问题... 217

9.3  获取业务用例... 217

9.3.1  炎黄之治——从愚昧走向文明... 217

9.3.2  现在行动:获取业务用例... 218

9.3.2.1  第一个例子... 218

9.3.2.2  第二个例子... 221

9.3.2.3  第三个例子... 224

9.3.3  进一步讨论... 224

9.3.3.1  第一个讨论... 224

9.3.3.2  第二个讨论... 226

9.3.3.3  第三个讨论... 226

9.3.4  提给读者的问题... 228

9.4  业务建模... 228

9.4.1  商鞅变法——强盛的必由之路... 228

9.4.2  现在行动:建立业务模型... 229

9.4.2.1  业务用例场景示例... 229

9.4.2.2  业务用例规约示例... 235

9.4.2.3  业务对象模型... 237

9.4.2.4  业务用例实现视图... 237

9.4.2.5  业务用例实现场景示例... 238

9.4.2.6  包图... 239

9.4.3  进一步讨论... 240

9.4.3.1  第一个讨论... 240

9.4.3.2  第二个讨论... 241

9.4.3.3  第三个讨论... 241

9.4.3.4  第四个讨论... 242

9.4.3.5  第五个讨论... 242

9.4.4  提给读者的问题... 243

9.5  领域建模... 243

9.5.1  风火水土——寻找构成世界的基本元素... 243

9.5.2  现在行动:建立领域模型... 244

9.5.2.1  提出领域问题... 245

9.5.2.2  分析领域问题... 246

9.5.2.3  建立领域模型... 248

9.5.2.4  验证领域模型... 250

9.5.2.5  领域建模归纳... 250

9.5.3  进一步讨论... 252

9.5.3.1  第一个讨论:为什么需要领域模型... 252

9.5.3.2  第二个讨论:怎样选择问题领域... 252

9.5.3.3  第三个讨论:领域模型与用例模型... 253

9.5.3.4  第四个讨论:领域模型和设计模型... 254

9.5.3.5  第五个讨论:领域模型要做到什么程度... 254

9.5.4  提给读者的问题... 255

9.6  提炼业务规则... 255

9.6.1  牛顿的思考——揭穿苹果的秘密... 255

9.6.2  现在行动:提炼业务规则... 256

9.6.2.1  全局规则... 256

9.6.2.2  交互规则... 258

9.6.2.3  内禀规则... 258

9.6.2.4  分类业务规则的意义... 258

9.6.3  进一步讨论... 259

9.6.3.1  第一个讨论:需求管理和业务规则管理... 259

9.6.3.2  第二个讨论:分类业务规则对于开发的意义... 260

9.6.4  提给读者的问题... 260

9.7  获取非功能性需求... 261

9.7.1  非物质需求——精神文明是不可缺少的... 261

9.7.2  现在行动:获取非功能性需求... 262

9.7.2.1  可靠性... 263

9.7.2.2  可用性... 264

9.7.2.3  有效性... 265

9.7.2.4  可移植性... 266

9.7.3  进一步讨论... 266

9.7.3.1  第一个讨论:如何采集非功能性需求... 266

9.7.3.2  第二个讨论:如何记录非功能性需求... 270

9.7.4  提给读者的问题... 270

9.8  主要成果物... 270

10  需求分析... 273

10.1  关键概念分析... 273

10.1.1  阿基米德杠杆——找到撬动地球的支点... 273

10.1.2  现在行动:建立概念模型... 274

10.1.2.1  获取概念用例... 274

10.1.2.2  分析概念用例... 278

10.1.2.3  建立概念模型... 280

10.1.3  进一步讨论... 285

10.1.3.1  第一个讨论:概念模型和领域模型... 285

10.1.3.2  第二个讨论:软件架构的引入... 285

10.1.4  提给读者的问题... 286

10.2  业务架构... 286

10.2.1  拼图游戏——我们也想造个世界... 286

10.2.2  现在行动:建立业务架构... 287

10.2.3  进一步讨论... 292

10.2.3.1  第一个讨论:结构化设计方法和业务架构方法... 292

10.2.3.2  第二个讨论:业务构件和业务实体... 293

10.2.3.3  第三个讨论:业务架构和软件架构... 294

10.2.3.4  第四个讨论:建模的价值... 294

10.2.4  提给读者的问题... 296

10.3  系统原型... 296

11  系统分析... 299

11.1  确定系统用例... 299

11.1.1  开始规划——确定新世界的万物... 299

11.1.2  现在行动:确定系统用例... 301

11.1.3  现在行动:描述系统用例... 305

11.1.4  进一步讨论... 308

11.1.5  提给读者的问题... 310

11.2  分析业务规则... 310

11.2.1  设定规则——没有规矩不成方圆... 310

11.2.2  现在行动:分析业务规则... 311

11.2.3  提给读者的问题... 318

11.3  用例实现... 318

11.3.1  绘制蓝图——世界将这样运行... 318

11.3.2  现在行动:实现用例... 319

11.3.3  进一步讨论... 324

11.3.4  提给读者的问题... 328

11.4  软件架构和框架... 329

11.4.1  设计架构——新世界的骨架... 329

11.4.2  什么是软件架构... 331

11.4.3  什么是软件框架... 332

11.4.4  软件架构的基本构成... 333

11.4.5  应用软件架构... 336

1.4.6  提给读者的问题... 337

11.5  分析模型... 338

11.5.1  设计功能零件——让世界初步运转起来... 338

11.5.2  现在行动:建立分析模型... 338

11.5.3  进一步讨论... 345

11.5.4  提给读者的问题... 347

11.6  组件模型... 348

11.6.1  设计功能部件——构建世界的基础设施... 348

11.6.2  现在行动:建立组件模型... 349

11.6.3  进一步讨论... 355

11.6.4  提给读者的问题... 360

11.7  部署模型... 360

11.7.1  安装零部件——组装一个新世界... 360

11.7.2  现在行动:建立部署模型... 361

11.7.3  提给读者的问题... 363

12  系统设计... 364

12.1  系统分析与系统设计的差别... 364

12.2  设计模型... 365

12.2.1  按图索骥——为新世界添砖加瓦... 365

12.2.2  现在行动:将分析模型映射到设计模型... 366

12.2.3  进一步讨论... 370

12.2.4  提给读者的问题... 372

12.3  接口设计... 373

12.3.1  畅通无阻——构建四通八达的神经网络... 373

12.3.2  现在行动:设计接口... 374

12.3.3  进一步讨论... 380

12.3.4  提给读者的问题... 382

12.4  包设计... 383

12.4.1  分工合作——组织有序世界才能更好... 383

12.4.2  现在行动:设计包... 388

12.4.3  进一步讨论... 392

12.5  提给读者的问题... 395

13  开发... 396

13.1  生成代码... 396

13.1.1  现在行动:生成代码... 397

13.1.2  进一步讨论... 401

13.2  分工策略... 402

13.2.1  纵向分工策略... 402

13.2.2  横向分工策略... 407

13.2.3  选择适合你的开发分工策略... 409

14  测试... 410

14.1  质量保证——新世界需要稳健运行... 410

14.2  设计和开发测试例... 411

14.3  提给读者的问题... 417

第四部分  高级篇——在提炼中思考

15  理解用例的本质... 419

15.1  用例是系统思维... 419

15.2  用例是面向服务的... 423

15.3  善用用例方法... 425

16  理解用例驱动... 427

16.1  用例与项目管理... 427

16.2  用例与可扩展架构... 428

17  理解建模的抽象层次... 431

17.1  再讨论抽象层次... 431

17.1.1  层次高低问题... 431

17.1.2  层次不交叉问题... 432

17.2  如何决定抽象层次... 432

17.3  抽象层次与UML建模的关系... 433

18  划分子系统的问题... 434

18.1  面向对象的子系统问题... 434

18.2  UC矩阵还适用吗... 434

18.3  如何划分子系统... 435

19  学会使用系统边界... 439

19.1  边界是面向对象的保障... 439

19.2  利用边界来分析需求... 439

19.2.1  边界分析示例一... 440

19.2.2  边界分析示例二... 442

19.3  边界意识决定设计好坏... 444

20  学会从接口认知事物... 446

20.1  怎样描述一件事物... 446

20.2  接口是系统的灵魂... 447

21  学会正确选择... 449

21.1  屁股决定脑袋——学会综合权衡... 449

21.2  理辩则明——学会改变视角... 450

22  学会使用设计模式... 455

22.1  如何学习设计模式... 455

22.2  如何使用设计模式... 459

附录  UML视图常用元素参考... 466

图目录... 471

表目录... 479

后记... 480



原文地址:https://www.cnblogs.com/fengju/p/6173690.html