Note

This version of the template contains some help and explanations. It is used for familiarization with arc42 and the understanding of the concepts. For documentation of your own system you use better the plain version.

1. Introducción y metas

Nos hemos propuesto desarrollar un chat descentralizado, siguiendo las caracteristicas de SOLID. Buscaremos desarrollar el proyecto para que tenga un sistema con una arquitectura descentralizada, que separe el amacenamiento de datos de la aplicación que estamos desarrollando. También, tenemos como objetivo que los usuarios puedan almacenar los datos de sus chats en sus pods. Los usuarios de la aplicación, pueden enviarse fotos, vídeos u otros archivos para comunicarse con sus amigos, u otras personas a través del chat. Estas conversaciones, van a poder ser realizadas de manera individual, o de manera grupal, en la que estén incluidos varios participantes. Un usuario de la aplicación, recibirá las notificaciones de la aplicación, cuando otro usuario o usuarios quieran comunicarse con él.

La aplicación, está pensada para todas aquellas personas que quieran mantener conversaciones sin que esa información quede almacenada en los servidores de la empresa proveedora de la aplicación.

1.1. Vista de requisitos

Funcionales
  • Los usuarios que utilicen la aplicación deberán de poseer un pod de SOLID.

  • El sistema deberá de notificar al usuario los mensajes que éste reciba.

  • El sistema guardará los mensajes encriptados (no en texto plano) en el pod del usuario correspondiente.

  • Para recibir los mensajes los usuarios deberán de estar conectados y autentificados en SOLID.

No funcionales
  • Facilidad de aprendizaje para interaccionar con la aplicación por parte de los usuarios novatos en un corto espacio de tiempo.

  • El usuario pueda utilizar la aplicación con un tiempo de envío de mensajes óptimo (especificar en versiones posteriores).

  • No poseer de una base central de datos, que comprometa la información de los usuarios que la usen.

  • Buscar la seguridad, sin tener puntos vulnerables:

    • SQL Injection.

    • Command Injection.

    • Fuga de información.

    • Puertas traseras.

    • Man in the middle.

    • Cross-site request forgery.

    • Mensajes encriptados utilizando el algoritmo de encriptación MD5/SHA1Sum.

  • Nivel de accesibilidad y usabilidad siguiendo las recomendaciones de w3c.

1.2. Atributos de calidad

  • Accesibilidad: diseño de una aplicación accesible para personas con discapacidades

  • Disponibilidad: diseño de una aplicación que asegure un cierto grado absoluto de continuidad operacional durante un periodo de duración dado.

  • Modificabilidad: diseño de una aplicación con un software mantenible en el tiempo.

  • Rendimiento: capacidad del sistema a realizar operaciones sin un uso excesivo de recursos (memoria, datos, etc).

  • Seguridad: diseño de una aplicación que no sea vulnerable a:

    • SQL Injection.

    • Comand Injection.

    • Fuga de información.

    • Puertas traseras.

    • Man in the middle.

    • Cross-site request forgery.

  • Testeabilidad: diseño de una aplicación que sea capaz de pasar un software mínimo de pruebas para comprobar el correcto funcionamiento de esta.

  • Usabilidad: diseño de una aplicación que sea fácil de usar por parte de los usuarios que interactúen con ella.

  • Escalabilidad: capacidad de la apliación para albergar un mayor volumen de datos.

  • Interoperabilidad: capacidad de la aplicación para interactuar y coexistir con otros sistemas.

  • Portabilidad: característica que posee un software para ejecutarse en diferentes plataformas.

  • Integridad: diseño de una aplicación que mantenga la información exacta a como fue generada sin ser editada por usuarios o procesos no autizados a ello.

  • Consistencia: diseño de una aplicación que mantenga sus datos correctos en todo momento.

  • Robustez: capacidad de la aplicación para actuar y sobreponerse a errores no esperados en tiempo de ejecución.

  • Modular: diseño de una aplicación mediante subdivisiones de esta, independientes unas de otras.

  • Trazable: capacidad de la aplicación a seguir el rastro a las actividades realizadas en ella en todas las etapas de su ciclo de vida.

Table 1. Prioridad de los atributos de calidad en el proyecto
Prioridad Atributo

1

Disponibilidad

2

Seguridad

3

Consistencia

4

Robustez

5

Integridad

6

Modificabilidad

7

Accesibilidad

