scieee AI-readable full text Open interactive document viewer

Gestor de contraseñas seguras

Gilarranz Nieto, Hugo

Abstract

Departamento de Informática (Arquitectura y Tecnología de Computadores, Ciencias de la Computación e Inteligencia Artificial, Lenguajes y Sistemas Informáticos)

Full text

13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 1/194 Universidad de Valladolid ESCUELA DE INGENIERÍA INFORMÁTICA (SG) Grado en Ingeniería Informática de Servicios y Aplicaciones Gestor de contraseñas seguras Alumno: Gilarranz Nieto Hugo Tutor: Álvarez Bravo José Vicente 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 2/194 1 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 3/194 Gestor de contraseñas seguras (Secure Password Manager) Gilarranz Nieto Hugo 2 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 4/194 3 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 5/194 “La llave del éxito es habituarse en tu vida a hacer las cosas qué tienes miedo a hacer” Vincent van gogh 4 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 6/194 5 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 7/194 Agradecimientos Quiero dar las gracias a todos los compañeros de clase con los que he tenido relación, en especial a mi “Pareja de baile” por aguantarme durante los trabajos en parejas, y tanto a mis compañeros de piso durante estos últimos meses como a la “Soliciata” por aguantarme en los momentos de estrés a lo largo de este proyecto. A mi tutor José Vicente por su apoyo y guía a lo largo de estos momentos finales y a todo el resto del profesorado por lo que he aprendido de ellos. Y por último y más importante a mis padres, ya que sin ellos esto no habría sido posible, en especial a mi madre por animarme a darle una segunda oportunidad a la universidad. A todos vosotros muchas gracias. 6 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 8/194 7 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 9/194 Índice General Lista de figuras 11 Lista de tablas 14 Resumen 18 Memoria del proyecto 19 Introducción 20 1.1 Introducción 20 1.2 Motivación 20 1.3 Objetivos 20 1.4 Entorno tecnológico 21 1.4.1 Aplicaciones similares 21 1.4.2 Lenguaje 26 1.4.3 Algoritmos de codificación 26 1.5 Organización del documento 27 Planificación, estimaciones y presupuesto 29 2.1 Metodología 29 2.2 Estimaciones 29 2.3 Planificación 36 2.4 Presupuesto 39 2.4.1 Hardware 39 2.4.2 Software 39 2.4.3 Personal 40 2.4.5 Varios 41 2.4.5 Resumen 42 Seguimiento 43 3.1 Comparativa 1ª iteración 43 3.2 Comparativa 2ª iteración 46 3.3 Comparativa 3ª iteración 49 Documentación Técnica 52 Primera Iteración 53 4.1 Análisis 53 4.1.1 Características 53 4.1.2 Actores 54 4.1.3 Requisitos de usuario 54 4.1.4 Diagrama de casos de uso 55 4.1.5 Especificación de requisitos de Usuario 56 4.1.6 Requisitos de información 66 4.1.7 Requisitos no funcionales* 68 4.2 Diseño 68 4.2.1 Arquitectura lógica 68 8 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 16/194 Tabla 39: Prueba de caja negra PCN-10.. ………………….....………………….....……………… .. ..82 Tabla 40: Prueba de caja negra PCN-11... ………………….....………………….....……………… .. .83 Tabla 41: Prueba de caja negra PCN-12... ………………….....………………….....……………… .. .83 Tabla 42: Prueba de caja negra PCN-13... ………………….....………………….....……………… ... 83 Tabla 43: Prueba de caja negra PCN-14.... ………………….....………………….....……………… .. 84 Tabla 43: Prueba de caja negra PCN-15.... ………………….....………………….....……………… . .84 Tabla 44: Prueba de caja negra PCN-16... ………………….....………………….....……………… .. .84 Tabla 46: Prueba de caja negra PCN-17... ………………….....………………….....……………… . ..85 Tabla 47: Prueba de caja negra PCN-18... ………………….....………………….....……………… ... 85 Tabla 48:Especificación del US-04... ………………….....………………….....………………….... .. .90 Tabla 49:Especificación del US-05.. ………………….....………………….....…………………..... .. .91 Tabla 50:Especificación del US-09.. ………………….....………………….....…………………..... ...92 Tabla 51:Especificación del US-11.... ………………….....………………….....…………………… ..93 Tabla 52:Especificación del US-12.. ………………….....………………….....…………………..... ...94 Tabla 53:Especificación del US-13.... ………………….....………………….....…………………..... .95 Tabla 54:Especificación del US-14... ………………….....………………….....……….…………..... .96 Tabla 55:Especificación del US-15... ………………….....………………….....…………………..... ..97 Tabla 56:Especificación del US-16... ………………….....………………….....…………………... ....98 Tabla 57:Especificación del US-17. ………………….....………………….....…………………... ......99 Tabla 58:Especificación del US-18..... ………………….....………………….....……………… ... ....100 Tabla 59:Especificación del US-19..... ………………….....………………….....………………….. .101 Tabla 60:Especificación del US-20..... ………………….....………………….....………………….. . 101 Tabla 61:Especificación del US-21. ………………….....………………….....………………….. . ....102 Tabla 62:Especificación del US-22...... ………………….....………………….....…………………. .103 Tabla 63:Especificación de la ENT-01. ………………….....………………….....……………… .. ....103 Tabla 64:Especificación de la ENT-02... ………………….....………………….....……………… .. .104 Tabla 65:Especificación de la ENT-04..... ………………….....………………….....……………… .. 105 Tabla 66:Especificación de la ENT-05.. ………………….....………………….....…………………. 105 Tabla 67:Diseño de la ventana Menú de inicio. ………………….....…………………..... ............ ....108 Tabla 68:Diseño de la ventana Generador de contraseñas... ………………….....…………………. ..109 Tabla 69:Diseño de la ventana Crear usuario.... ………………….....…………………..... ............... 110 Tabla 70:Diseño de la ventana Confirmar creación de usuario... …………………..... ................... ...110 Tabla 71:Diseño de la ventana Menú principal (Ver perfiles). ………………….....…………… .. ......111 Tabla 72:Diseño de la ventana Notificaciones pendientes... ………………….....………………….. .112 Tabla 73:Diseño de la ventana Bloquear uso....... ………………….....…………………..... ............ .112 Tabla 74:Diseño de la ventana Añadir perfil... ………………….....………………….....……… .. ....113 Tabla 75:Diseño de la ventana Ver perfil.... ………………….....…………………..... ................ .....114 Tabla 76:Diseño de la ventana Eliminar perfil... ………………….....…………………..... .......... ....114 Tabla 77:Diseño de la ventana Editar perfil... ………………….....…………………..... .............. ....115 Tabla 78:Diseño de la ventana Cambiar contraseña.. ………………….....…………………..... .... ...116 Tabla 79:Diseño de la ventana Ajustes..... ………………….....………………….....……………… 117 Tabla 80:Diseño de la ventana Borrar Usuario...... ………………….....…………………..... ......... .118 Tabla 81:Diseño de la ventana Menú principal (notificaciones).. …………………..... .................. ..119 15 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 17/194 Tabla 82:Diseño de la ventana Menú principal(generador de contraseñas)...... …………………..... . .119 Tabla 83:Diseño de la ventana Menú principal (administrar servicios).... …………………..... ....... ..120 Tabla 84:Diseño de la ventana Eliminar servicio........ …………………..... ........ …………………... 121 Tabla 85:Diseño de la ventana Eliminar tipo de servicio.. ………………….....…………………. .....121 Tabla 86:Diseño de la ventana Crear tipo de servicio.. ………………….....…………………..... .. ...122 Tabla 87:Diseño de la ventana Crear servicio........ ………………….....…………………..... .......... 123 Tabla 88:Diseño de la ventana Editar tipo de servicio.... ………………….....…………………..... . .124 Tabla 89:Diseño de la ventana Editar servicio..... ………………….....…………………..... ............ 125 Tabla 90: Prueba de caja negra PCN-19... ………………….....………………….....……………… .134 Tabla 91: Prueba de caja negra PCN-20. ………………….....………………….....…………… ... ....134 Tabla 9: Prueba de caja negra PCN-21..... ………………….....…………………………………… ..135 Tabla 93: Prueba de caja negra PCN-22.. ………………….....………………….....…………… ... ...135 Tabla 94: Prueba de caja negra PCN-23...... ………………….....………………….....…………… . .136 Tabla 95: Prueba de caja negra PCN-24.... ………………….....………………….....…………… .. ..136 Tabla 96: Prueba de caja negra PCN-25.... ………………….....………………….....…………… .. ..137 Tabla 97: Prueba de caja negra PCN-26.... ………………….....………………….....…………… . ...137 Tabla 98: Prueba de caja negra PCN-27... ………………….....………………….....…………… .. ...137 Tabla 99: Prueba de caja negra PCN-28...... ………………….....………………….....…………… .. 138 Tabla 100: Prueba de caja negra PCN-29..... ………………….....………………….....………… ... ..138 Tabla 101: Prueba de caja negra PCN-30... ………………….....………………….....…………… ...138 Tabla 102: Prueba de caja negra PCN-31. ………………….....………………….....…………… .....139 Tabla 103: Prueba de caja negra PCN-32.... ………………….....………………….....…………… ..139 Tabla 104: Prueba de caja negra PCN-33..... ………………….....………………….....………… .. ...139 Tabla 105:Especificación del US-23......... ………………….....………………….....……………… 142 Tabla 106:Especificación del US-24....... ………………….....………………….....……………… .. 143 Tabla 107:Especificación de la ENT-06... ………………….....………………….....……………… ..144 Tabla 108: Diseño de la ventana Ajustes..... ………………….....………………….....………… ... ...146 Tabla 109: Diseño de la ventana Importar....... ………………….....………………….....………… .. 147 Tabla 110: Diseño de la ventana importar sobrescribiendo... ………………….....……………… . ....147 Tabla 114: Prueba de caja negra PCN-34... ………………….....…………………......…………… ...150 Tabla 112: Prueba de caja negra PCN-35..... ………………….....……………….….....…………… .150 Tabla 113: Prueba de caja negra PCN-36...... ………………….....………………….....…………… .150 Tabla 114: Prueba de caja negra PCN-37..... ………………….....…………….…….....…………… .151 Tabla 115: Prueba de caja negra PCN-38...... ………………….....………………….....…………… .151 Tabla 116:Requisito denegado NFS-02... ………………….....……….………….....…………… .....186 Tabla 117:Requisito denegado US-01... ………………….....………………….....…………… .. ......187 Tabla 118:Requisito denegado US-02.... ………………….....………………….....……………… .. ..188 16 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 18/194 17 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 19/194 Resumen Hoy en día con el incremento de los servicios online el número de cuentas que posee un usuario medio ha aumentado mucho y es difícil utilizar métodos tradicionales para recordar tantas contraseñas sin recurrir al uso de estas en varios lugares, creando así situaciones que comprometen la seguridad de dichas cuentas. El objetivo principal de este TFG es el desarrollo de una aplicación de escritorio que permita gestionar contraseñas, es decir, que permita almacenar contraseñas, generar contraseñas seguras y hacer un seguimiento con el fin de poder realizar un cambio periódico de estas evitando la repetición de contraseñas usadas recientemente. Como objetivo secundario, se hará hincapié en la creación de una interfaz amigable que incentive su uso por parte de usuario no avanzados. Palabras clave: contraseñas, java, AES, SHA Abstract Nowadays with the increase of online services, the number of accounts of the average users has augmented significantly and it is hard to use traditional way to remember all those passwords without ending up using the same password in different services, to the point where the security of those accounts is compromised. The main goal of this project is the development of a desktop application that allows managing passwords, this means storage passwords, generating secure passwords and tracking with the objective of changing the password periodically evading the use of recent passwords. As a secondary goal, a friendly interface will be designed to encourage to use for non advanced users. Keywords: password, java, AES, SHA 18 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 20/194 Parte I Memoria del proyecto Capítulo 1 19 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 21/194 Introducción 1.1 Introducción Es habitual que hoy en día la gente utilice una única contraseña o como mucho un reducido set de ellas. Una pequeña modificación es el uso de algún tipo de contraseña básica obtenida a partir de una frase seguida de un elemento haciendo relación al servicio relacionado, aunque este tipo de modificación genera contraseñas menos débiles, cuando una contraseña es comprometida sigue comprometiendo el resto de ellas, además de ser una práctica poco habitual. En el caso de guardarlas en papel, no nos será desconocido el extravío del soporte en papel con dichas contraseñas, o el de fotografias subidas a la red en las que se aprecian post-it o similares con contraseñas. Para dar solución a los problemas de seguridad de estos métodos arcaicos, se propone utilizar la tecnología para solventar de manera eficaz todos estos problemas. 1.2 Motivación Este proyecto está motivado por una creciente necesidad propiciada por el gran volumen de servicios que actualmente consume una persona que requieren el uso de un usuario y contraseña, siendo conveniente el centralizar todos estos datos en un único lugar, aportando una herramienta que permite almacenar convenientemente un número prácticamente ilimitado de contraseñas eliminando la necesidad de recordarlas, facilitando así el uso de contraseñas únicas para cada servicio, con unas ventajas notorias en seguridad y persistencia sobre soportes físicos tradicionales como el papel. 1.3 Objetivos El objetivo principal de este trabajo es la creación de una aplicación de escritorio que permita centralizar la gestión de contraseñas reducción las contraseñas que el usuario final necesita a una sola, con un especial hincapié en la seguridad sin dejar completamente de lado la usabilidad. Para lograr ese objetivo principal es necesario cumplir los siguientes objetivos: OBJ-1: Identificación del usuario mediante una contraseña maestra. OBJ-2: Almacenamiento de contraseñas en local bajo el algoritmo de codificación AES* y la clave maestra. OBJ-3: Permitir crear contraseñas seguras mediante un algoritmo personalizable. OBJ-4: Recordar al usuario de manera periódica el cambio de las contraseñas almacenadas. OBJ-5: Recordar contraseñas anteriores para evitar el uso de estas en el futuro. OBJ-6: Facilitar la inclusión de perfiles de usuario base para guardar contraseñas de aplicaciones no soportadas por la aplicación. 20 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 22/194 Además como objetivos secundarios para la mejora de la usabilidad se contemplarán los siguientes objetivos secundarios: OBJS-1: Diseño e implementación de una interfaz gráfica que permita un uso fluido de la aplicación. OBJS-2: Un sistema de exportación de las contraseñas almacenadas, para su posterior importación desde un navegador. OBJS-3: Un sistema de exportación de las contraseñas almacenadas, para su posterior importación desde otro equipo que tenga instalada la aplicación. OBJS-4: Un sistema de importación de las contraseñas almacenadas en un navegador, para su incorporación a los perfiles de contraseñas almacenados en la aplicación. OBJS-5: Redacción de unos sencillos manuales de usuario y de instalación. OBJS-6: Creación de un instalador OBJS-7: Cambio automático de las contraseñas 1.4 Entorno tecnológico 1.4.1 Aplicaciones similares Este proyecto cubre necesidades de primer orden en nuestro actual modelo de vida rodeados de tecnología y servicios online por lo que existen multitud de aplicaciones que cubren estas necesidades. Podemos encontrar principalmente dos corrientes para solventar estas necesidades, una es la eliminación de las contraseñas mediante diversos procesos de verificación, habitualmente vinculados al teléfono móvil, y la otra, la cual es la aproximación que tomaremos con la aplicación que vamos a desarrollar, es la centralización de todas las contraseñas en una aplicación o servicio online, dejando en la medida de lo posible que sea la aplicación de manera automática la encargada de introducir dichas contraseñas cuando sea preciso. Ya que para nosotros no es relevante la primera corriente, a continuación estudiaremos cuatro aplicación que utilizan la segunda aproximación: ►Lastpass ▷ Algoritmo: Utiliza como algoritmo de codificación AES de 256 bits ▷ Usuario: Verifica la identidad mediante un usuario vinculado a un correo electrónico utilizando la contraseña maestra como comprobante. ▷ Almacenamiento: El almacenamiento de las contraseñas y usuarios se realiza en la nube. ▷ Generador de contraseñas: Proporciona un generador de contraseñas personalizable, destacando la función de generar contraseñas “pronunciables” ▷ Instalación: Para su funcionamiento es necesaria la instalación de una extensión de navegador para su uso en PCs y de una aplicación en el caso de móviles. ▷ Expiración de contraseñas: No se aprecia una funcionalidad que haga referencia a este dato. 21 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 23/194  Figura 1:Generador de contraseñas en Lastpass ► Keepass: ▷ Algoritmo: Utiliza como algoritmo de codificación AES de 256 bits o Chacha 20* de 256 bits, a elección del usuario. ▷ Usuario: Tiene una cuenta monousuario de carácter local sin ningún distintivo, utiliza la contraseña maestra cómo verificación. ▷ Almacenamiento: El almacenamiento de las contraseñas y usuarios se realiza de manera local en un archivo. ▷ Generador de contraseñas: Proporciona un generador de contraseñas personalizable, con una entrada que permite introducir una selección de símbolos elegibles para formar parte de la contraseña y con la opción de utilizar algoritmos proporcionados por los usuarios. ▷ Instalación: La aplicación posee un instalador convencional que realiza una instalación en el PC, y además dispone de una versión portable. ▷ Expiración de contraseñas: Permite establecer una fecha de expiración y lo indica en el resumen global, no notifica al usuario de manera directa. 22 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 24/194  Figura 2:Generador de contraseñas en Keepass ►Sticky Password: ▷ Algoritmo: Utiliza como algoritmo de codificación AES de 256 bits ▷ Usuario: Utiliza una usuario web que se autentifica con un email y la contraseña maestra. ▷ Almacenamiento: El almacenamiento de las contraseñas y usuarios se realiza en la nube con la posibilidad de guardar una copia en local. ▷ Generador de contraseñas: Proporciona un generador de contraseñas personalizable, con una entrada que permite introducir una selección de símbolos elegibles para formar parte de la contraseña. ▷ Instalación: La aplicación posee un instalador convencional que realiza una instalación en el PC aunque es necesario también instalar una extensión en el navegador. También dispone de una versión para móviles mediante una aplicación. ▷ Expiración de contraseñas: No se aprecia una funcionalidad que haga referencia a este dato. 23 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 25/194  Figura 3:Generador de contraseñas en Sticky Password ►True key: ▷ Algoritmo: Utiliza como algoritmo de codificación AES de 256 bits ▷ Usuario: Utiliza una usuario web que se autentifica con un email y la contraseña maestra. ▷ Almacenamiento: El almacenamiento de las contraseñas y usuarios se realiza en la nube. ▷ Generador de contraseñas: Proporciona un generador de contraseñas personalizable. ▷ Instalación: La aplicación funciona mediante una extensión en el navegador. También dispone de una versión para móviles mediante una aplicación. ▷ Expiración de contraseñas: No se aprecia una funcionalidad que haga referencia a este dato. 24 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 32/194  OBJS-3: Un sistema de exportación de las contraseñas almacenadas, para su posterior importación desde otro equipo que tenga instalada la aplicación. ►Cuarta iteración, Mejoras y ampliaciones: OBJS-6: Creación de un instalador. OBJ-4: Recordar al usuario de manera periódica el cambio de las contraseñas almacenadas (email). OBJS-2: Un sistema de exportación de las contraseñas almacenadas, para su posterior importación desde un navegador (al menos un navegador más). ►Quinta iteración, Cambio automático: OBJS-7: Cambio automático de las contraseñas. Una vez definidas las posibles iteraciones comenzamos realizando la table de ajuste que compartirán todas ellas, siendo esta la tabla que se muestra a continuación: Factor FC Respaldo y recuperación 5 Comunicaciones de Datos 0 Procesamiento Distribuido 0 Objetivos de Rendimiento 1 Gran uso de la configuración 1 Entrada de Datos en Línea 0 Eficiencia con el usuario final 2 Actualización en Línea 0 Facilidad de operación 5 Complejo de Procesamiento Interno 3 Código diseñado para la reutilización 3 Conversión/ Instalación en Diseño 2 Instalaciones Múltiples 3 Aplicación diseñada para Cambio 3 Total: 28 Tabla 4:Factores de complejidad en el Método de Albretch evaluados Utilizando la fórmula ya mencionada obtenemos el siguiente factor de ajuste: 31 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 33/194  A (0.01 x 28) .65F= + 0 ⇒ A 0.93F= Una vez calculada la parte común comenzaremos con la estimación de la primera iteración. Tras analizar las necesidades a cubrir para cumplir los objetivos de esta iteración las características encontradas son las siguientes: Entradas: -Contraseña maestra -Contraseña(incluidos datos de acceso) Salidas: -Contraseña generada -Recordatorio cambio Fichero interno: -Contraseñas actuales -Contraseñas pasadas Trás asignarles la complejidad adecuada obtenemos la siguiente tabla: Entradas Baja (3) 2 6 Media (4) 0 0 Alta (6) 0 0 Salidas Baja (4) 2 8 Media (5) 0 0 Alta (7) 0 0 Consultas Baja (3) 0 0 Media (4) 0 0 Alta (6) 0 0 F Externos Baja (7) 0 0 Media (10) 0 0 Alta (15) 0 0 F Internos Baja (5) 2 10 Media (7) 0 0 Alta (10) 0 0 Total 24 Tabla 5:Equivalencia de características a PF de la primera iteración 32 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 34/194  Ajustando los puntos de función obtenemos: => h4 x 0.93 22.322 = 2.32 x 8 78.562 = 1 Con lo cual la duración estimada de la primera iteración es de 178.56 horas. A partir de esas horas como subtotal procedemos con la segunda iteración, siendo sus características las siguientes: Entradas - Nuevo perfil de aplicación Consultas - Contraseña guardada - Generar contraseña Ficheros internos - Perfiles de aplicación Ajustadas por su complejidad y tipo obtenemos la siguiente tabla: Entradas Baja (3) 1 3 Media (4) 0 0 Alta (6) 0 0 Salidas Baja (4) 0 0 Media (5) 0 0 Alta (7) 0 0 Consultas Baja (3) 2 6 Media (4) 0 0 Alta (6) 0 0 F Externos Baja (7) 0 0 Media (10) 0 0 Alta (15) 0 0 F Internos Baja (5) 1 5 Media (7) 0 0 Alta (10) 0 0 Total 14 Tabla 6:Equivalencia de características a PF de la segunda iteración 33 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 35/194  Ajustando los puntos de función obtenemos: => h4 x 0.93 13.021 = 3.02 x 8 04.161 = 1 La duración de la segunda iteración es de 104.16 horas, y el subtotal acumulado hasta el momento es de 282.72 horas. Procedamos con las características de la tercera iteración: Salidas -Archivo sincronización Chrome -Archivo sincronización Ficheros Externos -Archivo sincronización Chrome Con la consiguiente tabla una vez ajustada la complejidad: Entradas Baja (3) 0 0 Media (4) 0 0 Alta (6) 0 0 Salidas Baja (4) 2 8 Media (5) 0 0 Alta (7) 0 0 Consultas Baja (3) 0 0 Media (4) 0 0 Alta (6) 0 0 F Externos Baja (7) 1 7 Media (10) 0 0 Alta (15) 0 0 F Internos Baja (5) 0 0 Media (7) 0 0 Alta (10) 0 0 Total 15 Tabla 7:Equivalencia de características a PF de la tercera iteración Ajustando los puntos de función obtenemos: 34 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 36/194  => h5 x 0.93 13.951 = 3.95 x 8 11.61 = 1 La duración estimada de la tercera iteración sería de 111.6, con un total acumulado de 394.32 horas. Ya que este total excede ampliamente las 300 horas a reconocer con este proyecto, realizaremos una estimación de nuevo manteniendo únicamente la característica más importante de esta iteración, siendo las características de esta nueva iteración reducida las siguientes: Salidas -Archivo sincronización Con la correspondiente tabla: Entradas Baja (3) 0 0 Media (4) 0 0 Alta (6) 0 0 Salidas Baja (4) 1 4 Media (5) 0 0 Alta (7) 0 0 Consultas Baja (3) 0 0 Media (4) 0 0 Alta (6) 0 0 F Externos Baja (7) 0 0 Media (10) 0 0 Alta (15) 0 0 F Internos Baja (5) 0 0 Media (7) 0 0 Alta (10) 0 0 Total 4 Tabla 8:Equivalencia de características a PF de la tercera iteración reducida Ajustando los puntos de función obtenemos: => h x 0.93 3.72 4 = .72 x 8 9.76 3 = 2 35 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 37/194   La duración estimada de esta nueva tercera iteración reducida sería de 29.76 horas, con un total de 312.48 horas para el proyecto completo, aún por encima de las 300 horas pero por un margen asumible. Dado que ya se han superado las 300 horas de trabajo no se realizarán una cuarta y quinta iteración por lo que no será necesario estimar su duración. 2.3 Planificación En el transcurso del desarrollo de esta aplicación podemos definir dos situaciones bien diferenciadas que determinan el número de horas disponibles para desarrollar la aplicación. Siendo la primera el periodo comprendido entre el comienzo del proyecto y el 17 de Marzo, en la cual se dispondrá de tiempo completo a excepción de los Martes y Miércoles de 18:00 a 20:00, y apartir del 18 de Marzo cuando por comienzo de las prácticas el tiempo de desarrollo disponible se reducirá drásticamente. El trabajo se realizará bajo las tres jornadas laborales distintas, más un pequeña modificación de una de ellas, siendo estas las descritas en la siguiente tabla: Diaria Diaria con clases Fin de Semana Fin de Semana Red 12:00-14:00 11:00-14:30 10:00-12:00 10:00-12:00 16:00-18:00 15:45-17:15 12:30-14:30 12:30-14:30 19:00-21:00 16:30-18:30 16:30-18:30 19:15-21:15 Tabla 9:Jornadas de trabajo Siguiendo el siguiente calendario de trabajo: Figura 5:Calendario de trabajo 36 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 38/194 Para definir qué tareas se realizarán en cada momento primero separaremos las horas de trabajo estimadas para cada iteración siguiendo los siguientes porcentajes: Análisis 15% Diseño 25% Codificación 45% Pruebas 15% De tal manera que nos encontramos que para la primera iteración: Análisis 26.8(15% ) Diseño 44.6(25%) Codificación 80.35 (45%) Pruebas 26.81 (15%) Para la segunda: Análisis 15.62(15% ) Diseño 26.04(25%) Codificación 46.8(45%) Pruebas 15.7(15%) Y para la tercera: Análisis 4.46(15% ) Diseño 7.44(25%) Codificación 13.39(45%) Pruebas 4.47(15%) Con esos tiempos por tarea y añadiendo las tareas previas de planificación, obtenemos el siguiente diagrama de gantt: 37 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 39/194  Figura 6:Diagrama de Gantt de planificación 38 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 40/194  Esta planificación está sujeta a posibles reajustes una vez evaluada la situación al alcanzar los hitos que representan la finalización de las distintas iteraciones, siendo estos hitos: el 13 de Abril para la primera iteración, el 9 de Junio para la segunda y el 29 de Junio para la tercera, siendo además la fecha estimada de finalización del proyecto. 2.4 Presupuesto A continuación detallaremos el presupuesto para la realización de este proyecto en base a la planificación y estimaciones realizadas anteriormente, que servirán como base para establecer el porcentaje de uso de los diferentes recursos utilizados. 2.4.1 Hardware Para la realización de este proyecto se va a utilizar un PC cuyo coste incluidos periféricos asciende a 1 073.30 €. Considerando una vida útil de 5 años, y un uso de 8 horas diarias, 21 días al mes, supone un total de 10.080 horas de vida útil. Como hemos estimado, la duración del proyecto será de 312.48 horas, un 3.1 % de la vida útil de dicho PC por lo tanto se le puede atribuir al proyecto ese porcentaje del precio. Dado que se contará con los servicios de agentes externos para realizar la impresión de los documentos necesarios no se utilizarán más elementos hardware que el PC anteriormente mencionado. Elemento Coste % de uso/unidades Coste para el proyecto PC 1 073.30 € 3.1% 33.27 € Total 33.27 € Tabla 10:Presupuesto Hardware 2.4.2 Software Para el desarrollo de este proyecto se utilizara software tanto libre como de pago a continuación presentaremos una lista de ambas categorías: ►Libre: ▷NetBeans: Entorno de desarrollo ▷Google Docs: Herramienta para la edición distribuida de documentos ▷OpenProject: Herramienta para realizar y seguir la planificación del proyecto ▷Draw.io: Herramienta para realizar diagramas ▷Pencil: Herramienta para el diseño de interfaces ▷XIcon - Editor: Herramienta online para el diseño de iconos ▷calendar.proinf.net: Herramienta online para gestionar calendarios ►Privativo ▷Windows 10: Sistema operativo (Considerando una vida útil de 5 años, y un uso de 8 horas diarias, 21 días al mes, supone un total de 10.080 horas de vida útil. 39 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 41/194   Como hemos estimado, la duración del proyecto será de 312.48 horas, un 3.1 % de la vida útil de dicho SO por lo tanto se le puede atribuir al proyecto ese porcentaje del precio) A continuación tendremos en cuenta sólo aquellos elementos software que repercuten en el presupuesto: Elemento Coste % de uso/unidades Coste para el proyecto Windows 10 100 € 3.1% 3.1 € Total 3.1 € Tabla 11:Presupuesto Software 2.4.3 Personal Esta aplicación va a ser desarrollada por un única persona, pero está va a realizar trabajos de diferente índole que tienen asociado un sueldo anual distinto. Esta diferenciación distingue entre analistas para las tareas de análisis y diseño, programador para las tareas de codificación y por último tester para las tareas de pruebas. Obtenidos mediante una aplicación llamada indeed (referencias 02 , 03 y 04 de la webgrafía),que calcula sueldos medios en función de las ofertas publicadas y de información procedentes de empresas y usuarios, los sueldos a tener en cuenta para estas tareas son los siguientes: Puesto Sueldo anual Sueldo mensual Sueldo por Hora Analista 27 468 € 2 289 € 13.65 € Programador 19 032 € 1 586 € 9.44 € Tester 21 722 € 1 810.16 € 10.77€ Tabla 12:Lista de sueldos tipo 40 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 48/194 Esta iteración ha estado marcada por dos sucesos importantes. El primero ha sido la aparición de un evento no planificado de la empresa en la que realizó las prácticas de dos semanas del 16 de Junio al 28 que ha supuesto el adelanto de la fecha de entrega al 14 de Junio. El otro y motivo por el cual esa fecha de entrega es posible ha sido la consecución de el objetivo principal para el periodo de prácticas en la empresa, lo que ha supuesto el conseguir permiso para utilizar horas de trabajo para la realización de este proyecto desde el día 27 de Mayo. Esto ha supuesto que de lunes a viernes se realicen 6 horas diarias de trabajo efectivo, cambiando el horario de trabajo para los Viernes, pero manteniendo el de Sábados y Domingos En cuanto a las horas de trabajo realizadas frente a la estimación nos encontramos con la siguiente situación: Análisis 15 (15.62) Diseño 30(26.04) Codificación 68(46.8) Pruebas 16(15.7) Total 129(104.16) Podemos observar como el tiempo de codificación ha sido notablemente superior, mientras que el resto son muy cercanos a la estimación. Esto tiene su explicación en el método de estimación utilizado, ya que es más preciso para elementos lógicos y métodos no recogiendo bien la dificultad de las interfaces, siendo estas el principal elemento de esta iteración. Dado que la iteración restante es de carácter lógico se mantendrá la estimación, pero se tendrá en cuenta en el futuro este fallo para utilizar un método distinto para aplicaciones o iteraciones con una alta carga en la interfaz de usuario. Este aumento de las horas, también ha supuesto la necesidad de tomar una decisión sobre la realización o no de la tercera iteración al haberse alcanzado las 300 horas de trabajo (170+129) . Dado la naturaleza de la aplicación y ya que la inclusión de la posibilidad de importar/exportar información facilita la creación de copias de seguridad, se ha decidido proseguir con la tercera iteración de todas formas. No obstante se resolverá la funcionalidad de la manera más sencilla posible. Ajustando la línea base a las nuevas realidades el diagrama de Gantt esperado para la siguiente iteración es el siguiente: 47 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 49/194  Figura 10:Diagrama de Gantt de planificación, inició tercera iteración El nuevo fin esperado está dentro de los nuevos plazos. 48 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 50/194  3.3 Comparativa 3ª iteración Figura 11:Diagrama de Gantt de planificación, fin de proyecto Esta última iteración ha sido una iteración muy breve y sin incidentes. 49 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 51/194 La simplificación de la solución al mínimo que permite resolver los requisitos presentados ha resultado en una reducción del tiempo en todas las áreas más o menos proporcionado como vemos a continuación: Análisis 2.5(4.46) Diseño 3.5 (7.44) Codificación 7.5(13.39) Pruebas 2.5 (4.47) Total 16 (29.76) El final de esta iteración de esta iteración eleva el número de horas de desarrollo totales a 315 frente a las 312,48 que fueron estimadas. Aunque los números son similares y las estimaciones han resultado ser bastante precisas no hay que olvidar que en esta última iteración se ha reducido el trabajo premeditadamente para compensar la subestimación de la segunda iteración, además de por límites temporales debido al contexto temporal del proyecto. En cuanto a las fechas debido a las circunstancias la fecha de finalización se ha adelantado 26 días a la fecha prevista. A modo de resumen del proyecto a continuación se muestra la línea temporal real con la line base inicial: 50 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 52/194  Figura 12:Diagrama de Gantt de planificación, linea base inicial frente fin proyecto 51 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 53/194 Parte II Documentación Técnica 52 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 54/194  Capítulo 4 Primera Iteración 4.1 Análisis 4.1.1 Características A continuación se muestra el árbol de características* que modela esta iteración: Figura 13:Árbol de características de la primera iteración 53 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 55/194 4.1.2 Actores Dado el carácter privado y personal de esta aplicación no se plantea el uso de esta por parte de actores* distintos. Es por tanto el actor “Usuario”, entendido este como un usuario que requiere la gestión de sus contraseñas y utilizará para cubrir tal necesidad esta aplicación. Este actor tendrá acceso a toda la funcionalidad de la aplicación una vez introduzca la contraseña maestra, es importante entender que aunque se utiliza ese momento para la verificación de la identidad del usuario el objetivo principal de esta operación es proporcionar a la aplicación la contraseña para descodificar los datos a partir de esa contraseña maestra, motivo por el cual no se tiene en consideración un posible actor “Usuario no identificado”. 4.1.3 Requisitos de usuario Los requisitos de usuario* son los siguientes: RU-01: Un usuario podrá establecer una contraseña maestra. RU-02: Un usuario podrá validar su legitimidad introduciendo la contraseña maestra. RU-03: Un usuario podrá generar una contraseña. RU-04: Un usuario podrá editar las reglas de generación de contraseñas. RU-05: Un usuario podrá resolver una notificación recibida. RU-06: Un usuario podrá visualizar la lista de perfiles RU-07: Un usuario podrá filtrar la lista de perfiles por servicio. RU-08: Un usuario podrá filtrar la lista de perfiles por tipo de servicio. RU-09: Un usuario podrá visualizar un perfil de manera detallada. RU-10: Un usuario podrá cambiar el estado de la contraseña de oculto a visible y viceversa. RU.11: Un usuario podrá copiar la contraseña al portapapeles. RU-12: Un usuario podrá eliminar un perfil. RU-13: Un usuario podrá modificar un perfil. RU-14: Un usuario podrá crear un perfil. RU-15: Un usuario podrá seleccionar el servicio de un perfil. RU-16: Un usuario podrá seleccionar el tipo de servicio de un perfil. RU-17: Un usuario podrá volver a un estado previo a la validación de la contraseña maestra. 54 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 56/194  4.1.4 Diagrama de casos de uso Figura 14:Diagrama de Casos de Uso 55 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 57/194 4.1.5 Especificación de requisitos de Usuario US-01 Establecer contraseña Maestra Versión 1.1 Autor Hugo Gilarranz Objetivos asociados OBJ-01 Requisitos asociados RU-01 Descripción El sistema solicita al usuario una contraseña a partir de la cual se generará la clave para codificar la información. Precondición No está establecida una contraseña maestra. Secuencia normal Paso Acción 1 El usuario accede a la aplicación por primera vez. 2 La aplicación notifica que la pérdida de la contraseña maestra supone la pérdida de la información codificada. 3 La aplicación solicita una contraseña maestra. 4 El usuario introduce una contraseña. 5 La aplicación aplica el algoritmo SHA-384 sobre la contraseña introducida. 6 La aplicación guarda los 128 primeros bits de la salida del algoritmo SHA-384 codificados mediante AES-256 con los 256 restantes, como medio para validar la contraseña maestra en futuras ocasiones. 7 La aplicación carga en la memoria temporal del programa los 256 últimos bits de la salida de SHA-384 para usarlos como clave en la codificación con AES-256. 8 La aplicación notifica al usuario que el proceso se ha completado. 9 La aplicación muestral el menú principal. 10 El caso de uso finaliza con éxito. Postcondición La aplicación está en el menú principal, lista para codificar información. Excepciones Paso Acción 56 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 64/194 US-08 Editar perfil Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-02,OBJ-5 Requisitos asociados RU-13 Descripción Un Usuario podrá modificar la información de un perfil. Precondición El usuario estará visualizando los detalles de ese perfil. Secuencia normal Paso Acción 1 El usuario accede a la opción de editar perfil 2 La aplicación muestra los datos del perfil en cuadros de texto editables con la contraseña oculta. 3 El usuario cambia al menos un campo. 4 El usuario usa la opción de guardar cambios. 5 La aplicación guarda en memoria los cambios. 6 La aplicación guarda los cambios en el archivo donde guarda los perfiles. 7 La aplicación informa al usuario de que se han guardado los cambios. 8 El caso de uso a finalizado con éxito. Postcondición Algún campo del perfil ha sido modificado Excepciones Paso Acción 3b El usuario realiza el US-03. Continua con el flujo normal. 3c El usuario no realiza ningún cambio. 4 El usuario usa la opción de guardar cambios. 5c La aplicación informa de que no hay ningún cambio. 6c El caso de uso finaliza sin éxito. 5d (en caso de que uno de los campos sea la contraseña) La aplicación comprueba que la contraseña no es la misma. 6d La aplicación aplica SHA-1 a la contraseña y comprueba que esta no se haya utilizado. 63 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 65/194  7d La aplicación aplica SHA-1 a la antigua contraseña y la guarda en el archivo de contraseñas usadas. Vuelve al paso 5. 6db La aplicación informa que la contraseña es la misma. Vuelve al paso 2 7db La aplicación informa de que la contraseña se ha usado con anterioridad. Vuelve al paso 2. Comentarios Tabla 24:Especificación del requisito US-08 US-09 Crear perfil Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-02,OBJ-5 Requisitos asociados RU-14,RU-15,RU-16 Descripción Un usuario puede crear un nuevo perfil para guardar la contraseña de un nuevo servicio. Precondición El usuario está en el menú principal Secuencia normal Paso Acción 1 El usuario accede a la opción crear un perfil. 2 La aplicación muestra los campos necesarios en cuadros de texto editables. 3 El usuario rellena al menos los campos obligatorios. 4 El usuario utiliza la opción crear perfil. 5 La aplicación comprueba que se han introducido los campos obligatorios 6 La aplicación comprueba que no existe otro perfil del mismo servicio con el mismo identificador(correo) 7 La aplicación aplica el algoritmo SHA-01 sobre la contraseña 8 La aplicación comprueba que la contraseña no haya sido utilizada con anterioridad. 9 La aplicación guarda el perfil en memoria 64 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 66/194  10 La aplicación guarda el perfil en el archivo que guarda los perfiles 11 La aplicación informa al usuario de que se ha creado el perfil. 12 El caso de uso a finalizado con éxito. Postcondición Se ha creado un nuevo perfil Excepciones Paso Acción 6b La aplicación informa de que ya existe un perfil para esa cuenta.Vuelve al paso 2. 7b La aplicación informa de que faltan campos obligatorios. Vuelve al paso 2. 9b La aplicación informa de que la contraseña se ha utilizado con anterioridad. Vuelve al paso 2. Comentarios Tabla 25:Especificación del requisito US-09 US-10 Volver al menú de inicio Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-01,OBJ-02 Requisitos asociados RU-17 Descripción El usuario podrá volver al menú de inicio, de manera que la aplicación vaciara la memoria y será necesario introducir de nuevo la contraseña maestra. Precondición El usuario está en el menú principal. Secuencia normal Paso Acción 1 El usuario utiliza la opción volver al menú de inicio. 2 La aplicación pide confirmación indicando al usuario que para consultar los perfiles sería necesario volver a introducir la contraseña maestra. 3 El usuario confirma. 4 La aplicación borra la información de los perfiles de la memoria. 5 La aplicación muestra el menú de inicio. 6 El caso de uso a finalizado con éxito. 65 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 67/194   Postcondición Excepciones Paso Acción 3b El usuario cancela la vuelta al menú de inicio. 4b El caso de uso finaliza sin éxito. Comentarios Tabla 26:Especificación del requisito US-10 4.1.6 Requisitos de información ENT01 Configuración de la aplicación Versión 1.0 Definición Elemento aglutinador de los ajustes de la aplicación así como datos fundamentales para su funcionamiento. Consideraciones ATRIBUTOS ID Nombre Descripción Dominio UNIQUE NULL Notas Contraseña 128 primeros bits de la contraseña pasada por el algoritmo SHA-384 VARCHAR (128) SÍ NO Tiempo de expiración Tiempo por defecto para la caducidad de las contraseñas en días INT(3) NO NO Tabla 27:Especificación de la ENT-01 66 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 68/194  ENT02 Perfil de Servicios Versión 1.0 Definición Perfil que representa una cuenta gestionada por la aplicación en el que se almacenan los datos de acceso así como la información fundamental para describir dicho servicio. Consideraciones ATRIBUTOS ID Nombre Descripción Dominio UNIQUE NULL Notas Email Email al que está vinculado este perfil VARCHAR (128) SÍ NO Nombre de usuario Nombre de usuario VARCHAR (128) No Si Contraseña Contraseña de acceso a ese servicio VARCHAR (128) Si No Expiración contraseña Fecha de expiración de la contraseña DATE NO NO Servicio Nombre descriptivo del servicio pj:Gmail VARCHAR (128) No Si No rellenar este dato restringe el uso de filtros Tipo de Servicio Tipo de servicio pj: proveedor de correo VARCHAR (128) No Si No rellenar este dato restringe el uso de filtros Tabla 28:Especificación de la ENT-02 67 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 69/194  ENT03 Contraseña antigua Versión 1.0 Definición Contraseña que ha sido usada con antelación Consideraciones ATRIBUTOS ID Nombre Descripción Dominio UNIQUE NULL Notas Contraseña SHA-1 de la contraseña VARCHAR (128) SÍ NO Fecha límite de guardado Fecha a partir de la cual se borrara esta entrada DATE NO NO Tabla 29:Especificación de la ENT-03 4.1.7 Requisitos no funcionales* Requisitos no funcionales de Seguridad: NFS-01 Se deben almacenar las contraseñas cifradas bajo AES-256 utilizando como clave los 256 últimos bits de la salida del algoritmo SHA-384 de la contraseña maestra. NFS05 Se deben almacenar los 128 primeros bits de la salida al algoritmo SHA-384 de la contraseña maestra codificados con AES - 256 utilizando los 256 últimos bits para identificar la contraseña maestra. NFS-03 Se deben guardar contraseña anteriores bajo el algoritmo SHA-1. NFS-04 Se debe bloquear el uso trás un periodo de inactividad de 15 min. Requisitos no funcionales de usabilidad: NFU-01 Se debe redactar un sencillo manual de usuario NFU-02 Se debe redactar un sencillo manual de instalación 4.2 Diseño 4.2.1 Arquitectura lógica Para la arquitectura lógica* de esta aplicación se va a seguir el Modelo Vista Controlador o MVC, si bien en esta iteración sólo se implementadas el Modelo y el controlador siendo la Vista implementada para el funcionamiento de la aplicación tras el transcurso de esta iteración provisional y formada por mensajes de salida en forma de menús. En la capa de modelo se situarán las clases que definen la lógica de negocio, siendo en este caso los algoritmos de codificación y las clases que modelan las entidades que encapsulan la información. 68 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 70/194  En la capa Vista se presentarán los datos en esta primera iteración mediante mensajes de salida y posteriormente mediante una interfaz gráfica. Por último la capa Controlador será la encargada de comunicar la vista con los procesos de negocio que realizan los elementos de la capa de modelo. Figura 15:Especificación de la definición de la arquitectura lógica, primera iteración 4.2.2 Arquitectura física La arquitectura física* de esta aplicación es bastante sencilla al ser un sistema aislado con la seguridad como prioridad, por lo tanto solo tendrá dos elementos diferenciados siendos estos un servidor que aloja los elementos necesarios para la instalación de la aplicación y el PC del usuario final que contendrá la aplicación instalada y los ficheros que almacenan los datos. 69 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 71/194  4.2.3 Diagrama de clases A continuación se muestra el diagrama de clases* para la primera iteración: Figura 16:Diagrama de Clases 4.3 Implementación Se han añadido métodos “SaveData” a las clases “PassManager” y “User” similares a la contemplada para “ProfileManager”, ya que modelan datos que requieren persistencia de una manera similar al “ProfileManager” para cubrir una necesidad que no se tuvo en cuenta inicialmente. 70 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 72/194  La implementación de las clases involucradas en operaciones criptográficas se ha realizado en base a los estándares definidos. Estos estándares utilizan una combinación de pseudo código y explicaciones detalladas de las operaciones de los algoritmos. Ejemplo de pseudocódigo en el estándar para SHA-1 frente al código implementado: Figura 17: Fragmento de la implantación de SHA-1 71 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 73/194   Figura 18: Pseudocódigo del estándar para SHA-1 Ejemplo de explicación de un método de AES-256 frente al método implementado: Figura 19: Explicación del estándar de un método de AES 72 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 80/194   aleatorio relativa a los límites para extrapolar a la longitud de la cadena y tras truncar el número se extrae el elemento de la cadena en dicha posición. Figura 31: Esquema del funcionamiento del algoritmo para la generación de contraseñas usando la proporción, parte 3 Esta operación se repite para la longitud de la contraseña. 4.4 Pruebas 4.4.1 Pruebas de caja blanca Esta aplicación tiene métodos especialmente sensibles dada su alta carga algorítmica por lo que se han realizado pruebas de caja blanca* para el correcto funcionamiento de todos los métodos de las clases criptográficas “SHA-1”, “SHA-384” y “AES-256”. Estas clases utilizan algoritmos que iteran sobre los datos un número determinado de veces, para comprobar su correcto funcionamiento se ha procedido a la realización de pruebas mostrando el resultado de todas las iteraciones que realiza durante el proceso. Cotejando el valor de todas la variables en cada una de las iteraciones con muestras ya existentes como la referencia 06 o las proporcionadas en la asignatura Protocolos y comunicaciones seguras. 4.4.2 Pruebas de caja negra A continuación se detallan las pruebas de caja negra* realizadas: PCN-01 Generar Contraseña Objetivo Comprobar que el generador de contraseñas funciona con la configuración por defecto. Precondiciones Estar en el generador sin haber cambiado la configuración Datos de entrada Ninguno Acción esperada Creación de una contraseña de 12 dígitos con minúsculas, mayúsculas, números y caracteres especiales Resultado Correcto Tabla 30: Prueba de caja negra PCN-01 79 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 81/194    PCN-02 Generar Contraseña personalizando la configuración Objetivo Comprobar que el generador de contraseñas funciona con una configuración diferente a la configuración por defecto. Precondiciones Estar en el generador y haber cambiado la configuración. Datos de entrada Uso de dígitos numéricos de true a false Uso de minúsculas de true a false Longitud cambiada a 8 Acción esperada Creación de una contraseña de 8 dígitos con mayúsculas y caracteres especiales Resultado Correcto Tabla 31: Prueba de caja negra PCN-02 PCN-03 Generar Contraseña personalizando la configuración Objetivo Comprobar que el generador de contraseñas funciona con una configuración diferente a la configuración por defecto. Precondiciones Estar en el generador y haber cambiado la configuración. Datos de entrada Generar con proporción Proporción [6,2,2,2} Acción esperada Creación de una contraseña de 12 dígitos con mayoritariamente mayúsculas Resultado Correcto Tabla 32: Prueba de caja negra PCN-03 PCN-04 Introducción de una contraseña maestra no válida Objetivo Comprobar que identificar usuario funciona correctamente Precondiciones Que esté establecida una contraseña maestra No estar identificado Datos de entrada password Acción esperada Mensaje indicando que la contraseña es incorrecta Solicitud de introducir de nuevo una contraseña Resultado Correcto Tabla 33: Prueba de caja negra PCN-04 80 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 82/194    PCN-05 Introducción de una contraseña maestra válida Objetivo Comprobar que identificar usuario funciona correctamente Precondiciones Que esté establecida una contraseña maestra No estar identificado Datos de entrada prueba Acción esperada El usuario ha sido identificado y se muestra la lista de perfiles Resultado Correcto Tabla 34: Prueba de caja negra PCN-05 PCN-06 Añadir perfil con contraseña generada Objetivo Comprobar que se puede añadir un perfil correctamente, y que la generación de contraseñas desde el creador de perfiles. Precondiciones Usuario identificado y visualizando la lista de perfiles Datos de entrada email: [email protected] nombre:Hugo servicio: test1 tipo de servicio: test contraseña: “usar generador” Acción esperada Se muestra la lista de perfiles con el nuevo perfil añadido Resultado Correcto Tabla 35: Prueba de caja negra PCN-06 PCN-07 Añadir perfil con contraseña introducida manualmente Objetivo Comprobar que se puede añadir un perfil correctamente. Precondiciones Usuario identificado y visualizando la lista de perfiles Datos de entrada email: [email protected] nombre:Hugo servicio: test2 tipo de servicio: test contraseña: pass Acción esperada Se muestra la lista de perfiles con el nuevo perfil añadido Resultado Correcto Tabla 36: Prueba de caja negra PCN-07 81 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 83/194    PCN-08 Añadir perfil con contraseña usada Objetivo Comprobar que no se puede usar una contraseña que ya está en uso. Precondiciones Usuario identificado y visualizando la lista de perfiles Datos de entrada email: [email protected] nombre:Hugo servicio: test3 tipo de servicio: test contraseña: pass Acción esperada Se muestra un mensaje indicando que la contraseña está o ha estado en uso y se solicita una nueva contraseña Resultado Correcto Tabla 37: Prueba de caja negra PCN-08 PCN-09 Filtrar lista por servicios Objetivo Comprobar que la funcionalidad de filtrado por servicio funciona Precondiciones Usuario identificado y visualizando la lista de perfiles. Datos de entrada filtro: test1 Acción esperada La aplicación muestra una lista de los perfiles de ese servicio. Resultado Correcto Tabla 38: Prueba de caja negra PCN-09 PCN-10 Filtrar lista por tipo de servicios Objetivo Comprobar que la funcionalidad de filtrado por tipo de servicio funciona. Precondiciones Usuario identificado y visualizando la lista de perfiles. Datos de entrada filtro: test Acción esperada La aplicación muestra una lista de los perfiles de ese tipo de servicios. Resultado Correcto Tabla 39: Prueba de caja negra PCN-10 82 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 84/194    PCN-11 Modificar perfil Objetivo Comprobar que la modificación de perfiles es posible y funciona correctamente Precondiciones Usuario identificado y visualizando un perfil en detalle. Datos de entrada nueva fecha de expiración: 10 Acción esperada La fecha de expiración se ha cambiado a dentro de 10 días. Resultado Correcto Tabla 40: Prueba de caja negra PCN-11 PCN-12 Modificar perfil contraseña usada Objetivo Comprobar que la modificación de perfiles es posible y funciona correctamente Precondiciones Usuario identificado y visualizando un perfil en detalle. Datos de entrada nueva contraseña: pass Acción esperada Se muestra un mensaje indicando que la contraseña esta o ha estado en uso. Se pide una nueva contraseña. Resultado Correcto Tabla 41: Prueba de caja negra PCN-12 PCN-13 Modificar perfil sin guardar cambios Objetivo Comprobar que la modificación de perfiles se puede abortar tras haber realizado cambios. Precondiciones Usuario identificado y visualizando un perfil en detalle. Datos de entrada Nuevo nombre de usuario: cambio Seleccionar opción salir sin guardar Acción esperada La aplicación muestra la lista de perfiles, el perfil modificado no ha sufrido ningún cambio. Resultado Correcto Tabla 42: Prueba de caja negra PCN-13 83 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 85/194    PCN-14 Eliminar perfil Objetivo Comprobar que la eliminación de perfiles es posible y funciona correctamente Precondiciones Usuario identificado y visualizando un perfil en detalle. Datos de entrada Seleccionar la opción eliminar. Acción esperada El perfil del que se estaban viendo los detalles se ha eliminado, y se muestra la lista de perfiles. Resultado Correcto Tabla 43: Prueba de caja negra PCN-14 PCN-15 Visualizar notificaciones sin notificaciones pendientes Objetivo Comprobar que el resumen de notificaciones funciona correctamente. Precondiciones Usuario identificado, no existe ninguna notificación pendiente. Datos de entrada Seleccionar la opción notificaciones. Acción esperada Se muestra un mensaje indicando que no hay notificaciones pendientes Resultado Correcto Tabla 44: Prueba de caja negra PCN-15 PCN-16 Visualizar notificaciones con notificaciones pendientes Objetivo Comprobar que el resumen de notificaciones funciona correctamente. Precondiciones Usuario identificado, existen notificaciones pendientes. Datos de entrada Seleccionar la opción notificaciones. Acción esperada Se muestra una lista con las notificaciones dando la opción de seleccionarlas para resolverlas. Resultado Correcto Tabla 45: Prueba de caja negra PCN-16 84 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 86/194   PCN-17 Resolver notificación Objetivo Comprobar que la resolución de notificaciones funciona correctamente. Precondiciones Usuario identificado, visualizando la lista de notificaciones ocn notificaciones pendientes. Datos de entrada Seleccionar la notificación a resolver. Nueva contraseña: “notificación” Acción esperada Se resuelve la notificación tras cambiar la contraseña y se muestra la lista de perfiles. Resultado Correcto Tabla 46: Prueba de caja negra PCN-17 PCN-18 Resolver notificación de manera indirecta Objetivo Comprobar que al modificar un perfil con un cambio que afecta a sus notificaciones, estas se resuelven. Precondiciones Usuario identificado, viendo en detalle un perfil con una notificación pendiente Datos de entrada nueva contraseña: “pendiente” Acción esperada Se realiza un cambio de contraseña para ese perfil, y la notificación se ha resuelto no mostrandose en la lista de notificaciones. Resultado Correcto Tabla 47: Prueba de caja negra PCN-18 85 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 87/194  Capítulo 5 Segunda Iteración 5.1 Análisis 5.1.1 Características A continuación se muestra el árbol de características que aglutina la iteración anterior (en gris) con la actual (en negro): Figura 32 :Árbol de características de la segunda iteración 86 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 88/194 5.1.2 Actores No se ha añadido ningún nuevo actor en esta iteración. 5.1.3 Requisitos de usuario Los requisitos de usuario de esta iteración son los siguientes: RU-18: Un usuario podrá añadir un tipo de servicio. RU-19: Un usuario podrá editar un tipo de servicio que no pertenezca a los tipos por defectos. RU-20: Un usuario podrá eliminar un tipo de servicio que no pertenezca a los tipos por defecto. RU-21: Un usuario podrá añadir un servicio dentro del tipo de servicio que lo engloba. RU-22: Un usuario podrá editar un servicio que no pertenezca a los servicios por defecto . RU-23: Un usuario podrá eliminar un servicio que no pertenezca a los servicios por defecto. RU-24: Un usuario podrá ver una lista de todos los servicios agrupados por tipo de servicio al que pertenecen. Además se añaden los siguientes requisitos relativos a la iteración anterior: RU-25: Un usuario podrá elegir el tiempo de caducidad por defecto. RU-26: Un usuario podrá elegir el tiempo de inactividad para la desconexión . RU-27: Un usuario podrá activar/desactivar la desconexión por inactividad. RU-28: Un usuario podrá borrar todos sus datos. RU-29: Un usuario podrá ver los ajustes actuales. RU-30: Un usuario podrá visualizar una lista con las notificaciones pendientes Los cambios producidos en esta iteración eliminan la necesidad de los siguientes requisitos: RU-16: Un usuario podrá seleccionar el tipo de servicio de un perfil. 87 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 89/194  5.1.4 Diagrama de casos de uso Figura 33:Diagrama de Casos de Uso 88 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 96/194  US-13 Eliminar tipo de servicio Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-06 Requisitos asociados RU-20 Descripción El usuario podrá eliminar tipos de servicio a los ya existentes. Precondición El usuario está visualizando la lista de servicios. Secuencia normal Paso Acción 1 El usuario pulsa la opción borrar tipo de servicio. 2 La aplicación muestra un diálogo de confirmación. 3 El usuario pulsa borrar en el diálogo de confirmación. 4 La aplicación cambia a desconocido el tipo de servicio de los servicios pertenecientes al tipo de servicio borrado. 5 La aplicación borra el tipo de servicio 6 La aplicación muestra la lista de servicios. 7 El caso de uso ha finalizado con éxito. Postcondición Se ha eliminado un tipo de servicio. Excepciones Paso Acción 3b El usuario pulsa en la opción cancelar. El caso de uso no finaliza con éxito. Comentarios Tabla 53:Especificación del US-13 95 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 97/194  US-14 Añadir servicio Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-06 Requisitos asociados RU-21 Descripción El usuario podrá añadir servicio a los ya existentes. Precondición El usuario está visualizando la lista de servicios. O el usuario selecciona nuevo servicio en la creación de un perfil. Secuencia normal Paso Acción 1 El usuario pulsa la opción añadir servicio dentro del tipo de servicio al que pertenece. 2 La aplicación muestra la pantalla de creación de servicios. 3 El usuario rellena los campos 4 El usuario pulsa la opción crear servicio 5 La aplicación comprueba que no exista un servicio con el mismo nombre 6 La aplicación crea el nuevo servicio 7 La aplicación guarda los datos. 8 La aplicación muestra la lista 9 El caso de uso finaliza con éxito Postcondición Se ha creado un nuevo servicio. Excepciones Paso Acción 1b El usuario pulsa la opción crear perfil teniendo seleccionada la opción nuevo servicio. 4b El usuario pulsa la opción volver. El caso de uso finaliza sin éxito. 6b La aplicación notifica al usuario de que ese servicio ya existe. vuelve al paso 2. Comentarios El tipo de servicio por defecto es en el que se ha añadido, pero se puede modificar. Tabla 54:Especificación del US-14 96 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 98/194  US-15 Editar servicio Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-06 Requisitos asociados RU-22 Descripción El usuario podrá editar servicios que no sean por defecto. Precondición El usuario está visualizando la lista de servicios. Secuencia normal Paso Acción 1 El usuario pulsa la opción editar servicio 2 La aplicación muestra la pantalla de edición de servicios 3 El usuario realiza modificaciones 4 El usuario pulsa la opción guardar cambios. 5 La aplicación comprueba que no exista otro servicio con el nuevo nombre 6 La aplicación guarda los cambios 7 La aplicación muestra la lista de servicios 8 El caso de uso ha finalizado con éxito. Postcondición Se ha creado un nuevo tipo de servicio. Excepciones Paso Acción 4b El usuario pulsa la opción volver. El caso de uso finaliza sin éxito. 6b La aplicación notifica al usuario de que ya existe un servicio con el nuevo nombre. Vuelta al paso 2. Comentarios Tabla 55:Especificación del US-15 97 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 99/194  US-16 Eliminar servicio Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-06 Requisitos asociados RU-23 Descripción El usuario podrá eliminar servicios que no sean por defecto. Precondición El usuario está visualizando la lista de servicios. Secuencia normal Paso Acción 1 El usuario pulsa la opción eliminar servicio 2 La aplicación muestra una ventana de confirmación. 3 El usuario pulsa la opción eliminar. 4 La aplicación adjudica el servicio “sin asignar” a los perfiles que tuvieran este servicio. 5 La aplicación borra el servicio. 6 La aplicación muestra la lista de servicios 7 El caso de uso ha finalizado con éxito. Postcondición Se ha eliminado un servicio. Excepciones Paso Acción 3b El usuario pulsa la opción cancelar. El caso de uso finaliza sin éxito. Comentarios Tabla 56:Especificación del US-16 98 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 100/194  US-17 Visualizar lista de servicios Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-06 Requisitos asociados RU-24 Descripción Un usuario podrá ver una lista de todos los servicios agrupados por tipo de servicio al que pertenecen. Precondición El usuario identificado y en el menú principal Secuencia normal Paso Acción 1 El usuario selecciona la pestaña “Administrar Servicios” 2 La aplicación muestra la lista de servicios. 3 El caso de uso ha finalizado con éxito. Postcondición Se está visualizando una lista de servicios con opciones para administrar estos servicios. Excepciones Paso Acción Comentarios Tabla 57:Especificación del US-17 99 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 101/194  US-18 Elegir caducidad de las contraseñas Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-04 Requisitos asociados RU-25 Descripción Un usuario podrá cambiar el tiempo de caducidad por defecto de las contraseñas. Precondición El usuario identificado y en la pantalla de ajustes. Secuencia normal Paso Acción 1 El usuario modifica el tiempo de caducidad 2 La aplicación guarda los cambios 3 El caso de uso a terminado con éxito Postcondición Se ha modificado el tiempo de caducidad de las contraseñas. Excepciones Paso Acción Comentarios El tiempo de caducidad afecta a las nuevas contraseñas, ya sean nuevos perfiles o cambios de contraseña, pero no afecta a las contraseñas usadas en ese momento. Tabla 58:Especificación del US-18 100 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 102/194  US-19 Modificar el tiempo de inactividad para desconexión Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-02 Requisitos asociados RU-26 Descripción Un usuario podrá cambiar el tiempo de inactividad para desconexión por defecto. Precondición El usuario identificado y en la pantalla de ajustes. Secuencia normal Paso Acción 1 El usuario realiza un cambio 2 La aplicación guarda el cambio 3 El caso de uso ha finalizado con éxito Postcondición Se ha modificado el tiempo de inactividad para desconexión por defecto. Excepciones Paso Comentarios Tabla 59:Especificación del US-19 US-20 Desactivar la desconexión por inactividad Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-04 Requisitos asociados RU-27 Descripción Un usuario podrá desactivar la desconexión por inactividad Precondición El usuario identificado y en la pantalla de ajustes. Secuencia normal Paso Acción 1 El usuario cambia el estado del checkbox 2 La aplicación guarda el cambio 101 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 103/194   3 El caso de uso ha finalizado con éxito Postcondición Se ha desactivado la desconexión por inactividad Excepciones Paso Comentarios Se puede volver a activar siguiendo el mismo proceso. Tabla 60:Especificación del US-20 US-21 Borrar usuario Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-01,OBJ-02,OBJ-05 Requisitos asociados RU-28 Descripción Un usuario podrá borrar todos sus datos Precondición El usuario identificado y en la pantalla de ajustes. Secuencia normal Paso Acción 1 El usuario pulsa la opción borrar usuario 2 El sistema muestra una pantalla de confirmación 3 El usuario pulsa “si” 4 La aplicación borra los datos 5 La aplicación muestra el menú de inicio 6 El caso de uso finaliza con éxito Postcondición Se han borrado los datos del usuario Excepciones Paso Acción 3b El usuario pulsa “no”. El caso de uso finaliza sin éxito. Comentarios Tabla 61:Especificación del US-21 102 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 104/194  US-22 Visualizar ajustes Versión 1.0 Autor Hugo Gilarranz Objetivos asociados OBJ-04 Requisitos asociados RU-25 Descripción Un usuario podrá ver los ajustes actuales Precondición El usuario identificado y en el menú principal Secuencia normal Paso Acción 1 El usuario pulsa en botón ajustes 2 La aplicación muestra la pantalla de ajustes 3 El caso de uso ha finalizado con éxito Postcondición Se están visualizando los ajustes actuales Excepciones Paso Acción Comentarios Tabla 62:Especificación del US-22 5.1.6 Requisitos de información ENT01 Configuración de la aplicación Versión 2.0 Definición Elemento aglutinador de los ajustes de la aplicación así como datos fundamentales para su funcionamiento. Consideraciones ATRIBUTOS ID Nombre Descripción Dominio UNIQUE NULL Notas Contraseña 128 primeros bits de la contraseña pasada por el algoritmo SHA-384 VARCHAR (128) SÍ NO Tiempo de expiración Tiempo por defecto para la caducidad de las INT(3) NO NO 103 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 105/194   contraseñas en días Tiempo de desconexión Tiempo para la desconexión int(2) No No Desconexión Si se realiza la conexión por inactividad o no Boolean No No Última actividad Tiempo desde la última vez que el usuario lanzo un evento. int(5) No No Tabla 63:Especificación de la ENT-01 ENT02 Perfil de Servicios Versión 2.0 Definición Perfil que representa una cuenta gestionada por la aplicación en el que se almacenan los datos de acceso así como la información fundamental para describir dicho servicio. Consideraciones ATRIBUTOS ID Nombre Descripción Dominio UNIQUE NULL Notas Email Email al que está vinculado este perfil VARCHAR (128) SÍ NO Nombre de usuario Nombre de usuario VARCHAR (128) No Si Contraseña Contraseña de acceso a ese servicio VARCHAR (128) Si No Expiración contraseña Fecha de expiración de la contraseña DATE NO NO Servicio Nombre descriptivo del servicio pj:Gmail Enum No No Tabla 64:Especificación de la ENT-02 104 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 112/194   Eventos -El botón “Crear”: procederá a borrar al usuario actual y crear uno nuevo con la contraseña maestra introducida en la ventana anterior. Al finalizar la creación se muestra el menú principal con el nuevo usuario verificado. -El botón “Cancelar”: volverá a la pantalla de creación de usuario sin crear a un nuevo usuario. Tabla 70:Diseño de la ventana Confirmar creación de usuario Menú principal (Ver perfiles) Descripción Ventana principal de la aplicación, por defecto muestra la pestaña de “Ver perfiles”. Los botones situados en la esquina superior derecha son compartidos por todas las pestañas. Y desde todas las pestañas se puede cambiar a todas las pestañas. Activación Verificar usuario en la aplicación. Terminar alguna operación que redirija a la pestaña de “Ver perfiles” Boceto Eventos Generales del menú principal: -Pestañas superiores: permiten cambiar a los paneles con dicho nombre en cualquier momento. -El botón “Ajustes”: redirige a la ventana de visualización de ajustes. -El botón “Bloquear uso”:muestra el popup “Bloquear uso”. Específicas del panel Ver perfiles: -”Seleccionar tipo de filtro” dropdown”: elige el tipo de filtro que usará el botón filtrar para filtrar la lista de perfiles entre “servicio”, “tipo de servicio” y “sin filtrar”. -”Seleccionar filtro” dropdown”: elige de la lista de servicios/tipos de servicios (según lo seleccionado en el dropdown “Seleccionar tipo de filtro” -El botón “Filtrar”: filtra la lista de perfiles en función de los parámetros seleccionados en los dropdowns contiguos. -El botón “Añadir perfil”: redirige a la ventana de creación de perfiles. -Los botones “Ver perfil”: redirigen a la ventana de ver perfil que muestra el perfil con el que están relacionados (el situado a su izquierda). -Los botones “Eliminar”: muestra el popup “Eliminar perfil”. Tabla 71:Diseño de la ventana Menú principal (Ver perfiles) 111 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 113/194   Notificaciones Pendientes Descripción Este popup aparece al verificar usuario antes de mostrar el menú principal si existen notificaciones pendientes. Activación Al verificar usuario con notificaciones pendientes. Boceto Eventos -El botón “Ok”: cierra el popup y permite el acceso completo a menú principal. Tabla 72:Diseño de la ventana Notificaciones pendientes Bloquear uso Descripción Ventana de confirmación para bloquear el uso. El menú principal se muestra por debajo pero su uso está bloqueado. Activación Pulsar el botón bloquear uso desde cualquier panel del menú principal. Boceto Eventos -El botón “Si”: procede al bloqueo de uso llendo al menú de inicio y haciendo necesario volver a introducir la contraseña para acceder a los datos. -El botón “No”: cancela el bloqueo y vuelve a permitir usar el menú principal. Tabla 73:Diseño de la ventana Bloquear uso 112 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 114/194  Añadir perfil Descripción Ventana para la creación de nuevos perfiles. Activación Pulsar el botón “Añadir perfil” en el panel de Ver perfiles del menú principal. Boceto Eventos -El campo de texto“*Email”: recoge el email para el nuevo perfil. Es un campo obligatorio. -El campo de texto “Nombre de usuario”: recoge el nombre de usuario para el nuevo perfil. Si el campo no se rellena se usa el email como nombre de usuario. -El dropdown “Servicio”: permite elegir entre los servicios existentes o uno nuevo para el nuevo perfil. -El checkbox “Contraseña visible: permite alternar entre enmascarado y visible para los campos contraseña y repetir Contraseña -El campo “Contraseña”: recoge la contraseña para el nuevo perfil. -El campo “Repetir contraseña”: recoge la contraseña para el nuevo perfil como comprobante. -El botón “Abrir Generador de contraseñas”: abre el generador de contraseñas con el botón “Iniciar” en lugar de “Copiar”. -El botón “Generar”: genera una contraseña con la configuración actual del generador de contraseñas. -El botón “Crear perfil”: si no existe un perfil del tipo seleccionado con ese email,las dos contraseñas coinciden y la contraseña no está en uso, crea un nuevo perfil con los datos introducidos. Si falla algo notifica al usuario del fallo. -El botón “Volver”: regresa al panel “Ver perfiles” del menú principal sin añadir un perfil. Tabla 74:Diseño de la ventana Añadir perfil 113 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 115/194  Ver perfil Descripción Muestra la información completa de un perfil. Activación Pulsar el botón “Ver perfil” del perfil visualizado en el panel de “Ver perfiles” del menú principal. Boceto Eventos -El checkbox “Visible”: cambia la visibilidad de la contraseña entre ofuscada y visible. -El botón “Ver Url”: abre un pequeño panel con la url (hacer alguna acción fuera del panel lo oculta). -El botón “Copiar”: copia la contraseña al portapapeles. -El botón “Editar Perfil”: abre la pantalla de edición de perfiles. -El botón “Eliminar perfil”: abre el popup de confirmación “Eliminar perfil”. -El botón “Volver”:vuelve al panel de “Ver perfiles” del menú principal. Tabla 75:Diseño de la ventana Ver perfil Eliminar perfil Descripción Popup para confirmar la eliminación de un perfil. Activación Pulsar el botón “Eliminar perfil” en la ventana “Ver perfil”. Boceto 114 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 116/194   Eventos -El botón “Sí”: confirma el borrado del perfil, borrandolo y mostrando la lista de perfiles en el panel “Ver perfiles” le menu principal” -El botón “No”: cancela el borrado del perfil, regresa a la vista “Ver perfil”. Tabla 76:Diseño de la ventana Eliminar perfil Editar perfil Descripción Pantalla para la modificación de un perfil. Activación Pulsar al botón “Editar perfil” de la pantalla “Ver perfil”. Boceto Eventos -El campo de texto “Email”: muestra la dirección de correo actual y permite modificarla. -El campo de texto “Nombre de usuario”: muestra el nombre de usuario actual y permite modificarlo. -El dropdown “Servicio”: muestra el servicio actual y permite modificarlo seleccionando entre los servicios existentes o uno nuevo. -El checkbox “Contraseña visible”: alterna la visibilidad de la contraseña entre ofuscada y visible. -E botón “Cambiar contraseña”: abre la pantalla de modificación de contraseña. -El datePicker “Fecha de caducidad”: muestra la fecha de expiración actual de la contraseña y permite modificarla. El botón “Modificar perfil”: guarda las modificaciones realizadas de haberse realizado alguna y después regresa a la ventana “Ver perfil” -El botón “Volver”: cancela la edición sin hacer cambios y regresa a la ventana “Ver perfil” Tabla 77:Diseño de la ventana Editar perfil 115 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 117/194  Cambiar contraseña Descripción Ventana para el cambio de contraseña. Activación Pulsar el botón “Cambiar contraseña” de la ventana de edición de un perfil. Pulsar el botón “Resolver notificación” de una notificación de contraseña expirada. Boceto Eventos -El checkbox “Contraseña visible”: alterna entra ofuscado y visible para los campos nueva contraseña y repetir contraseña. -El campo “Contraseña”: recoge la contraseña para el nuevo perfil. -El campo “Repetir contraseña”: recoge la contraseña para el nuevo perfil como comprobante. -El botón “Abrir Generador de contraseñas”: abre el generador de contraseñas con el botón “Iniciar” en lugar de “Copiar”. -El botón “Generar”: genera una contraseña con la configuración actual del generador de contraseñas. -El botón “Cambiar contraseña”: si las contraseñas coinciden y no están en uso realiza el cambio de contraseña (para el caso de editar un perfil los datos no se guardan hasta que no se confirma en la pantalla de edición). Y regresa a la pantalla que realizó la llamada. -El botón “Volver”: regresa a la pantalla que ha llamado a la ventana actual sin realizar la Tabla 78:Diseño de la ventana Cambiar contraseña 116 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 118/194  Ajustes Descripción Pantalla que permite visualizar y modificar los ajustes de la aplicación Activación Desde el menú principal usar el botón “Ajustes” en la esquina superior derecha. Boceto Eventos -El campo de texto “Caducidad de contraseña”:Permite visualizar y modificar las cantidad del tiempo de caducidad por defecto. -Los botones “+” y “-”: permiten aumentar o disminuir en una unidad el valor del campo “Caducidad de contraseña”. -El dropdown “Días”: permite seleccionar la unidad para la cantidad de tiempo de caducidad por defecto. -El checkbox “Desconexión por inactividad”: permite activar/desactivar la Desconexión por inactividad. -El dropdown”Desconexión por inactividad”:permite elegir el tiempo de espera para la desconexión por inactividad entre unos valores predeterminados. -El botón “Borrar usuario”: abre el popup de confirmación para la eliminación del usuario -El botón “Volver”: regresa al menú principal. Tabla 79:Diseño de la ventana Ajustes 117 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 119/194  Borrar Usuario Descripción Popup de confirmación para borrar al usuario Activación Pulsar el botón “Borrar usuario” en la ventana de ajustes. Boceto Eventos -El botón “Sí”: Confirma el borrado del usuario, la aplicación borra los datos del usuario y muestra el menú de inicio. -El botón “No”: Cancela el borrado del usuario, devuelve el control a la ventana de ajustes. Tabla 80:Diseño de la ventana Borrar Usuario Menú principal (notificaciones) Descripción Panel del menú principal que muestra la notificaciones pendientes por resolver. Activación Desde cualquier otra parte del menú principal hacer click en la pestaña “Notificaciones” Boceto 118 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 120/194  Eventos Ver “Menú principal (Ver perfiles)” para los elementos comunes del menú principal. -El botón “Resolver Notificación”: muestra la ventana de cambio de contraseña para el perfil relacionado. Tabla 81:Diseño de la ventana Menú principal (notificaciones) Menú principal (generador de contraseñas) Descripción Panel del menú principal que permite el uso del generador de contraseñas. Activación Desde cualquier parte del menú principal hacer click en la pestaña “Generador de Contraseñas” Boceto 119 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 121/194   Eventos Ver “Menú principal (Ver perfiles)” para los elementos comunes del menú principal. Ver “Generador de Contraseñas” para los elementos propios del panel. Tabla 82:Diseño de la ventana Menú principal(generador de contraseñas) Menú principal (Administrar servicios) Descripción Panel del administrador de servicios dentro del menú principal. Permite visualizar los servicios organizados por el tipo de servicio al que pertenecen. Activación Desde cualquier punto del menú principal haciendo click en la pestaña “Administrar servicios”. Boceto Eventos Ver “Menú principal (Ver perfiles)” para los elementos comunes del menú principal. -El botón “Añadir servicio”: abre la ventana de creación de servicios. -El botón “Editar”(a la derecha de un servicio): abre la ventana de edición del servicio. -El botón “Eliminar”(a la derecha de un servicio): abre el popup de confirmación para eliminar ese servicio. -El botón “Editar”(Debajo de añadir Servicios dentro de la sección de un tipo de servicio que no sea por defecto): abre la ventana de edición del tipo de servicio. -El botón “Eliminar”(Debajo de añadir Servicios dentro de la sección de un tipo de servicio que no sea por defecto): abre el popup de confirmación para eliminar ese tipo de servicio. -El botón “Añadir tipo de Servicio”: abre la ventana de creación de tipos de servicios. Tabla 83:Diseño de la ventana Menú principal (administrar servicios) 120 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 128/194   Figura 40: Resumen de relación de vistas desde Administrar servicios Por último con las pantallas dependientes del panel Notificaciones del menú principal: Figura 41: Resumen de relación de vistas desde Notificaciones 5.3 Implementación La interfaz gráfica se ha implementado usando la librería de java Swing, además se ha utilizado la librería externa swingx àra utilizar el componente JXDatepicker, para el componente Datepicker utilizado en la edición de perfiles. Se han sustituido los métodos display por ventana por uno solo que realiza la llamada de la ventana pertinente gracias a un conjunto de variables estáticas numéricas que permiten identificar a la ventana que se desea llamar así como el modo en caso de que lo tenga (por ejemplo en generador de contraseñas puede aparecer en una ventana independiente desde el menú de inicio o como una dependiente desde la creación de usuario. 127 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 129/194   Figura 42: Variables estáticas del controlador Figura 43: Cabecera del método displayWindow 128 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 130/194    Figura 44: Operaciones comunes del método displayWindow Para manejar el flujo de ventanas y permitir el regreso a pantallas anteriores se han utilizado tres variables. Dos variables contenedoras de JFrames para controlar cual es la ventana anterior y actual, y otra con una lista de todas las ventanas de la cadena de flujo(Arraylist de JFrames). Figura 45: Variables del controlador para el control del flujo de navegación Para gestionar estas variables la llamada a ventanas incluye una variable que indica si hay que ampliar la lista de ventanas del flujo o resetearlo. Unido a esto el método back da un paso atrás volviendo a la ventana anterior y desechando la actual (la implementación realizada no permite realizar operaciones “adelante” tras realizar una acción “volver” ). Figura 46: Método back del controlador Para que los botones con forma de icono en lugar de forma rectangular de la mayoría de botones (ejemplo: editar servicio) se han creado pares de iconos con fondo blanco/gris, para resaltarlos cuando un usuario pase el ratón sobre ellos y no los confunda con imágenes. 129 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 131/194    Figura 47: Iconos del botón añadir Figura 48: Código de un botón con icono Figura 49: Aspecto del botón Añadir perfil con el ratón encima y en otra posición Ha sido necesario añadir un método “recalculateProportión”, para que al cambiar la proporción para un set de caracteres se mantenga que la suma de las proporciones es igual a la longitud de la contraseña. Este método primero calcula si tiene que aumentar o disminuir el valor de la proporción, y cual de las proporciones, o si es la longitud, ha cambiado. 130 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 132/194   Después calcula si hay alguna proporción que no puede ser modificada por condiciones especiales(bloqueada o ya es 0 cuando el reajuste es negativo). Por último distribuye el reajuste equitativamente, empezando por una proporción de manera aleatoria. Figura 50: Detalle del método recalculateProp(1) Figura 51: Detalle del método recalculateProp(2) 131 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 133/194   Figura 52: Detalle del método recalculateProp(3) Además para permitir que ese método no impida la selección de proporciones exactas (al cambiar una proporción sería posible que otra proporción que ya cambiastes cambia automáticamente), se han añadido botones para bloquear la proporción de un set de caracteres una vez hemos elegido el valor de esa proporción. Figura 53: Pantalla del generador de contraseñas 132 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 134/194  Figura 54: ActionListener de un checkbox bloquear Una vez bloqueamos 2 proporciones no podemos seguir bloqueando opciones ya que bloquear una opción más seria equivalente a bloquearlas todas. 133 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 135/194   5.4 Pruebas 5.4.1 Pruebas de caja blanca Esta iteración no cubre ninguna operación especialmente sensible, aún así se han realizado pruebas de caja blanca para cotejar que la información del modelo coincide con la mostrada en la interfaz. Para ello se ha realizado un procedimiento similar a la iteración anterior mostrando la información del modelo mientras se realizaban operaciones CRUD* en la aplicación, comprobando que siempre el modelo y la información mostrada por la interfaz coinciden. 5.4.2 Pruebas de caja negra Se han repetido con éxito las pruebas realizadas en la primera iteración (PCN-01 a PCN-18). PCN-19 Generar Contraseña personalizando la configuración Objetivo Comprobar que el generador de contraseñas funciona con una configuración diferente a la configuración por defecto. Precondiciones Estar en el generador y haber cambiado la configuración. Datos de entrada Generar con proporción forzada Proporción [6,2,2,2} Acción esperada Creación de una contraseña de 12 dígitos siguiendo la distribución de la proporción (6 mayusculas, 2 minusculas, 2 números 2 caracteres especiales) Resultado Correcto Tabla 90: Prueba de caja negra PCN-19 PCN-20 Introducción de una contraseña maestra no válida al crear usuario Objetivo Comprobar que los requisitos de seguridad mínima de la contraseña maestra se validan Precondiciones Crear usuario Datos de entrada password Acción esperada Mensaje indicando que la contraseña no es válida ya que tiene que tener 8 dígitos y al menos 2 tipos de caracteres distintos Resultado Correcto Tabla 91: Prueba de caja negra PCN-20 134 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 136/194   PCN-21 Generar Contraseña vaciar el campo de caracteres especiales Objetivo Comprobar que el generador de contraseñas funciona con una configuración diferente a la configuración por defecto. Precondiciones Estar en el generador y haber cambiado la configuración. Datos de entrada Borra el campo de caracteres especiales Acción esperada Se bloquean las opciones relacionadas con los caracteres especiales excepto el campo. Resultado Correcto Tabla 92: Prueba de caja negra PCN-21 PCN-22 Añadir perfil con un nuevo servicio Objetivo Comprobar que se puede añadir un perfil correctamente y que la opción nuevo servicio crea un nuevo servicio en la misma operación. Precondiciones Usuario identificado y visualizando la lista de perfiles Datos de entrada email: [email protected] nombre:Hugo servicio: Nuevo servicio contraseña: “usar generador” tipo de servicio:desconocido icono:por defecto url: “campos vacio” Acción esperada Se crea un nuevo perfil y un nuevo servicio, siendo el nuevo servicio el servicio del perfil creado Resultado Correcto Tabla 93: Prueba de caja negra PCN-22 135 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 137/194   PCN-23 Editar servicio con un nuevo tipo servicio Objetivo Comprobar que se puede editar un servicio correctamente y que la opción nuevo tipo servicio crea un nuevo tipo de servicio en la misma operación. Precondiciones Usuario identificado y visualizando la lista de perfiles Datos de entrada tipo de servicio:Nuevo tipo de servicio icono:por defecto url: “campos vacio” Nombre: prueba color: rojo Acción esperada Se modifica un nuevo servicio y se crea un nuevo tipo servicio, siendo el nuevo tipo de servicio el tipo de servicio del servicio modificado. Resultado Correcto Tabla 94: Prueba de caja negra PCN-23 PCN-24 Editar servicio con un nuevo tipo servicio Objetivo Comprobar que se puede editar un servicio correctamente y que la opción nuevo tipo servicio crea un nuevo tipo de servicio en la misma operación. Precondiciones Usuario identificado y visualizando la lista de perfiles Datos de entrada tipo de servicio:Nuevo tipo de servicio icono:por defecto url: “campos vacio” Nombre: prueba color: rojo Acción esperada Se bloquean las opciones relacionadas con los caracteres especiales excepto el campo. Resultado Correcto Tabla 95: Prueba de caja negra PCN-24 136 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 144/194  por otra instancia de la aplicación Precondición El usuario está en la pantalla de ajustes Secuencia normal Paso Acción 1 El usuario pulsa en la opción importar 2 La aplicación permite elegir el archivo para importar 3 El usuario elige el archivo 4 La aplicación carga el archivo 5 La aplicación comprueba si el el comprobante coincide con el del usuario 6 La aplicación pregunta al usuario qué información prevalece 7 El usuario elige la información almacenada en la aplicación 8 La aplicación guarda la información del archivo descartando los perfiles, servicios y tipos de servicio que estén en la aplicación 9 El caso de uso a finalizado con éxito Postcondición Excepciones Paso Acción 3b El usuario usuario cancela la elección del archivo. El caso de uso finaliza sin éxito. 4b El usuario selecciona un archivo no válido. Vuelta al punto 2. 6b El comprobante no coincide, y la aplicación solicita al usuario que introduzca la contraseña para el archivo de importación. 7b El usuario introduce la contraseña 8b La aplicación comprueba que la contraseña es válida (si no lo es vuelve al paso 7b).Si lo es continúa con el paso 6 normal 7c El usuario elige la información importada 8c La aplicación guarda la información del archivo sobreescribiendo los perfiles, servicios y tipos de servicio que estén en la aplicación 9c el caso de uso a finalizado con éxito Comentarios Tabla 106:Especificación del US-24 143 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 145/194  6.1.6 Requisitos de información ENT06 Archivo Exp/Imp Versión 1.0 Definición Clase que encapsula la información para exportar/importar Consideraciones ATRIBUTOS ID Nombre Descripción Dominio UNIQUE NULL Notas Contraseña 128 primeros bits de la contraseña pasada por el algoritmo SHA-384 VARCHAR (128) SÍ NO Perfiles Perfiles codificados que se exportan ArrayList NO NO Servicios Servicios que se exportan ArrayList NO NO Tipo de Servicio Tipos de Servicio que se exportan ArrayList NO NO Contraseñas caducadas Contraseñas caducadas que se exportan ArrayList NO NO Tabla 107:Especificación de la ENT-06 6.1.7 Requisitos no funcionales Requisitos no funcionales de Seguridad: NFS-08 Se deben codificar con AES-256 los perfiles que se copien a un archivo de Exp/Imp 6.2 Diseño 6.2.1 Arquitectura lógica La arquitectura lógica de esta aplicación no ha sufrido cambios con respecto a lo expuesto en la iteración anterior. 144 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 146/194  6.2.2 Arquitectura física La arquitectura física de esta aplicación no ha sufrido cambios con respecto a lo expuesto en la iteración anterior. 6.2.3 Diagrama de clases Figura 57:Diagrama de clases de la tercera iteración 145 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 147/194  6.2.4 Interfaz gráfica Ajustes Descripción Pantalla que permite visualizar y modificar los ajustes de la aplicación Activación Desde el menú principal usar el botón “Ajustes” en la esquina superior derecha. Boceto Eventos Ver anterior diseño para ajustes -El botón “Importar”: abre un explorador para seleccionar el archivo a importar. Si el archivo es válido muestra la ventana importar. -El botón “Exportar”: abre un explorador de archivos. Una vez seleccionado un directorio guarda en ese directorio un archivo con la información de la aplicación Tabla 108: Diseño de la ventana Ajustes 146 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 148/194  Importar Descripción Pantalla que permite introducir datos necesarios para importar un archivo Activación Desde menú de ajustes, pulsar el botón importar Boceto Eventos -El campo de texto contraseña aparece desactivado si el comprobante para la contraseña del archivo a importar coincide con el de la contraseña comprobante de la aplicación. -El checkbox “Sobreescribir información” indica si prevalece la información de la aplicación (no seleccionado ), o la del archivo (seleccionado ) -El botón “importar”, si el checkbox está seleccionado muestra una pantalla de confirmación. Si no lo está importar el archivo -El botón “volver”, regresa a la pantalla de ajustes Tabla 109: Diseño de la ventana Importar Confirmar importar sobreescribiendo Descripción Pantalla para confirmar la importación de un archivo sobreescribiendo Activación Desde la pantalla importar, pulsar el botón “importar” con el checkbox “Sobreescribir información” seleccionado. Boceto 147 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 149/194     Eventos -El botón “Si” importa el archivo sobreescribiendo la información -El botón “No”, mantiene la vista en la pantalla de importar archivo. Tabla 110: Diseño de la ventana importar sobrescribiendo 6.3 Implementación Dada la brevedad de esta iteración el único elemento de interés es la lectura del archivo importado, más concretamente la elección de los elementos que se guardan y cuáles se desechan, o que elementos ya existentes se sobrescriben. Una vez seleccionado un archivo válido se pide al usuario la contraseña para decodificar el archivo si no coincide con la del programa, y la política para sobreescribir los datos. Una vez obtenidos se llama a la siguiente función: Figura 58: Cabecera del método readImpFile En caso de que la contraseña sea la de la aplicación se utiliza esta otra llamada que hace uso de la anterior Figura 59: Método readImpFile cuando coinciden las contraseñas El método itera por los ArrayList de servicios, y contraseñas usadas del archivo importado de la siguiente forma: Figura 60: Bucle para iterar los tipos de servicios Primero determina si el elemento a comprobar existe ya en la aplicación o no, y según la política de escritura en caso de que exista lo sustituye o lo ignora. En caso de que no exista lo añade independientemente de la política. 148 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 150/194   Para los servicios ya que estos dependen de un tipo de servicio, además de lo anterior se realiza una operación extra iterando por los tipos de servicio existentes para ligarlos y que no exista duplicidad de objetos con las mismas propiedades. Figura 61: Bucle para iterar los servicios Para los perfiles el método realiza la misma operación que los servicios, iterando en este caso con los servicios. Como pequeña nota de discordancia, se ha de utilizar la clave aportada para transformar los perfiles codificados, que almacena el archivo de exportación, en perfiles normales. Figura 62: Decodificación de la lista de perfiles 6.4 Pruebas 6.4.1 Pruebas de caja blanca Para esta iteración se ha seguido el mismo procedimiento que en la anterior, pero en este caso realizando operaciones de importación y exportación de archivos comprobando que los valores en el modelo eran iguales a los contenidos por los archivos, y a los mostrados en la interfaz trás las operaciones de importación. 149 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 151/194    6.4.2 Pruebas de caja negra PCN-34 Prueba de exportación importación Objetivo Comprobar que la aplicación exporta e importa correctamente. Precondiciones Usuario identificado, en la pantalla de ajustes, con un servicio, un perfil y un tipo de servicio. Datos de entrada Exportar el archivo Eliminar el servicio, el perfil y el tipo de servicio. Importar el archivo Acción esperada La información del perfil, el servicio y el tipo de servicio es la misma que antes de borrarlos. Resultado Correcto Tabla 111: Prueba de caja negra PCN-34 PCN-35 Prueba de exportación importación sobrescribir elementos Objetivo Comprobar que la aplicación sobrescribe la información almacenada correctamente. Precondiciones Usuario identificado, en la pantalla de ajustes, con un servicio, un perfil y un tipo de servicio. Datos de entrada Exportar el archivo Editar el servicio, el perfil y el tipo de servicio. Importar el archivo Acción esperada La información del perfil, el servicio y el tipo de servicio es la misma que antes de editarlos. Resultado Correcto Tabla 112: Prueba de caja negra PCN-35 PCN-36 Prueba de exportación importación sin sobrescribir elementos Objetivo Comprobar que la aplicación no sobrescribe la información almacenada. Precondiciones Usuario identificado, en la pantalla de ajustes, con un servicio, un perfil y un tipo de servicio. Datos de entrada Exportar el archivo Editar el servicio, el perfil y el tipo de servicio. Importar el archivo Acción esperada La información del perfil, el servicio y el tipo de servicio es la misma que después de editarlos. Resultado Correcto Tabla 113: Prueba de caja negra PCN-36 150 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 152/194   PCN-37 Prueba de importación con contraseña distinta Objetivo Comprobar que la aplicación distingue si la contraseña del archivo es distinta, y que permite introducir la contraseña para el archivo correctamente. Precondiciones Usuario identificado, en la pantalla de ajustes, con un servicio, un perfil y un tipo de servicio exportados desde un usuario con clave distinta. Datos de entrada Importar el archivo Contraseña del archivo correcta Acción esperada La información del perfil, el servicio y el tipo de servicio se ha importado correctamente. Resultado Correcto Tabla 114: Prueba de caja negra PCN-37 PCN-38 Prueba de importación con contraseña distinta incorrecta Objetivo Comprobar que la aplicación distingue si la contraseña del archivo es distinta, y que no permite introducir una contraseña incorrecta. Precondiciones Usuario identificado, en la pantalla de ajustes, con un servicio, un perfil y un tipo de servicio exportados desde un usuario con clave distinta. Datos de entrada Importar el archivo Contraseña del archivo incorrecta Acción esperada La aplicación notifica al usuario que la contraseña no es correcta Resultado Correcto Tabla 115: Prueba de caja negra PCN-38 151 Hugo Gilarranz Nieto 13/6/2019 Plantilla latex adaptada - Documentos de Google https://docs.google.com/document/d/1qqjgO9QKeazoYrik-Zcno4zNBJEw9MeTcYYa12Q8eQo/edit# 153/194 Parte III Manuales 152 Hugo Gilarranz Nieto