之前在做需求分析的时候,看到不少的朋友在对UML的各种图高谈阔论和说得头头是道,很是羡慕,但当问及究竟什么是UML的时候,给的答案总是让人感觉到高深莫测的样子。后来也到度娘上去各种搜索,也是云里雾里的,不知所云。不知道是技术原因还是需求分析底子不够的原因,总之是各种的困惑。后来在一个产品群的推荐下,读了这本书,终于豁然开朗,就算没有技术背景也没有关系噢,这本书更多是从业务、从需求分析的角度来解读何为UML,书中系统全面的UML知识的介绍、各种大大小小的案例,除了增强自己对UML的理解之外,更是增强了对业务概念、需求分析的理解,同时还会额外的获得一些技术上的知识噢,这是个惊喜哈。我认为对需求分析人员而言,这是值得读的一本书,浅入深出,逐步的深入构建自己的UML知识体系。
本书一共分为12章,按照总-分-总的结构来介绍UML的概念和知识,先总体介绍何为UML以和所包含哪些分类及这些分类的基本概念、图例;然后再逐一介绍每一个分类的具体概念和含义以及应用在实际案例中会是什么样的;最后的时候补充一些不常用的UML图,并且把所有的UML图统一在一起做了个UML的全家福的图。第1章“大话UML”,主要是进行UML知识扫盲,只要阅读完本章,就能从宏观上掌握UML的知识,在脑袋中形成一张UML的蓝图,能全面了解UML的基本知识、UML各种图的用途和概况,能和实际工作中遇到的问题联系起来,帮助读者进行下一步的学习。
UML这三个字母的全称是UnifiedModeling Language,直接翻译就是统一建模语言,简单的说就是一种有特殊用途的语言。UML除了应用于软件设计,应用于软件需求分析时其学习门槛会大大的降低,同时会让需求分析工作更上一层楼。
UML有很多种图,大体可以分为两类:结构型的图和行为型的图。顾名思义,结构型的图描述得是某种结构,这种结构在某时间段内应该是稳定的、“静态”的;而行为型的图描述得某种行为,是“动态”的。分析系统需求是,我们会面临很多的业务概念,它们之间会有某些关系,这些内容可以看成是“静态”的,我们可以利用UML的结构型的图来分析;同时,业务会设计大量的流程、过程等,这些内容是“动态”的,我们可以用行为型的UML图来分析。结构型的图包含:类图、对象图、构件图、部署图、包图,其中类图是重点;行为型的图包含:活动图、状态机图、顺序图、通信图、用例图、时序图,其中活动图、状态机图、顺序图、用例图是重点,活动图、状态机图、顺序图从三个不同的角度来描述流程,是分析业务流程的三种不同利器;还有两个没有归类的交互概览图、组合结构图,这两个在工作中用得很少或者几乎不用。着重要掌握的是类图、活动图、状态机图、顺序图、用例图这5中,在业务分析、需求分析工作中它们会反复的被用到,而且也非常的实用。
第2章,简要的介绍了需求分析工作的重要性,要通过需求分析让公司和客户实现“双赢”,而UML可以助力于需求分析的工作,提升项目组的需求认知水平。
从第3章开始进入到具体的UML图的各种图介绍,直到12章结束,都是分章节的介绍,重点、主次分明的进行一一介绍并结合案例说明。
第3章“分析业务模型——类图(ClassDiagram)”,本章主要是介绍类图的,并且最后顺带的介绍了一下对象图,类图是锻炼面向对象分析(OOA,Object-Oriented Analysis)和面向对象设计(OOD,Object-OrientedDesign)思想的重要工具,是业务结构建模的重要工具,本章里有大量的实战练习,对读者的OOA思想将会产生极大的考验和提升。
本章的意外收获是理解了何为面向过程和面向对象技术问题,自己组织的理解是:面向过程主要是编码的基本功和结构化的编程,是程序的根基,而面向对象是对结构化的代码进行封装,其他人员调用就可以。(欢迎大家来指正我这观点是否正确噢!)
类的概念是:将某类东西归纳在一起,可以成为一个类,用一个框框把类的名字和属性框起来,就是类图。用类图获取需求的大概步奏如下:1)、识别出类;2)、识别出类的主要属性;3)、描绘出类之间的关系;4)、对各类进行分析、抽象、整理。类之间的关系有:1)、“直线”关系,表示关联的意思,直线关系又包含了一对一关系、一对多关系、角色关系;2)、“包含”关系,包含关系包括了“强包含”(标准术语为组合)和“弱包含”(标准术语为聚合);3)、“继承”关系;4)、“依赖”关系;5)、“递归”关系;6)、“三角”关系。在介绍了类图的全部知识之后,作者举了考试管理系统来做个类图的综合训练,并且在末尾还对类图进行了知识的小结,进一步加深了读者的印象和理解力。
第4、5、6章,主要是分别讲建模三剑客:活动图(Activity Diagram)、状态机图(State Machine Diagram)、顺序图(Sequence Diagram),并且简要的介绍了。
流程图是流程分析的鼻祖,活动图与流程图很相似,活动图的语法并不复杂,一个活动图只表示一件事情的“经过”,一个活动图只表达一个事情,不要指望一个活动图表达很多流程,若想表达多个流程,应该使用多个活动图。作者绘制活动图一些实践建议:1)、明确该流程要达到怎样的业务目的;2)、该流程有什么角色参与?哪些是主要角色?3)、排除异常情况,画出正常情况下的流程,也就是流程的主干,通常是线性的流程;4)、明确流程主干中的活动涉及到的角色;5)、逐步增加分支流程,关键的分支流程都应该表达出来;6)、适当控制活动的粒度。活动图是表达复杂业务流程的好工具,能帮助我们理清思路、发现问题,能帮助我们进行业务流程重组,为客户提供有价值的需求解决方案。
活动图可以说流程分析的万能图,什么流程都可以用活动图来表达,但如果流程是围绕某一事物的状态展开时,应该首先状态机图。状态机图从某个事物的状体是如何变化的角度来展示流程,类似于互动图,每个状态机图都有一个开始状态和一个结束状态,状态与状态之间的箭头叫转换,箭头上的文字说明发生了说明事情导致状态发生变化。活动图的泳道很好用,但是完全不适用状态机图的。
当涉及到多种角色,并且通过多对角色交互展开时,顺序图是不二选择。顺序图的读法是由上而下、由左到右来阅读,这个顺序表示按照按照实际顺序所发生的事情。
活动图、状态机图、顺序图是分析流程图的三大利器,作者把它们称之为“流程分析三剑客”,三种图有不同的特点和不同的应用场景。顺序图的特点:1)、强调角色之间的交互,信息传递很明确;2)、强调按时间顺序分别发生了什么事情;3)、不太适合表达复杂的特殊流程(循环分支、条件分支、可选分支)。活动图的特点:1)、强调每个角色做了什么事情,这些事情的先后关系;2)、适合表达各种特殊流程,如分支、并发等。状态机图的特点:1)、事情围绕某东西展开;2)、该东西有不同的状态,状态会因为发生了一些事情而变化。
第7章“描述系统的行为——用例图(Use Case Diagram)”。用例图中有很多小公仔,于是有人将用例图叫做“公仔图”。用例图是用来描述什么角色通过某某系统能做什么事情的图,用例图关注的是系统的外在表现、系统与人的交互、系统与其他系统的交互。用例图的基本语法:执行者(小公仔)、用例、系统边界、关联;用例图的进阶语法:角色的继承、用例的Include(包含)、用例的Extend(扩展)、用例的继承。
第8、9章,作者简单的描述和介绍了部署图、构件图和包图,作者在工作中并且根据经验用得比较少,简单的草草带过而已,这里也不做详细描述。
第10章,是以上学习的各类UML图的综合实战,也是本书中篇幅最长,实战内容最多、最具体、最落地的部分。本章实战的主要目的是:1)、学习如何从零开始组织需求分析的工作,;2)、学习如何在需求分析工作中理清思路;3)、体会什么情况下用什么UML图;4)、学会编写需求文档。本章值得读者反复的练习和揣摩,对提高整体UML图的理解和UML素养很有帮助。
第11章,作者强调了需求分析如何进行团队作战,以及团队作战对后续整个项目进行的好处。第12章,是带出基本上不用的UML图:时序图、交互概览图、组合结构图,简单的介绍之后,作者把所有的UML图整合在一起,形成一张整体的UML全家福图。在最后面的部分,作者附加了几个附录,让读者进一步加深对前面所介绍的UML所有知识的了解。
总体而言,本书是非常不错的,值得读一读,但是读完之后如果不实践可能会很快忘记,书中涉及了大量的图,在需求分析实战中不断的去应用才能更好的理解和掌握。书中重点内容突出,有的放矢,有张有弛的,唯一的缺憾就是感觉收尾的时候仓促了一些。还有一个缺憾就是,本次书评没能把这些UML图逐一的通过画图来表达出来,只有图才能更立体、更客观和更容易理解。
最后,还是给每一个想用UML的需求分析人员的建议:那就是多实践、多练、多思考,能综合应用、信手拈来,能清晰表达出业务概念、需求分析才是王道噢!