2011-01-19 33 views
1

我想用UML建模我的應用程序(用Python編寫)的函數調用,我有兩個問題。如何在UML中爲遞歸調用建模

首先是我試圖繪製順序圖,但它是用於建模對象的方法調用,而我的應用程序是以程序方式編寫的,即我實際擁有的唯一對象是來自庫的類型實例(例如,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函數。我不需要他們的模擬電話。

回答

1

您可以輕鬆建模遞歸調用。你甚至不需要有對象來使用序列圖。但是如果你只對被調用的方法及其順序感興趣,我認爲最適合的是通信圖http://en.wikipedia.org/wiki/Communication_diagram。遞歸調用可以使用迭代(*)進行建模。在順序圖中,可以使用循環分區對遞歸進行建模。

0

UML狀態圖可能很適合。 This example有一些反射箭頭可能對於顯示遞歸有用。