1. Introducción y objetivos
El objetivo final del proyecto es desarrollar una tienda online, en este caso venderemos juguetes.
1.1. Descripción general de los requisitos, características esenciales y objetivos comerciales
El objetivo final de la aplicación es crear un sistema de venta online que respete la privacidad de los clientes siguiendo los principios SOLID, para ello se usarán los PODs de los usuarios siempre que den los permisos necesarios.
Los requisitos más importantes son:
-
Los clientes deben tener la posibilidad de seleccionar y encargar productos para comprarlos.
-
Se calcularán los costes de envío consultando la dirección del usuario en su POD (calculando los costes en función de la distnacia del centro de distribución a la dirección del usuario). Este cálculo se llevará a cabo una vez el cliente haya seleccionado los productos a comprar y para ello ha de estar registrado en la aplicación.
-
Se mostrarán los costes finales de los productos a comprar por un cliente. Una vez el cliente decida comprarlos, se registrará la venta como realizada y "se pasará a su envío".
-
Los clientes podrán en todo momento ver sus pedidos realizados.
-
El desarrollo de la aplicación será mediante React y TypeScript para el Front-end y Node.js y Express para el Back-end además de MongoDb para la gestión de la base de datos.
-
La aplicación deberá ser accesible y estar desplegada usando un sistema de integración continua. La tecnología de despliegue se especificará en el punto 4.
La tienda online desarrollada se encargará de vender juguetes infantiles.
-
En el siguiente enlace se puede observar de manera más exhaustiva los requisitos e introducción a la aplicación a desarrollar: https://arquisoft.github.io/course2122/labEnunciadoPractica.html
-
Para acceder directamente a la página principal de SOLID usar el siguiente enlace: https://solidproject.org/
-
Para el desarrollo en React o TypeScript se puede consultar: https://reactjs.org/ o https://www.typescriptlang.org/ respectivamente.
1.2. Objetivos de calidad
Los cinco objetivos de calidad para la arquitectura que hemos decido seguir (basándonos en nuestras capacidades y los requisitos de la aplicación) son los siguientes. Junto con ellos se muestra una breve descripción de lo que pretendemos conseguir con cada uno de ellos y la prioridad que le damos:
Prioridad | Objetivo de calidad | Descripción del objetivo |
---|---|---|
1 |
Usabilidad |
El sistema deberá ser fácil de usar y no requerir de conocimientos específicos o complejos para poder realizar compras. Se debería poder añadir a un encargo, comprar y ver pedidos realizados sin mayor complicación. |
2 |
Comprensibilidad |
El sistema deberá ser fácil de entender por los usuarios, en todo momento deben saber cómo funciona la aplicación con poco esfuerzo. Los elementos gráficos ayudarán a la Comprensibilidad. |
3 |
Seguridad |
El sistema deberá ser seguro en cuanto a los datos personales de cada usuario y también en lo que se refiere a la navegabilidad por la aplicación, gestión de imágenes de los productos, etc. |
4 |
Testabilidad |
El sistema deberá ser testable para poder comprobar que el funcionamiento es el correcto. También influye en otros atributos de calidad como la seguridad. Se realizarán pruebas unitarias, de aceptación y de carga para asegurar este campo. |
5 |
Atractivo |
El sistema tendrá una interfaz atractiva, es decir, la interfaz ayudará en aspectos como la usabilidad o comprensibilidad y no entorpecerá el uso de la aplicación por parte de los usuarios. |
1.3. Partes interesadas
Las partes interesadas en el sistema serán:
Rol/Nombre | Contacto | Expectativas |
---|---|---|
Arquitectos del software |
Mario Lada Martínez, Alejandro Galán Freire, Aarón García García, Rafael Muñiz Reguera y Jorge López Peláez. |
Deben conocer la arquitectura y trabajar en ella, además, deberán tomar decisiones importantes. |
Desarrolladores |
En este caso coinciden con los arquitectos del software. |
Deberán desarrollar el código de la aplicación. Necesitarán la documentación para orientarse en algunos aspectos. |
Cliente |
La empresa de venta de productos que nos contrata para crear el sistema de venta online. En este caso se corresponde con el conjunto de profesores de la asignatura. |
Deberán dar los requisitos funcionales más importantes para el desarrollo de la aplicación y un conjunto de restricciones. Además, esperan una aplicación que cumpla con los objetivos. |
Administrador BD |
Es el que nos asministra la base de datos. |
Espera que el trabajo con la base de datos sea lo más fácil posible. |
Compradores |
Son los usuarios finales que utilizarán el servicio de compra online. |
Esperan como mínimo que la aplicación sea fácil de usar y de comprender. |
2. Restricciones de la arquitectura
Restricciones técnicas
Restricción | Explicación |
---|---|
Implementación |
La aplicación estará formada por un front-end utilizando React con TypeScript y un back-end utilizando NodeJS con Express |
Seguridad |
Para mantener la privacidad de los usuarios se almacenará toda su información privada en PODs. |
Despliegue |
La aplicación será accesible de manera continua y utilizará un sistema de integracion continuo. |
Restricciones organizacionales
Restriccion | Explicacion |
---|---|
Equipo |
-Alejandro Galán Freire - Aarón García García - Mario Lada Martínez - Jorge López Peláez - Rafael Muñiz Reguera. |
Configuracion y control del repositorio |
Toda la aplicación se encuentra en un repositorio privado de github donde existe una rama develop general donde se irá uniendo el trabajo de todos y cada persona del equipo trabajará desde una rama propia. Cada miembro puede tener varias ramas ya que se creará una por funcionalidad nueva a implementar. |
Fecha límite |
La fecha límite del proyecto es el 4 de mayo. |
Convenciones
Convención | Explicación |
---|---|
Documentación de la arquitectura |
Estructura basada en la plantilla arc42. |
Convenciones de codificación |
El proyecto utiliza las convenciones de código para el lenguaje de TypeScript y utilizará la guía de estilo de Node. |
Idioma |
Español. |
3. Alcance y contexto del sistema
3.1. Contexto empresarial
Dede es una aplicación que tiene como objetivo vender de manera online juguetes infantiles. Los usuarios podrán hacer compras de estos productos con la mayor privacidad posible debido a que nuestra aplicación estará integrada con SOLID, de tal manera los datos más privados de los clientes utilizados por la misma estarán almacenados en los POD de los usuarios permitiendo así un mayor control de los datos personales.
DIAGRAMA DE CONTEXTO EMPRESARIAL
TABLA DE CONTEXTO EMPRESARIAL
Entidad | Entrada | Salida |
---|---|---|
Cliente |
Contenido y operaciones permitidas en la tienda |
Visitas a las distintas páginas de la app web a través de la nube. |
Heroku |
interfaz de usuario (frontend) y datos de la base de datos, apis…(backend) para su respectiva visualización en la nube |
Despliegue tanto del frontend como del backend e información de la app para el usuario |
Frontend (interfaz usuario) |
Solicita a Heroku su despliegue y gestiona la API de logueo del usuario |
Muestra todas las opciones de la aplicación de manera visual para el cliente y esta es mandada a heroku para ser desplegada en la nube |
Backend (datos almacenados y peticiones) |
Solicita a Heroku su despliegue y recibe/modifica los datos de la base de datos |
Gestiona los datos de las base de datos y se los transmite al frontend para poder visualizar y realizar operaciones. También se envían a Heroku para que esta parte sea desplegada en la nube |
Auth0 |
Se corresponde con la opción de inicio/cierre de sesión del frontend |
Loguea al usuario en la aplicación desde esta o desde Google |
POD |
Solicitud de datos del cliente por parte de la app. |
Respuesta a solicitud. |
Base de datos |
Gestión de los datos a través de API rest de la aplicación |
respuesta a las peticiones de esa API rest (productos, usuarios, pedidos…) |
Geocode |
Petición por parte del backend de las coordenadas de una dirección de un usuario extraída a través de los POD |
Devolución de las coordenadas |
Cloudinary |
Petición al añadir juguete que transforma la URL de la imagen en una URL de cloudinary pública que es la que se almacena en la base de datos. |
Almacenamiento en la nube de la imágen. |
3.2. Contexto tecnico
DIAGRAMA DEL CONTEXTO TECNICO
TABLA DEL CONTEXTO TÉCNICO
Elemento | Funcionalidad/Canal |
---|---|
Cliente |
Usuario que interactuará con la app web a través de internet (https). |
Servidor DeDe |
Aplicación web con la que interactuarán y comunicarán los usuarios utilizando PODs. Se dividirá en frontend, parte visual con la que interacciona el usuario, y backend, parte que se encarga de gestionar los datos y peticiones de la aplicación internamente |
SOLID |
Descentralizado/externo a la aplicación. Proveedor de los PODs. |
POD |
Almacena los datos privados del cliente que la aplicación solo necesitará para realizar las compras, en nuestro caso la dirección principlamente. Buena privacidad para los usuarios. |
HTTPS |
Protocolo seguro de peticiones y respuestas con el servidor. |
MERN |
M→ MongoDB (persistencia) / E→ Express (peticiones) / R→ React (Front-End) / N→ Node (Back-End). |
Auth0 |
API que se encarga de gestionar el inicio y cierre de sesión por parte de los usuarios |
Geocode |
API que se encargará de aportar las coordenadas de una dirección concreta con el objetivo de calcular los gastos de envío posteriormente |
Cloudinary |
API que almacenará las imágenes de los productos en la nube. |
4. Estrategia de solución
Como base, vamos a utilizar el lenguaje de programación TypeScript, impuesto en los requisitos de diseño. Es, en esencia, un superconjunto de JavaScript que añade tipado. Para realizar nuestro sistema de ventas hemos decidido utilizar la MERN stack. Esto incluye los siguientes tecnologías:
-
MongoDB: Es una base de datos NoSQL que facilita el trabajo con el Back-End. Es una decisión de diseño propia.
-
Express js: Es un marco que se ha superpuesto a Node JS y se puede utilizar para crear el Back-End de nuestra web. Fue precisamente creado para la creación de sitios web.
-
React JS: Es un framework creado por Facebook ampliamente utlizado para crear componentes de la interfaz de usuario. Es un requisito de diseño por lo que no tenemos nada que decidir.
-
Node JS: Es un entorno de ejecución de JavaScript que permite ejecutar JavaScript del lado del servidor y no en un navegador.
Hemos utilizado pricipalmente el Modelo Vista Controlador con el fin de generar un proyecto claramente estructurado y fácilmente ampliable.
Para alcanzar la mayor usabilidad posible de nuestra web, intentaremos cumplir con todos los criterios de usabilidad que sabemos hasta el momento y la comprobaremos en diferentes validadores de internet. Intentaremos disponer el contenido de la manera más intuitiva posible, haciendo pruebas con usuarios a medida que vamos desarollando la aplicación para intentar sacarle el máximo partido.
No tenemos una gran cantidad de requisitos funcionales por lo que podemos producir una solución sencilla de utilizar y comprensible
Garantizamos la seguridad del usuario mediante el uso de PODs, citados en los requisitos del sistema. También la aplicación será segura al introducir la información confidencial en un fichero .env el cual será privado.
Testabilidad, la arquitectura permitirá probar fácilmente todos los componentes principales del sistema.
El sistema va a ser desarrollado completamente por el equipo (utilizando debidamente los recursos mencionados) dividiendo el trabajo en dos partes claras: Front-End y Back-End. En cualquier caso, se irán compartiendo todos los avances y cualquier duda intentando seguir una metodología ágil a través de reuniones frecuentes.
El sistema de ventas se compondrá de diversas páginas web implementadas mediante TypeScript y React principalmente. La página principal desplegará diferentes categorías de juguetes y un conjunto de juguetes destacados (o filtrados por categorías). Tendremos acceso a nuestro carrito y a nuestra cuenta, con lo que también podemos ver pedidos realizados anteriormente. Una vez entras en una categoría de juguetes se desplegarán todos aquellos que estén presentes en la base de datos.
La interfaz gráfica se implementará desde el Front-End y se intentará cumplir la máxima usabilidad posible, teniendo en cuenta cualquier tipo de usuario
5. Vista de bloques de construcción
5.1. Sistema General de Caja Blanca
En este apartado vamos a estudiar más a fondo la estructura de nuestra aplicación, tanto cada uno de sus componentes como las relaciones entre ellos. Este sería el diagrama que muestra todos estos elementos y como se relacionan.
5.1.1. Nivel 1
Esquema más general de la aplicación. Vemos los componentes generales de la misma, siendo DeDe la aplicación en sí, con la que interactúa el usuario el cual ha de poseer un POD en caso de que quiera realizar compras en nuestro sitio web. Por otro lado, la aplicación tendra una base de datos asociada para almacenar la información que se considere necesaria.
Caja | Función |
---|---|
DeDe |
Aplicación completa que ofrece servicios a sus usuarios, con una funcionalidad y división interna que describiremos a continuación. |
5.1.2. Nivel 2
Aquí vamos a explicar los dos núcleos de la aplicación, Frontend y Backend.
Caja | Función |
---|---|
WebApp |
Interfaz gráfica de la aplicación. Es la parte con la que interactúa el usuario y que intercambia información con la restapi. |
Restapi |
Capa de acceso a datos y control de las peticiones procedentes del usuario a través del webApp. |
5.1.3. Nivel 3
A continuación el último nivel en el que vamos a descomponer los dos componentes internos de la aplicación.
Caja | Función |
---|---|
Home |
Página principal de la aplicación. |
Juguetes |
Página que muestra los productos de la aplicación. En ella se encuentra un filtro para especificar los juguetes por categoría. |
Registrarse |
Botón que nos reenvía a un formulario de registro perteneciente a la API de Auth0, la cual usamos para gestionar los usuarios de nuestro sitio. |
Historial Pedidos |
Ventana que nos muestra los pedidos que ha realizado el usuario registrado en nuestra aplicación. |
Administrar productos |
Funcionalidad para los administradores de la aplicación. Muestra todos los productos existentes y las opciones de editar los mismos o incrementar su stock en el almacén |
Añadir producto |
Otra funcionalidad para administradores. Tiene una ventana específica para realizar esta operación que consiste en rellenar un formulario con los datos del nuevo juguete que se quiere añadir. |
6. Vista de tiempo de ejecución
6.1. Compra de productos
6.2. Añadir productos
6.3. Filtrar productos
6.4. Iniciar sesión
6.5. Cierre de sesión
6.6. Editar productos
6.7. Histórico de pedidos
7. Vista de implementación
7.1. Infraestrutura Nivel 1
Este sería un diagrama que muestra la relación entre los distintos componentes de la aplicación. .Justificación El usuario accederá a la parte de interfaz de usuario que compone nuestra aplicación (webapp). Esta a su vez se comunicará con el backend (restapi) que será la encargada de comunicarse con la base de datos (mongoDb) y de trabajar con la API de gastos de envío. La manera de acceder por parte del usuario a todo esto es a través de la nube, es decir, con un navegador de su dispositivo. Para ello, se tiene que realizar el despliegue de la aplicación. Generamos entonces los contenedores Docker con las respectivas imágenes de webapp y restapi y procedemos a realizar el despliegue en Heroku. De ahí todas estas relaciones mostradas en el diagrama.
7.2. Infraestrutura Nivel 2
7.2.1. Heroku
Heroku desplegará la aplicación de manera automatizada a través del workflows configurado en nuestro proyecto.
7.2.2. Contenedor Docker
Dicho elemento es el encargado de generar las imágenes para la webapp y restapi que posteriormente serán utilizadas para el despliegue
7.2.3. Webapp
Interfaz de usuario que se comunicará con el usuario, internamente usa diversas APIs como Auth0 o trabaja con PODs de SOLID para la seguridad. Realizado con React
7.2.4. Restapi
Se encarga de comunicarse con la base de datos y la API de gastos de envío. Realizada con Node.js
7.2.5. Ordenador
Ordenador o dispositivo del usuario que interaccionará con nuestra aplicación
7.2.6. Navegador
Lugar a través del cual el usuario se comunica con nuestro sitio web
7.2.7. PODS
Elementos de almacenamiento de información privada del usuario que aumentará la seguridad del mismo en nuestra aplicación. Internamente el usuario ha de crearse una cuenta con uno de los proveedores existentes y almacenar la información que el mismo desee de manera pública o privada.
7.2.8. Auth0
API que permite al usuario iniciar sesión en nuestro sitio. Nos permitirá trabajar con sus datos desde la aplicación. Esta API además gestionará las contraseñas de los usuarios sin necesidad de tener que introducirlas en nuestra base de datos, algo que incrementará la seguridad de la aplicación.
7.2.9. GeoCode
API a la que le pasas una dirección y te devuelve ciertos datos. Para nuestro proyecto son de utilidad la latitud y longitud de la misma. Se utilizará la fórmula de Haversine para calcular la distancia en km (previamente diferencia de latitudes y longitudes) entre dos ubicaciones.
7.2.10. MongoDb
Entorno que gestionará la base de datos. Se trata de una base de datos NO-SQL que nos aporta gran libertad y comodidad. Además de adapta muy bien a node.js
8. Conceptos transversales
8.1. Persistencia
Utilizaremos una base de datos de MongoDB puesto que utilizaremos la pila MERN (MongoDB, Express, React, Node). El almacenamiento de las imágenes se realizará a través de la API Cloudinary, almacenando estas en una nube que está constantemente corriendo y, por tanto, nos aportará usabilidad y escalabilidad.
8.2. Interfaz de Usuario
La interfaz de Usuario de DeDe estará codificada utilizando TypeScript y el framework React. No ha sido una decisión propia de diseño, si no que se imponía en los requisitos de alto nivel de la aplicación.
8.3. Manejo de Sesión
Los usuarios podrán iniciar sesión para realiar su compra a través de su respectivo POD siguiendo los principios SOLID, con el que garantizamos su privacidad. De esta manera obtenemos la dirección del usuario necesaria para calcular los gastos de envío de los pedidos. Por otro lado, el inicio de sesión con la aplicación en sí será a través de la API Auth0, que se encargará de gestionar a todos los usuarios que hayan iniciado sesión en nuestro sitio. Además, almacenaremos en la base de datos los email de aquellos usuarios que se hayan registrado para poder así gestionar sus pedidos.
8.4. Seguridad y privacidad
Como ya hemos mencionado anteriormente, se garantiza la privacidad y seguridad del usuario, obteniendo cualquier tipo de información a través del pod del mismo y siguiendo los principios SOLID, ya que solo se podrán acceder a los datos que el usuario de permisos. Además, las contraseñas de inicio de sesión de los usuarios no se encontrarán almacenadas en la base de datos ni visibles (en caso de que sí se podrían llevar a cabo métodos como la encriptación de las mismas).
8.5. Internacionalización
La web se lanzará inicialmente en castellano, no descartamos la posibilidad de traducirla al inglés.
8.6. Gestión de desarrollo
La web se despliega una vez se pone en marcha el servidor.
8.7. Modelo de Dominio
Nuestro sistema está compuesto por tres entidades, juguete, pedido y usuario. Cada uno con sus atributos y se relacionan entre sí de tal manera que un juguete puede pertenecer a varios pedidos así como que un pedido pueda tener varios juguetes. Por otro lado, un pedido es de un solo usuario mientras que este puede tener asignados varios pedidos. Cabe destacar que el atributo cantidad en pedido va relacionado con cada juguete en concreto, refiriéndose al número de unidades de cada uno de ellos.
8.8. Testeable
El sistema dispondrá de diferentes tipos de pruebas para asegurarnos de su correcto funcionamiento. Estas serán pruebas unitarias para probar su funcionalidad, pruebas de aceptación para hacerlo pero de manera automática por el navegador y por último pruebas de carga para ver cuantos usuarios y peticiones es capaz de soportar nuestra aplicación.
9. Decisiones de diseño
En este apartado no solo se van a comentar las decisiones tomadas por el equipo sino también alguna de las restricciones establecidas por los profesores de la asignatura.
Decisión/Restricción | Tipo | Utilidad |
---|---|---|
Node |
Restricción |
Lenguaje a utilizar para el desarrollo del backend de la aplicación |
React |
Restricción |
Lenguaje a utilizar para el desarrollo del frontend de la aplicación |
Typescript |
Restricción |
Lenguaje en el que se realizará el desarrollo de la aplicación |
SOLID |
Restricción |
Plataforma de gestión de los POD |
Express |
Decisión |
Framework que nos facilita el trabajo con Node para el backend |
MongoDb |
Decisión |
Para gestionar la base de datos |
GeoCode |
Decisión |
API para calcular los gastos de envío de los pedidos |
Heroku |
Decisión |
Para realizar el despliegue en la nube de la aplicación |
Auth0 |
Decisión |
Para hacer el registro e inicio de sesión en la aplicación. Permite hacerlo a través de Google |
BootStrap |
Decisión |
Para añadir estilos a los elementos |
Dotenv |
Decisión |
Para proteger la información privada de la aplicación (url base de datos, ubicación de la empresa…) |
Cloudinary |
Decisión |
Para almacenar las imágenes que utilicemos en nuestra aplicación (juguetes, logo…) en la nube y aumentar la usabilidad y escalabilidad |
10. Requisitos de calidad
10.1. Arbol de calidad
10.2. Escenarios de calidad
Los siguientes atributos estan descritos en el epigrafe 1.2.
La prioridad de los escenarios viene dada por la importancia para el cliente y por la dificultad de desarrollo por los arquitectos (respectivamente), tiene 3 valores (Bajo, Medio, Alto)
Id | Atributo de calidad | Escenario de calidad | Prioridad (Cliente/Arquitecto) |
---|---|---|---|
US1 |
Usabilidad |
Los usuarios deben poder usar la aplicacion sin ningun tipo de problema, haciendo que comprar un producto sea una tarea sencilla |
Alto/Bajo |
US2 |
Usabilidad |
La opción de añadir al carrito un producto debe estar muy clara y fácilmente accesible, así como realizar la compra |
Alto/Bajo |
COM1 |
Comprensibilidad |
La aplicacion debe ser lo mas intuitiva posible para el usuario, para que sea capaz de realizar cualquier funcion dentro de ella |
Alto/Medio |
COM2 |
Comprensibilidad |
En caso de tener funciones distintas a las habituales de una tienda online, es decir, no usar convenciones, se deberán explicar y mostrar de manera clara |
Alto/Medio |
SEG1 |
Seguridad |
Si en cualquier momento la aplicación no es segura (por ejemplo debido a malware) se deberá mostrar un mensaje de que no es seguro el uso del sistema o incluso incapacitar el sistema hasta que se resuelva |
Alto/Alto |
SEG2 |
Seguridad |
Todos los datos de los usuarios no pueden ser expuestos a terceros |
Alto/Alto |
TEST1 |
Testabilidad |
Si se da el caso de que se necesite añadir nuevas funcionalidades a la tienda online, se deberá poder probar antes de su despliegue |
Medio/Medio |
TEST2 |
Testabilidad |
La aplicacion sera sometida a pruebas unitarias, de aceptación y de carga, para probar que funcione correctamente |
Medio/Medio |
ATRA1 |
Atractivo |
Si la tienda incorpora opciones inusuales en tiendas online, se deberá usar la interfaz para que sean fácilmente usables y accesibles |
Medio/Bajo |
ATRA2 |
Atractivo |
La aplicacion debe llamar la atencion al usuario, implementando opciones poco habituales o por una interfaz llamativa y fácil de usar |
Bajo/Bajo |
11. Riesgos y deudas técnicas
Es la primera vez que trabajamos con este framework. Aunque hemos aprendido bastante durante la implementación del sitio web sí que es verdad que en muchas ocasiones nos hemos visto con problemas para realizar alguna funcionalidad debido a falta de conocimiento en aspectos como puede ser la sintaxis del lenguaje. Sí que es cierto que la documentación es muy buena y tiene una gran cantidad de ejemplos, ayudándonos con el desarrollo.
Nos pasa lo mismo que con React. Hemos tenido que ir aprendiendo el lenguaje a medida que ibamos desarrollando la aplicación. También tiene un documentación exhaustiva al ser un framework muy utilizado en el mundo del desarrollo web.
Estamos limitados a una fecha para entregar el proyecto, por lo que debemos optimizar el trabajo lo máximo posible, algo que hará que aparezca más deuda técnica que si tuvieramos el tiempo que quisiéramos para perfeccionar todo lo necesario.
No tenemos mucha experiencia trabajando en equipo, y en ocasiones no es fácil coordinarse. Haremos reuniones cada poco tiempo con el fin de poner nuestro trabajo al día y avanzar uniformemente.
Nos han surgido muchos problemas con el despliegue, no hemos sido capaces de realizarlo en la plataforma AWS y de momento estamos en progreso para hacerlo en Heroku. Es una operación de la que no teníamos conocimiento inicialmente y esto nos ha llevado a tener que investigar y solventar una gran cantidad de inconvenientes.
Tecnología desconocida con muy poca documentación y ejemplos.
Riesgo | Explicación | Solución |
---|---|---|
Falta de conocimiento de React |
Es la primera vez que trabajamos con este framework, así no tenemos experiencia con él. |
La documentación de React es muy buena y cuenta con una gran cantidad de ejemplos y facilidades, por lo que aprenderemos a desenvolvernos rápido. |
_Falta de conocimiento de Node.js |
Es la primera vez que trabajamos con este framework, así no tenemos experiencia con él. |
La documentación es muy buena y cuenta con una gran cantidad de ejemplos y facilidades, por lo que aprenderemos a desenvolvernos rápido. |
Tiempo |
Estamos condicionados por una fecha de entrega |
Debemos optimizar tanto el trabajo individual como colectivo lo máximo posible |
Desconococimiento de PODs de SOLID |
Es una tecnología muy nueva, su documentación es muy escasa y se han reportado varios bugs |
Intentaremos informarnos de cualquier manera posible sobre esta tecnología, ya que tampoco tiene muchos ejemplos |
Despliegue |
Problemas en todas las plataformas en las que intentamos realizarlo |
Nos informamos a través de diversas fuentes así como con la ayuda de los profesores para realizar la misma. |
Deuda técnica | Explicación |
---|---|
Internacionalización |
Aspecto que ha quedado sin realizar debido a falta de tiempo. Nos habría gustado realizarlo |
Errores de conexión |
Puede ocurrir que la conexión a la red sea muy débil y que en consecuencia la aplicación trabaje más lento |
Usabilidad |
Operaciones como pasar validadores o probar la aplicación con usuarios reales antes de la presentación no han sido realizadas también debido al tiempo |
Despliegue |
Todavía no hemos logrado desplegar exitosamente la aplicación |
Usabilidad |
Queda por probar la aplicación con usuarios reales así como pasar validadores. |
Script test e2e |
Nos da error al ejecutar el comando debido a que no detecta 'jest' |
Testing |
Problemas con el testing de carga por Auth0, con los e2e en funcion del hardware y con los unitarios debido a uso de componentes como navigate. |
12. Glosario
Término | Definición |
---|---|
SOLID |
SOLID es una especificación que permite a las personas almacenar sus datos de forma segura en almacenes de datos descentralizados llamados PODs. |
POD |
Los PODs son como servidores web personales seguros para datos. Cuando los datos se almacenan en el POD de alguien, controlan qué personas y aplicaciones pueden acceder a ellos. |
REACT |
React es una biblioteca de JavaScript para construir interfaces de usuario interactivas. Además, se encarga de actualizar y renderizar de manera eficiente los componentes correctos cuando los datos cambien. |
TypeScript |
Sirve para el desarrollo de aplicaciones con Javascript a gran escala. |
NODE.js |
Node.js es un entorno de tiempo de ejecución de JavaScript. Incluye todo lo que se necesita para ejecutar un programa escrito en JavaScript. También aporta muchos beneficios y soluciona gran cantidad de problemas. |
Express |
Es el framework web más popular de Node. |
Heroku |
Es la plataforma para la creación de aplicaciones que hemos usado. |
Auth0 |
API que permite la autenticación en aplicaciones de manera sencilla y eficaz. |
Dotenv |
Usada para manejar variables de entorno y nos sirve para proteger la información privada. |
MongoDB |
Es un sistema de base de datos NoSQL orientado a documentos de código abierto. |
BootStrap |
Es un framework front-end utilizado para desarrollar aplicaciones web. |
Cloudinary |
Api que se encarga de almacenar las imágenes de los juguetes en la nube, en una cuenta creada por nosotros a través de una api key |
GeoCode |
Api para calcular los gastos de envío, obteniendo de ella datos de una dirección específica. |
About arc42
arc42, the Template for documentation of software and system architecture.
By Dr. Gernot Starke, Dr. Peter Hruschka and contributors.
Template Revision: 7.0 EN (based on asciidoc), January 2017
© We acknowledge that this document uses material from the arc 42 architecture template, http://www.arc42.de. Created by Dr. Peter Hruschka & Dr. Gernot Starke.