2011-01-19 4 views
1

Je souhaite modéliser des appels de fonction de mon application (écrits en Python) en UML et j'ai deux problèmes. Premièrement, j'ai essayé de dessiner un diagramme de séquence, mais c'est pour modéliser des appels de méthode d'objets et mon application est écrite de façon procédurale, ie les seuls objets que j'ai réellement sont des instances de types de bibliothèques que j'utilise (par exemple html5lib).Comment modéliser des appels récursifs dans UML

Le deuxième problème est qu'il y a des appels récursifs, que j'ai besoin de modéliser sur le diagramme UML et le diagramme de séquence semble être une mauvaise solution pour cela.

Lequel des diagrammes UML dois-je utiliser alors? Et comment modéliser des appels récursifs, comme dans la fonction ci-dessous?

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"" 

D'autre part, je ne veux pas montrer exactement tout ce qui se passe dans cette fonction. Seulement ce qu'il appelle (lui-même, prétraitement (texte), convert_tag (noeud)) et dans quel ordre.

ps. tags_special est un dict de fonctions lambda. Je n'ai pas besoin d'appels d'eux modélisés.

Répondre

1

Vous pouvez facilement modéliser des appels récursifs. Vous n'avez même pas besoin d'objets pour utiliser des diagrammes de séquence. Mais si vous n'êtes intéressé que par les méthodes appelées et leur séquence, je pense que le meilleur ajustement serait le diagramme de communication http://en.wikipedia.org/wiki/Communication_diagram. Les appels récursifs peuvent être modélisés en utilisant l'itération (*). Dans les diagrammes de séquence, la récursivité peut être modélisée en utilisant des partitions en boucle.

0

Un diagramme d'états UML peut être un bon ajustement. This example a quelques flèches réfléchissantes qui pourraient être utiles pour montrer la récursivité.

Questions connexes