2011-01-19 3 views
1

Я хочу моделировать вызовы функций моего приложения (написанные на Python) в UML, и у меня две проблемы.Как моделировать рекурсивные вызовы в 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 (узел)) и в каком порядке.

пс. tags_special является dict функций лямбда. Мне не нужны вызовы из них.

ответ

1

Вы можете легко моделировать рекурсивные вызовы. Вам даже не нужно иметь объекты для использования диаграмм последовательностей. Но если вас интересуют только вызываемые методы и их последовательность, я считаю, что наилучшим вариантом будет коммуникационная диаграмма http://en.wikipedia.org/wiki/Communication_diagram. Рекурсивные вызовы могут быть смоделированы с использованием итерации (*). В диаграммах последовательностей рекурсия может быть смоделирована с использованием секций цикла.

0

Диаграмма состояний на языке UML может быть хорошей подгонкой. This example имеет некоторые рефлексивные стрелки, которые могут быть полезны для показа рекурсии.

Смежные вопросы