最近终于把《大象》这本书读完了,从去年11月到现在,用了整整五个月。
一方面是因为这段时间工作上的事情,生活上的事情都比较多,很少有整块时间阅读;

另一方面也是自己在读这本书时候,边读边扩展,最后记录下了十三篇笔记。

《大象 Thinking in UML》学习笔记(一)——为什么需要UML?

《大象 Thinking in UML》学习笔记(二)——建模基础

《大象 Thinking in UML》学习笔记(三)——UML核心元素之参与者、用例

《大象 Thinking in UML》学习笔记(四)——UML核心元素之边界类、实体类

《大象 Thinking in UML》学习笔记(五)——UML核心元素之关系、组件和节点

《大象 Thinking in UML》学习笔记(六)——UML核心视图之静态视图:用例图、类图

《大象 Thinking in UML》学习笔记(七)——UML核心视图之动态视图:活动图、时序图

《大象 Thinking in UML》学习笔记(八)——项目开始前的准备工作

《大象 Thinking in UML》学习笔记(九)——需求获取

《大象 Thinking in UML》学习笔记(十)——需求分析

《大象 Thinking in UML》学习笔记(十一)——系统分析

《大象 Thinking in UML》学习笔记(十二)——系统设计

《大象 Thinking in UML》学习笔记(十三)——在提炼中思考

读完最后的感觉仿佛自己打通了任督二脉,很多以前工作上的问题一下子茅塞顿开。
一个系统从零到一,以前知道大概怎么做,现在总算明白一些为什么这么做以及使用UML的好处是什么?
虽然书中有部分内容自己并不完全赞同,但这本书整体的思想上给了我很大的启发。

总的来说,抛开具体的工具和概念,我觉得这本书给了我以下几点启示:
1.UML是一种语言
语言是用来沟通的主要方式,包含了单词和语法
UML 的单词就是各种元素、视图和模型,语法就是建模的方法
语言最基本的功能是能清楚地表达和传递信息
UML最基本的就是通过模型将需要做的系统清楚表示出来

2.UML采用的是面向对象的方法
面向对象是一种认知世界的方法,在面向对象方法里,一切有名字的东西都是对象
对象和对象之间彼此独立,只有在某个特定场景下,它们的某一个特定实例才相互联系在一起
每个对象都是一个整体,内部不可分割,外部只能通过边界和其他对象对接
对象参与每个场景时都会展现其某一个方面性质,这方面性质都可以抽象出来

3.建模的实质是将现实世界抽象为模型
同样的事物在不同的世界观的人眼里会产生不同的结果,而这个世界观在建模里对应的是抽象角度
一旦决定了抽象角度,就确定了一个目标
一个由抽象角度确定了的目标需要由静态事物加上特定条件下产生的一个特定场景来完成,即静态的事情(物)+特定的条件(规则)+特定的动作(参与者的驱动)=特定的场景(事件)
建模其实也就是由人+事+物+规则,将现实世界抽象为模型

4.项目的启动
项目的启动首先源自“老大”的愿景,在老大看来,为什么要开发这个系统
然后是进行涉众分析,谁关心这个系统?会涉及到他的什么利益?
再次是投入,愿意花多少钱,允许多少时间?
最后是风险,比如客户参与少;没有度量方式;技术风险;重要人物反对;以前曾被取消过……

5.客户访谈技巧
一般来说系统分析员是计算机专家,习惯于从计算机角度来看问题;客户是业务专家,习惯身边的人也熟悉这个业务领域。
所以系统分析员需要改变自己的立场,了解业务是什么,还要弄清业务为什么。
首先,应该有一个详细的涉众分析报告,循序渐进地从接触到深入了解客户;
其次,不要急于深入业务细节,而是先就一些大框框进行沟通,借此习惯和了解对方的沟通方式;
再次,双方的时间是有限的,因此每一次会面都需要争分夺秒,用最快的时间把问题搞清楚;
最后,系统分析员需要承担每次会谈结果记录,并且需要正式的反馈和确认,以便之后和客户在需求变更时候有依据。

