Definición
Lenguaje Unificado de Modelado (UML1, por sus siglas en inglés, Unified Modeling Language) es el lenguaje de modelado de sistemas de software más conocido y utilizado en la actualidad. Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema de software. UML ofrece un estándar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocios y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programación, esquemas de bases de datos y componentes de software reutilizables.
Lista de diagramas de clase
Diagrama de clases general
En este diagrama aparecen representadas todas las clases de la aplicación, incluso algunas que no han sido desarrolladas por estar fuera del alcance.
Diagrama de clases de GUI
En este diagrama aparecen representadas todas las clases de la interfaz gráfica del usuario (GUI).

Diagrama de clases del backend
En este diagrama aparecen representadas todas las clases que forman parte del backend (que incluye a los módulos Watcher, SnapshotManager, Logger y Database).

Diagrama de componentes
En él se muestran los componentes que forman la aplicación.

Diagrama de estado
Diagrama de estados del demonio HDLorean. En él se muestran los distintos estados en que se puede encontrar la aplicación.

Diagrama de despliegue
Diagrama de despliegue de la aplicación. Se muestran los distintos equipos que estarían implicados en el proceso, los clientes y el servidor.

Lista de diagramas de actividad
Diagrama de actividad de añadir carpeta a indexar.
El usuario elige una carpeta para añadir a las ya vigiladas. El caso para un archivo sería similar.

Diagrama de actividad de eliminar una carpeta indexada
El usuario elige una dejar de vigilar una carpeta previamente añadida. El caso para un archivo sería similar.

Diagrama de actividad de excluir una carpeta a indexar.
El usuario elige una carpeta para excluir de las vigiladas. El caso para un archivo sería similar.
Es útil para el caso en que se ha añadido una carpeta de la cual se quiere vigilar casi todo su contenido excepto una parte, que sería lo excuído.

Diagrama de actividad de borrar una versión.
El usuario elige borrar una versión.

Diagrama de actividad de restaurar una versión sin sobreescribir.
El usuario elige restaurar una versión sin borrar la actual.

Diagrama de actividad de crear una versión.
El usuario, cron o inotify crean una versión en ese momento.

Diagrama de actividad de preferencias.
El usuario decide cambiar una preferencia. Este es el caso general.

Lista de diagramas de secuencia
Diagrama de secuencia de makeSnapshot cuando lo llevan a cabo cron o inotify.
Cron o inotify detectan un evento que les indica que deben crear una versión.

Diagrama de secuencia de makeSnapshot cuando lo lleva a cabo el usuario.
El usuario elige crear una nueva versión.

Diagrama de secuencia de getPeriodically.
El usuario da al botón preferencias. La aplicación crea está ventana, para lo cual necesita recuperar los datos almacenados en el fichero de configuración. Este es un caso genérico.

Diagrama de secuencia de setPeriodically.
El usuario elige cambiar la periodicidad con que se harán las copias de seguridad. Ha de modificarse, por tanto, el fichero de configuración. En este caso, también habrá que actualizar el crontab.

Diagrama de secuencia de setEveryChange.
El usuario elige crear una nueva versión cada vez que se produzcan cambios (activar inotify). Es el caso genérico de cambiar una preferencia.

Diagrama de secuencia de restWithoutOverwrite.
El usuario elige recuperar una versión sin borrar la actual.

Diagrama de secuencia de scheduler.
Scheduler es el planificador del programa. Atendiendo a varios aspectos de la configuración elige el momento idóneo para llevar a cabo los distintos procesos del sistema, como puede ser crear nuevas versiones.