8

Usabilidad

9

Trazable

10

Rendimiento

11

Testeabilidad

12

Modular

13

Escalabilidad

14

Interoperabilidad

15

Portabilidad

1.3. Stakeholders

Table 2. Stakeholders
Role/Name Expectations

Profesorado de la asignatura

Seguir un proceso de desarrollo de la aplicación de acuerdo a lo visto en la asignatura, así como un correcto diseño y arquitectura del producto final.

SOLID

Realizar un chat descentralizado de acuerdo a la tecnología SOLID.

Equipo de desarrollo

Realizar el trabajo asignado siguiendo los requisitos establecidos en la documentación siguiendo una metodología ágil de acuerdo a lo aprendido en la asignatura.

2. Restricciones de la Arquitectura

Table 3. Restricciones técnicas
Restricción Descripción

SOLID

Toda la información intercambiada en la aplicación se almacenará en PODs personales mediante un proceso descentralizado.

Angular JS/ Typescript

Se acopla muy bien a un proyecto SOLID. Además, se trata de un framework consolidado que nos ofrece múltiples funcionalidades respaldadas por una gran comunidad.

Arc42

Se nos ha impuesto utilizar esta plantilla para documentar el proyecto. Es un estándar muy utilizado, principalmente en Europa. Este documento ha de mantenerse claro y simple en todo momento.

Table 4. Restricciones organizativas
Restricción Descripción

Periodo de desarrollo

El proyecto se llevará a cabo entre los meses de enero y mayo.

Github

Debemos usar este conocido controlador de versiones. Nos facilita en gran medida el trabajo en equipo y la organización del proyecto.

3. Alcance y Contexto del Sistema

3.1. Contexto de Negocio

Diagrama

Diagrama de negocio de la aplicación

Explicación

En la aplicación de chat descentralizado el usuario accedera a ella mediante su webID que sirve como elemento identificador en la comunidad de SOLID o similar supone un cambio respecto a otros autentificadores ya que se realiza mediante URL en este caso. El usuario podra intercambiar mensajes de texto e imágenes con otros usuarios que tengan registrados como amigos presentes en la comunidad. Esos mensajes quedaran almacenados en el POD de cada usuario de modo que ellos sean los únicos propietarios de estos.

3.2. Contexto Técnico

Diagrama

Diagrama técnico de la aplicación

Explicación

En este diagrama aparecen además del usuario, los profesores que corregiran el proyecto y los miembros de SOLID que valorarán la aplicación, de modo que aumentan el número de stakeholders implicados en el proceso. El login mediante SOLID hara que se cree en el POD de cada usuario una carpeta donde por cada conversación con un amigo se cree otra subcarpeta donde se va a guardar toda la información de la conversación e imágenes que el usuario reciba o desee compartir. Este es el principal objetivo que se busca para competir contra grandes bases de datos centralizadas, las cuales en nuestro proyecto vamos a evitar con este alternativa.

4. Solution Strategy

4.1. Tecnologia

4.1.1. Backend

  • NodeJS

Dado que la aplicación a desarrollar empleará Solid para funcionar, es necesario realizar la instalación de un servidor que de soporte a dicha tecnología. El servidor de referencia para esta tecnología esta implementado sobre Nodo, con lo que necesitaremos emplear esta tecnología.

  • NPM

Npm es un gestor de paquetes para node, que permite instalar software y librerías que deban funcionar sobre esta tecnología. El uso de esta herramienta nos simplificará la instalación del servidor Solid.

  • SPARQL

Sparql se trata de un lenguaje estandarizado de grafos RDF normalizado por el World Wide Web Consortium, con ello una tecnologia clave para el desarrolo de web semantica, por lo que sera la semántica que usemos con el fin de manejar la recuperacion de sentencias y el mantenimiento de datos.

  • CUCUMBER

Cucumber es una herramienta de software utilizada por los programadores de computadoras para probar otro software. Ejecuta pruebas de aceptación automatizadas escritas en un estilo de desarrollo impulsado por el comportamiento

4.1.2. Frontend

  • Angular

Dado que la aplicación a desarrollar deberá ser distribuida, y deberá ser ejecutada en un entorno web, necesitamos un framework de desarrollo que permita crear aplicaciones para ser ejecutadas sobre navegadores web. De las distintas opciones disponibles para esta tarea, angular es una de las más utilizadas. Cuenta con una buena documentación, una base importante de desarrolladores y nos permite programar en TypeScript, que al ser un lenguaje con tipado estatico consideramos que facilitará la escritura del código al eliminar errores de ejecución.

