Metodología de desarrollo
El Proceso Unificado Ágil (AUP por sus siglas en inglés), es un trabajo realizado por Scott W. Ambler a mediados de 1999, y publicado posteriormente en su libro Agile Modeling (Ambler, 2002). Este trabajo presenta una versión simplificada del Proceso Unificado de Rational (RUP por sus siglas en inglés), en esta versión se introducen algunas prácticas de las metodologías ágiles durante el ciclo de vida, tales como el desarrollo basado en pruebas (TDD por sus siglas en inglés) (Beck, 2003), el modelado y diseño ágil, y la refactorización constante.
AUP sigue los principios del manifiesto ágil, promueve la comunicación entre los miembros del equipo de trabajo, la documentación sencilla y concisa, el uso de las herramientas que mejor funcionen para el equipo de acuerdo a sus habilidades y conocimientos, y la atención a las actividades reales e importantes del proyecto (Ambysoft Inc., 2005).
La siguiente figura muestra el ciclo de vida del desarrollo de una aplicación con AUP. En esta figura puede apreciarse como el proceso se desarrolla en dos dimensiones. La primera de estas dimensiones (eje horizontal) representa la línea temporal, y está dividida en 4 fases consecutivas: Inicio, donde se determina el alcance del proyecto, requerimientos iniciales, se evalúan posibles riesgos, y se determina una posible arquitectura; Diseño Técnico o Elaboración, donde se prueba si la arquitectura definida en la etapa de inicio funcionará bien para la aplicación; Construcción o Codificación, donde se construye propiamente el software en una forma incremental; y la fase de Transición, donde se valida que el software construido cumpla los requerimientos y se libera una versión de la aplicación (Li & Wang, 2010).
La segunda dimensión (eje vertical) señala una serie de disciplinas que se ejecutan iterativamente en cada una de las fases, estas disciplinas definen una serie de actividades que habrán de realizarse para construir, validar y finalmente liberar software funcional que cumpla con los requerimientos. Estas disciplinas incluyen:
Modelado, que trata acerca de entender las reglas del negocio y el dominio del problema, así como identificar soluciones factibles para éste.
Implementación, que se trata de transformar los modelos en código ejecutable.
Pruebas, que se trata de efectuar una evaluación objetiva de la calidad del producto, así como identificar defectos y validar que se cumplen los requerimientos.
Despliegue, que se trata de planificar la entrega final al usuario.
Administración de la configuración, que trata sobre la administración tanto de los artefactos, como de su disponibilidad, así como las diferentes versiones de los mismos.
Administración del proyecto, que trata sobre la administración de las actividades, personal y sistemas involucrados, así como prevención de riesgos.
Se distinguen dos categorías de liberaciones de productos en AUP: en primer lugar, está la liberación de desarrollo, que abarca liberaciones de menor escala que podrían eventualmente convertirse en liberaciones de producción, pero que aún no han superado las pruebas requeridas. En segundo lugar, se encuentra la liberación de producción, que, como su nombre sugiere, representa liberaciones que han sido implementadas en producción y constituyen una versión oficial del producto. Estas liberaciones se llevan a cabo de manera iterativa a lo largo de la línea de tiempo del desarrollo, según se ilustra en el contexto de la metodología (Figueroa, 2023).
Tecnologías utilizadas
El desarrollo de este proyecto fue posible gracias al empleo de tecnologías modernas que permitieron optimizar el flujo de trabajo y garantizar un rendimiento eficiente, a continuación se describen las tecnologías utilizadas y sus ventajas en el contexto del proyecto.
CodeIgniter
¿Qué es CodeIgniter?
CodeIgniter es un framework de desarrollo web de código abierto, diseñado específicamente para crear aplicaciones web en PHP de manera rápida y eficiente. Su arquitectura ligera y modular lo convierte en una opción popular para desarrolladores que buscan simplicidad, velocidad y flexibilidad. CodeIgniter sigue el patrón MVC (Modelo-Vista-Controlador), lo que ayuda a separar la lógica de la aplicación, la interfaz de usuario y la manipulación de datos, facilitando el mantenimiento y escalabilidad de los proyectos.
Funcionamiento básico de CodeIgniter
CodeIgniter funciona siguiendo el patrón MVC, donde el Controlador maneja las solicitudes del usuario, el Modelo gestiona las interacciones con la base de datos y la lógica de negocio, y la Vista se encarga de generar las interfaces que el usuario ve. Al recibir una solicitud, el Controlador se comunica con el Modelo para procesar los datos necesarios y, finalmente, envía la información a la Vista para que sea presentada de manera adecuada. Este enfoque modular permite una mayor organización y control sobre el flujo de trabajo dentro de la aplicación.
A continuación se muestra un diagrama de secuencia que muestra cómo funciona la arquitectura MVC en CodeIgniter:
sequenceDiagram
participant Usuario
participant Controlador
participant Modelo
participant Vista
Usuario->>Controlador: Realiza una petición
Controlador->>Modelo: Obtiene los datos necesarios
Modelo-->>Controlador: Retorna los datos
Controlador->>Vista: Carga la vista con los datos
Vista-->>Controlador: Renderiza la vista
Controlador-->>Usuario: Envía la respuesta
A continuación, se presenta un diagrama de flujo que ilustra detalladamente el funcionamiento de la arquitectura de CodeIgniter, destacando los componentes clave y su interacción dentro del framework. Este diagrama es fundamental para comprender cómo CodeIgniter, con su estructura basada en el patrón MVC (Modelo-Vista-Controlador), maneja el flujo de información desde la solicitud del usuario hasta la respuesta final.
flowchart LR
subgraph CodeIgniter
direction TB
index.php --> Routing
Routing --> Security
Security --> Application
Application --> View
Application --> Caching
Routing --> Caching
View --> Caching
Caching --> index.php
Application --> Models
Models --> Application
Application --> Libraries
Libraries --> Application
Application --> Helpers
Helpers --> Application
Application --> Plugins
Plugins --> Application
Application --> Scripts
Scripts --> Application
end
Elementos del diagrama
index.php
- Punto de entrada: Es el archivo principal desde donde se inicia la aplicación CodeIgniter.
- Primer contacto: Recibe todas las solicitudes HTTP y las delega al enrutador.
Routing
- Enrutador: Interpreta la URL solicitada por el usuario.
- Guía de tráfico: Determina qué controlador y método se encargarán de procesar la petición.
Security
- Guardián: Aplica las medidas de seguridad necesarias para proteger la aplicación.
- Validador: Verifica la integridad y seguridad de los datos recibidos.
Application Controller
- Cerebro de la aplicación: Coordina y controla el flujo de la aplicación.
- Toma de decisiones: Decide qué acciones realizar en respuesta a una solicitud.
Caching
- Almacenamiento temporal: Almacena resultados de consultas a la base de datos u otras operaciones costosas.
- Acelerador: Reduce el tiempo de carga de las páginas al evitar recalcular los mismos datos.
View
- Presentación: Genera la interfaz de usuario (HTML) que se muestra al usuario.
- Vista: Muestra los datos obtenidos del modelo de una forma visualmente atractiva.
Models
- Acceso a datos: Interactúa con la base de datos para obtener y guardar información.
- Fuente de datos: Proporciona los datos necesarios para la aplicación.
Libraries
- Herramientas reutilizables: Contienen código predefinido para realizar tareas comunes.
- Facilitadores: Simplifican el desarrollo al ofrecer funcionalidades ya implementadas.
Helpers
- Funciones auxiliares: Ofrecen funciones útiles para realizar tareas menores.
- Ayudantes: Facilitan la manipulación de datos y la generación de código.
Plugins
- Extensiones: Añaden nuevas funcionalidades a la aplicación.
- Módulos adicionales: Permiten personalizar y ampliar las capacidades del framework.
Scripts
- Código JavaScript: Agrega interactividad a la interfaz de usuario.
- Comportamiento dinámico: Permite crear elementos interactivos y mejorar la experiencia del usuario.
Ventajas del uso de CodeIgniter
Una de las principales ventajas de CodeIgniter es su facilidad de uso y su bajo consumo de recursos, lo que lo convierte en una opción ideal para proyectos que requieren velocidad de ejecución. Además, su curva de aprendizaje es relativamente baja en comparación con otros frameworks de PHP, lo que permite a los desarrolladores comenzar rápidamente con proyectos sin la necesidad de aprender configuraciones complejas. También es altamente extensible, permitiendo la integración de bibliotecas personalizadas y herramientas de terceros, lo que proporciona flexibilidad y adaptabilidad a las necesidades específicas de cada proyecto.
Bootstrap
¿Qué es Bootstrap CSS?
Bootstrap es un framework de código abierto para el desarrollo de interfaces de usuario responsivas y móviles, que facilita el diseño de sitios web y aplicaciones web. Desarrollado inicialmente por Twitter, Bootstrap utiliza una combinación de HTML, CSS y JavaScript, ofreciendo una amplia colección de componentes predefinidos como botones, formularios, menús de navegación y mucho más. Su enfoque modular permite a los desarrolladores crear diseños consistentes y atractivos de forma rápida y eficiente, sin necesidad de escribir código desde cero.
Funcionamiento básico de Bootstrap CSS
Bootstrap CSS funciona mediante un sistema de rejillas (grid system) flexible, que permite estructurar el contenido en filas y columnas, facilitando la creación de diseños responsivos que se adaptan a diferentes tamaños de pantalla. Los estilos y componentes predefinidos se aplican mediante clases CSS que los desarrolladores pueden agregar directamente en el código HTML. Estas clases permiten realizar cambios de diseño de manera rápida y uniforme, asegurando una apariencia profesional sin la necesidad de escribir reglas CSS personalizadas para cada elemento.
Ventajas del uso de Bootstrap CSS
Una de las principales ventajas de Bootstrap es su capacidad para crear diseños responsivos con facilidad, lo que significa que las aplicaciones web se ven y funcionan bien en una amplia gama de dispositivos, desde teléfonos móviles hasta pantallas de escritorio. Además, Bootstrap ofrece una gran cantidad de componentes reutilizables y personalizables, lo que reduce el tiempo de desarrollo y garantiza la consistencia visual. También cuenta con una amplia comunidad de soporte y documentación detallada, lo que facilita su implementación incluso para desarrolladores principiantes.
jQuery
¿Qué es jQuery?
jQuery es una biblioteca de JavaScript rápida, pequeña y repleta de características, diseñada para simplificar el manejo del HTML en el navegador. Fue creada con el objetivo de facilitar tareas comunes en JavaScript, como la manipulación del DOM (Document Object Model), el manejo de eventos, la creación de animaciones y el uso de AJAX. jQuery permite a los desarrolladores escribir menos código para lograr más, haciendo que las interacciones complejas con el navegador sean más sencillas y eficientes.
Funcionamiento básico de jQuery
El funcionamiento de jQuery se basa en seleccionar elementos del DOM utilizando selectores CSS, a los cuales se les pueden aplicar diversas funciones. Estas funciones permiten manipular los elementos seleccionados, ya sea cambiando su contenido, agregando clases, manejando eventos o aplicando animaciones. Todo esto se hace a través de una sintaxis concisa que reduce considerablemente la cantidad de código en comparación con JavaScript puro.
Ventajas del uso de jQuery
Una de las mayores ventajas de jQuery es su capacidad de manejar las diferencias entre los distintos navegadores de manera transparente. Antes de la aparición de jQuery, los desarrolladores debían escribir código específico para cada navegador, lo que resultaba en un proceso tedioso y propenso a errores. Además, jQuery facilita la realización de peticiones AJAX para la actualización de contenidos de una página sin necesidad de recargarla por completo, mejorando la experiencia del usuario y el rendimiento general de las aplicaciones web.