2011-01-19 51 views
1

私のアプリケーション(Pythonで書かれています)の関数呼び出しをUMLでモデル化したいのですが、私は2つの問題があります。UMLで再帰呼び出しをモデル化する方法

最初に私はシーケンス図を描こうとしましたが、それはオブジェクトのモデリングメソッド呼び出しであり、私のアプリケーションは手続き的に書かれています。つまり、実際には私が実際に使用するオブジェクトは、 )。

2番目の問題は再帰呼び出しがあることです。これは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は、λ関数のdictです。私はそれらのモデルの呼び出しを必要としません。

答えて

1

再帰呼び出しを簡単にモデル化できます。シーケンス図を使用するためのオブジェクトを持つ必要はありません。しかし、あなたが呼び出されたメソッドとそのシーケンスにのみ興味があるなら、私は通信ダイアグラムhttp://en.wikipedia.org/wiki/Communication_diagramが最適だと思います。再帰呼び出しは、反復(*)を使用してモデル化できます。シーケンス図では、ループパーティションを使用して再帰をモデル化できます。

0

UMLステートチャートの図が適しているかもしれません。 This exampleには再帰的な矢印があり、再帰的な表示に役立ちます。

関連する問題