4.1.3. Herramientas de desarrollo

  • WebStorm

Se trata de un Entorno de Desarrollo Integrado completo, que da soporte para todas las tecnologías con las que se trabajará en el desarrollo del proyecto y para el que ya contamos con licencia.

4.2. Obtencion de objetivos de calidad

4.2.1. Seguridad

  • Inyeccion SQL

Al trabajar desde SPARQL no hay una forma 100% efectiva de evitarla, sin embargo seguiremos pautas de limitar el uso de metacaracteres permitiendo a los usuarios solo el uso de estos valores en variables de las propias querys.

  • Fuga de Informacion

Aunque no se haya decidido una tecnologia o protocolo concreto a este punto, las prácticas más adecuadas para prevenir este fallo que se usaran son el uso de logs para observar el trafico de la aplicacion y lozalizar estos abusos, el control de la información a la que lo usuarios tienen acceso y el cifrado de informacion importante.

  • Man in the Middle

    Con el fin de evitar esta brecha de seguridad los criterios mas aceptados son el uso de claves publicas, secretas o las
    anteriormente mencionadas contraseñas con el fin de evitar el filtraje de datos entre usuarios, no obstante no descartamos el
    uso de otros criterios de validacion para evitar el error.

5. Building Block View

Modulos del sistema

6. Runtime View

Estos diagramas muestran como se realizará el logueo con inicio de sesión y el envío de mensajes.

Inicio de Sesion
Enviar Mensaje

7. Deployment View

Se muestra un diagrama donde se explica el camino que recorre un mensaje por la infraestructura desde que lo envia un usuario hasta que llega a su amigo.

Vista de la infraestructura

8. Conceptos transversales

Contenido

Se incluye una imagen para hacer referencia a todo lo que se va a explicar.

Estructura
  • Modelo de dominio : Es un modelo conceptual de todos los temas relacionados con un problema específico. En nuestro caso, nuestro modelo de dominio abarca tres cosas :

    • Mensajes

    • Emisor del mensaje

    • Receptor del mensaje

  • Patrones : Es un esquema de organización estructural esencial para un sistema de software, que consta de subsistemas, sus responsabilidades e interrelaciones. Nosotros usamos:

    • MVVM(modelo-vista-vista-modelo)

  • Logging : Es necesario tener una cuenta de Solid para poder loguearte.

  • Persistencia : Al utilizar ACL y WebRTC la persistencia de los datos es automatizada por Solid.

  • Experiencia del usuario : Conocimientos que tenga el usuario de haber interaccionado previamente con el sistema o similiar, que tuviera unas características parecidas.

    • Interfaz de usuario

    • Ergonómicos

    • Internacionalización

  • Seguridad : La aplicación debe ser segura para no tener robos de información ni daños al sistema.

  • Conceptos de desarrollo : Conjunto de actividades que se van a desarrollar a lo largo del proyecto:

    • Contruir, testear, desarrollar

    • Implementar

    • Portabilidad

    • Configurabilidad

9. Decisiones de Diseño

9.1. Tecnología

  • NodeJS y Angular

El usar estas tecnologías fue una decisión muy difícil para el equipo ya que nunca las habiamos usado previamente en la carrera y nos va a suponer una dificultad añadida el tener que familiarizarnos con estos frameworks.

Los escogimos porque dentro de las opciones disponibles (Angular o React) para hacer aplicaciones con Solid, Angular nos parecio la más adecuada para este proyecto en concreto. Además Angular tiene buena documentación y varios proyectos de ejemplo con todos los pasos para aprender como funciona rapidamente.

  • TypeScript

Este lenguaje es el más usado con Angular para el desarrollo de aplicaciones. Tenemos ligeros conocimientos de este lenguaje (basicamente, es un JavaScript con comprobación estática de tipos).

Tenemos conocimientos de JavaScript ya que lo habiamos dado en una asignatura previamente pero aun así nos supondra más trabajo el aprender todo lo que puede ofrecer este lenguaje.

  • SPARQL

