IGDB: Base de datos internacional de glaciares
==============================================

Descripción del problema
------------------------

Pretendemos crear una base de datos que incluye información general y
específica de los principales glaciares. Nuestro fin es compartir
información con la comunidad científica, sin ánimo de lucro, y
concienciar a un número máximo de personas sobre los devastadores
efectos del cambio climático.

La IGDB ofrecerá dos interfaces distintas para la consulta de
información, una con información extensiva enfocada para el uso
científico (se podrán incluir los datos en cualquier documento
científico, mencionándola en la bibliografía), y otra con información
general y mucho más visual para el público general. Para el uso
científico, ofreceremos estadísticas individuales de un glaciar y la
posibilidad de comparar dos glaciares para observar la correlación entre
sus tasas de cambio. Para el público general, añadiremos un conjunto de
tablas y gráficas, junto con valores estadísticos que permiten
visualizar el impacto del cambio climático de forma muy intuitiva.

Nos basaremos en la base de datos @wgms-db, ya que ésta contiene una
mucha información acerca de gran número de glaciares. IGDB simplificará
la WGMS, escogiendo únicamente los datos relevantes para estudios acerca
del cambio climático, y acotando éstos a la década actual (2010-2018).

Requisitos
----------

### Datos

1.  **RD1**: Datos del glaciar
    -   País - *Cadena de 30 caracteres máximo*
    -   Nombre del glaciar - *Cadena de 30 caracteres máximo*
    -   ID del glaciar (Compatible con la WGMS) - *Entero de 5 dígitos*
2.  **RD2**: Datos anuales de un glaciar
    -   ID del glaciar (Compatible con la WGMS) - *Entero de 5 dígitos*
    -   Área - *Entero de 10 dígitos*
    -   Volumen - *Entero de 10 dígitos*
    -   Grosor - *Entero de 10 dígitos*
    -   Año - *Entero de 10 dígitos*
3.  **RD3**: Datos de cambio de un glaciar
    -   ID del glaciar (Compatible con la WGMS) - *Entero de 5 dígitos*
    -   Variación de área - *Entero de 10 dígitos*
    -   Variación de volumen - *Entero de 10 dígitos*
    -   Variación de grosor - *Entero de 10 dígitos*
    -   Año - *Entero de 10 dígitos*
4.  **RD4**: Datos del administrador
    -   ID - *Entero de 4 dígitos*
    -   Fecha de alta - *Fecha en formato dd-mm-yyyy*

### Funcionales

1.  **RF1**: Alta de un glaciar

    Se añade un glaciar al sistema a partir de los datos de la WGMS

    -   Entrada: **RD1**

2.  **RF2**: Inclusión de datos anuales

    Añade los datos relevantes de cada año para un glaciar

    -   Entrada: **RD2**

3.  **RF3**: Cálculo de las variaciones anuales

    Calcula las variaciones anuales de grosor, área y volumen para un
    glaciar

    -   Entrada: **RD2**
    -   Manejo: **RD3**

4.  **RF4**: Alta del administrador

    Crea un usuario de tipo administrador, encargado de monitorizar el
    sistema y resolver conflictos

    -   Entrada: **RD4**

5.  **RF5**: Actualización de la base de datos

    Añade nuevos datos a partir de nuevas versiones de la WGMS

    -   Entrada: **RD2**

6.  **RF6**: Resolución de conflictos

    Permite al administrador la resolución de conflictos de datos al
    actualizar la base de datos

### No Funcionales

1.  **RNF1**: Seguridad

    La página web de consulta será accesible únicamente mediante HTTPS,
    y la base de datos tendrá su propio usuario de acceso

2.  **RNF2**: Escalabilidad

    Se podrá aumentar el rendimiento de IGDB mediante una mejora del
    hardware del servidor, o montando un cluster

3.  **RNF3**: Disponibilidad

    La IGDB estará disponible 24/7, y en caso de necesidad de
    mantenimiento, se procederá a mostrar un snapshot de la página

4.  **RNF4**: Tolerancia a fallos

    Se usará un cluster para permitir que la IGDB siga siendo
    disponible, aunque falle algún servidor

5.  **RNF5**: Copias de seguridad

    Se harán copias de seguridad diarias del sistema, además de
    enviarlas a otro servidor en caso de que se pierdan los datos
    locales de backup

6.  **RNF6**: Rotación de logs

    Se eliminarán los logs del sistema antiguos, cada semana

### Restricciones Semánticas

1.  **RS1**: No podrá haber dos glaciares con el mismo ID

2.  **RS2**: No podrá haber más de un administrador del sistema

3.  **RS3**: El atributo año solo podrá estar comprendido entre
    2010-2018, inclusive

Diagramas
---------

Para el diseño del sistema, procederemos con la modelización de
diagramas estandarizados, dado que es una herramienta imprescindible en
Ingeniería del Software.

### Diagrama funcional

![](./FD.png)

### Diagramas de flujo

![](./DF1.png)

![](./DF2.png)

![](./DF3.png)

![](./DF4.png)

![](./DF5.png)

![](./DF6.png)

### Diagrama de caja negra

![IGDB](./BB.png)

### Diagrama Entidad-Relación

\newpage

![](./ER.png)

Bibliografía
------------
