相对于基本流程图的另一个选择是活动图表。活动图表是图形化符号UML系列的一部分,图形化符号的UML系列主要用来在软件设计中进行辅助。然而,可以更加广泛地使用活动图表去对许多不同类型的问题(这些问题不仅仅局限在软件开发中)进行建模。活动图表与绘制基本流程图的方法相似,并且也是用于说明流程这一基本目的,但是它们可以帮助读者说明并行行为。
为了看到这是如何工作的,我们将看到另一个例子,这比建立原型实例的过程要稍微复杂一些。图3-7中表示了制作松饼步骤流程说明的基本流程图。在这一图表中,有两个决策点:(1)是否需要做低脂松饼:如果是,那么就将黄油减半为3汤匙,并用3汤匙酸奶取代另外的3汤匙黄油;(2)需要使用何种水果:蓝莓、香蕉或是草莓。需要指出的是,这里使用了上页码参考符号(带有字母A的圆形)。当你要处理更大的流程图(这一流程图不能很容易地在一页纸中所表现)时,这一符号就会十分有用。可以绘制所能够绘制的更大的流程图(在这一例子中,从一页纸的顶端到底端),并且使用参考符号去表示可以在何处继续完成流程图。相对于页码参考符号的另一个选择是下页码参考符号——这与上页码参考符号具有相同的思想,除了流程图将会在新的一页继续以外。
图3-7 关于如何制作松饼的基本流程图
我们可以将基本流程图转换到动态图表中。图3-8表示了动态图表,在图中标上了注释,以表示所使用的不同类型的节点和注释。如同在基本流程图中一样,图中由终端节点去表示流程图的起始和结束,如下所示:
图3-8 如何制作松饼的动态图表
由椭圆表示的动作节点描述了行动,或是制作松饼配方的步骤。决策点如同在基本流程图中一样,由菱形符号所表示,如下所示:(www.daowen.com)
在活动图表中使用的符号就是每一个向外的流程必须具有已知的进程项目,这就是在方括号中的布尔条件:[普通松饼]和[低脂松饼]。
使用连接点或是将一条路径分成两条或者更多的路径,或是将两条或更多条路径汇合到一条单一的路径中。这里使用了三种类型的连接点:分叉、合并和混合。
分叉连接点将一个箭头分成多条路径。使用这一连接点可以说明平行动作。图3-8中的主要分叉连接点表示了能够并行发生的三个活动分支:(1)过滤干的原料;(2)处理湿的原料;(3)选择和处理水果。活动图表图形化地表示了三个分开的活动相互之间互相独立。也就是说,一个活动可以不在时间上先于另一个活动。例如,你不需要在处理湿的配料之前去过滤干的配料。图3-7所给出的基本流程图好像暗示着处理湿的配料需要在过滤干的配料完成之后,而这并不是实际情况。在这一方面,活动图表比基本流程图的表达能力更强,这是因为基本流程图不能表示并行处理过程。
合并包括把两个分开的路径汇成一条路径,并且表示了仅仅当全部的输入流程到达了结合点的时候才可以获得流程。例如在图3-8中,直到动作“过滤干的配料”和动作“将湿的原料搅拌到融化的黄油中”全部完成,连接点“将湿的原料加入干的原料”才会动作。
混合与合并不同,尽管两种情况都是将几条路径汇合成为一条路径。就像是合并,混合也将多条输入汇成一条输出,它们从外表看起来完成了相同的功能。然而,与合并不同,使用混合来标志多条路径的结束,这些多条路径从决策节点中引出。从语义上说,由于在混合的情形中,获得了仅仅一条输入路径,而在合并的情况中,必须获得全部的输入路径以便使输出路径动作,因此,混合不同于合并。
总之,总是可以将基本流程图转化成为活动图表,反之亦然。但是由于两个图表表示顺序或流程的能力不同,因此两张图表并不完全等同。最重要的不同是基本流程图更加有限,这是因为它不能表示并行动作,从动态图表转化到基本流程图表的过程中可能丢失信息。另一方面,基本流程图表是更加简洁的表示,它不包含分叉、合并和混合。因而,能够表示更大的顺序和流程。如果不需要表示并行动作,或是如果需要更加简洁地表示较大的活动顺序,那么基本流程图可能就是更好的绘制图表选择。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。