Para obtener informacion de los PODS y enviar información a los mismos es necesario usar este lenguaje estandarizado para consulta de grafos. La sintaxis es muy similar a otros lenguajes de bases de datos pero el no tener muchos conocimientos de como funciona internamente los PODS de Solid va a hacer que usar este lenguaje suponga otro reto más para el equipo.

  • CUCUMBER

Se usa para la realización de las pruebas de la aplicación.

9.2. Arquitectonicas

  • Patrones

Aun estamos aprendiendo a utilizar las tecnologías mencionadas en el anterior apartado aun no sabemos con certeza los patrones que vamos a emplear en el diseño del código para poder mejorar el rendimiento de nuestra aplicación y hacer que sea mantenible y ampliable. Probablemente separaremos nuestro código en tres capas diferentes para desacoplar las funcionalidades entre las diferentes clases de nuestro proyecto y que una sola clase no mezcle puntos de funcionamiento de más( será capa de presentación, de negocio y de datos). Para esta labor de separar en capas emplearemos el MVC(modelo-vista-controlador) además de buscar mejorar nuestra interfaz de usuario gracias a este patrón, además de poder reutilizar el código lo cual nos hará ganar tiempo el cual escasea para este proyecto. En función que avancen las semanas añadiremos más patrones a esta sección.

9.3. Prioridades

  • Funcionalidad

Hemos decidido basar nuestros esfuerzos en la fase de código en hacer que la aplicación sea funcional aunque la misma sea muy básisca. Nuestro razonamiento para ello es que cuanto antes consigamos mandar información entre PODS (mensaje de texto entre dos usuarios) antes podemos ampliar la aplicación con funcionalidad más compleja (mandar imágenes, chats grupales, etc..).

  • Interfaz de usuarios

Cuando completemos la anterior prioridad nos centraremos en hacer una interfaz de usuario amigable, fácil de usar y sencilla.

  • Disponibilidad

Procuraremos ante fallos en el sistema notificar de la manera más adecuada a los usuarios para evitar que se alarmen ante estas situaciones, además de mostrar ayudas que faciliten la comprensión de la interfaz de usuario cuando se la encuentran por primera vez.

  • Rendimiento

Una vez se consiga una aplicación bonita a ojos del usuario y sin errores graves en funcionamiento buscaremos la mayor velocidad posible en la ejecución de las distintas opciones que nuestra aplicación ofrezca. No estamos seguros si en el tiempo que disponemos para el proyecto conseguiremos maximizar la optimización del mismo.

  • Seguridad

La principal arma para la seguridad se basa en lo más principal de este proyecto que consiste en que cada usuario sea dueño de sus datos al estar contenidos en el POD personal de cada uno. Aún así existen riesgos de ataques como por ejemplo Man in the middle, que si nos sobra tiempo intentaremos encontrar la manera de solventar.

Quality Requirements

10. A) Árbol de calidad

A continuación se incluye el arbol con los criterios de calidad que deberán ser tenidos en cuenta en la realización del sistema. Las hojas de este árbol son los escenarios de calidad que deberán verificarse para asegurar el correcto cumplimiento de los criterios de calidad establecidos. Los nombres de estas hojas se corresponden por tanto con los de los escenarios de calidad del punto siguiente.

Arbol de calidad

11. B) Escenarios de calidad

En este punto describimos los distintos escenarios de calidad que se deberán comprobar durante el desarrollo del sistema parar asegurar la calidad del mismo.

11.1. Escenario 1: Pruebas de accesibilidad con usuarios

11.1.1. 1) Estímulo

Uso normal de la aplicación para verificar su accesibilidad.

11.1.2. 2) Fuente del estímulo

10 usuarios distintos con discapacidad.

11.1.3. 3) Entorno

Sistema funcionando en condiciones normales.

11.1.4. 4) Artefactos del sistema

Cliente Chat descentralizado

11.1.5. 5) Respuesta del sistema

El sistema debe permitir a los usuarios utilizar de manera satisfactoria todas sus funcionalidades.

11.1.6. 6) Medida de la respuesta

Los usuarios evaluarán su experiencia asignando una nota de 0 a 10.
Para validar correctamente el sistema deberá obtenerse una nota superior a 5.

11.2. Escenario 2: Guía de accesibilidad (WAI)

11.2.1. 1) Estímulo

Analisis de cumplimiento de las normas de accesibilidad definidas por la Web Accesibility Initiative del W3C.

11.2.2. 2) Fuente del estímulo

