Как моделировать рекурсивные вызовы в UML - PullRequest
1 голос
/ 19 января 2011

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

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

Ответы [ 2 ]

1 голос
/ 21 января 2011

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

0 голосов
/ 19 января 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...