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

·