Experto en accesibilidad.

11.2.3. 3) Entorno

Sistema funcionando en condiciones normales.

11.2.4. 4) Artefactos del sistema

Cliente Chat descentralizado

11.2.5. 5) Respuesta del sistema

Documento de conformidad de la accesibilidad definido en WCAG 2.1.

11.2.6. 6) Medida de la respuesta

El documento debe indicar el cumplimiento de todos puntos de accesibilidad requeridos.

11.3. Escenario 3: Acceso con teclado

11.3.1. 1) Estímulo

Utilización normal del sistema utilizando solamente un teclado para la entrada de datos.

11.3.2. 2) Fuente del estímulo

Usuario normal del sistema.

11.3.3. 3) Entorno

Sistema funcionando en condiciones normales.

11.3.4. 4) Artefactos del sistema

Cliente Chat descentralizado

11.3.5. 5) Respuesta del sistema

El sistema debe permitir la realización de todas las tareas implementadas en el mismo.

11.3.6. 6) Medida de la respuesta

Todas las tareas deben poder realizar satisfactoriamente.

11.4. Escenario 4: Pruebas unitarias

11.4.1. 1) Estímulo

Comprobación del funcionamiento de los componentes individuales que forman la aplicación.

11.4.2. 2) Fuente del estímulo

Desarrollador.

11.4.3. 3) Entorno

Sistema en desarrollo.

11.4.4. 4) Artefactos del sistema

Cliente Chat descentralizado y Servidor

11.4.5. 5) Respuesta del sistema

El sistema generará un informe indicando si los test desarrollados se ejecutan correctamente.

11.4.6. 6) Medida de la respuesta

Todos los test desarrollados deben ser correctos.

11.5. Escenario 5: Pruebas de integración

11.5.1. 1) Estímulo

Comprobación del funcionamiento del sistema completo.

11.5.2. 2) Fuente del estímulo

Desarrollador.

11.5.3. 3) Entorno

Sistema en funcionamiento normal.

11.5.4. 4) Artefactos del sistema

Cliente Chat descentralizado y Servidor

11.5.5. 5) Respuesta del sistema

El sistema generará un informe indicando si los test desarrollados se ejecutan correctamente.

11.5.6. 6) Medida de la respuesta

Todos los test desarrollados deben ser correctos.

11.6. Escenario 6: Prueba en navegadores

11.6.1. 1) Estímulo

Ejecución de la aplicación en los 3 navegadores más utilizados (Firefox, Chrome y Edge).

11.6.2. 2) Fuente del estímulo

Encargado de pruebas.

11.6.3. 3) Entorno

Sistema en funcionamiento normal.

11.6.4. 4) Artefactos del sistema

Cliente Chat descentralizado

11.6.5. 5) Respuesta del sistema

El sistema se ejecutará normalmente en todos los navegadores.

11.6.6. 6) Medida de la respuesta

Toda la funcionalidad implementada puede ejecutarse en todos los navegadores.

11.7. Escenario 7: Prueba en sistemas operativos

11.7.1. 1) Estímulo

Ejecución de la aplicación en Windows, MacOS, Linux, Android y IPhone.

11.7.2. 2) Fuente del estímulo

Encargado de pruebas.

11.7.3. 3) Entorno

Sistema en funcionamiento normal.

11.7.4. 4) Artefactos del sistema

Cliente Chat descentralizado

11.7.5. 5) Respuesta del sistema

El sistema se ejecutará normalmente en todos los sistemas operativos.

11.7.6. 6) Medida de la respuesta

Toda la funcionalidad implementada puede ejecutarse en todos los sistemas operativos.

11.8. Escenario 8: Prueba en entornos de red

11.8.1. 1) Estímulo

Ejecución de la aplicación con distintas configuraciones de red:
Conexión en red local, conexión a traves de internet y red móvil.

11.8.2. 2) Fuente del estímulo

Encargado de pruebas.

11.8.3. 3) Entorno

Sistema en funcionamiento normal.

11.8.4. 4) Artefactos del sistema

Cliente Chat descentralizado

11.8.5. 5) Respuesta del sistema

El sistema permitirá la comunicación en todos los sistemas de red analizados.

11.8.6. 6) Medida de la respuesta

Hay comunicación en todos los sistemas de red analizados.

11.9. Escenario 9: Añadir funcionalidad

11.9.1. 1) Estímulo

