Generar diagramas de clase UML a partir de modelos Django

UML se encuentra a Django
Imagen: UML se encuentra a Django (Licencia: CC-BY-SA Marcelo Canina)
Publicado: Tags

Introducción

Para visualizar y entender mejor la estructura de un proyecto en Django podemos crear diagramas de clases UML a partir de los modelos definidos.

Un diagrama de clases en el Lenguaje de Modelado Unificado (UML) es un tipo de diagrama con estrctura fija que describe la estructura de un sistema al mostrar sus clases, atributos, operaciones (o métodos) y la relación entre los objetos.

Para hacer esto usamos el comando especial incluido en el paquete django-extensions llamado: graph_models, que significa graficar modelos o modelos en grafo.

Crear un archivo GraphViz dot para las aplicaciones especificadas en models.py. Puedes pasar más de un nombre de aplicación y todas van a ser combinadas en un solo modelo. La imagen es generada directamente en un archivo dot.

Definición de Graph models

Pasos

1. Instalar django extensions

Asumiendo que ya tienes Django instalado ( para este ejemplo voy a usar el proyecto Wagtail ), luego instalamos django extensions con pip install django-extensions.


$ pip install django-extensions
Collecting django-extensions
  Using cached django_extensions-2.0.6-py2.py3-none-any.whl
Collecting six>=1.2 (from django-extensions)
  Using cached six-1.11.0-py2.py3-none-any.whl
Installing collected packages: six, django-extensions
Successfully installed django-extensions-2.0.6 six-1.11.0

2. Add to installed apps

Para hacer que Django use el paquete recién instalado, lo agregamos a INSTALLED_APPS en el archivo de configuración <project>/settings.py, en un proyecto Wagtail llamado mysite está ubicado en mysite/settings/base.py:

INSTALLED_APPS = (
    ...
    'django_extensions',
    ...
)

3. Instalar el generador de diagramas

Puedes elegir entre dos generadores:

  • Graphviz o
  • Dotplus

antes de usar el comando, o se obtiene un mensaje de error como este:


$ python manage.py graph_models -a -o myapp_models.png
CommandError: Neither pygraphviz nor pydotplus could be found to generate the image

Prefiero usar pydotplus ya que es más fácil instalarlo que Graphviz y sus dependencias por lo que usamos pip install pydotplus.


$ pip install pydotplus
Collecting pydotplus
Collecting pyparsing>=2.0.1 (from pydotplus)
  Using cached pyparsing-2.2.0-py2.py3-none-any.whl
Installing collected packages: pyparsing, pydotplus
Successfully installed pydotplus-2.0.2 pyparsing-2.2.0

4. Generar diagramas

Ahora tenemos todo instalado y pronto para generar diagramas con el comando python manage.py graph_models.


$ python manage.py graph_models -a -o myapp_models.png

Esto nos da el diagrama de clases entero de Wagtail:

wagtail models

O agrupado por aplicación (-o):


$ ./manage.py graph_models -a -g -o my_project_visualized.png

wagtail models application by group

Por último, vamos a generar el diagrama de clases de los modelos de Django (v2.0.3):

django models

Conclusión

Más allá que en el diseño de una aplicación se hagan una serie de diagramas al inicio, luego pueden volverse rápidamente obsoletos después de un tiempo. Esta es una técnica útil y fácil de mantener sincronizados los diagramas con el estado actual de un proyecto.

Puedes encontrar una descripción completa de todas las opciones del comando graph-models en https://django-extensions.readthedocs.io/en/latest/graph_models.html.

Referencias

Uruguay
Marcelo Canina
Desarrollador de software de Uruguay. Creo sitios web y aplicacione desde cero compartiendo lo aprendido aquí.
comments powered by Disqus

    Artículos

    • Generar diagramas de clase UML a partir de modelos Django

Cómo generar imágenes de los diagramas de clases de un proyecto en Django desde la cosonla

Conceptos de software claros.
Traducciones Español English

Excepto dicho lo contrario, el contenido de ésta página está bajo la licencia CC BY-NC-ND 4.0 . Términos y Privacidad.

Hecho con SimpleIT Hugo Theme

·