软件工程里的UML序列图的概念和总结
俗话说,自己写的代码,6个月后也是别人的代码……复习!复习!复习!
软件工程的一般开发过程:愿景分析、业务建模,需求分析,健壮性设计,关键设计,最终设计,实现……
时序图也叫序列图(交互图),属于软件工程里的第二步——业务建模阶段里的图,业务建模要求我们把视角从系统转向组织,要站在客户的角度看问题,以达到清晰准确地“知彼”,术语就是从组织的角度来定位系统的价值,从而避免软件项目的失败,因为大量软件项目失败的原因都是一个——最终实现和用户需求不一致!故业务建模也叫组织建模,切记在业务建模和需求分析阶段,忘掉自己技术专家的身份!其实说那么多,就是一句话:业务建模就是把系统放在组织中来看。
•组织[Organisation] ——为了实现既定的目标,按一定规则和程序而设置的多层次岗位及其有相应人员隶属关系的权责角色结构。例如政府、企业等。
•业务[Business]——组织的本行业本职工作。例如医院的看病、急诊;银行的储蓄、贷款等。
•业务建模[ Business Modeling ]——是以软件模型方式描述企业管理和业务所涉及的对象和要素、以及它们的属性、行为和彼此关系。包括对业务组织建模,对业务流程建模,改进业务流程等方面。
业务建模的第一步就是找到组织,然后是明确组织的现状(必要的时候需要改进现状),明确现状一般需要如下两个图:业务用例图,业务序列图(或者活动图、或者文字)。从外部看,组织是价值的集合,用业务用例图来建模,业务用例图帮助我们从高层次了解组织的业务构成。从内部看,组织是系统的集合(人是一种智能系统),用业务序列图来建模,业务序列图帮助我们从细节上了解组织的业务流程,每个业务用例都代表一条业务流程,一般用文字、活动图或者序列图来描述这个流程。
采用序列图描述业务的优势:以面向对象的思想来看业务流程。而活动图往往表示的只有事件,序列图却可以表现责任和动作!
业务序列图的组成:业务执行者、业务工人、业务实体,以及三者间的交互,以完成某个业务用例的实现流程。业务工人[Business worker]——位于业务组织内部,负责业务流程中某些工作的人员。比如银行柜员,诊所的医生。业务实体[Business Entity]——在业务用例的实现流程中,业务工人所使用的“系统”。例如银行的数钞机,学校的校园卡系统。业务实体可以和业务工人相互取代各自的职责。
采用序列图来描述业务现状的步骤:
1.识别业务对象:业务执行者、业务工人、业务实体;
2.确定业务对象间的职责、协作及交互顺序
3.绘制业务序列图。
其中绘制图的时候,生命线(Lifeline)是一条垂直的虚线,用来表示序列图中的对象在一段时间内的存在
示例:比如为某家招聘公司进行业务建模——画出业务现状序列图,招聘的业务用例描述:招聘公司在XXX市人才交流中心前台,要求发布招聘信息,并向工作人员出示公司资质证明,工作人员核实资质的有效性,招聘公司将招聘简介给工作人员。工作人员在招聘记彔本上填写公司招聘职位,招聘条件,以及公司简介等信息,并要求招聘公司核实,招聘公司核实无误后,工作人员将招聘信息用彩纸张贴在招聘信息栏内,工作人员向招聘公司收取一定费用。(注意:在现实工作中,类似如上的信息都是分析师与组织的业务专家深入沟通后才能获得的)。本例的业务对象是,招聘公司(业务执行者),工作人员(业务工人),找到业务对象之后,开始确定各个对象之间的职责,交互……

序列图中常用分支,有loop循环,alt条件分支,opt可选分支,画法如下:

业务序列图里的消息可分为过程消息、自调用消息、回送消息,还有分法是分异步消息和同步消息。回送消息(也就是返回)是用虚线的,其余都是实线。

消息的名字代表责任和目的!!!具体格式就是,A—》B,A请求B做某事的过程,注意是B做事情,A只请求,如下对比;

消息的方向代表了责任的委托!绝不是数据的流动!如下对比:
不对,右边是对的 
序列图只需要画出领域内相关的系统

业务序列图的最小单位是人或者独立智能系统

可以把时间看作特殊的业务实体

千万注意,业务建模阶段不能!也没有必要去考虑需要实现什么系统!

业务改进序列图;了解业务组织现状的目的——发现流程中的改进点:
•信息自动流转
•封装复杂业务逻辑
•职责转移
•访问和操作业务对象
•其他……
改进点:信息自动流转,业务中涉及到信息的流动吗?

改进点:封装复杂业务逻辑:包含的业务逻辑能封装到系统里吗?

改进点:职责转移:业务工人的职责可以转移吗?

改进点:访问和操作业务对象:涉及到什么业务对象?需要系统管理起来吗?

示例:XXX市人才交流中心业务的改进思考
通过分析XXX市人才交流中心业务的业务现状序列图,结合老大的愿景,我们可以分析出如下可改进的思路:
•原先由前台职员提供的求职、招聘业务在流程上都非常固定,不存在太多技术含量,我们完全可以考虑通过建设一个招聘网站来解放前台职员的这部分工作;
•此外,前台职员无法实现7*24小时不间断的服务,这个问题也可以由招聘网站解决;
•招聘网站可以极大地缓解人才交流中心顼客排队等待发布求职戒者招聘信息的状况,可极大提高客户满意度。

