读书笔记 21| 《火球UML 大战需求分析》
说起UML还是我们软件工程大四的一门专业课,当时只觉得7类图表的功能和应用场景老师讲的干硬和生涩,至今差不多连本带利的都还给老师了,找到了《火球UML 大战需求分析》的PDF电子书,一来为应对CBAP的考试涉及的UML相关图的内容,二来想对存的需求分析书再细读一遍理解需求工程的奥义。
UML 三个字母的全称 Unified Modeling Language 统一建模语言,通常用来做软件需求分析,直接用到的有如类图、顺序图、活动图、用例图等。是需求工程师和业务分析师BA用的最多的工具和方法。
UML大致可以分为两类:结构型的图和行为型的图,其中结构型的图(类图、对象图、构建图、部署图、包图)、行为型的图(活动图、状态机图、顺序图、通信图、时序图),结构型的图通常为“静态”的,而行为型的图通常为“动态”的。
UML图Think in UML
需求分析的面面观:从客服方或是软件公司方,每种角色都会从自身角色出发来理解需求,以至各种角色对需求的理解会不太一样。
把握客户需要的同时,往往需要做业务流程再造(BPR ,Business Process Reengineering),对业务概念等 静态结构进行系统化的梳理和提炼,叫结构建模,对业务流程等动态内容进行系统化的梳理和提炼,称为行为建模。
类图: 类名+属性 + 操作 ,类可以是一对一的关系,也可以是1对多的关系, 箭头表示方向
“包含”关系:空心菱形或是实心菱形,实心表示包含的程度更强烈一些。(如部门包含 员工)
“继承”关系:空心三角形,箭头指向被继承对象。(如儿子继承父亲)
“依赖”关系:虚线接头,指向被依赖对象。(如烟鬼依赖香烟)
活动图: 通常包含开始状态、结束状态、活动、判断、合并等,或通过泳道隔离各不同角色的流程操作状态。活动图将流程分解为一个一个活动,通过活动的先后顺序来展示流程;
状态机图:从某个事物的状态是如何变化的角度来展示流程。
顺序图:角色+生命线+激活框 + 消息+ 返回值。
顺序图的特点:1.强调角色之间的交互,信息传递很明确;2.强调按时间顺序分别发生了什么事情 3. 不太适合表达复杂的特殊流程(循环分支、条件分支、可选分支);
活动图的特点:1.强调每个角色做了什么事情,这些事情的先后关系;2.适合表达各种特殊流程,如分支、并发等。
状态机图的特点:1.事情围绕东西展开;2, 该东西有不同的状态,状态会因为发生了一些事情而变化。
用例图:执行者+ 用例+系统边界 + 关联 (角色的继承,用例的include,用例的extend,用例的继承)
部署图:主要的目的是再物理的层次上做整体的系统规划,与网络拓扑图相似,但部署图可以在网络拓扑的基础上继续喜欢设计。
包图: 包是一个容器,可以放任意UML图。
需求分析全过程的活动图“需求驱动”项目团队具备以下三个条件:
1. 项目组中的需求工作负责人,能全面把握需求,并能指导其他成员的工作。
2.项目组全体成员对项目的“需要”达成一致的理解;
3. 项目组各成员对自己负责的“细化需求(功能性需求和非功能性需求)”理解正确,并且知道什么“需要”驱动这些“细化需求”,什么业务概念和流程对应这些“细化需求”。
高效完成需求分析工作的措施:
1.根据项目的合同、方案书的内容,整理出项目的目标、涉众及其关注点;
2.根据第1点的内容,定制具体的需求调研计划,并每天持续细化和更新;
3.分头调研;
4.聚头分析;
5. 项目组共同编写和维护一份需求文档,每天添加新内容,修改不合适的旧内容。
本书的不同之处在于把每个图的功能都通过具体的实例和图形形象的表达出来了,且通过大型软件系统的项目实践联系各个图的场景使用,最后的第十章(考勤系统的需求分析)和第十一章(需求分析的团队作战)都非常的接地气,相信一般从软件需求入手和分析都是大家会经历的过程,作者给的关于需求驱动和团队高效的实践建议非常值得学习和借鉴,赞一个,最后回顾总结一下,好书不厌百回读,下次再读又是新领悟。