1. Introducción y objetivos
1.1. Descripción de los requisitos
1.2. Objetivos de calidad
Prioridad | Meta | Motivación |
---|---|---|
1 |
Calidad |
La aplicación debe satisfacer las necesidades del usuario, con un correcto funcionamiento. |
2 |
Usabilidad |
La aplicación debe ser fácilmente usable por cualquier usuario, con mucha o poca experiencia. |
3 |
Privacidad |
La aplicación debería utilizar la información de los usuarios estrictamente necesaria. |
1.3. Partes interesadas
Rol/Nombre | Expectaciones |
---|---|
Profesores |
Esperan una aplicación que sea completamente funcional y que cumpla con los requisitos de la asignatura. |
Equipo de desarrollo |
Esperan aprender las tecnologías necesarias para desarrollar un proyecto. |
Clientes |
Se encargarán de probar que la aplicación realmente le ofrece los servicios que se expongan. |
2. Restricciones de la arquitectura
2.1. Restricciones técnicas
2.2. Restricciones organizativas
2.3. Restricciones Convenios
3. Contexto y Alcance del Sistema
3.1. Contexto de negocio
3.2. Contexto técnico
4. Estrategia de solución
4.1. Decisiones tecnológicas
4.2. Objetivos de calidad
4.3. Decisiones organizativas
5. Vista de bloque de creación
5.1. Sistema general de caja blanca
5.2. Nivel 1
5.3. Nivel 2
5.4. Nivel 3
6. Runtime View
6.1. Registro de nuevo usuario
6.2. Añadir producto al carrito
6.3. Logeo de usuario
6.4. Ver carrito
6.5. Buscar productos
6.6. Ver pedidos
6.7. Leyenda
7. Deployment View
8. Conceptos transversales
8.1. Modelo de dominio
8.2. Conceptos sobre la experiencia de usuario
8.3. Conceptos de protección y seguridad
9. Decisiones de diseño
Decisión | Ventajas | Desventajas |
---|---|---|
MongoDB |
Fácil de trabajar con json , formato nativo en javascript y base de datos rápida para esquemas sencillos |
Nadie del equipo ha trabajado con ella antes, no soporta transacciones complejas |
Node |
Nos permite constuir una aplicación escalabale |
Poco conocimiento de la aplicación, poca compatibilidad entre versiones |
Shippo API |
Permite consultar los gastos de envio sin preocuparse de los temas legales o administrativos que conllevaría un envio real y tiene blioteca para node |
Nunca se ha trabajado con ella |
Tailwind CSS |
Un diseño que nos gusta, buena documentación y ejemplos |
Algo dificil de implementar y nunca la hemos usado |
BCrypt |
Librería para hacer hash de contraseñas segura y con bastantes ejemplos |
Nadie la había usado antes y puede acabar utilizando muchos recursos |
Jsonwebtoken |
Nos permite guardar datos en los tokens y hay bastante documentación |
El tamaño de los tokens puede ser muy grande |
Gatling |
Es el recomendado por los profesores y hay tutoriales y ejemplos |
Somos nuevos con la herramienta |
10. Requisitos de calidad
10.1. Árbol de calidad
10.2. Escenarios de calidad
Ref | Atributo de calidad | Escenario de calidad | Prioridad |
---|---|---|---|
S |
Seguridad |
La información proporcionada por los usuarios no puede ser vista/extraída por terceras personas. |
High, High |
P |
Privacidad |
La aplicación tendrá solamente el POD del usuario y la dirección a la que se envía, que no se asocia al usuario. |
High, High |
U |
Usabilidad |
La aplicación es intuitiva, independientemente de la habilidad del usuario, ya que es como cualquier otra aplicación de compra. |
High, Medium |
E |
Eficiencia |
Da una respuesta a lo que pide en unos dos segundos, incluso cuando hay varios usuarios a la vez durante mucho tiempo. |
Medium, Medium |
M |
Mantenibilidad |
El código está ordenado y limpio por lo que, si surge un problema, es fácil encontrar donde falla y de solucionar. |
Low, Medium |
11. Riesgos y Deuda Técnica
11.1. Riesgos
Riesgos | Solución |
---|---|
Poco tiempo |
Aprovechar el tiempo e intentar llevar las cosas al día |
Poco conocimiento de las tecnologías que vamos a usar |
Buscar información de las diferentes tecnologías y aprender a usarlas |
Trabajar en equipo |
Hacer reuniones habitualmente, mantener una buena comunicación y dejar el código entendible |
11.2. Deuda Técnica
Deuda Técnica | Solución |
---|---|
Token de API hardcodeado |
Moverlo a el .env |
Archivos javaScript |
Es necesario dejarlos para que no de error al establecer el estilo tailwind |
Cobertura test frontEnd |
No hemos conseguido que se muestre la cobertura completa de manera correcta |
Error en circleci |
Al hacer commits nos hace un chequeo de circleci que no sabemos porque y por eso nos salen como inválidos algunos commits. |
Paginación con ordenación |
Al ordenar los productos por precio, la paginación no nos funciona correctamente. |
Despliegue sin https |
No hemos conseguido usar https en el despliegue por lo que no podemos acceder a los pods y en backend da un error en sonardcloud por no usar https. |
12. Glosario
Término | Definición |
---|---|
MongoDB |
MongoDB es un sistema de base de datos NoSQL orientado a documentos de código abierto y escrito en C++, que en lugar de guardar los datos en tablas lo hace en estructuras de datos similares a JSON con un esquema dinámico |
Json |
Es un formato de texto ligero que permite intercambiar y almacenar datos. |
Javascript |
JavaScript es un lenguaje de programación diseñado para añadir interactividad a las páginas webs y crear aplicaciones web. |
TypeScript |
Es un superconjunto de JavaScript, que añade tipos estáticos y objetos basados en clases |
React |
React es una biblioteca Javascript de código abierto diseñada para crear interfaces de usuario |
SOLID |
Tecnología para organizar apps, información e identidades de forma descentralizada |
Node |
Es un entorno de ejecución para programas escritos en JavaScript |
Pod |
Contenedor de datos de un usuario el cual tiene que dar permiso para que las aplicaciones accedan a él |
Shippo API |
API para la consulta de gastos de envio |
MongoDB Atlas |
Nube de MongoDB donde está hosteada la base de datos |
Tailwind CSS |
Framework para la creación de interfaces de usuario |
BCrypt |
Librería que encripta contraseñas mediante una función hash |
Jsonwebtoken |
Estándar abierto basado en JSON para crear un token que sirva para enviar datos entre aplicaciones o servicios y garantizar que sean válidos y seguros, además para menaejar la autenticación |
Gatling |
Programa para la realización de test de carga |
About arc42