6.需求获取
在对每个业务进行需求调研时候首先要明确该业务的边界,每个边界的划分则指明了需求分析的起点
找到业务主角,访谈业务主角或者从业务主角的角度来看与系统的交互,就可以得到业务用例
根据业务用例用合适的视图表达出来就构建除了业务模型
业务建模常见的视图有两种:活动图和时序图
活动图中活动是主要的内容,表达的内容是业务主角或业务工人做什么;时序图中,消息是主要的内容,表达的内容是业务主角或业务工人之间传递的是什么

7.需求分析
需求分析首先要找到关键概念,关键概念是指支撑起客户整个业务架构的那条主线,在UML方法里,就是由一些关键的业务用例构成
根据各个关键概念,梳理出相关的概念用例,获取概念模型
每个概念模型表示一个功能,各个概念模型之间通过软件架构联系起来
从概念模型入手,根据找到业务主线找到每个大的业务构件,再通过领域模型分解为小的构件,再根据概念模型找到各个小的构件之间的依赖关系。
如此就得到了项目的业务架构

8.系统分析和设计
将每个业务模型抽象为描述系统的模型,就得到了系统模型
业务用例抽象为系统用例的基本方法有:映射、抽象、合并、拆分、演绎等
系统分析的成果是获取到系统的每个分析类,这些分析类基本上可以分为实体、边界、控制三类,和开发中的MVC正好对应
将分析类的成果考虑具体实现语言和实现方式,也就是系统设计,得到的成果就是开发中可直接用的类、包和接口

9.理论和实际
《大象》这本书尽管作者举了很多生动的例子,画了大量的图,但整体来说是依然是非常枯燥的
对于书中理论,抽象程度都比较高,专业的词汇也比较多,所以看下去真的很难
不过UML作为目前可视化建模语言的工业标准,其本身也源于面向对象分析和设计的方法
目的就是为了更清晰、简单的表达软件设计中的动态和静态信息
所以如果能结果实际项目来看会往往觉得豁然开朗的感觉,但强行去从概念理解往往会让自己更懵
另外我觉得uml的学习最大的成果是有这样一种思维方式,如何分析和设计一个系统
但真正在无比推崇“敏捷开发”的现在,我觉得uml很多时候还不如一个高真的axure更能传递清楚软件设计的信息

