Postal Project

09.30.2022

Fernando Acuña, Fredy Fajardo, Shalem Janna, Kairo Tapias

Universidad del Norte

Introducción

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.

Objetivos generales

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].”


Arquitecturas de solución general        

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


Cronograma

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