现在能看出业务建模用序列图的好处了吗?
•通过改进业务序列,可以提前模拟出新系统的出现,将对组织现行的业务流程造成哪些影响,可以提前评估新系统的可行性戒提前进行相应的准备工作,实现安全平稳的组织改进。
•不要小看这一点,在真实世界里,这一点很关键,很多优秀的系统就因为不能适应组织的业务流程而被遗弃(例如工作流软件在国内命运)。
如何获取业务建模信息
•选定组织:老大和他的愿景。
•组织业务现状:业务与家的介绍。
•组织业务改进:
•老大的痛处和愿景;
•业务与家的抱怨;
•需求分析师的经验和智慧;
业务建模结果复核目的
•一是完善业务建模成果,寻找是否有遗漏戒错误的地方进行修正,如果问题明显,就需要迭代回去继续做业务建模工作;
•二是关键干系人在信息和意见上达成一致,并共同签字确认,作为下一阶段启动的标志。
业务建模结果复核方法
•形式:面对面会。
•参会人:甲乙双方在业务建模阶段的主要参不者。
•被审材料:系统愿景、选定组织、业务用例、业务现状序列图、业务改进序列图;
•过程:需求分析师主持,介绍业务建模成果,所有参不者交流讨论,达成统一理解和确认。
•结论:所有参会者签字确认。(当然, 也有可能是未达成共识,需要返工。)
•注意:后续的工作基本不需要 “老大”的参加了。
如果下面问题已经很清楚了,就可以精简甚至不做业务建模而直接进入需求分析阶段。
•系统是改善什么业务组织(或人群)的价值?
•改善哪方面价值?目前这方面有什么不足?
•系统可以改进哪些不足?
软件工程里的UML序列图的概念和总结的更多相关文章
- UML序列图参考资料
UML各个图的说明:http://www.uml.org.cn/oobject/201509015.asp?artid=16901 UML类图的说明:https://www.cnblogs.com/a ...
- UML序列图的理解:
UML序列图的理解:UML序列图是指一个对象的方法在处理过程中调用其他对象的图:重点是要突出调用其他对象的序列:
- UML 序列图
序列图 序列图主要用于按照交互发生的一系列顺序,显示对象之间的这些交互.显示不同的业务对象如何交互,对于交流当前业务如何进行很有用.序列图是一个用来记录系统需求,和整理系统设计的好图.序列图 ...
- UML 序列图详解
现在是二月,而且到如今你或许已经读到.或听到人们谈论UML 2.0 —— 包括若干进步的 UML 的新规范,所做的变化.考虑到新规范的重要性,我们也正在修改这个文章系列的基础,把我们的注意力从 OMG ...
- 【夯实PHP基础】UML序列图总结
原文地址 序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色 ...
- UML序列图总结(Loop、Opt、Par和Alt)
序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线 ...
- 【UML】UML序列图总结
序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图. 纵向是时间轴,时间沿竖线向下延伸. 横向轴代表了在协作中各独立对象的类元角色. 类元角色用生命线表示. 当对象存在时,角色用 ...
- UML序列图总结
转载请注明出处:htt://blog.csdn.net/tianhai110 序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在 ...
- (转)UML序列图总结
序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线 ...
随机推荐
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- AndroidTips-052:.aar文件依赖
aar aar 文件是android 类库项目的输出文件,其中可以包含普通的.class,清单,以及android项目特有的资源文件. 使用方式 将.aar文件放在在自己项目的libs目录下 在gra ...
- Logstash实践: 分布式系统的日志监控
文/赵杰 2015.11.04 1. 前言 服务端日志你有多重视? 我们没有日志 有日志,但基本不去控制需要输出的内容 经常微调日志,只输出我们想看和有用的 经常监控日志,一方面帮助日志微调,一方面及 ...
- javaScript的原型继承与多态性
1.prototype 我们可以简单的把prototype看做是一个模版,新创建的自定义对象都是这个模版(prototype)的一个拷贝 (实际上不是拷贝而是链接,只不过这种链接是不可见,给人们的感觉 ...
- XSS分析及预防
XSS(Cross Site Scripting),又称跨站脚本,XSS的重点不在于跨站点,而是在于脚本的执行.在WEB前端应用日益发展的今天,XSS漏洞尤其容易被开发人员忽视,最终可能造成对个人信息 ...
- 【NLP】干货!Python NLTK结合stanford NLP工具包进行文本处理
干货!详述Python NLTK下如何使用stanford NLP工具包 作者:白宁超 2016年11月6日19:28:43 摘要:NLTK是由宾夕法尼亚大学计算机和信息科学使用python语言实现的 ...
- 微信网页开发之获取用户unionID的两种方法--基于微信的多点登录用户识别
假设网站A有以下功能需求:1,pc端微信扫码登录:2,微信浏览器中的静默登录功能需求,这两种需求就需要用到用户的unionID,这样才能在多个登录点(终端)识别用户.那么这两种需求下用户的unionI ...
- iOS微信里打开app,Universal Links
这两天在弄分享,从第三方应用或者浏览器打开自己app的东西 传统的方式是通过URL Scheme的方式,但是iOS9以后又出了新的更完美的方式Universal Links. 传统的URL Schem ...
- python学习笔记(python介绍)
为什么要学python? python和shell的比较,和PHP.和JAVA比较 运维开发只是用到python的很小一部分 python在一些知名公司的应用: 谷歌:python的创始人原来在谷歌工 ...
- Flexible 弹性盒子模型之CSS flex-flow
实例 让弹性盒的元素以相反的顺序显示,且在必要的时候进行拆行: display:flex; flex-flow:row-reverse wrap; 效果预览 浏览器支持 表格中的数字表示支持该属性 ...