Se requiere la implementación de una nueva funcionalidad en la aplicación.

11.9.2. 2) Fuente del estímulo

Desarrollador

11.9.3. 3) Entorno

Sistema en desarrollo.

11.9.4. 4) Artefactos del sistema

Cliente Chat descentralizado y Servidor

11.9.5. 5) Respuesta del sistema

Se añadirá en el sistema una nueva funcionalidad en un tiempo determinado.

11.9.6. 6) Medida de la respuesta

Tiempo empleado, que deberá ser inferior a 8 horas para una modificación de baja complejidad.

11.10. Escenario 10: Pruebas de usabilidad con usuarios

11.10.1. 1) Estímulo

Uso normal de la aplicación para verificar su usabilidad.

11.10.2. 2) Fuente del estímulo

10 usuarios con distintos perfiles.

11.10.3. 3) Entorno

Sistema funcionando en condiciones normales.

11.10.4. 4) Artefactos del sistema

Cliente Chat descentralizado

11.10.5. 5) Respuesta del sistema

El sistema debe permitir a los usuarios utilizar de manera satisfactoria todas
sus funcionalidades sin que estos duden y en un tiempo bajo.

11.10.6. 6) Medida de la respuesta

El tiempo empleado para la realización de cada tarea de la prueba será inferior a 1 minuto.

11.11. Escenario 11: Encuesta de usabilidad

11.11.1. 1) Estímulo

Los usuarios que realizan las pruebas de usabilidad se encuestan sobre la facilidad de uso de la misma.

11.11.2. 2) Fuente del estímulo

10 usuarios con distintos perfiles.

11.11.3. 3) Entorno

Sistema funcionando en condiciones normales.

11.11.4. 4) Artefactos del sistema

Cliente Chat descentralizado

11.11.5. 5) Respuesta del sistema

Puntuación numérica (entre 0 y 10) que indique el grado de aceptación de la interfaz
de la aplicación por los usuarios que la prueban.

11.11.6. 6) Medida de la respuesta

La puntuación obtenida deberá ser superior a 5.

11.12. Escenario 12: Cifrado de información

11.12.1. 1) Estímulo

Durante un uso normal del sistema, el cliente y el servidor intercambian información.

11.12.2. 2) Fuente del estímulo

Encargado de pruebas.

11.12.3. 3) Entorno

Sistema funcionando en condiciones normales.

11.12.4. 4) Artefactos del sistema

Servidor

11.12.5. 5) Respuesta del sistema

Los paquetes intercambiados deberán aparecer cifrados.

11.12.6. 6) Medida de la respuesta

No debe aparecer ningún no cifrado.

11.13. Escenario 13: Autenticación de clientes

11.13.1. 1) Estímulo

Conexión de un nuevo cliente al servidor.

11.13.2. 2) Fuente del estímulo

Encargado de pruebas.

11.13.3. 3) Entorno

Sistema funcionando en condiciones normales.

11.13.4. 4) Artefactos del sistema

Servidor

11.13.5. 5) Respuesta del sistema

Se permite la conexión la aplicación cliente desarrollada solamente.

11.13.6. 6) Medida de la respuesta

No se permite la conexión al servidor a otras aplicaciones.

11.14. Escenario 14: Autenticación de usuarios

11.14.1. 1) Estímulo

Un usuario accede al sistema.

11.14.2. 2) Fuente del estímulo

Encargado de pruebas.

11.14.3. 3) Entorno

Sistema funcionando en condiciones normales.

11.14.4. 4) Artefactos del sistema

Servidor

11.14.5. 5) Respuesta del sistema

Se comprueban las credenciales del usuario que accede al sistema.

11.14.6. 6) Medida de la respuesta

Se deniegan las conexiones de usuarios que no empleen credenciales válidas.

11.15. Escenario 15: Prueba con múltiples usuarios simultaneos

11.15.1. 1) Estímulo

Acceso concurrente al sistema de multiples usuarios.

11.15.2. 2) Fuente del estímulo

10 usuarios acceden concurrentemente.

11.15.3. 3) Entorno

Sistema funcionando en condiciones normales.

11.15.4. 4) Artefactos del sistema

Servidor

11.15.5. 5) Respuesta del sistema

El sistema atiende a las peticiones realizadas en un tiempo determinado.

11.15.6. 6) Medida de la respuesta

