产品经理进阶:如何用UML的顺序图表达思想?
当大家把UML建模语言下的各图形都有所了解后会发现,通过这些图可以全面的、立体的从各个角度表达产品,让产品的表达变得更丰富、更形象。
“手中无剑、心中有剑”,大多数产品人并不了解计算机开发语言,这导致产品人与技术人间的交流总是不够顺畅,如果我们能拥有一套与技术人员沟通的共同语言,在将来的工作中就会变得更轻松、顺畅。今天,要说的就是这门共同语言——UML(统一建模语言),它包括:活动图、顺序图、用例图、部署图、类图、包图、对象图、合作图、状态图等,每种图都适用于不同的场景,各有各的适用范围,综合起来就是一套全方位、立体化模型,可从不同角度诠释产品。
顺序图的使用我是在2005年开始的——日本地铁管理系统。管理系统的特点多是关系复杂、严谨性高、流程性强,如ERP、OA、CRM等,为了能更好的梳理业务关系和流程,我们就选用了顺序图这一模型图表来梳理需求。通过顺序图的使用,需求渐渐清晰、明确,每一个对象、每一次交互、每一个流程都被我们从隐藏的角落里拉了出来。当遇到不确定的问题再与客户方沟通了解,并将梳理后的结果反馈给对方。因为模型的使用让项目团队从需求到设计过渡的非常顺畅,项目也成功完成并上线。
闲话少叙,谈一谈UML中最重要的模型——顺序图。
细说顺序图
顺序图也叫序列图,英文是Sequence[ˈsi:kwəns],是UML里最重要的建模图形之一。顺序图描述了用例的实现,它表明了由哪些对象,通过消息相互协作来实现用例的功能,在顺序图中,标识了消息发生交互的先后顺序。
举个例子
案例一:去餐厅吃饭
场景:到饭店就餐。就座后服务员送上菜单,点完餐后等待,厨师做好后服务人员送餐,饭后付帐离开。
这个过程用顺序图建模如下:
图例说明与归纳:
- 顾客与服务员:这两个角色为顺序图的对象,为二维图表纵坐标,横坐标为对象间的消息交互。
- 进店、选菜、就餐、离开:这些是自己向自己发起的消息,并没有与服务员产生关系,所以箭头指向自己。
- 要菜单、点餐、付款:顾客向服务员发起的消息,消息发送人为箭头尾部,接收人为箭头头部,线上文字要用动宾词语。
- 送菜单、送餐、找零钱:由箭头方向表示是由服务员向顾客发起的消息,实体线表示此消息为动作。动作要用实体线表示,并用动宾词语。
- 激活框:在顾客与服务员一侧的长条矩形,也叫会话,一个会话为一批有关联关系的消息组,这里把就餐的整个过程理解为一个会话。
顺序图各元素说明:
换一种画风,这张图还可以这样表达:
如下图:
从上图可以看出,这张图与上张图有所不同,发起的消息为实线,返回的消息为虚线。
图例说明与归纳:
- 菜单、餐、零钱:虚线表示上一个动作的返回内容,动作由上一消息发起。动作性消息用实线表达,线上文用动宾词语;返回结果用虚线表达,线上文字用名词词语。
- 从开发人员角度分析:如发起的动作性消息有参数返回,则可根据此特点创建函数,虚线上的内容为此函数的返回值;如发起的动作性消息不返回参数则可根据此特点创建方法,方法可以理解为没有返回值的函数;从这点可以看出,我们如果能画好顺序图,对开发人员来说是有一定指导意义的。
多对象间如何进行信息传递?
再延伸思考,顾客向服务员下单,服务员向厨师下单,厨师收到订单后按单做饭,做完后再把菜给服务员,服务员送餐。埋单时也是一样,顾客付款后,服务员将钱给收银员收款,收银员将零钱给服务员,由服务员给顾客。这就产生了两个新的角色,厨师、收银员,这种关系应该如何表达呢?这已经不是两个对象间的关系,是多对象间的关系问题。
见下图:
图示说明与归纳:
- 不论多少个对象间产生关系,消息只能是两个对象间产生。
- 顾客付款给服务员,服务员将动作顺延给收银员,多对象间交互信息多是消息及参数的传递。如:收银员把零钱给服务员,服务员把零钱给顾客。
- 一般顺序图的动作与返回参数多是成对出现的,但也会有只发动作,对方不能回应的情况。
总结
顺序图特点:
- 顺序图必须是两个或两个以上对象间进行交互。
- 强调消息的顺序性,生命线的长度为交互对象的全部生命周期。
- 顺序图的阅读是从上到下、从左到右进行。
- 顺序图的元素有对象、生命线、激活框、消息、返回值,还有循环和分支,但一般不常用,加上这两个元素后会使顺序图的可读性下降,图形显示比较乱,我一般不使用,循环和分支不是顺序图的强项。
顺序图与活动图的适用场景
- 顺序图对象间的关系非常清晰,谁向谁发起的、谁给谁反馈的。顺序图强调各对象间交互;活动图一般不强调对象,但也有泳道的概念,泳道的命名也是以对象命名的,在这点上两图有些相似。
- 顺序图强调的是消息及消息的返回值,而活动图强调的是流程。
- 顺序图虽然也可以表达循环和分支,但可读性差;循环和分支性更适合用活动图表示。
- 顺序图更强调时间性,动作是在会话下进行;活动图不强调会话与时间。
通过上面三个示例已经把顺序图的各元素及画法表达清楚了,图形绘制的颗粒度可以根据实际情况自行掌握,绘制系统间信息的交互就不适合画信息交互细节了。以后我还会把用例图、类图、部署图等图的画法整理成文章,分享给大家。当大家把UML建模语言下的各图形都有所了解后会发现,通过这些图可以全面的、立体的从各个角度表达产品,让产品的表达变得更丰富、更形象。
产品经理进阶:如何用UML的顺序图表达思想?的更多相关文章
- 《To C产品经理进阶》
我所说的,都是错的. To C产品设计和To B产品设计对一个优秀的产品经理的洞察能力.架构能力有共通的要求. 实际产品设计过程中,To C产品往往是从商业思维思考,侧重用户研究,思考用户心智,由产品 ...
- 《To B产品经理进阶》
一.沙漏哟:To B产品技术标准化(全网独家) 经济机器是怎样运行的(超级简单模式理解经济运行规律) <俞军产品方法论>(思维模型.交易模型.经济学.心理学) <深度思考六步法> ...
- B端产品经理的金字塔能力模型
工作这几年,时长思考,作为B端产品经理自己应该具备什么样的能力? 虽然工作依旧在有条不紊的进行,但是时常会陷入到对知识或者能力的焦虑当中.特别时是工作三五年,产品经理进阶门槛时. 虽然产品经理的能力是 ...
- 产品经理---- idea good idea
想问题有不同的思想. 1.先去娶老婆再生娃. 我有啥,我能用这些做啥? [大概这就是泯然众人的思想吧] 2.先做衣服后长肉 我想要做个啥?然后我需要怎么做?怎么做的什么? 好的产品经理我认为是第二种. ...
- BRD——>MRD——>PRD,产品经理三大文档概念详解及前后逻辑
转自:https://blog.csdn.net/neikutaixiao/article/details/40819445 商业需求文档Business Requirement DocumentBR ...
- 迅雷创始人程浩:创业公司5招做好内部创新(组建小型敢死队:一共3个人,一个产品经理,两个研发;腾讯做不做这个项目是一个伪命题;让用户来验证,而不是相反 good)
欢迎关注“创事记”的微信订阅号:sinachuangshiji 文/程浩 编者按:本文首发于微信公众号“浩哥说”(ID:haogetalks),作者程浩,迅雷创始人.内容为作者在混沌AI成长营上的演讲 ...
- 产品经理之PRD详解
文章大纲 一.PRD基础二.PRD要素讲解三.相关模板下载四.参考文章 一.PRD基础 1. PRD简介 PRD中文意思为:产品需求文档.PRD的主要使用对象有:开发.测试.项目经理.交互设 ...
- 花十分钟,让你变成AI产品经理
花十分钟,让你变成AI产品经理 https://www.jianshu.com/p/eba6a1ca98a4 先说一下你阅读本文可以得到什么.你能得到AI的理论知识框架:你能学习到如何成为一个AI产品 ...
- 产品经理-visio
产品经理在 visio 基本上就使用 4 种图: 基本流程图.跨职能流程图.UML活动图 以及 UML序列图. 其中,UML序列图是使用最少的.(UML序列图一般是给技术研发人员看的,产品新人可以先不 ...
随机推荐
- Vue基础之用插值表达式在视图区显示数据
Vue基础之用插值表达式在视图区显示数据 第一步:当然就是你要引入Vue.js这个脚本文件啦! <script src="https://cdn.jsdelivr.net/npm/vu ...
- Python+Selenium+Unittest实现PO模式web自动化框架(2)
1.Common目录下的具体模块讲解. 2.basepage.py basepage.py模块里面是封装的对元素的操作.例如:查找元素.点击元素.文本输入等等. # --^_^-- coding:ut ...
- 用xmind设计用例:
注意一个原则:清晰明了,简单高效 注意不要写成需求分析,从测试的角度对场景进行分类管理 注意点: 1.思维导图重要的是逻辑清晰归类,注意有不要太多具体的操作步骤 举个例子(来源:https://www ...
- 阿姆达尔定律 Amdahl's law
Amdahl's law - Wikipedia https://en.wikipedia.org/wiki/Amdahl%27s_law 阿姆达尔定律(英语:Amdahl's law,Amdahl' ...
- Property attribute.
class property(object): """ Property attribute. fget function to be used for getting ...
- Git恢复之前版本的两种方法reset、revert
实战 回退 1.删除之前的提交 git reset --hard id 推送到远程 git push -f [git log中确实删除了,但是拿到可以恢复] 2.不删除之前的提交 git revert ...
- C++ Primer Plus读书笔记(八)函数探幽
1.内联函数 inline int square(x) {return x*x} 2.引用变量 int& 中的& 不是地址运算符,就想定义指针时的char* 一样,int&指的 ...
- worker 启动时向 etcd 注册自己的信息,并设置一个带 TTL 的租约,每隔一段时间更新这个 TTL,如果该 worker 挂掉了,这个 TTL 就会 expire 并删除相应的 key。
1.通过etcd中的选主机制,我们实现了服务的高可用.同时利用systemd对etcd本身进行了保活,只要etcd服务所在的机器没有宕机,进程就具备了容灾性. https://mp.weixin.qq ...
- Autofac for AutoMapper
我一直在做的事情.NET 开发已经有一段时间了.有时人们问我,为什么我仍然觉得它有趣.答案很简单: 我是超级 d.r.y.如果你不熟悉这个术语,你应该查一下,但它基本上意味着你应该总是尝试应用那些可以 ...
- vim 行号的显示与隐藏
通常我们在使用vim编辑器的时候,需要显示和隐藏行号 隐藏行号: 1.首先我们vim 1.txt (进入我们编辑的文档),如下,此时是显示行号的 2.按一下esc键,并输入:(冒号),完成效果 ...