Requisitos no funcionales ========================= **NFR1** Tornado ---------------- - **Versión**: 1 - **Autores**: Diego Martín - **Fuentes**: Análisis preliminar - **Descripción**: El *backend* web deberá implementarse sobre el *framework* Tornado con el objetivo de optimizar el rendimiento del sistema. Todas las aplicaciones que gestionen programación de operaciones utilizarán el bucle de eventos de Tornado por razones de sencillez y eficacia. - **Importancia**: Alta - **Urgencia**: Alta - **Estado**: Completo - **Estabilidad**: Estable **NFR2** Abstracción de la base de datos ---------------------------------------- - **Versión**: 1 - **Autores**: Diego Martín - **Fuentes**: Análisis preliminar - **Objetivos asociados**: OBJ-1 - **Requisitos asociados**: RF-1, OBJ-2 - **Descripción**: Con el objetivo de garantizar la compatibilidad con diferentes modelos de bases de datos se utilizará el *Object-relational Mapping* (ORM) del *framework* `Django `_ para conseguir este nivel de abstracción. - **Importancia**: Alta - **Urgencia**: Alta - **Estado**: Completo - **Estabilidad**: Estable **NFR3** HTTPS con doble validación ----------------------------------- - **Versión**: 1 - **Autores**: Diego Martín - **Fuentes**: Análisis preliminar - **Objetivos asociados**: OBJ-1, OBJ-2, OBJ-3 - **Requisitos asociados**: RF-1, RF-2, RF-6, RF-7, RF-8 - **Descripción**: En toda comunicación segura ambos lados validarán la identidad del otro a través de los certificados HTTPS ofrecidos al establecer la conexión. De esta forma es posible recibir órdenes de control de forma segura. - **Importancia**: Alta - **Urgencia**: Alta - **Estado**: Completo - **Estabilidad**: Estable **NFR4** Compatibilidad con systemd e initd ------------------------------------------- - **Versión**: 1 - **Autores**: Diego Martín - **Fuentes**: Análisis preliminar - **Descripción**: Los diferentes *daemons* que este producto *software* incluye ofrece deben ser compatibles con los gestores de servicios systemd e init.d - **Importancia**: Media - **Urgencia**: Baja - **Estado**: Por realizar - **Estabilidad**: Estable **NFR5** Instalación a través de ``setuptools`` ----------------------------------------------- - **Versión**: 1 - **Autores**: Diego Martín - **Fuentes**: Análisis preliminar - **Requisitos asociados**: NFR-4 - **Descripción**: La instalación del *software* estará asistida por el estándar *de facto* para aplicaciones escritas en Python, `setuptools `_. - **Importancia**: Baja - **Urgencia**: Baja - **Estado**: Por realizar - **Estabilidad**: Estable **NFR6** Registro ----------------- - **Versión**: 1 - **Autores**: Diego Martín - **Fuentes**: Análisis preliminar - **Objetivos asociados**: OBJ-1, OBJ-2 - **Requisitos asociados**: IRQ-2 - **Descripción**: Se deberá almacenar una serie de registros de las diferentes operaciones realizadas y programadas, así como una serie de ficheros que reflejen el comportamiento del sistema al realizar una operación. - **Importancia**: Media - **Urgencia**: Media - **Estado**: Completo - **Estabilidad**: Estable **NRF7** Validación de los datos de usuario ------------------------------------------- - **Versión**: 1 - **Autores**: Diego Martín - **Fuentes**: Análisis preliminar - **Objetivos asociados**: OBJ-1 - **Requisitos asociados**: RF-1, RF-2, RF-3, RF-4 - **Descripción**: Todo dato introducido por el usuario deberá ser sometido a procesos de "desinfección" (*sanitization*) con el objetivo de evitar ataques tales como *Cross-Side Scripting* (**XSS**) o inyección **SQL**. - **Importancia**: Alta - **Urgencia**: Media - **Estado**: Completo - **Estabilidad**: Estable - **Comentarios**: Al emplear el ORM de Django la mayoría de este tipo de ataques son filtrados de forma automática. .. - **Versión**: - **Autores**: - **Fuentes**: - **Objetivos asociados** - **Requisitos asociados** - **Descripción** - **Importancia** - **Urgencia** - **Estado** - **Estabilidad** - **Comentarios**