《大象 Thinking in UML》读后感相关推荐

  1. GC13:XO独占游戏《神鬼寓言传奇》公布

    作者: 来源: www.bts668.com 微软日前公布了<神鬼寓言传奇>(Fable Legends),该游戏是此系列作品的新作,将作为Xbox One游戏出现. 这款由狮子头工作室开 ...

  2. Facebook 重金挖不到,ASP.NET 之父,微软大神“红衣教主”传奇

    作者 | 伍杏玲 出品 | CSDN (ID:CSDNnews) 2018 年底,微软"王者归来",时隔 16 年市值重返全球第一.人们纷纷用"力挽狂澜"&qu ...

  3. 乔布斯去世衍生多种周边产品(支持乔布斯请顶)

    各种乔布斯肖像 乔布斯公仔 乔布斯立体纸人 不管你是不是狂热的苹果粉丝,是不是拥有n多的苹果产品,苹果帮主乔布斯都应该值得我们纪念. "为什么说乔布斯改变了世界?没有 iPhone,就不会有 ...

  4. 一战封神!“中国飞人”苏炳添跑出9秒83到底有多牛?

    公众号后台回复"图书",了解更多号主新书内容作者:CDA数据分析师来源:CDA数据分析师 [导读] 在刚刚结束的东京奥运会百米飞人大战上,中国选手苏炳添在半决赛跑出9秒83,刷新了 ...

  5. 乔布斯导演的最后一幕

    连作者也说,他仅仅是这本书的写作者,真正的作者是乔布斯."中信出版社总编辑潘岳近日分享了<史蒂夫·乔布斯传>幕后的故事.这本传记预定期已达100万册,预估最终销量将达到500万册 ...

  6. 30本pdf完整版的经典Linux学习和开发教程和资料下载 android arm java 资料大全

    史上最牛的Linux内核学习方法论   点击下载 我的arm_linux移植笔记   点击下载 S3C2440完全开发流程   点击下载 Linux系统命令及其使用详解完整版   点击下载 Linux ...

  7. 30本pdf完整版的经典Linux学习和开发教程和资料下载 android arm java 资料大全...

    史上最牛的Linux内核学习方法论 点击下载 我的arm_linux移植笔记 点击下载 S3C2440完全开发流程 点击下载 Linux系统命令及其使用详解完整版 点击下载 Linux主要shell命 ...

  8. 养成励志的习惯,一生励志——文指星终极励志

    语言的突破全集 卡耐基 --励志经典     点击下载 人性的优点--卡耐基名著--励志经典     点击下载 人生格言精华总集     点击下载 人生定律与原则--励志经典     点击下载 厚黑学 ...

  9. 养成励志的习惯,一生励志

    语言的突破全集 卡耐基 --励志经典     点击下载 人性的优点--卡耐基名著--励志经典     点击下载 人生格言精华总集     点击下载 人生定律与原则--励志经典     点击下载 厚黑学 ...

  10. 【转】乔布斯经典语录

    2011年8月25日消息,乔布斯辞去了苹果公司CEO的职务.10月6日,传来了他去世的消息.在此缅怀乔帮主的同时,与大家分享乔布斯在世时的经典语录.(来自于<乔布斯传>--神一样的传奇的附 ...

最新文章

  1. neutron linux网络命令,OpenStack Neutron网络组件介绍(重要)
  2. 自习室网上预约系统设计_港澳居民“回乡证”出新规啦!新系统网上预约更方便!...
  3. 抽取、转换和装载介绍(八)实时的意义(待续)
  4. ubuntu下 将证书导入java的cacerts证书库
  5. 1. VIM 系列 - 简单入门,拾起兴趣
  6. Pandas高级教程之:GroupBy用法
  7. 两点补充——CSS3新属性以及弹性布局
  8. SVN-关于分支创建合并
  9. C#错误异常日志记录到文件
  10. 16个美艳时尚的的网站设计作品欣赏
  11. 通过网页链接调用QQ临时会话实现
  12. 联通 吉比特无源光纤接入用户端设备(GPON ONU)TEWA-800G超级管理员 如何密码获取
  13. (一)、apache doris 介绍
  14. 清华大学计算机系刘斌,Tsinghua University Outstanding Master Student 清华大学优秀硕士毕业生...
  15. 沧小海读《图解TCP/IP》笔记——第一章 网络基础知识
  16. 一张图架构示意图及简单分析
  17. 【Git/GitHub/VSCode】Git提交时使用EMOJI表情、在VS Code中使用emoji commit
  18. 固定资产管理系统的作用何在?
  19. Modbus学习记录(3)
  20. 金士顿存储卡常识补充:

热门文章

  1. 移动机器人——运动模型
  2. IDEA配合Flash CS6开发Flash项目--配置篇
  3. 中国所有城市(json数据),按A-Z排序。
  4. 我要么进一线外企、要么进一线互联网大厂之算法(1)
  5. three.js流动道路
  6. 【模型训练】YOLOv7吸烟行为检测
  7. Linux命令行下常用svn命令的使用方法[转自:www.hackbase.com]
  8. AutoIT自动安装-驱动精灵 2010 Beta 2 安装
  9. 中国工程院院士候选名单公布:最年轻者41岁,李彦宏王传福等入选
  10. 企业都应该使用开源的 POS 系统的必要性