Postal Project
09.30.2022
─
Fernando Acuña, Fredy Fajardo, Shalem Janna, Kairo Tapias
Universidad del Norte
Para el siguiente desarrollo web se diseñará e implementará por localidad una guía turística que permita a los usuarios escoger y filtrar diferentes parámetros para la creación de rutas óptimas según su tiempo, época del año, precio y movilidad.
Modelar, diseñar, implementar y desplegar una aplicación web para facilitar la búsqueda o la creación de rutas turísticas alrededor del Atlántico y eventualmente extensible para cualquier región geográfica.
El alcance del proyecto depende de distintos parámetros para los cuales pueden ser de una manera u otra accesibles, por parte del grupo de desarrollo se refiere de igual manera a términos económicos. No se requiere de una gran inversión para desplegar la aplicación desde un principio, lo que facilita el despliegue y funcionalidad de la misma. Lo ideal es entregar una aplicación en la cual crear pequeñas rutas turísticas por distintas localidades de manera intuitiva, de forma que esta pueda ser utilizada eventualmente por distintos guías locales y estos a su vez sean capaces de crear una ruta a partir de sus conocimientos culturales y experiencia. Por lo tanto, parámetros cómo la cantidad de datos o almacenamiento que nuestra aplicación pueda sostener archivos o imágenes y almacenar cuantas más rutas sea posible, a su vez minimizando el riesgo de fallos al tener muchos accesos a la página siendo este nuestro enfoque principal, debido que sin esto la escalabilidad proyecto se ve comprometida al igual que la tasa o probabilidad de éxito.
Metodología para el desarrollo
La metodología que se usará para el desarrollo ágil del proyecto es la metodología Scrum, que permite la organización del proyecto en entregables (sprints) los cuales tendrán una duración de 4 semanas cada uno.
Etapa / Sprints | Producto | Responsable | Tiempo |
Identificación del equipo y stakeholders | Equipo de trabajo estable | Todos | 1 semana |
Planeación | Planeación del producto al cual nos vamos a enfocar y su público | Equipo Scrum | 2 semanas |
Identificación de los requerimientos | Product BackLog / Planeación de los Sprint y saber las verdaderas necesidades | Product Owner / Stakeholders | 2 semanas |
Diseño | Tecnologias / Arquitectura | Equipo Scrum | Sprint 1, 2, 3, 4 |
Implementación | Desarrollo del Producto como una herramienta útil y óptima | Equipo Scrum | Sprint 1, 2, 3, 4 |
Testeo | Verificación de requerimientos y funcionalidades | Equipo Scrum | Sprint 1, 2, 3, 4 |
Despliegue | Producto en producción (Heroku) | Equipo Scrum | 1 Semana |
Marco conceptual General
Ingeniería del Software: la ingeniería de software es una disciplina formada por un conjunto de métodos, herramientas y técnicas que se utilizan en el desarrollo de programas informáticos, más conocidos como softwares. Para nosotros, este servicio trasciende a la programación, que es la base para crear una aplicación.
Procesos de Software: define cómo manejar los cambios y liberaciones a sistemas de software existentes.
Arquitectura de Solución: en el contexto del Marco de Referencia de Arquitectura Empresarial del MinTIC, una solución tecnológica es una actividad de negocio cuya operación es apoyada por elementos tecnológicos que están dentro o fuera de la entidad, ya sea a través de uno o varios sistemas de información, bases de datos, servicios tercerizados de procesamiento, almacenamiento, entre otros.
Modelo B2C: se basa en transacciones entre empresas o profesionales y clientes finales. El consumidor particular está en continua relación con negocios B2C [1].
Application Programming Interface: “Interfaz de Programación de Aplicaciones. En el contexto de las API, la palabra aplicación se refiere a cualquier software con una función distinta. La interfaz puede considerarse como un contrato de servicio entre dos aplicaciones. Este contrato define cómo se comunican entre sí mediante solicitudes y respuestas. La documentación de su API contiene información sobre cómo los desarrolladores deben estructurar esas solicitudes y respuestas [2].”
La arquitectura para el desarrollo de la aplicación web se cimenta sobre framework de tipo MVC cómo lo es Django. En primera medida se implementará el diseño previamente mencionado de rutas turísticas pre seleccionadas basado en índices culturales y especialmente movimiento económico en la región para determinadas fechas. Eventualmente a partir de este modelo y con la recolección de algunos cientos de datos por medio de la interacción de los clientes y la plataforma, se busca que el modelo se vuelva más data driven. Debido a esto, el sistema se busca implementar de manera que permita de alguna manera u otra recolectar datos necesarios que eventualmente ayude a develar mejoramientos en el uso de la aplicación.
Nota: Diagrama de la arquitectura Modelo Vista Controlador (MVC).
El patrón de diseño MVC es propicio para este tipo de aplicación en dónde es fundamental la separación de la interfaz de usuario, los datos recolectados para su posterior uso dependiendo especialmente de la rentabilidad de la compañía y la lógica por detrás de la aplicación para su correcto funcionamiento [3].
Como arquitectura de referencia Azure se seleccionó “Intelligent apps using Azure Database for PostgreSQL” [4]. PostgreSQL es soportado por Django, y es quizá la mejor opción en cuanto a bases de datos se trata para desarrollar una aplicación con este framework. Además permite la integración a futuro, cuando la cantidad de datos se vuelve intratable para el análisis manual, de inteligencia artificial para el análisis de datos.
Nota: Arquitectura solución para aplicaciones inteligentes con Azure Database for PostgreSQL
Hitos del proyecto: El proyecto tendrá en principio tres momentos claves, no de igual magnitud de tiempo o dificultad, pero igual de importantes.
El primero corresponde a la implementación eficaz y óptima de la aplicación. Si el algoritmo que se diseña para desplegar las rutas y/o hacer los cálculos es muy ineficiente, la aplicación no podría ser sostenible en lo absoluto y se reduciría su posterior escalabilidad.
El testeo. Una vez se puedan diseñar las rutas, se tiene que verificar que está si sea una aplicación realizada en torno al usuario. Es decir, de nada nos sirve una aplicación que solamente sea de fácil acceso a los programadores cuando el ideal de ella misma es que guías turísticos aledaños a una región sean los encargados de poder diseñar en base a su experiencia.
Y por último el despliegue, el despliegue es el último paso una vez aprobados los dos anteriormente, es fundamental hacerlo de la manera correcta, debido a que al ser una aplicación del público o para el público, la opinión de estos sobre ella es extremadamente importante. En definitiva habría que hacer un producto lo suficientemente competente cómo para aún en su fase inicial pueda ser recomendada entre usuarios.
Semana 1-5: Landing page, establecimiento de métodos de trabajo (planeación: Scrum) y socialización de lineamientos (modelados).
Semana 6-10: Diseño de arquitectura, inicialización de implementación para la lógica funcional y nuevos ajustes al cronograma.
Semana 11-15: Revisión de implementación, socialización y reevaluación de sprints o entregables.
Semana 16: Entrega prototipo.
CRONOGRAMA DE ACTIVIDADES | |||||||||||||||||||||||||
Septiembre | Octubre | ||||||||||||||||||||||||
ACTIVIDADES | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
Definición de componentes | |||||||||||||||||||||||||
Modelado y diseño de aplicación | |||||||||||||||||||||||||
Selección e implementación plantilla Bootstrap en React (prototipo) | |||||||||||||||||||||||||
Manejo de Git | |||||||||||||||||||||||||
Definición de componentes | |||||||||||||||||||||||||
Creación de formularios | |||||||||||||||||||||||||
Simulación solicitudes API | |||||||||||||||||||||||||
Creación base de datos relacional | |||||||||||||||||||||||||
Creación del proyecto en Django | |||||||||||||||||||||||||
Back end | |||||||||||||||||||||||||
Listado de dependencias | |||||||||||||||||||||||||
Creación de módulos | |||||||||||||||||||||||||
Módulos de autenticación y autorización de usuarios | |||||||||||||||||||||||||
Implementación conectividad con la base de datos | |||||||||||||||||||||||||
Definición de requerimientos para el despliegue de la aplicación |
Modelo de Requerimientos
Nos permite describir de manera básica las funcionalidades del Software/aplicación.
Modelo de Casos de Uso
Nos permite describir las interacciones de los usuarios con la aplicación.
Modelo de Componentes
Nos permite visualizar de qué manera interactúan los componentes más grandes de la aplicación.
Modelo de despliegue
Nos permite describir las conexiones entre hardware y software.
GitHub Project
SJanna/Postal-Project: Tourist guide application (github.com)
Bibliografía
[1] Eduardoaf[online]. Available: https://eduardoaf.com/blog/php/arquitectura-en-3-capas-arquitectura-mvc-y-la-poo-i-6
[2] AWS[online]. Available: https://aws.amazon.com/es/what-is/api/
[3] Infoautónomos[online]. Available: https://www.infoautonomos.com/blog/emprendimiento-b2b-o-b2c-modelo-de-negocio
[4] Azure[online] Available: https://docs.microsoft.com/en-us/azure/architecture/solution-ideas/articles/intelligent-apps-using-azure-database-for-postgresql