如何用在UML序列图中表示分支

考虑引起分支的原因:

1。异常处理,比如接收到错误的消息,网络断开等

2。复杂的业务流程,比如在订单处理程序中,对于vip客户和普通用户可能分别使用不同的数据,而最后还要统一进入计价和发货流程

不同的情况下,分支的流程可能很大或很小,很难有完善的办法来满足所有的情况。

原始的方法是在序列图中放弃分支,因为引起分支最主要的原因是异常情况,而异常情况的处理一般都很简单,或者进入标准的处理办法,这样就可以在发生异常的地方加个小小的注释,这样既不影响整体流程,又保证了不丢失细节信息。然而难于处理的是正常的分支,都要有很复杂的处理,

UML2.0提到了两种方法来临时解决分支的概念,一种是在顺序图中产生分支的地方插入一个引用,对于每个分支,分别用一个单独的序列图来表示,这种方法要求分支后不再聚合,并且各分支间没有太多具体关联。这种方法类似于函数的重用,比如某个分支在很多用例中被用到,可以在各个序列图中引用它而避免重复。代价则是序列图变得多而繁杂,让人看起来不能够一目了然。

对于非常复杂的业务来说,可以采用流程图和顺序图相互辅助的方法来表达完整的信息,顺序图侧重组件交互的时间关系,活动图侧重组件交互的空间关系,流程图侧重控制流程的时间关系,我一直觉得UML中的活动图和状态图过于细节,没办法和顺序图很好的结合(也许是功力不够:))。

再进一步说,在实现真正的MDA之前,采用UML来描述的目的是为了更好的理解业务和实现,而业务和实现是一个立体的景象,空间和时间都是它的一个方面,因此用静态的顺序图或者流程图没办法同时表示它的时间和空间。我所想到的一个办法是:在组件图上用动画效果演示交互流程,就像围棋打谱程序中对于参考图的处理。期待这样的工具早点出来。

 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值