Definición de frameworks y ambientes - dfgoUniandes/proyecto-final-uniandes-grupo-02 GitHub Wiki

Definición de frameworks y ambientes

¿Por qué se necesita un Framework?

En concreto, en el desarrollo de software, un framework es una estructura de soporte conceptual y tecnológica definida, generalmente, con artefactos o módulos de software específicos, que pueden servir como base para la organización y desarrollo de software.

Es decir, un framework es una especie de plantilla, esquema o estructura conceptual basada en tecnología que permite trabajar de una forma mucho más sencilla. De esta forma, se evitan posibles errores de programación.

Por tanto, un marco es un conjunto de herramientas y módulos que se pueden reutilizar para diferentes proyectos. Facilitando en varios aspectos el desarrollo, mejorando el tiempo, esfuerzo, organización.

Framework para pruebas.

Para el proyecto se seleccionara Cypress para pruebas E2E.

Cypress

Cypress es una herramienta Javascript de end-to-end testing. En otras palabras, permite comprobar que la performance de un producto de software recién desarrollado sea buena y corresponda con los requerimientos iniciales, utilizando la automatización.

Ventajas de poner en práctica Cypress.

El framework Cypress se puede descargar en unos segundos, para Mac, Linux o Windows, y está especialmente diseñado para facilitar el trabajo de los desarrolladores. Asimismo, te permite diseñar de manera sencilla diferentes tipos de tests y ver cómo se desenvuelve la aplicación en tiempo real.

Paralelamente, Cypress se basa completamente en una nueva arquitectura. Esta permite acceder a todos los elementos de un desarrollo, desde los objetos nativos hasta el tráfico en la red. Gracias a estas nuevas funcionalidades, el proceso de testing abarca todos los aspectos posibles y, por lo tanto, es más completo.

Además, resalta que Cypress testing se trate de un desarrollo de código abierto (), lo que posibilita la participación de toda la comunidad de desarrolladores para la mejora continua de la herramienta.

Cypress se ha convertido en una de las mejores alternativas para realizar test de software de manera rápida, completa y segura. Si quieres ver la herramienta en práctica, échale un vistazo a este webinar en el que nuestro invitado nos muestra la mejor manera de utilizar Cypress testing y sacar el máximo provecho de ello.

Framework para el componente web.

Para el proyecto se seleccionara Angular para desarrollar el componente web.

Angular

Angular es un Framework de JavaScript de código abierto escrito en TypeScript. Su objetivo principal es desarrollar aplicaciones de una sola página. Google se encarga del mantenimiento y constantes actualizaciones de mejoras para este framework.

Document Object Model (DOM) DOM (Document Object Model) trata un documento XML o HTML como una estructura de árbol en la que cada nodo representa una parte del documento.

image

Angular usa DOM regular. Hay que tener en cuenta que se realizan diez actualizaciones en la misma página HTML. En lugar de actualizar las que ya se actualizaron, Angular actualizará toda la estructura de árbol de las etiquetas HTML.

image

Angular es un marco modelo-vista-controlador (MVC) completo. Proporciona una guía clara sobre cómo se debe estructurar la aplicación y ofrece un flujo de datos bidireccional al tiempo que proporciona un DOM real.

Framework para el componente móvil.

Para el proyecto se seleccionara Ionic para desarrollar el componente movil.

Ionic

Ionic Framework es un SDK de frontend de código abierto para desarrollar aplicaciones híbridas basado en tecnologías web (HTML, CSS y JS). Es decir, un framework que nos permite desarrollar aplicaciones para iOS nativo, Android y la web, desde una única base de código. Su compatibilidad y, gracias a la implementación de Cordova e Ionic Native, hacen posible trabajar con componentes híbridos. Se integra con los principales frameworks de frontend, como Angular, React y Vue, aunque también se puede usar Vanilla JavaScript.

Ionic se caracteriza por ser un framework que:

Permite desarrollar y desplegar aplicaciones híbridas, que funcionan en múltiples plataformas, como iOS nativo, Android, escritorio y la web (como una aplicación web progresiva), todo ello con una única base de código. Ofrece un diseño limpio, sencillo y funcional. Emplea Capacitor (o Cordova) para implementar de forma nativa o se ejecuta en el navegador como una aplicación web progresiva. Está construido sobre tecnologías web: HTML, CSS y JavaScript. Se puede usar con los frameworks frontend más populares, como Angular, React y Vue.

image

Backend.

Para el proyecto se seleccionara Flask para desarrollar el backend.

Flask es un “micro” Framework escrito en Python y concebido para facilitar el desarrollo de Aplicaciones Web bajo el patrón MVC.

¿Por qué usar Flask?

  • Flask es un “micro” Framework: Para desarrollar una App básica o que se quiera desarrollar de una forma ágil y rápida Flask puede ser muy conveniente, para determinadas aplicaciones no se necesitan muchas extensiones y es suficiente.
  • Incluye un servidor web de desarrollo: No se necesita una infraestructura con un servidor web para probar las aplicaciones sino de una manera sencilla se puede correr un servidor web para ir viendo los resultados que se van obteniendo.
  • Tiene un depurador y soporte integrado para pruebas unitarias: Si tenemos algún error en el código que se está construyendo se puede depurar ese error y se puede ver los valores de las variables. Además está la posibilidad de integrar pruebas unitarias.
  • Es compatible con Python3.
  • Es compatible con wsgi: Wsig es un protocolo que utiliza los servidores web para servir las páginas web escritas en Python.
  • Buen manejo de rutas: Cuando se trabaja con Apps Web hechas en Python se tiene el controlador que recibe todas las peticiones que hacen los clientes y se tienen que determinar que ruta está accediendo el cliente para ejecutar el código necesario.
  • Soporta de manera nativa el uso de cookies seguras.
  • Se pueden usar sesiones.
  • Flask no tiene ORMs: Pero se puede usar una extensión.
  • Sirve para construir servicios web (como APIs REST) o aplicaciones de contenido estático.
  • Flask es Open Source y está amparado bajo una licencia BSD.
  • Buena documentación, código de GitHub y lista de correos.

Ambiente cloud para backend.

Para el proyecto se seleccionara AWS para el despliegue del proyecto.

Amazon Web Services (AWS) es la plataforma en la nube más adoptada y completa en el mundo, que ofrece más de 200 servicios integrales de centros de datos a nivel global.

AWS cuenta con una cantidad de servicios y de características incluidas en ellos que supera la de cualquier otro proveedor de la nube, ofreciendo desde tecnologías de infraestructura como cómputo, almacenamiento y bases de datos hasta tecnologías emergentes como aprendizaje automático e inteligencia artificial, lagos de datos y análisis e internet de las cosas. Esto hace que llevar las aplicaciones existentes a la nube sea más rápido, fácil y rentable y permite crear casi cualquier cosa que se pueda imaginar.