我想用UML模拟我的应用程序的函数调用(用Python编写),我有两个问题。
首先是我尝试绘制序列图,但它是用于对象的建模方法调用,我的应用程序是按程序编写的,即我实际拥有的唯一对象是我使用的库中的类型实例(例如html5lib)
第二个问题是有一些递归调用,我需要在UML图上建模,序列图似乎是不好的解决方案。
那么我应该使用哪些UML图?以及如何建模递归调用,如下面的函数?
def node_preprocessing(node):
global tags_remove, tags_special
if node.nodeType==3: # Text node
return preprocessing(node.wholeText)
if node.nodeType==1 and node.tagName not in tags_remove: # Tag node
if node.tagName in tags_special:
return tags_special[node.tagName](node)
return convert_tag(node) % u"".join(map(node_preprocessing, node.childNodes))
return u""
另一方面,我不想准确显示此功能中发生的一切。只有它所调用的内容(本身,预处理(文本),convert_tag(节点))以及它的顺序。
PS。 tags_special 是lambda函数的 dict 。我不需要对它们进行建模。
答案 0 :(得分:1)
您可以轻松地为递归调用建模。您甚至不需要使用对象来使用序列图。但是如果你只对被调用的方法及其序列感兴趣,我认为最合适的是通信图http://en.wikipedia.org/wiki/Communication_diagram。递归调用可以使用迭代(*)建模。在序列图中,可以使用循环分区对递归进行建模。
答案 1 :(得分:0)
UML状态图可能非常合适。 This example有一些反射箭头可能对显示递归很有用。