Practicas De Sistema D Ereservas
Melii252 de Mayo de 2014
3.372 Palabras (14 Páginas)426 Visitas
1. Introducción
La aplicación de metodologías y prácticas ágiles dentro de empresas dedicadas al
desarrollo de software, es en la actualidad una realidad que se viene acrecentando
en los últimos años alrededor del mundo.
Son muchas las personas y empresas dedicadas al desarrollo de software que se
enfrentan hoy por hoy con el dilema de ser o no ser ágiles. Bien sea porque sus
actuales metodologías de desarrollo no dan los resultados esperados o bien porque
desean incursionar en prácticas que están de moda a lo largo y ancho de las
comunidades de desarrollo en todo el mundo, lo cierto es que el auge de las
metodologías ágiles es un tema que apasiona y hace reflexionar a todo aquel que se
encuentre inmerso dentro del proceso de desarrollo de software.
Este trabajo presenta un enfoque práctico para la elección y adecuación de
metodologías ágiles de desarrollo de software a un proyecto real: El desarrollo de
un sistema de reservas para una agencia de viajes usando tecnología J2EE.
1.1. Justificación del proyecto
El sector de las Agencias de Viaje ha vivido una crisis desde la aparición de
Internet.
Según el Foro Internacional de Turismo, las compras de viajes por Internet han
crecido de forma significativa hasta el punto de llevar a la crisis a las agencias de
viaje tradicionales. La tendencia se presenta como consolidada aunque ello no
tiene por qué suponer la desaparición de estas agencias sino un cambio en su
concepción original de manera que se puedan adaptar a los nuevos tiempos.
Las compañías aéreas y las centrales de reservas de hoteles fueron algunas de las
primeras entidades en usar grandes sistemas en red para gestionar la reserva y
venta de sus productos. Estos sistemas conectaban los ordenadores centrales con
los terminales de las Agencias de Viajes. Éstas por su parte vendían luego el
producto al público final llevándose una comisión por la gestión.
La incorporación de las agencias a la red ha supuesto la liberalización masiva del
sector, y cualquier competencia en la oferta es beneficiosa para el cliente ya que la
competitividad conlleva una bajada de precios y una mejora del producto.
Con la aparición de Internet las compañías aéreas y las centrales de reservas de
hoteles han extendido sus redes de computadores que antes únicamente servían a
agencias de viajes. En muchos casos hoy en día sale mas barato comprar un billete
por Internet, que en una Agencia. Y las compañías aéreas recortan cada vez más
sus comisiones a las Agencias.
5
Las compañías de viajes (ferroviarias, aéreas, de alquiler de coches…), los hoteles,
guías y otros muchos servicios que antes dependían de una agencia u organizador
de viajes, ahora pueden ofertarse directamente en la red, sin intermediarios y sin
monopolios que limiten su actividad comercial, de manera que se ponen en manos
de una buena gestión para ofrecer la mejor opción al cliente y del marketing.
Internet es donde se compra, vende y se contratan la inmensa mayoría de los
viajes, cualquiera con conexión puede hacerlo con cuatro clicks.
Las Agencias de viajes están pues en crisis, necesitan reinventarse, ya no pueden
ser intermediarios en la venta de billetes de proveedores. Necesitan poder
competir en este nuevo mercado de venta por Internet.
El producto diferenciado que ofrecen las agencias de viajes es el paquete turístico,
que para poder ser un producto alternativo a las ofertas de productos individuales
de transporte y alojamiento, debe contar con un sistema de reservas por Internet
que supere al de las compañías aéreas y centrales hoteleras, un sistema de
reservas que ofrezca al público los productos que las agencias elaboran.
El sistema de reservas que elaboraremos en este proyecto contará con una ventaja
competitiva frente a los sistemas de las grandes mayoristas tradicionales. Nuestra
tecnología estará basada en la potencia de Java y J2EE y utilizará metodologías
ágiles apoyadas en tests automatizados con las que podremos ser más dinámicos
frente a los cambios que puedan surgir en el futuro.
1.2. Objetivos del trabajo
Con este proyecto pretendemos explorar tanto objetivos técnicos como
metodológicos.
1.2.1. Objetivos técnicos
Para poder competir en este nuevo mercado de venta de viajes por Internet,
necesitamos por una parte que la aplicación sea extremadamente rápida en la
gestión de reservas de paquetes túrisiticos. Para ello debemos limitar al máximo la
contención en las transacciones y asegurar al mismo tiempo su corrección, o lo que
es lo mismo, impedir interferencias con otras transacciones en curso por ausencia
de bloqueos.
Por otro lado, también será deseable que la aplicación sea testable con facilidad,
para ello construiremos una arquitectura en la que los objetos de negocio se
puedan ejecutar tanto fuera como dentro del contenedor J2EE, para así poderlo
someter a todas las pruebas necesarias, sin la complicación, y lentitud añadida de
arrancar un servidor J2EE.
Otra característica necesaria y derivada de la anterior, es construir una
arquitectura basada en el paradigma de la orientacion a objetos, conociddo como
Open / Closed principle. Este principio postula que el código este abierto para la
extension pero cerrado para la modificación ya que cada vez que modifiquemos
6
código corremos el riesgo de estropearlo. Por ello debemos utilizar las tecnicas de
herencia y composición para añadir funcionalidad a nuestros programas.
1.2.2. Objetivos metodologicos
Nosotros en este proyecto, usaremos prácticas de desarrollo ágil como las
siguientes:
Frecuente retroalimentacion: para ello se han planificado casos de uso cortos y
en la medida de lo posible autocontenidos, es decir que no necesitan de otras
partes para ser probados.
Pruebas automatizadas: se comenzará el desarrrollo empezando por las pruebas.
Haremos pruebas de unidad y de integración en un ciclo constante como veremos
en más detalle más adelante.
1.3. Enfoque metodológico
Para este proyecto exploraremos cómo aplicar las principales prácticas de lo que
se conoce como “desarrollo ágil”.
El enfoque tradicional de desarrollo de aplicaciones heredado de otras ramas de la
ingeniería, ha sido el de hacer un estudio exahustivo del problema, establecer un
plan y llevar a cabo la construccion. Es la metodología conocida como desarrollo
en cascada, con las fases consecutivas de Analisis, Diseño, Codificacion, Pruebas e
Implementación.
Pero este enfoque no siempre es óptimo para el desarrollo de software. La
programación no es exactamente comparable a otras ramas de la ingeniería o a la
construcción.
El desarrollo de software, es un proceso puramente creativo, análogo a lo que en la
construcción de una vivienda sería la elaboración de los planos.
A diferencia de la ingeniería civil, en el desarrollo de software no existe un proceso
de construcción en el que se sigan unos planos de modo mecánico previamente
establecidos por el arquitecto o ingeniero. En cada fase hay que ser creativo y
tomar decisiones.
En realidad sí existe un proceso análogo al de la pura construcción, en el que no
hay que tomar decisiones y solo aplicar lo dictado por el arquitecto. Es el paso del
código fuente al objeto, la compilación. Pero su coste es despreciable frente al coste
del diseño. Justo lo contrario a lo que sucede con la ingeniería civil, donde el coste
del diseño es infinitamente menor que el de la construcción.
El objetivo de las metodologías de desarrollo ágil de software es la organización de
un trabajo creativo, que suele ser bastante caótico. Se intenta dar prioridad a la
7
ejecución sobre la planificación. A medida que se profundiza en el conocimiento de
un problema se cambian los planes. Cuando el cliente vea nuestras propuestas, se
le ocurriran nuevas ideas que cambiarán los planes. Cuando profundicemos en el
conocimiento de nuevas teconologías haremos descubrimientos que cambiarán de
nuevo los planes.
La planificacion excesiva es el problema habitual de los enfoques de desarrollo de
software en cascada. Una planificacion es excesiva cuando desconocemos parte o
gran parte del problema al que nos enfrentamos y aún así establecemos objetivos y
plazos. En el mejor de los casos renunciaremos a las ventajas que se obtendrían de
un mejor entendimiento del problema. En el peor, nuestro plan fracasará por
encontrarnos riesgos con los que no contábamos.
Ágil quiere decir, adaptable. Desde esta premisa, los cambios son bienvenidos,
derivan de un mejor entendimiento del problema y son una oportunidad para
mejorar el software.
Este proyecto será ágil porque tendremos que tratar con cierta incertidumbre
tecnológica al tener que evaluar la tecnología J2EE y el gestor de bases de datos
PostgreSQL.
También será ágil porque hemos de estar
...