这是用来举一个例子呢,这个就是一个 简单的表示
UML 执行的一个 整个的一个过程,这个图呢是以
UML 这个 2.0 的这个 OMG 组织 UML 2
的这个 修订任务组的这个主席 Cris Kobryn 画的这么一张图
这里边呢他用到了,相当于用 UML 来 用 UML 来描述 UML 制定过程。
这个 Cris Kobryn 在这个 这个 UML
在制定这个 UML 2 的时候也是非常苦恼,就是因为
在这个过程中呢,他有说了一句话,就是一个很著名的话就是说,在制定过程中呢 这个很多一些合理的、
技术上的一些权衡往往被一些 这个卑鄙的、
政治上的妥协所压到 也就是说本身在这个 UML
在制定过程中,实际上呢有些是一些 非常合理的一些政治上的,这个非常合理的一些技术上的一些讨论,比如说这个
哪些特征,哪些图需要
和哪些图不需要,这是需要一些技术专家坐下来讨论,这个如果哪些合理就
要求哪些,不合理就可以拿掉。
但是很多情况往往呢时候呢实际上是它涉及到一些 不,由于这个背后这个制定标准还是一些大企业
大型的相关一些企业,他们不可避免的有一些利益上的一些 关联关系,制定标准,是吧,制定这个
UML 制定了多少,把一些,一些这个语法 加到这个
UML 来,会给他们带来很大的一些利益上的一些巨大一些商业利益
你看这些建模公司是吧,它本身 有些工具已经支持这个,这个模型了,但是你
UML 如果说不给它写到规范里边去 那么它就这个市场就会受到很大影响,如果让它写进去之后呢,他们就卖的很好
所以这些问题呢涉及到一些大公司 的一些博弈,甚至是一些商业上的一些这个
人事上的一些,一些政治上的一些 妥协。
本省有些 UML 中的一些这个 元素它往往它不一定有技术合理性,但是却在最后发布的时候呢
被写入到了 UML 规范中去了,这就是为什么呢 Cris Kobryn
呢用这个活动图来解释了这一切,那就说实际上呢 他描述的就是这个
UML 的制定过程中的一些 非常严格的一些这个活动,比如说他分为
几个泳道,每个泳道表示是一些这个开发 在
UML 制定过程中的一些这个团队,或者说一些这个角色 这是提交团队,这是这个,这个
OMG 组织的这个任务组,任务组,就是任务组,表示提需求的一些,还有一个修订任务组
这三个,大概是这三个团队。
我们说 UML 首先是每一次发布或者每一次重大的修订
都是由这个,这个任务组,OMG 组织组成了一个专家
团队叫任务组,然后呢提交一个 RFP
这个请求,这个需求 这个请求提案,这个
就是相当在这个 RFP 里边呢,实际上是这个
描述了这个修订,给出了个修订,提出这个未来这个修订 UML 修订版本的一个需求。
这个修订版本这个需求之后呢,给他们
发布到每一个提交团队,每一个提交团队分别是由一些利益相关的一些 公司组合成
一种提交团队来进行提交 往往他们持一种竞争的一种关系,就是说每一个提交团队呢实际上是由
这个和另外一个提交团队存在着一些利益上的一些 博弈,或者说利益上的一些冲突。
他们往往呢会有一些敌对的这些问题,有些竞争的问题,所以他们尽可能的在 最,最大点,最可能的就是说在制定这个新的一个
UML 规范的时候,他应该把这个,这个公司 最核心的一些价值点,放到这个规范里边去
不仅是制定 UML ,制定其它的规范,什么 Web service 啊,什么
其它的一些这个软件 iii 网络,都是一样的
这个他制定这个,放到这个,把这个标准 这个,一旦把这个自己的一些最擅长的、 最拿手的、 最
核心的一些价值点放到标准上来,然后就可以 使得自己的这个利益最大化,而别人的利益呢,是吧,不擅长这个东西呢,必须要
但是在制定过程中,他们这个竞争是非常激烈的,是白日,白日化的,是吧,也就说
最终只有一个提交团队必须胜出,必须胜出就是说他们
提交的这个团队,通过这些严格的这个筛选,最后呢,有一个
胜出,而其他的这个最后的所有的工作白干了,表面上好像是
这个,这个最后这个选择呢,是由一些中立的一些委员会,委员会来进行这个
投票,最后是按少数服从多数这种 方式来,一人一票,20 来个人的一个委员会,最后投票的方式
投票最多的就是那个最后通过的那个提案,那个胜出的那个提案,最后发布 UML
完全按 他们那个团队提交内容来进行发布。
表面上看这种方式是 一种非常合理的,是吧,他们竞争,是吧,谁提交的
这个方案好、 全,然后这个质量非常高,然后用谁的
这是一种非常合理的一种选择,但是呢,为什么 Cris Kobryn
说它是一种这个卑鄙上的、 政治上的权衡呢?就是因为,我们看一下
他大概这个流程是,当我们一个这个 任务组发布一个 RFP
的时候呢,它 这个每一个,大概有这个几个
各自不同的这个提交团队,看到这 RFP
之后 然后呢这个,本身呢他们已经有了一个技术规范,这个技术规范应该是他们
把自己的利益写的最大,是吧,自己这公司里边支持的一些,建模工具支持的一些这个
元素都写进去了,自己不支持的都给它踢出去了,是吧。
但是他拿到这个 RFP 以后,与自己的一些技术规范一对比,然后呢这两个进行一个权衡,这个 提交一个草案。
提交完草案之后呢,把它提交到提交任务组进行审定 提交任务组进行审定之后呢,然后他们呢为了这个
保证,因为他谁也不可能这个知道自己的这个团队最后胜出
他们必须迫不得已与其他的这个提交团队呢进行一个沟通,看一看 我们都,大家都已经交了,就像是考试一样,是吧
一开始这个学生考试这个闭卷答,然后呢,这个 考完试之后呢这个,把试卷交了之后可以自己对答案
对一下答案是吧,你考得怎么样,是吧,咱们对答案,我写了这个 是什么内容,你写的什么内容,对一对。
只不过考生那个 对答案是个被动的,是吧,只能是自己知道自己考得好还是差
这个呢是一个主动的,他对完答案之后他就要进行一些 背后的一些运作,他们一看对一下答案,我提
了几个,你提了几个,你提这个有没有我公司的一些核心的 iii ,公司 我提的有没有你的,是吧。
一对之后他们就 有了底了,就是他们自己评估一下,谁的最有可能
大家还是有一些这个公认的一些东西,是吧,谁的最有可能成为这个提案
那就是呢,如果我觉的,一对比呀,我觉得我这个公司 太差了,提交的不行,不如你公司的全面,啊这个合理
那我就可以私下给你讨论,就说我这个就 我这个就算放弃了,我这个就不准备再提了,或者说
很多的一些委员会,这个提交任务组的委员会的这些成员都是
表面看是中立的,实际上都是由一些大公司的一些成员参与的 我们那个成员就可能在提交的时候,在最后投票的
时候,我们就不支持我公司的了,我转向支持你们公司的这个提案 但是必须有个条件,你要把我们公司的核心价值给我
写到你们这个规范里边去,是吧,这样的话你们才能够赢,胜出,是吧,你们没有我支持你们
这个即使,我们到时候给你们投个反对票,你就直接也就那个
不行了是吧,所以这时候呢,我们看一下,在这个过程中呢,往往是一个
私底下进行一个权衡,最后投票的时候看似好像是 非常公允,多数服从,少数服从多数,但是呢
在背地里边,这些委员呢经过私底下的沟通已经 就如何写什么,这个最终版如何写
什么,已经有一个共识,然后最后呢大家按照既定的一个商量的 之后的一个部分呢进行这个完善,因此呢
首先呢,他们是进行一个提交这个,我们这,这两个有一个交叉
有一个交叉,也就是他们这个评估
然后呢,在最后这个提交团队呢他们提交完
一个初稿之后呢,背地里进行了一个私底下的一个妥协,沟通
沟通完之后呢,修订任务组呢这时候就对他们这修改啊 提出一些意见,让他们再进行修改。
在进行最终修改的时候注意,这个 final 提交的时候,到这了,是吧,要求他们这个
进行这个修改,修订最后,最后的这个规范,提交规范进行投票这个规范时候,很可能呢
最有把握的那家
提案组啊,可能要做一些修改,他把一些其他团队私底下
经过讨论把私底下其他的一些团队的一些,妥协的一些,一些
建模元素呢加进来了,这样的话最后投票之后呢 是由这个大家呢这个可能是获得通过,最后
但是通过之后呢,形成这个规范不是一家的,而是多家呢联合起来的 因此这,这个就为什么,用来解释为什么
UML 很多的一些概念 我们前面也进行了很多讨论,那就是它有一些,一些
概念并不是非常这个合理,深入看来并不是非常合理,为什么? 还存在于这个概念中,另外就这
UML 为什么这个变得这么庞大,都与这方面 因素有关系,但是
UML 这个庞大呢,一方面与这个妥协有关系,另一方面呢 也与这个
UML 要支持多领域的一些,或者说是一种
那么前面提到是吧,它,它本身呢是 具有一定的预言性质的,或者本身呢是一个非常抽象的,非常大的一个
范围,它不仅要支持一个特定 领域的一个建模,还要支持一个所有领域,基本上所有领域都
不仅支持现代当前领域,而且支 还可能会预言未来发展,比如说现在云计算
语义产生了之后,是吧,云计算的一些系统建模,实际上 UML
完全可以实现胜任 所以这个问题呢是一个很复杂的问题,这个很多情况
下呢这个既有合理性又有不合理性,所以 Cris Kobryn 呢对这个是
有一定的批判性,因为最后,这个 UML 最后发布的时候,尽管他是主席,很多的一些
一些这个成分呢,并不是他一个人能说了算的。
那什么时候使用活动图呢?其实我们就 可以简单总结一下,那就是,我们的这个业务,或者我们这个行为非常
按部就班的,不依赖于事件驱动,而是一种控制流和数据流驱动这种情况