El tiempo de respuesta para las peticiones será inferior a 10 segundos en todos los accesos.

11.16. Escenario 16: Uptime del servidor

11.16.1. 1) Estímulo

Comprobación del uptime del servidor cuando este se encuentre en producción.

11.16.2. 2) Fuente del estímulo

Encargado de mantenimiento.

11.16.3. 3) Entorno

Sistema funcionando en condiciones normales y en un entorno de producción.

11.16.4. 4) Artefactos del sistema

Servidor

11.16.5. 5) Respuesta del sistema

Tiempo que el sistema no estará caido, y responderá a todas las peticiones enviadas
por las aplicaciones cliente.

11.16.6. 6) Medida de la respuesta

El tiempo que el servidor permanezca caido será inferior al 0.01% del total.

11.17. Escenario 17: Pruebas Beta

11.17.1. 1) Estímulo

Multiples usuarios utilizando la aplicacion con el fin de forzarla allá donde podrian darse errores.

11.17.2. 2) Fuente del estímulo

Usuarios seleccionados para realizar las pruebas.

11.17.3. 3) Entorno

Sistema funcionando en condiciones normales.

11.17.4. 4) Artefactos del sistema

Servidor.

11.17.5. 5) Respuesta del sistema

Los usuarios en esas condiciones de uso no deberian encontrar ningun error o
o retraso con el desarrollo de la prueba.

11.17.6. 6) Medida de la respuesta

11.18. Escenario 18: Pruebas de Integración

11.18.1. 1) Estímulo

Probar una nueva pieza de código previamente a su integracion al
grueso y posterior a este.

11.18.2. 2) Fuente del estímulo

Encargado de pruebas.

11.18.3. 3) Entorno

Fragmento de Codigo del que se espera su integración.

11.18.4. 4) Artefactos del sistema

Servidor.

11.18.5. 5) Respuesta del sistema

El fragmento debe de responder correctamente a estas pruebas y posteriormente
la aplicación pasar las pruebas unitarias.

11.18.6. 6) Medida de la respuesta

No debe ocurrir ningún error a la hora de implementarlo todo.

11.19. Escenario 19: Prueba Multiples Usuarios atacando la base de datos

11.19.1. 1) Estímulo

Multiples Usuarios modificando la informacion interna de la aplicacion.

11.19.2. 2) Fuente del estímulo

Multiples usuarios modificando la informacion guardada por la base de datos.

11.19.3. 3) Entorno

Sistema funcionando en condiciones normales.

11.19.4. 4) Artefactos del sistema

Servidor.

11.19.5. 5) Respuesta del sistema

Los cambios han de persistir en el sistema correctamente con los cambios
hechos en el orden adecuado y el resultado final sea el correcto.

11.19.6. 6) Medida de la respuesta

Datos esperados al acabar las transacciones.

12. Riesgos y deuda técnica

Esta es la primera vez que trabajamos con el lenguaje Angular, con RDF’s y con una arquitectura como la de SOLID, la cual no está integrada de manera sencilla con los lenguajes de programación que hemos ido usando a lo largo del grado de manera más asidua, sin tener así mismo abundante documentación por la red.

Por otro lado, el equipo no dispone de conocimiento en lo relacionado a la seguridad por la red ni acerca de la legislación relativa al almacenamiento de información sensible y de las precauciones que se deben de tomar en ese caso.

Déficit de conocimiento

Angular

RDF

SPARQL

Solid

Seguridad en la red

Legislación para los datos sensibles

Cucumber

13. Glossary

Term Definition

Cross-site request forgery

Tipo de exploit malicioso de un sitio web en el que comandos no autorizados son transmitidos por un usuario en el cual el sitio web confía.

POD

Personal Online Data, es el espacio en el que se almacenan tus datos, imágenes, etc.

SOLID

Deriva de Social Linked Data, es un conjunto de convenciones y herramientas para construir aplicaciones sociales descentralizadas.

WebID

Método estándar de identificación para comunicaciones HTTP.

About arc42

arc42, the Template for documentation of software and system architecture.

By Dr. Gernot Starke, Dr. Peter Hruschka and contributors.

Template Revision: 7.0 EN (based on asciidoc), January 2017

© We acknowledge that this document uses material from the arc 42 architecture template, http://www.arc42.de. Created by Dr. Peter Hruschka & Dr. Gernot Starke.