俗话说,自己写的代码,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序列图的概念和总结的更多相关文章

  1. UML序列图参考资料

    UML各个图的说明:http://www.uml.org.cn/oobject/201509015.asp?artid=16901 UML类图的说明:https://www.cnblogs.com/a ...

  2. UML序列图的理解:

    UML序列图的理解:UML序列图是指一个对象的方法在处理过程中调用其他对象的图:重点是要突出调用其他对象的序列:

  3. UML 序列图

    序列图      序列图主要用于按照交互发生的一系列顺序,显示对象之间的这些交互.显示不同的业务对象如何交互,对于交流当前业务如何进行很有用.序列图是一个用来记录系统需求,和整理系统设计的好图.序列图 ...

  4. UML 序列图详解

    现在是二月,而且到如今你或许已经读到.或听到人们谈论UML 2.0 —— 包括若干进步的 UML 的新规范,所做的变化.考虑到新规范的重要性,我们也正在修改这个文章系列的基础,把我们的注意力从 OMG ...

  5. 【夯实PHP基础】UML序列图总结

    原文地址 序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色 ...

  6. UML序列图总结(Loop、Opt、Par和Alt)

    序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线 ...

  7. 【UML】UML序列图总结

    序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图. 纵向是时间轴,时间沿竖线向下延伸. 横向轴代表了在协作中各独立对象的类元角色. 类元角色用生命线表示. 当对象存在时,角色用 ...

  8. UML序列图总结

    转载请注明出处:htt://blog.csdn.net/tianhai110 序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在 ...

  9. (转)UML序列图总结

    序列图主要用于展示对象之间交互的顺序. 序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸.横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线 ...

随机推荐

  1. C++复制控制

    1.复制构造函数可用于: (1)根据另一个同类型的对象显示或隐式初始化一个对象 string str1="test";   //隐式 string str2=str1; //显示 ...

  2. 关于同步VSS服务器上的代码发生Eclipse里面的项目全部不见了

    有次在同步VSS服务器上的代码的时候突然发生了错误(同步的代码的项目竟然消失了)....如下图 Could not open the editor: The file does not exist. ...

  3. [Network]Transport Layer

    1 Principles behind Transport Layer Services 1.1 Multiplexing/Demultiplexing Multiplexing at sender ...

  4. spring cloud配置高可用eureka时遇到的一些坑

    考虑到注册中心的高可用,今天搭建一下eureka集群,并在中途遇到一些小的坑,前前后后花了两个小时来排除,在这里记录一下,以供后面查看. 首先,贴上要达到的效果: 一.起两个eureka模拟集群,在D ...

  5. win10 mac随机功能测试

    win10 MAC随机功能指针对无线网卡 随机功能包含网卡随机, 跟网络随机两种, 这两种互不影响 一“无线网卡mac随机” 单击无线图标->网络和internet设置->wlan 影响无 ...

  6. UWP简单测试

    随便写下,试试.Net Core与UWP开发,后台WCF XAML <Page x:Class="App3.MainPage" xmlns="http://sche ...

  7. BZOJ1010 [HNOI2008]玩具装箱toy 动态规划 斜率优化

    原文链接http://www.cnblogs.com/zhouzhendong/p/8687797.html 题目传送门 - BZOJ1010 题意 一个数列$C$,然后把这个数列划分成若干段. 对于 ...

  8. 用脚本将excel,csv等文件导入数据库

    文章转自 http://blog.csdn.net/lky5387/article/details/6043009 1.--导excel文件 select  订单编码 from OpenRowSet( ...

  9. CS 寄存器 和 IP 寄存器

    下面将要介绍的是一组非常非常重要的寄存器,即 CS:IP . CS:IP 两个寄存器指示了 CPU 当前将要读取的指令的地址,其中  CS 为代码段寄存器,而   IP 为指令指针寄存器 . 什么叫做 ...

  10. 【数组】Minimum Path Sum

    题目: Given a m x n grid filled with non-negative numbers, find a path from top left to bottom right w ...