tesina: uso de metodologÍas Ágles para el desarrollo de software en una empresa de desarrollo de...

102
USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ TRABAJO ESCRITO: ESTUDIO DE CASO QUE COMO REQUISITO PARCIAL PARA OBTENER EL GRADO DE MAESTRÍA EN SISTEMAS DE INFORMACIÓN PRESENTA: JOSÉ ANTONIO SANDOVAL ACOSTA 212157

Upload: jose-antonio-sandoval-acosta

Post on 09-Feb-2017

76 views

Category:

Engineering


2 download

TRANSCRIPT

Page 1: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

TRABAJO ESCRITO: ESTUDIO DE CASO

QUE COMO REQUISITO PARCIAL PARA OBTENER EL GRADO DE MAESTRÍA EN SISTEMAS DE INFORMACIÓN

PRESENTA:

JOSÉ ANTONIO SANDOVAL ACOSTA212157

Ciudad Juárez, Chih., abril de 2009

Page 2: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Los que suscriben, ASESOR de la Materia de Sistemas de Información y ASESOR de Metodología respectivamente, hacen CONSTAR que el TRABAJO ESCRITO orientado a un TRABAJO DE INVESTIGACION denominado:

USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Elaborada por el pasante de la Maestría en Sistemas de Información:

JOSÉ ANTONIO SANDOVAL ACOSTA

Reúne los términos exigidos por el Reglamento General de Estudios de Posgrado y por el Reglamento Interior de la Facultad de Contaduría y Administración, por lo que se aprueba como requisito para la tramitación del examen de grado correspondiente.

Se extiende la presente a los diecisiete días del mes de abril de dos mil nueve.

Asesor de la Materia Asesor de Metodología

M .A. P. Ana María Gallo Sánchez M.S.I. René Arroyo Ávila

Catedráticos Revisores

M.A. César Pacheco M.A. Mercedes Ogaz Alamillo

Page 3: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

AGRADECIMIENTOS

A dios por permitirme llegar a este punto en mi desarrollo profesional y académico.

Agradezco especialmente a las personas que colaboraron con este trabajo,

asesorándome, respondiendo mis preguntas, y contribuyendo con un poco de su

conocimiento para enriquecer el mío.

i

Page 4: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

DEDICATORIA

Dedico este trabajo a aquellas personas que han colaborado con mi formación

académica y mi desarrollo profesional, ya que con este trabajo, obtengo un logro

muy importante en mi vida profesional y en mis aspiraciones personales.

ii

Page 5: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

RESUMEN

Objetivo: Describir el uso de metodologías ágiles en una empresa de desarrollo de software en Ciudad Juárez, Chihuahua.

Metodología: La investigación fue de carácter no experimental ya que no se manipuló la variable. La población de interés fueron todos los equipos de desarrollo que pertenecientes a la empresa de desarrollo de software. El marco muestral comprendió 3 equipos de desarrollo de software de dicha empresa, conformados por 4 personas cada uno La unidad de análisis estuvo enfocada a aquellos equipos de desarrollo de la empresa que lleven proyectos manejados (con gerencia). La variable evaluada fue el uso de metodologías ágiles en el proceso de desarrollo de software. Los indicadores fueron: Tiempo de Respuesta al cliente; Resultados de la revisión de producto; Resultados de los métricos de calidad. El tipo de muestreo aplicado fue total, toda la población. La recolección de los datos se llevó a cabo a través del cuestionario, el cual se envió por correo electrónico a cada uno de los integrantes de los equipos de desarrollo de software.

Resultados: Los principales resultados indican que el uso de una metodología ágil para el desarrollo de software mejora los tiempos de entrega así como la productividad, y ayuda a reducir costos en el proceso de desarrollo de software.

Palabras clave (Metodologías ágiles, desarrollo de software).

iii

Page 6: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

ÍNDICE GENERAL

PáginaAgradecimientos iDedicatoria iiResumen iiiÍndice de Cuadros vÍndice de Gráficas viÍndice de Figuras viiIntroducción 1Antecedentes 2Marco Teórico 4

Breve Introducción a las Metodologías de Desarrollo 4El Manifiesto Ágil 6Programación Extrema (XP) 11Metodología Scrum 14Otras Metodologías Ágiles 17Metodologías Tradicionales 18La metodología RUP 18Codificar y corregir (Code-and-Fix) 20Microsoft Solution Framework (MSF) 21Modelo en cascada 22Desarrollo evolutivo 24Desarrollo incremental 26Desarrollo en espiral 28Cuando Usar Metodologías Ágiles 32Ventajas de las Metodologías Ágiles 33Problemas Comunes a los Métodos Ágiles 34

Justificación 36Objetivo 37Metodología 38 1.- Lugar y tiempo 38 2.- Carácter 38 3.- Diseño 38 4.- Población de interés 38 5.- Unidad de análisis 38 6.- Variable 38 7.- Indicadores 39 8.- Recolección de datos 39 9.- Análisis de la información 39 10.- Interpretación de resultados 39Resultados y Discusión 40Conclusiones y Recomendaciones 55Literatura citada 56Anexos 58

iv

Page 7: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

ÍNDICE DE CUADROS

Cuadro número Título Página

1 Metodologías ágiles más conocidas para el desarrollo de software 9

2 Diferencias entre metodologías tradicionales y ágiles 293 Diferencias por etapas y enfoque metodológico 31

v

Page 8: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

ÍNDICE DE GRÁFICAS

Gráfica númeroTítulo Página

1 Nivel de Participación 412 Roles desempeñados por los encuestados 423 Nivel de conocimiento/participación 434 Tiempo de uso de Metodologías Ágiles 445 Tamaño del área de trabajo 456 Conocimientos sobre la empresa 467 Porcentaje de proyectos con metodologías ágiles 478 Tiempo de uso de Metodologías Ágiles por la empresa 489 Localidades que usan Metodologías Ágiles 4910 Razones para adoptar Metodologías Ágiles 5011 Metodologías Ágiles más conocidas 5112 Barreras para adoptar las Metodologías Ágiles 5213 Porcentaje de proyectos exitosos usando Metodologías Ágiles 5314 Estimación de beneficios obtenidos 54

vi

Page 9: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

ÍNDICE DE FIGURAS

Figura número Título Página

1 Metodología XP (eXtreme Programing) 112 Flujo de trabajo de la metodología XP 133 Ciclo de la metodología Scrum 164 Rational Unified Process (RUP) 195 Partes que componen la Metodología MSF 216 Iteraciones en el Modelo en Cascada 247 Descripción del Modelo de Desarrollo Evolutivo 258 Flujo General del Modelo de Desarrollo Iterativo Incremental 279 Flujo del Modelo de desarrollo en Espiral 29

vii

Page 10: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

INTRODUCCIÓN

Actualmente existen dos enfoques para realizar el desarrollo de software dentro de la

industria de tecnologías de información, las metodologías tradicionales y las

metodologías ágiles para el desarrollo de software. En la empresa de desarrollo de

software en Ciudad Juárez se utilizan ambos enfoques en sus equipos de trabajo y

desarrollo de software.

Existen 3 equipos de desarrollo de software, dos de ellos hacen uso de una

metodología de software ágil, mientras que el tercer equipo utiliza una metodología

más rígida y estricta que requiere de autorizaciones adicionales, revisiones tanto en

diseño como en cambios realizados y tiene una estructura de desarrollo que toma

más tiempo llevar los cambios al usuario final.

La intención de esta investigación es describir el uso de metodologías ágiles para el

desarrollo de software dentro de dicha empresa y realizar una redacción explicativa

de los beneficios obtenidos con su uso. No se pretende modificar los actuales

métodos de trabajo ya que estos han demostrado tener gran eficacia para la

empresa.

1

Page 11: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

ANTECEDENTES

La empresa de desarrollo de software de ciudad Juárez, Chihuahua con la que se

trabajó, es una empresa de Servicios de Tesorería y Seguridad de Valores (TSS

Treasury & Securities Services) genera más de $ 8 mil millones en ingresos anuales

y es un líder mundial en custodia, préstamo de valores, fondos y administración, así

como en servicios de tesorería. Servicios de Tesorería y de Valores apoya las

necesidades de los clientes institucionales en todo el mundo y es uno de los tres

principales proveedores en sus dos negocios: Servicios de Tesorería (TS Treasury

Services) y Servicios de Valores Mundiales (WSS Worldwide Securities Services).

En 2005, dicha empresa adquirió a otra, líder mundial en el comercio proveedor de

soluciones de gestión de ayudar a los clientes reducir el riesgo, mejorar el

cumplimiento y racionalizar el flujo de los envíos internacionales. Ahora conocido

como Global Trade Services, la entidad combinada se integra la información utilizada

para la gestión financiera y la actividad física la cadena de suministro.

La empresa, ayuda a los clientes a gestionar mejor su integridad física y financiera

con las cadenas de suministro de una completa gama integrada de soluciones de

comercio y logística. Como el único banco con el de extremo a extremo la capacidad

de la cadena de suministro, que agregan valor tanto al importador y exportador de

partes de las transacciones. Dicha empresa ayuda a facilitar la financiación, reducir

el riesgo comercial, gestión de relaciones de la cadena de suministro, mejorar el

cumplimiento y racionalizar los flujos comerciales.

La empresa proporciona el servicio administrado de las operaciones (GTS Global

Trade Services), garantizando la optimización de impuestos, garantizando las

operaciones en tiempo; para ello, esta área está conformada por diferentes

departamentos: dirección general, evaluación de proyectos, operación, soporte

usuario, análisis y diseño, desarrollo, calidad, centro de datos.

2

Page 12: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Como antecedente podemos mencionar que esta empresa está a la vanguardia en

operaciones aduaneras hoy en día a nivel internacional, contando con la ventaja

competitiva de brindar un sistema maduro y muy confiable, que le ha permitido

brindar servicios administrados a firmas fuertes en varios regímenes aduaneros

como son Deposito Fiscal, Maquiladora, Recinto Fiscalizado.

El área de servicios administrados en México cuenta aproximadamente con 110

personas para llevar la operación completa de las diferentes cuentas. Cada uno de

los miembros tiene actividades especificas que contribuyen en el cumplimiento de la

tarea final, que es llevar la operación al día del cliente, garantizando tiempo, fechas

de cumplimiento, recuperación de saldos a favor, monitoreo de vencimientos, etc.

La empresa de desarrollo de software en Ciudad Juárez tiene su centro de

desarrollo de software para México, cuenta con una amplia cartera de clientes que

hacen uso de sus productos.

La empresa ofrece 3 principales productos de software a sus clientes, estos son

Sistema de Trámite Aduanero (STA), Sistema Automatizado Aduanero Integral (SAAI

M3) y Deposito Fiscal (DF). Cuenta con 3 equipos de desarrollo en ciudad Juárez,

cada uno encabezado por un líder.

Actualmente la empresa hace uso de diferentes métodos de desarrollo, estos

dependen del equipo de desarrollo y el producto que desarrollan, siendo uno de los

equipos el que utiliza una metodología rígida para el desarrollo y dos equipos mas

hacen uso de métodos más ágiles y menos documentación.

3

Page 13: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

MARCO TEÓRICO

Breve Introducción a las Metodologías de Desarrollo

Dentro del desarrollo de software y la altiva necesidad de que los proyectos lleguen

al éxito y obtener un producto de gran valor para nuestros clientes, generan grandes

cambios en las metodologías adaptadas por los equipos para cumplir sus objetivos,

puesto que, unas se adaptan mejor que otras, al contexto del proyecto brindando

mejores ventajas.

Es por eso de la importancia de una metodología robusta que ajustada en un equipo

cumpla con sus metas, y satisfaga mas allá de la las necesidades definidas al inicio

del proyecto.

El éxito del producto depende en gran parte de la metodología escogida por el

equipo, ya sea tradicional o ágil, donde los equipos maximicen su potencial y

aumenten la calidad del producto con los recursos y tiempo establecidos.

Muchos de los proyectos de software fracasan antes de entrar a la fase de

desarrollo, debido a una mala planeación o al exceso de ésta. El 71 % de todos los

proyectos de IT no se cumplen o experimentan problemas de fecha de entrega o

presupuesto (The Standish Group, 2001).

Al inicio el desarrollo de software era artesanal en su totalidad, la fuerte necesidad de

mejorar el proceso y llevar los proyectos a la meta deseada, tuvieron que importarse

la concepción y fundamentos de metodologías existentes en otras áreas y adaptarlas

al desarrollo de software. Esta nueva etapa de adaptación contenía el desarrollo

dividido en etapas de manera secuencial que de algo mejoraba la necesidad latente

en el campo del software.

4

Page 14: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Las metodologías tradicionales concentran su atención en llevar una documentación

exhaustiva de todo proyecto y centran su atención en cumplir en un plan de proyecto,

definido todo esto, en la fase inicial del desarrollo del proyecto. Otra de las

características importantes dentro de este enfoque tenemos los altos costos al

implementar y al no ofrecer una buena solución para proyectos donde el entorno es

volátil. Las metodologías tradicionales o formales se enfocan en documentación,

planificación y procesos (plantillas técnicas de administración, revisiones, etc.)

(Figueroa y Solís, 2008).

Las metodologías tradicionales presentan ciertos problemas tales como:

Fases de obtención de requerimientos, análisis y diseño muy costosas en

cuanto a tiempo y recursos.

Muchos niveles de aprobación, lo cual lleva comúnmente al retraso en las

fechas de entrega.

Una vez que se llega a la fase de desarrollo es muy difícil para el equipo el

entender un sistema tan complejo al ser tan amplia el área que se abarca.

En el otro lado están las metodologías ágiles, las cuales se han incorporado muy

bien a un mundo de requerimientos cambiantes, y estas nos muestran ciertas

ventajas sobre los métodos tradicionales, tales como:

Buena respuesta a los cambios durante la fase de desarrollo, lo cual es cada

vez más común en los proyectos.

Entrega continua y rápida de secciones funcionales del sistema.

Involucramiento del cliente.

Eliminación del trabajo innecesario.

Mayor atención a la parte técnica y de diseño.

Mejora continua de los procesos y equipos de desarrollo (Highsmith, 2002).

5

Page 15: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Las metodologías ágiles presentan un nuevo enfoque que nace como respuesta a los

problemas de las metodologías tradicionales y se basa en aspectos puntuales, el

retrasar las decisiones y la planificación adaptativa; permitiendo potencia aún más en

el desarrollo de software a gran escala. El resultado es un Manifiesto Ágil cuyas

principales ideas son:

Los individuos y las iteraciones entre ellos son más importantes que las

herramientas y los procesos empelados.

Es más importante crear un producto de software que funcione que escribir

documentación exhaustiva.

La colaboración con el cliente debe prevalecer sobre la negociación de

contratos.

La capacidad de respuesta ante un cambio es más importante que el

seguimiento estricto de un plan (Pires, 2001).

El Manifiesto Ágil

En febrero 11 – 13 de 2001 en las montañas Wasatch en Utah, 17 personas se

reunieron para platicar, esquiar y relajarse. Lo que surgió de esa reunión fue la

Alianza de Desarrollo de Software Ágil, todos los miembros de la alianza firmaron el

llamado Manifiesto Ágil el cual tiene como texto: “Estamos poniendo al descubierto

nuevas y mejores maneras de desarrollar software, haciéndolo y ayudando a otros a

que lo hagan. A través de este trabajo hemos llegado a valorar: Los individuos y la

interacción sobre los procesos y herramientas; El software que funciona sobre la

documentación abarcadora; la colaboración con el cliente sobre negociación de

contratos; Responder al cambio sobre seguir un plan; Eso es, aunque hay valor en

las partes de la derecha, nosotros valoramos mas los de la izquierda”.

6

Page 16: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Principios del Manifiesto:

La prioridad es satisfacer al cliente mediante tempranas y continuas entregas

de software que le aporte un valor.

Dar la bienvenida a los cambios. Se capturan los cambios para que el cliente

tenga una ventaja competitiva.

Entregar frecuentemente software que funcione desde un par de semanas

hasta un par de meses, con el menor intervalo de tiempo posible entre

entregas.

La gente del negocio y los desarrolladores deben de trabajar juntos a lo largo

del proyecto.

Construir el proyecto en torno a individuos motivados. Darles el entorno  el

apoyo que necesitan y confiar en ellos para conseguir finalizar el trabajo.

El dialogo cara a cara es el método más eficiente y efectivo para comunicar

información dentro de un equipo de desarrollo.

El software que funciona es la medida principal de progreso.

Los procesos ágiles promueven un desarrollo sostenible. Los promotores

desarrolladores y usuarios deberían ser capaces de mantener una paz

constante.

La atención continua a la calidad técnica y al buen diseño mejora la agilidad.

La simplicidad es esencial.

Las mejores arquitecturas, requisitos y diseños surgen de los equipos

organizados por sí mismos.

En intervalos regulares, el equipo reflexiona respecto a cómo llegar a ser más

efectivo y según esto ajusta su comportamiento (Abrahamsson y Ronkainen, 2002).

7

Page 17: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

El movimiento ágil no es anti-metodológico menciona Fowler, se requiere restaurar

credibilidad en la palabra. También se requiere restaurar un balance: adoptar el

modelado, pero no precisamente para archivarlo en un polvoso repositorio

corporativo. Adoptar documentación, pero no para desperdiciar grandes cantidades

de papel en la creación de tomos que nunca sean mantenidos o raramente usados

(Fowler, 2001).

Los creadores de dicho Manifiesto son: Kent Beck (Extreme Programming), Mike

Beedle, Arie van Bennekum (Dynamics Solutions Delivery Model), Alistair Cockburn

(Cystal), Ward Cunningham (Extreme Programming), Martin Fowler (Extreme

Programming), James Grenning (Extreme Programming), Jim Highsmith (Agile

Spreadsheet Development), Andrew Hunt (Pragmatic Programming), Ron Jeffries

(Extreme Programming), Jon CERN (Feature Driven Development), Brian Marick,

Robert C. Martin (Extreme Programming), Steve Mellor, Ken Schwaber (Scrum), Jeff

Sutherland (Scrum), Dave Thomas (Pragmatic Programming).

En la comunidad de la ingeniería del software, se está viviendo con intensidad un

debate abierto entre los partidarios de las metodologías tradicionales y aquellos que

apoyan las ideas emanadas del Manifiesto Ágil.

Por un lado, para muchos equipos de desarrollo el uso de metodologías tradicionales

les resulta muy lejano a su forma de trabajo actual; considerando las dificultades de

su introducción e inversión asociada en términos de formación y compra de

herramientas. Por otro, las características de los proyectos para los cuales las

metodologías agiles han sido especialmente pensadas se ajustan a un amplio rango

de proyectos de desarrollo de software; aquellos en los cuales los equipos de

desarrollo son pequeños, con plazos reducidos, requisitos volátiles, basados en

nuevas tecnologías, etc. (Abrahamsson y Ronkainen, op cit).

8

Page 18: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Estas metodologías están especialmente orientadas para proyectos que necesitan de

una solución a la medida, con una elevada simplificación sin dejar de lado el

aseguramiento de la calidad del producto. Las metodologías giles se centran en el

factor humano y el producto software; es decir, ellas le dan mayor valor al individuo,

a la colaboración del cliente y al desarrollo incremental del software con iteraciones

muy cortas. En el cuadro 1 se muestran las metodologías ágiles más comunes.

Cuadro 1. Metodologías ágiles más conocidas para el desarrollo de software.

Metodología Creación Tipo de Modelo Característica

Adaptative Software (ASD)

Highsmith 2000 Practicas + Ciclo de vida

Inspirado en Sistemas adaptativos complejos

Agile Modeling (AM) Ambler 2002 Metodología basada en la práctica

Suministra modelado ágil a otros métodos

Crystal Methods (CM) Cockburn 1998 Familia de Metodologías

Énfasis en modelado de ciclos

Agile RUP (dX)

Booch, Martin, Newkirk 1998

Framework/ Disciplina

XP “al revés” con artefactos de RUP

Dynamic Solutions Delivery Model(DSDM)

Stapleton 1997 Framework / Modelo de ciclo de vida

Creado por 16 expertos en RAD

Evolutionary Project Management(Evo)

Gilb 1976 Framework adaptativo Primer método ágil existente

Extreme Programming (Xp)

Beck 1999 Disciplina en prácticas de Ingeniería

Método ágil radical

Feature-driven development (FDD)

De Luca & Coad 1998Palmer & Felsing 2002

Metodología Método Ágil de diseño y construcción

Lean Development (LD)

Charette 2001, Mary & Tom Poppendieck

“Forma de Pensar” – Modelo logístico

Metodología basada en procesos productivos

Microsoft Solutions Framework (MSF)

Microsoft 1994 Lineamientos, Disciplinas, prácticas

Framework de desarrollo de soluciones

Rapid Development(RAD)

McConnell 1996 Survey de técnicas y modelos

Selección de mejores prácticas, no métodos

Racional Unified Process (RUP)

Krutchen 1996 Proceso Unificado método (¿ágil?) con modelado

Scrum Sutherland 1994 – Schwaber 1995

Proceso (Software de management)

Complemento de otros método, ágiles o no

Fuente (Reynoso, 2005)

9

Page 19: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

A diferencia de los enfoques más tradicionales, las metodologías ágiles se centran

en la generación de liberaciones en las primeras etapas de productos de trabajo

utilizando principalmente técnicas de colaboración, como por ejemplo, programación

par, refactorización y tener clientes trabajando en el lugar como parte del equipo de

miembros. Los programadores utilizan estas liberaciones que son productos de

trabajo, no prototipos para demostrar las características y funciones a los

contratantes que están relacionados con su utilización, comercialización y apoyo

(Cockburn, 2001).

En los proyectos de desarrollo de software más tradicionales, el ciclo de vida

(simplificado) es análisis, Desarrollo, Pruebas; primero obteniendo todos los

requerimientos conocidos para el producto completo, después desarrollando todos

los elementos de software, después probando que el producto completo está listo

para entregarse. En el desarrollo de software ágil, el ciclo es análisis, desarrollo,

pruebas, análisis, desarrollo, pruebas; y así sucesivamente… de manera que se

haga cada paso para cada característica, una característica a la vez. Las ventajas de

este proceso iterativo en el desarrollo de software son

Reduce Riesgos: clarifica la visibilidad de que esta terminado en fecha a

través del proyecto.

Incrementa el valor: entregando algunos beneficios tempranamente; siendo

capaz de liberar un producto, en lugar de esperar a que todas las

características estén listas.

Más flexibilidad/agilidad: se puede elegir el cambiar de dirección o adaptarse a

las siguientes iteraciones basadas en el software que se está usando

actualmente.

Mejor administración de costos (Waters, 2007).

10

Page 20: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

A continuación se muestra una de las metodologías ágiles más comunes y sobre la

cual muchos autores han escrito una gran cantidad de artículos.

Programación Extrema (XP)

La Programación Extrema (XP) es una metodología ágil que ha ganado creciente

aceptación y reconocimiento en la comunidad del software. XP promueve una

disciplina de desarrollo de software basada en principios de simplicidad,

comunicación, realimentación y coraje. Está diseñada para el uso con equipos

pequeños que necesitan desarrollar software rápidamente en un ambiente de

continuos cambios de requerimientos.

La metodología XP utiliza prácticas efectivas como Refactoring, Programación en

Pares, e Integración Continua. Cada práctica proporciona una importante ventaja

para el ciclo de desarrollo. Por ejemplo, Refactoring proporciona un cambio gradual

del código fuente hacia un diseño más adaptable. La Programación en Pares permite

a dos programadores compartir sus pensamientos y conocimientos técnicos frente a

una pantalla en común. Finalmente, la Integración Continua asegura que exista

siempre un sistema corriendo en el que se ejecuten todas las pruebas con éxito

(Beck, 1999). La figura 1 muestra la descripción de la metodología XP.

Figura 1: Metodología XP (eXtreme Programing)

Fuente (Beck, op cit).

11

Page 21: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Características de la metodología XP, esta se basa en:

Pruebas Unitarias: se basa en las pruebas realizadas a los principales

procesos, de tal manera que adelantándonos en algo hacia el futuro, podamos

hacer pruebas de las fallas que pudieran ocurrir. Es como si nos

adelantáramos a obtener los posibles errores.

Re-fabricación: se basa en la reutilización de código, para lo cual se crean

patrones o modelos estándares, siendo más flexible al cambio.

Programación en pares: una particularidad de esta metodología es que

propone la programación en pares, la cual consiste en que dos

desarrolladores participen en un proyecto en una misma estación de trabajo.

Cada miembro lleva a cabo la acción que el otro no está haciendo en ese

momento. Es como el chofer y el copiloto: mientras uno conduce, el otro

consulta el mapa.

La metodología XP propone algunas formas de trabajar:

Empieza en pequeño y añade funcionalidad con retroalimentación continua

El manejo del cambio se convierte en parte sustantiva del proceso

El costo del cambio no depende de la fase o etapa

No introduce funcionalidades antes que sean necesarias

El cliente o el usuario se convierte en miembro del equipo

Derechos del cliente dentro de la metodología XP:

Decidir que se implementa

Saber el estado real y el progreso del proyecto

Añadir, cambiar o quitar requerimientos en cualquier momento

Obtener lo máximo de cada semana de trabajo

Obtener un sistema funcionando cada tres o cuatro meses

12

Page 22: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Derechos del desarrollador en la metodología XP:

Decidir cómo se implementan los procesos

Crear el sistema con la mejor calidad posible

Pedir al cliente en cualquier momento aclaraciones de los requerimientos

Estimar el esfuerzo para implementar el sistema

Cambiar los requerimientos en base a nuevos descubrimientos

Lo fundamental en este tipo de metodología es:

La comunicación, entre los usuarios y los desarrolladores

La simplicidad, al desarrollar y codificar los módulos del sistema

La retroalimentación, concreta y frecuente del equipo de desarrollo, el cliente y

los usuarios finales (Wells, 2003).

El funcionamiento de la metodología XP puede ser resumido por medio del esquema

descrito en la figura 2.

Figura 2: Flujo de trabajo de la metodología XP.

Fuente (Wells, op cit)

13

Plan de entregas con Historias de Usuario

El cliente selecciona la lista de historias para la iteración/mini-entrega

Reunión de Planificación de Entregas

Escribir código y pruebas de módulos Refactorizar la iteración previa

Pruebas de Aceptación

Entregas pequeñas al cliente

¿Pruebas de aceptación OK?

Mantenerse iterando para pasar las pruebas de aceptación: Pruebas de sistema (Bugs) Pruebas de módulos Pruebas de usuario

Aprobación del cliente

Page 23: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Metodología ScrumEsta es, después de la metodología XP, la metodología ágil mejor conocida y la que

otros métodos ágiles recomiendan como complemento, aunque su porción del

mercado (3% según el Cutter Consortium) es más modesta que el ruido que hace.

Scrum es una metodología para el desarrollo ágil de productos, expuesta, en el

artículo The New Product Development Game [Harvard Business Review Ene-Feb

1986 en el que ponen de manifiesto que:

El mercado competitivo de los productos tecnológicos, además de los

conceptos básicos de calidad, coste y diferenciación, exige también rapidez y

flexibilidad.

Los nuevos productos representan cada vez un porcentaje más importante en

el volumen de negocio de las empresas.

El mercado exige ciclos de desarrollo más cortos (Takeuchi y Nonaka, 1986).

El método Scrum no está concebido como método independiente, sino que se

promueve como complemento de otras metodologías, incluyendo XP. Como método,

Scrum enfatiza valores y prácticas de gestión, sin pronunciarse sobre requerimientos,

implementación y demás cuestiones técnicas; de allí su deliberada insuficiencia y su

complementariedad. Scrum se define como un proceso de administración y control

que implementa técnicas de control de procesos; se lo puede considerar un conjunto

de patrones organizacionales.

Los valores de la metodología Scrum son:

Equipos auto-dirigidos y auto-organizados. No hay gerente que decida, ni

otros títulos que “miembros del equipo” o “cerdos”; la excepción es el Scrum

Master que debe ser 50% programador y que resuelve problemas, pero no

manda. Los observadores externos se llaman “gallinas”; pueden observar,

pero no interferir ni opinar.

Una vez elegida una tarea, no se agrega trabajo extra. En caso que se

agregue algo, se recomienda quitar alguna otra cosa.

14

Page 24: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Encuentros diarios con las tres preguntas indicadas en la figura. Se realizan

siempre en el mismo lugar, en círculo. El encuentro diario impide caer en el

dilema señalado por Fred Brooks: “¿Cómo es que un proyecto puede

atrasarse un año?: Un día a la vez”.

Iteraciones de treinta días; se admite que sean más frecuentes.

Demostración a participantes externos al fin de cada iteración.

Al principio de cada iteración, planeamiento adaptativo guiado por el cliente

(Schwaber y Beedle, 2001).

El nombre de los miembros del equipo y los externos se deriva de una típica fábula

agilista: un cerdo y una gallina discutían qué nombre ponerle a un nuevo restaurant;

la gallina propuso “Jamón y Huevos”. “No, gracias”, respondió el cerdo, “Yo estaré

comprometido, pero tú sólo involucrada”.

La metodología Scrum define seis roles:

1. El Scrum Master: Interactúa con el cliente y el equipo. Es responsable de

asegurarse que el proyecto se lleve a cabo de acuerdo con las prácticas,

valores y reglas de Scrum y que progrese según lo previsto. Coordina los

encuentros diarios, formula las tres preguntas canónicas y se encarga de

eliminar eventuales obstáculos. Debe ser miembro del equipo y trabajar a la

par.

2. Propietario del Proyecto: Es el responsable oficial del proyecto, gestión,

control y visibilidad de la lista de acumulación o lista de retraso del producto

(product backlog). Es elegido por el Scrum Master, el cliente y los ejecutivos a

cargo. Toma las decisiones finales de las tareas asignadas al registro y

convierte sus elementos en rasgos a desarrollar.

3. Equipo de Scrum: Tiene autoridad para reorganizarse y definir las acciones

necesarias o sugerir remoción de impedimentos.

4. Cliente: Participa en las tareas relacionadas con los elementos del registro.

15

Page 25: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

5. Administración: Está a cargo de las decisiones fundamentales y participa en la

definición de los objetivos y requerimientos. Por ejemplo, selecciona al Dueño

del Producto, evalúa el progreso y reduce el registro de acumulación junto con

el Scrum Master.

6. Usuario: La dimensión del equipo total de Scrum no debería ser superior a

diez ingenieros. El número ideal es siete, más o menos dos, una cifra

canónica en ciencia cognitiva [Mil56]. Si hay más, lo más recomendable es

formar varios equipos. No hay una técnica oficial para coordinar equipos

múltiples, pero se han documentado experiencias de hasta 800 miembros,

divididos en Scrums de Scrum, definiendo un equipo central que se encarga

de la coordinación, las pruebas cruzadas y la rotación de los miembros

(Schwaber y Beedle, op cit).

La figura 3 describe el ciclo de la metodología Scrum:

Figura 3: Ciclo de la metodología Scrum

Fuente (Schwaber y Beedle, op cit).

16

Creación del

Concepto

Prueba de Aceptación

Diseño Código Prueba de Unidad

Prueba de Integración

Prueba del Sistema

Especific. Requerim.

Pre-Juego

Juego

Post-Juego

Planteamiento

Lista de retraso

de product

o

Lista de retraso

de Srpint

Diseño de Alto Nivel/Arquitectura

Sprint

Análisis & Diseño

Codificación Prueba Entrega

Release Intermedi

o

Integración, prueba de sistema

Producto final,

documentos

Page 26: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Otras Metodologías Ágiles

Aunque los creadores e impulsores de las metodologías ágiles más populares han

suscrito el manifiesto ágil y coinciden con los principios enunciados anteriormente,

cada metodología tiene características propias y hace hincapié en algunos aspectos

más específicos. A continuación se resumen otras metodologías ágiles. La mayoría

de ellas ya estaban siendo utilizadas con éxito en proyectos reales pero les faltaba

una mayor difusión y reconocimiento.

Crystal Methodologies: Se trata de un conjunto de metodologías para el

desarrollo de software caracterizadas por estar centradas en las personas que

componen el equipo y la reducción al máximo del número de artefactos

producidos. Han sido desarrolladas por Alistair Cockburn. El desarrollo de

software se considera un juego cooperativo de invención y comunicación,

limitado por los recursos a utilizar. El equipo de desarrollo es un factor clave,

por lo que se deben invertir esfuerzos en mejorar sus habilidades y destrezas,

así como tener políticas de trabajo en equipo definidas. Estas políticas

dependerán del tamaño del equipo, estableciéndose una clasificación por

colores, por ejemplo Crystal Clear (3 a 8 miembros) y Crystal Orange (25 a 50

miembros) (Cockbun, 2001).

Dynamic Systems Development Method (DSDM): Define el marco para

desarrollar un proceso de producción de software. Nace en 1994 con el

objetivo de crear una metodología RAD unificada. Sus principales

características son: es un proceso iterativo e incremental y el equipo de

desarrollo y el usuario trabajan juntos. Propone cinco fases: estudio viabilidad,

estudio del negocio, modelado funcional, diseño y construcción, y finalmente

implementación. Las tres últimas son iterativas, además de existir

realimentación a todas las fases (Fowler, 2001).

Adaptive Software Development (ASD): Su impulsor es Jim Highsmith. Sus

principales características son: iterativo, orientado a los componentes

software más que a las tareas y tolerante a los cambios. El ciclo de vida que

propone tiene tres fases esenciales: especulación, colaboración y aprendizaje.

En la primera de ellas se inicia el proyecto y se planifican las características

17

Page 27: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

del software; en la segunda desarrollan las características y finalmente en la

tercera se revisa su calidad, y se entrega al cliente. La revisión de los

componentes sirve para aprender de los errores y volver a iniciar el ciclo de

desarrollo (Highsmith y Orr, 2000).

Feature -Driven Development (FDD): Define un proceso iterativo que consta

de 5 pasos. Las iteraciones son cortas (hasta 2 semanas). Se centra en las

fases de diseño e implementación del sistema partiendo de una lista de

características que debe reunir el software. Sus impulsores son Jeff De Luca y

Peter Coad (Fowler y Beck, 1999)

Lean Development (LD): Definida por Bob Charettes a partir de su experiencia

en proyectos con la industria japonesa del automóvil en los años 80 y utilizada

en numerosos proyectos de telecomunicaciones en Europa. En LD, los

cambios se consideran riesgos, pero si se manejan adecuadamente se

pueden convertir en oportunidades que mejoren la productividad del cliente.

Su principal característica es introducir un mecanismo para implementar

dichos cambios (Poppendieck, 2003).

Metodologías TradicionalesLas metodologías tradicionales (formales) se focalizan en documentación,

planificación y procesos. (Plantillas, técnicas de administración, revisiones, etc.), a

continuación se detalla RUP uno de los métodos más usados dentro de los métodos

tradicionales.

La metodología RUP es un proceso formal, Provee un acercamiento disciplinado

para asignar tareas y responsabilidades dentro de una organización de desarrollo. Su

objetivo es asegurar la producción de software de alta calidad que satisfaga los

requerimientos de los usuarios finales (respetando cronograma y presupuesto). Fue

desarrollado por Rational Software, y está integrado con toda la suite Rational de

herramientas. Puede ser adaptado y extendido para satisfacer las necesidades de la

organización que lo adopte. (Customización). Es guiado por casos de uso y centrado

18

Page 28: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

en la arquitectura, y utiliza UML como lenguaje de notación (Figueroa y Solís, op cit). En la figura 4 podemos ver las fases de la metodología RUP:

Figura 4: Rational Unified Process (RUP).

Fuente (Figueroa y Solís, op cit).

Fases: Las cuatro fases del ciclo de vida de la metodología RUP son:

Concepción

Elaboración

Construcción

Transición

Ventajas de la metodología RUP:

Evaluación en cada fase que permite cambios de objetivos

Funciona bien en proyectos de innovación.

Es sencillo, ya que sigue los pasos intuitivos necesarios a la hora de

desarrollar el software.

Seguimiento detallado en cada una de las fases.

19

Page 29: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Desventajas de la metodología RUP: La evaluación de riesgos es compleja

Excesiva flexibilidad para algunos proyectos

Estamos poniendo a nuestro cliente en una situación que puede ser muy

incómoda para él.

Nuestro cliente deberá ser capaz de describir y entender a un gran nivel de

detalle para poder acordar un alcance del proyecto con él (Figueroa y Solís, op cit).

Codificar y corregir (Code-and-Fix)

Este es el modelo básico utilizado en los inicios del desarrollo de software. Contiene

dos pasos:

Escribir código.

Corregir problemas en el código.

Se trata de primero implementar algo de código y luego pensar acerca de requisitos,

diseño, validación, y mantenimiento.

Este modelo tiene tres problemas principales:

Después de un número de correcciones, el código puede tener una muy mala

estructura, hace que los arreglos sean muy costosos.

Frecuentemente, aún el software bien diseñado, no se ajusta a las

necesidades del usuario, por lo que es rechazado o su reconstrucción es muy

cara.

El código es difícil de reparar por su pobre preparación para probar y modificar

(Boehm, 2002).

20

Page 30: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Microsoft Solution Framework (MSF)

Esta es una metodología flexible e interrelacionada con una serie de conceptos,

modelos y prácticas de uso, que controlan la planificación, el desarrollo y la gestión

de proyectos tecnológicos.

MSF se centra en los modelos de proceso y de equipo dejando en un segundo plano

las elecciones tecnológicas, como se muestra en la figura 5.

Figura 5: Partes que componen la Metodología MSF.

Fuente (Microsoft, 2004)

MSF tiene las siguientes características:

Adaptable: es parecido a un compás, usado en cualquier parte como un mapa,

del cual su uso es limitado a un específico lugar.

Escalable: puede organizar equipos tan pequeños entre 3 o 4 personas, así

como también, proyectos que requieren 50 personas a más.

Flexible: es utilizada en el ambiente de desarrollo de cualquier cliente.

Tecnología Agnóstica: porque puede ser usada para desarrollar soluciones

basadas sobre cualquier tecnología.

21

Page 31: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

MSF se compone de varios modelos encargados de planificar las diferentes partes

implicadas en el desarrollo de un proyecto: Modelo de Arquitectura del Proyecto,

Modelo de Equipo, Modelo de Proceso, Modelo de Gestión del Riesgo, Modelo de

Diseño de Proceso y finalmente el modelo de Aplicación (Microsoft, op cit)

Modelo en cascada

El primer modelo de desarrollo de software que se publicó se derivó de otros

procesos de ingeniería. Éste toma las actividades fundamentales del proceso de

especificación, desarrollo, validación y evolución y las representa como fases

separadas del proceso.

El modelo en cascada consta de las siguientes fases:

Definición de los requisitos: Los servicios, restricciones y objetivos son

establecidos con los usuarios del sistema. Se busca hacer esta definición en

detalle.

Diseño de software: Se particiona el sistema en sistemas de software o

hardware. Se establece la arquitectura total del sistema. Se identifican y

describen las abstracciones y relaciones de los componentes del sistema.

Implementación y pruebas unitarias: Construcción de los módulos y unidades

de software. Se realizan pruebas de cada unidad.

Integración y pruebas del sistema: Se integran todas las unidades. Se prueban

en conjunto. Se entrega el conjunto probado al cliente.

Operación y mantenimiento: Generalmente es la fase más larga. El sistema es

puesto en marcha y se realiza la corrección de errores descubiertos. Se

realizan mejoras de implementación. Se identifican nuevos requisitos

Ingeniería y Análisis del Sistema: Debido a que el software es siempre parte

de un sistema mayor el trabajo comienza estableciendo los requisitos de todos

los elementos del sistema y luego asignando algún subconjunto de estos

requisitos al software.

Análisis de los requisitos del software: el proceso de recopilación de los

requisitos se centra e intensifica especialmente en el software. El ingeniero de

22

Page 32: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

software (Analistas) debe comprender el ámbito de la información del

software, así como la función, el rendimiento y las interfaces requeridas.

Diseño: el diseño del software se enfoca en cuatro atributos distintos del

programa: la estructura de los datos, la arquitectura del software, el detalle

procedimental y la caracterización de la interfaz. El proceso de diseño traduce

los requisitos en una representación del software con la calidad requerida

antes de que comience la codificación.

Codificación: el diseño debe traducirse en una forma legible para la maquina.

El paso de codificación realiza esta tarea. Si el diseño se realiza de una

manera detallada la codificación puede realizarse mecánicamente.

Prueba: una vez que se ha generado el código comienza la prueba del

programa. La prueba se centra en la lógica interna del software, y en las

funciones externas, realizando pruebas que aseguren que la entrada definida

produce los resultados que realmente se requieren.

Mantenimiento: el software sufrirá cambios después de que se entrega al

cliente. Los cambios ocurrirán debido a que hayan encontrado errores, a que

el software deba adaptarse a cambios del entorno externo (sistema operativo

o dispositivos periféricos), o debido a que el cliente requiera ampliaciones

funcionales o del rendimiento (Pressman, 1997).

Cada fase tiene como resultado documentos que deben ser aprobados por el

usuario. Una fase no comienza hasta que termine la fase anterior y generalmente se

incluye la corrección de los problemas encontrados en fases previas.

En la práctica, este modelo no es lineal, e involucra varias iteraciones e interacción

entre las distintas fases de desarrollo. Algunos problemas que se observan en el

modelo de cascada son:

Las iteraciones son costosas e implican rehacer trabajo debido a la producción

y aprobación de documentos.

Aunque son pocas iteraciones, es normal congelar parte del desarrollo y

continuar con las siguientes fases.

23

Page 33: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Los problemas se dejan para su posterior resolución, lo que lleva a que estos

sean ignorados o corregidos de una forma poco elegante.

Existe una alta probabilidad de que el software no cumpla con los requisitos

del usuario por el largo tiempo de entrega del producto.

Es inflexible a la hora de evolucionar para incorporar nuevos requisitos. Es

difícil responder a cambios en los requisitos.

La interacción entre fases del Modelo en Cascada puede observarse en la figura 6.

Figura 6: Iteraciones en el Modelo en Cascada

Fuente (Bennington, 1956).

Este modelo sólo debe usarse si se entienden a plenitud los requisitos. Aún se utiliza

como parte de proyectos grandes.

Desarrollo evolutivoLa idea detrás de este modelo es el desarrollo de una implantación del sistema

inicial, exponerla a los comentarios del usuario, refinarla en N versiones hasta que se

desarrolle el sistema adecuado.

Ingeniería y Análisis del Sistema

Análisis de los Requisitos

Diseño

Codificación

Prueba

Mantenimiento

24

Page 34: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Una ventaja de este modelo es que se obtiene una rápida realimentación del usuario,

ya que las actividades de especificación, desarrollo y pruebas se ejecutan en cada

iteración.

En la figura 7 se observa cómo las actividades concurrentes: especificación,

desarrollo y validación, se realizan durante el desarrollo de las versiones hasta llegar

al producto final.

Figura 7: Descripción del Modelo de Desarrollo Evolutivo

Fuente (Pressman, op cit)

Existen dos tipos de desarrollo evolutivo:

Desarrollo Exploratorio: El objetivo de este enfoque es explorar con el usuario

los requisitos hasta llegar a un sistema final. El desarrollo comienza con las

partes que se tiene más claras. El sistema evoluciona conforme se añaden

nuevas características propuestas por el usuario.

Enfoque utilizando prototipos: El objetivo es entender los requisitos del usuario

y trabajar para mejorar la calidad de los requisitos. A diferencia del desarrollo

exploratorio, se comienza por definir los requisitos que no están claros para el

usuario y se utiliza un prototipo para experimentar con ellos. El prototipo

ayuda a terminar de definir estos requisitos.

25

Bosquejo de la Descripción.

Actividades Concurrentes

Especificación

Desarrollo

Validación

Versión Inicial

Versiones Intermedias

Versión Final

Page 35: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Entre los puntos favorables de este modelo están:

La especificación puede desarrollarse de forma creciente.

Los usuarios y desarrolladores logran un mejor entendimiento del sistema.

Esto se refleja en una mejora de la calidad del software.

Es más efectivo que el modelo de cascada, ya que cumple con las necesidades inmediatas del cliente.

Desde una perspectiva de ingeniería y administración se identifican los siguientes

problemas:

Proceso no Visible: Los administradores necesitan entregas para medir el

progreso. Si el sistema se necesita desarrollar rápido, no es efectivo producir

documentos que reflejen cada versión del sistema.

Sistemas pobremente estructurados: Los cambios continuos pueden ser

perjudiciales para la estructura del software haciendo costoso el

mantenimiento.

Se requieren técnicas y herramientas: Para el rápido desarrollo se necesitan

herramientas que pueden ser incompatibles con otras o que poca gente sabe

utilizar (Pressman, op cit).

Desarrollo incrementalMills sugirió el enfoque incremental de desarrollo como una forma de reducir la

repetición del trabajo en el proceso de desarrollo y dar oportunidad de retrasar la

toma de decisiones en los requisitos hasta adquirir experiencia con el sistema. Es

una combinación del Modelo de Cascada y Modelo Evolutivo.

Reduce el rehacer trabajo durante el proceso de desarrollo y da oportunidad para

retrasar las decisiones hasta tener experiencia en el sistema.

Durante el desarrollo de cada incremento se puede utilizar el modelo de cascada o

evolutivo, dependiendo del conocimiento que se tenga sobre los requisitos a

implementar. Si se tiene un buen conocimiento, se puede optar por cascada, si es

dudoso, evolutivo (Mills y O´Neill, 1980).

26

Page 36: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

En la figura 8 podemos observar el flujo general del Modelo de Desarrollo Iterativo

Incremental.

Figura 8: Flujo General del Modelo de Desarrollo Iterativo Incremental

Fuente (Mills y O´Neill, op cit).

Entre las ventajas del modelo incremental se encuentran:

Los clientes no esperan hasta el fin del desarrollo para utilizar el sistema.

Pueden empezar a usarlo desde el primer incremento.

Los clientes pueden aclarar los requisitos que no tengan claros conforme ven

las entregas del sistema.

Se disminuye el riesgo de fracaso de todo el proyecto, ya que se puede

distribuir en cada incremento.

Las partes más importantes del sistema son entregadas primero, por lo cual

se realizan más pruebas en estos módulos y se disminuye el riesgo de fallos.

Algunas de las desventajas identificadas para este modelo son:

Cada incremento debe ser pequeño para limitar el riesgo (menos de 20.000

líneas).

Cada incremento debe aumentar la funcionalidad.

Es difícil establecer las correspondencias de los requisitos contra los

incrementos.

Es difícil detectar las unidades o servicios genéricos para todo el sistema.

27

Definición del bosquejo de requisitos

Asignar requisitos a los elementos

Diseñar la arquitectura del sistema

Validar incrementos

Integrar incrementos

Desarrollar incrementos del sistema

Validar sistema

Sistema completo

Sistema Final

Page 37: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Desarrollo en espiralEl modelo de desarrollo en espiral es actualmente uno de los más conocidos y fue

propuesto por Boehm. El ciclo de desarrollo se representa como una espiral, en lugar

de una serie de actividades sucesivas con retrospectiva de una actividad a otra.

Cada ciclo de desarrollo se divide en cuatro fases:

1. Definición de objetivos: Se definen los objetivos. Se definen las restricciones

del proceso y del producto. Se realiza un diseño detallado del plan

administrativo. Se identifican los riesgos y se elaboran estrategias alternativas

dependiendo de estos.

2. Evaluación y reducción de riesgos: Se realiza un análisis detallado de cada

riesgo identificado. Pueden desarrollarse prototipos para disminuir el riesgo de

requisitos dudosos. Se llevan a cabo los pasos para reducir los riesgos.

3. Desarrollo y validación: Se escoge el modelo de desarrollo después de la

evaluación del riesgo. El modelo que se utilizará (cascada, sistemas formales,

evolutivo, etc.) depende del riesgo identificado para esa fase.

4. Planificación: Se determina si continuar con otro ciclo. Se planea la siguiente

fase del proyecto.

Este modelo a diferencia de los otros toma en consideración explícitamente el riesgo,

esta es una actividad importante en la administración del proyecto.

El ciclo de vida inicia con la definición de los objetivos. De acuerdo a las restricciones

se determinan distintas alternativas. Se identifican los riesgos al sopesar los objetivos

contra las alternativas. Se evalúan los riesgos con actividades como análisis

detallado, simulación, prototipos, etc. Se desarrolla un poco el sistema. Se planifica

la siguiente fase (Boehm, 1988).

28

Page 38: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

La figura 9 muestra el flujo del Modelo de Desarrollo en Espiral:

Figura 9: Flujo del Modelo de desarrollo en Espiral

Fuente (Boehm, op cit).

Cuadro 2: Diferencias entre metodologías tradicionales y ágiles:

Metodologías Tradicionales Metodologías Ágiles

Basados en normas provenientes de estándares seguidos por el entorno de desarrollo. Cierta resistencia a los cambios

Basada en heurísticas provenientes de prácticas de producción de código. Especialmente preparadas para cambios durante el proyecto.

Impuestas externamente. Proceso mucho más controlado, con numerosas políticas/normas.

Impuestas internamente (por el propio equipo). Proceso menos controlado, con pocos principios.

El cliente interactúa con el equipo de desarrollo mediante reuniones. Más artefactos.

El cliente es parte del equipo de desarrollo. Pocos artefactos.

Más roles. Grupos grandes y posiblemente distribuidos.

Pocos roles. Grupos pequeños (<10 integrantes) y trabajando en el mismo sitio.

La arquitectura del software esencial y se expresa mediante modelos. Existe un contrato prefijado.

Menos énfasis en la arquitectura del software. No existe contrato tradicional o es bastante flexible.

Fuente (Boehm, op cit).

29

Page 39: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

De acuerdo con el cuadro 2 se puede observar que las metodologías de desarrollo

ágiles son más orientadas a procesos de desarrollo de software de pocas semanas

de desarrollo y con bajos niveles de formalización requeridos. A continuación se

describen con mayor nivel de especificación las principales semejanzas y diferencias

de las metodologías ágiles y las tradicionales:

Prácticas de desarrollo: En las metodologías de desarrollo ágil se procura

realizar los procesos de software de acuerdo a las prácticas que le han dado

resultados al grupo. En las tradicionales se desarrolla de acuerdo a las

normas sugeridas por los estándares de desarrollo.

Adaptación al cambio: En las metodologías ágiles por la misma capacidad de

reacción son más adaptables a los cambios por el contrario las tradicionales

por el nivel de formalidad en la fase de requerimientos son más resistentes al

cambio.

Control: Por su capacidad de adaptación el proceso se hace menos controlado

que en las metodologías tradicionales que ejercen mayor control en el proceso

por su nivel de formalización.

Documentación: En las metodologías ágiles no se hace énfasis en la

documentación ni en los artefactos a diferencia de las metodologías

tradicionales.

Equipo de trabajo: En las metodologías ágiles existen bajo número de

participantes y roles, por el contrario las metodologías tradicionales sugieren

los roles que proporcionan las normas.

En el cuadro 3 se hace una comparativa entre cada una de las etapas más comunes

en el desarrollo de software y los enfoques que hay entre las metodologías

tradicionales y ágiles.

30

Page 40: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Cuadro 3: Diferencias por etapas y enfoque metodológico:

Modelos Rigurosos Etapa Modelos Ágiles

Planificación predictiva y “aislada”

Análisis de requerimientos

Planificación

Planificación adaptativa: entregas frecuentes +

colaboración del clienteDiseño flexible y extensible +

modelos + documentación exhaustiva

Desarrollo individual con roles y responsabilidades

estrictas

Diseño

Codificación

Diseño simple: documentación mínima + focalizado en la

comunicaciónTransferencia de

conocimiento: programación en pares + conocimiento

colectivoActividades de control: orientado a los hitos + gestión miniproyectos

Pruebas

Puesta en producción

Liderazgo-colaboración: empoderamiento + auto-

organizaciónFuente (Boehm, op cit).

Las metodologías tradicionales no se adaptan a las nuevas necesidades o

expectativas que tienen los usuarios hoy en día, en parte que los métodos usados no

son flexibles ante la posibilidad de la exigencia de nuevos requerimientos. Estos

cambios generalmente implican altos costos, demanda de tiempo y la

reestructuración total del proyecto que se esté llevando; en contraparte, los métodos

ágiles permiten un desarrollo iterativo y adaptable que permite la integración de

nuevas funcionalidades a lo largo del desarrollo del proyecto; para que tanto el

cliente como el desarrollador queden satisfechos porque el producto final tiene una

calidad adecuada.

Un proceso es ágil cuando el desarrollo de software es:

Incremental. Entregas pequeñas de software, con ciclos rápidos.

Cooperativo. Cliente y desarrolladores trabajan juntos constantemente con

una cercana comunicación.

Sencillo. El método en sí mismo es simple, fácil de aprender y modificar.

Está bien documentado y es adaptable. Permite realizar cambios de último

momento).

31

Page 41: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Sus elementos claves son:

Poca documentación

Simplicidad

Análisis como una actividad constante

Diseño evolutivo

Integraciones

Pruebas diarias (Canós, Letelier, 2006).

Cuando Usar Metodologías ÁgilesNo existe una metodología universal para hacer frente con éxito a cualquier proyecto

de desarrollo de software. Toda metodología debe ser adaptada al contexto del

proyecto (recursos técnicos y humanos, tiempo de desarrollo, tipo de sistema).

Históricamente, las metodologías tradicionales han intentado abordar la mayor

cantidad de situaciones de contexto del proyecto, exigiendo un esfuerzo considerable

para ser adaptadas, sobre todo en proyectos pequeños y con requisitos muy

cambiantes.

Las metodologías ágiles ofrecen una solución casi adecuada para una gran cantidad

de proyectos. Sin embargo existen métodos más generales y con mejores resultados

que otros. Saber qué reglas y metodologías aplicar en cada caso es más importante

y útil que seguir ciegamente siempre las mismas.

Las propias prácticas de los métodos ágiles limitan o descartan su uso en algunos

proyectos. A continuación se detallan algunos casos donde no conviene usar

métodos ágiles.

Aplicaciones distribuidas. Las pruebas unitarias son complicadas de aplicar

entre componentes. Sería necesario construir una arquitectura de pruebas

para probar directamente los componentes, que podría ser tan complicada

como el sistema que se desea construir.  

Aplicaciones que requieren seguir un diseño estricto. Por ejemplo: sistemas

operativos, software de telecomunicaciones.

32

Page 42: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Aplicaciones que requieren una documentación exhaustiva. Por ejemplo:

sistemas militares, médicos o industriales.

Aplicaciones basadas fundamentalmente en interfaces gráficas de usuario: No

es fácil aplicar pruebas unitarias a las interfaces gráficas.

Aplicaciones con código heredado. Habría que reescribir todo el código

heredado siguiendo los principios ágiles.

Proyectos muy grandes. La comunicación entre los miembros del equipo es

difícil de conseguir.

Aplicaciones donde la escalabilidad o la eficacia sean importantes. La

escalabilidad o la eficacia no son características que se pueden añadir durante

el proceso del desarrollo del software o que puedan obtenerse refactorizando:

deben considerarse desde un principio (Canós, Letelier, op cit).

Ventajas de las Metodologías Ágiles

Las metodologías ágiles presentan diversas ventajas como:

Rápida respuesta a cambios de requisitos a lo largo del desarrollo.

Entrega continua y en plazos cortos de software funcional.

Trabajo conjunto entre el cliente y el equipo de desarrollo.

Minimiza los costos frente a cambios.

Importancia de la simplicidad, al eliminar el trabajo innecesario.

Atención continua a la excelencia técnica y al buen diseño.

Mejora continua de los procesos y el equipo de desarrollo.

Evita malentendidos de requerimientos entre el cliente y el equipo.

El equipo de desarrollo no malgasta el tiempo y dinero del cliente

desarrollando soluciones innecesariamente generales y complejas que en

realidad no son un requisito del cliente.

Cada componente del producto final ha sido probado y satisface los

requerimientos (Canós, Letelier, op cit).

33

Page 43: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Problemas Comunes de las Metodologías Ágiles

Como en cualquiera otra metodología, también hay desventajas y problemas que

surgen a la hora de implementarlas:

Falta de documentación del diseño. El código no puede tomarse como una

documentación. En sistemas de tamaño grande se necesitar leer los cientos o

miles de páginas del listado de código fuente.

Problemas derivados de la comunicación oral. Este tipo de comunicación

resulta difícil de preservar cuando pasa el tiempo y está sujeta a muchas

ambigüedades.

Falta de calidad. Probar el código de forma constante no genera productos de

calidad, sólo revela falta de análisis y diseño.

Fuerte dependencia de las personas. Como se evita en lo posible la

documentación y los diseños convencionales, los proyectos ágiles dependen

críticamente de las personas.

Falta de procesos de revisión del código. Con métodos como el PSP o TSP se

han conseguido reducciones de errores que oscilan entre el 60 y el 80%. La

programación en parejas tiene resultados del 20 al 40%, que no es mucho

frente al 10 y el 25% de un programador.

Falta de reusabilidad. La falta de documentación hacen difícil que se pueda

reutilizar el código ágil.

Sobre costos y retrasos derivados de la refactorización continua. Para un

sistema de ciertas proporciones, los costos y retrasos derivados de la

refactorización no pueden despreciarse.

Restricciones en cuanto a tamaño de los proyectos abordables.

Rigidez. Algunos métodos ágiles son muy rígidos: deben cumplirse muchas

reglas de una forma estricta para garantizar el éxito del proyecto. Por ejemplo

XP exige en realidad mucho esfuerzo, concentración y orden.

Cambios. Los modelos de datos son “pesados” y no pueden cambiarse así

como así solo porque el cliente que ira a incorporar más funciones al sistema.

Problemas derivados del fracaso de los proyectos ágiles. Si un proyecto ágil

fracasa no hay documentación o hay muy poca; lo mismo ocurre con el

34

Page 44: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

diseño. La comprensión del sistema se queda en las mentes de los

desarrolladores (Canós, Letelier, op cit).

35

Page 45: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

JUSTIFICACIÓN

La metodología que actualmente usa la empresa le ha dado buenos resultados, pero

se usa de manera muy estricta a todos los proyectos. Aunque hay algunos grupos

que ya han adoptado practicas de metodologías ágiles, además, requiere de un gran

número de formatos y documentos que deben ser llenados, documentados y

aprobados por muchos niveles, esto ha hecho que en algunos proyectos la respuesta

al cambio sea lenta, y requiera de bastante tiempo para que un cambio pueda ser

aprobado. También, es cada vez más común un atraso significativo en las fases de

desarrollo.

Las metodologías ágiles proponen una solución ligera al problema del exceso de

pasos para llevar a cabo una tarea, aunque se ha denominado que es aplicable por

lo regular para equipos pequeños, esta se puede llevar a la práctica sin problema en

desarrollo de sistemas grandes

36

Page 46: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

OBJETIVO

Describir el uso de metodologías ágiles en una empresa de desarrollo de software en

Ciudad Juárez, Chihuahua.

37

Page 47: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

METODOLOGÍA

1. Lugar y Tiempo

El trabajo se llevó a cabo entre los meses de enero y abril de 2009 en una

empresa de desarrollo de software de Ciudad Juárez.

2. Carácter

La investigación fue de carácter no experimental ya que no se manipuló la

variable.

3. Diseño

El diseño de la investigación fue de tipo transeccional descriptivo, ya que la

recolección de los datos se realizó en un momento único en el tiempo y se incluyó

una sola variable.

4. Población de Interés

Todos los equipos de desarrollo que pertenezcan a la empresa de desarrollo de

software en Ciudad Juárez.

5. Unidad de análisis.

La unidad de análisis estuvo orientada hacia aquellos equipos de desarrollo de la

empresa que sean proyectos manejados (con gerencia) y estén usando métricas

en sus entregas.

6. Variable

La variable que se midió en el proceso fue el uso de metodologías ágiles en el

proceso de desarrollo de software.

38

Page 48: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

7. Indicadores

Variable: Uso de las metodologías ágiles.

Indicadores: Tiempo de Respuesta al cliente; Resultados de la revisión de

producto; Resultados de los métricas de calidad.

8. Recolección de datos

El instrumento que se utilizo para la recolección de datos fue un cuestionario que

se realizó al gerente del área de desarrollo de software relacionada, así como al

personal de cada uno de los equipos de desarrollo. Dicho cuestionario se agrega

como anexo 1.

9. Análisis de la información

La información obtenida en la entrevista se comparo con la obtenida en

cuestionarios y de esta manera se determinó el uso de la metodología ágil

dentro de la empresa. La información se presenta en forma de gráficas y

diagramas de proceso los cuales proporciono la empresa para mejor

comprensión de los procesos que llevan a cabo los empleados que desarrollan

software.

10. Interpretación de resultados

Se realizó una redacción explicativa de cómo se lleva a cabo el proceso de

desarrollo de software. Se presentaron graficas y diagramas de proceso que

muestran los porcentajes de uso de las metodologías ágiles dentro de la

empresa, el conocimiento que los empleados tienen al respecto y también los

procesos que el personal lleva a cabo durante el desarrollo de software.

39

Page 49: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

RESULTADOS

Se realizó un cuestionario al personal de la empresa de desarrollo de software en

Ciudad Juárez, el cual está dividido en tres secciones, que son, preguntas sobre los

participantes, preguntas sobre la organización y preguntas sobre la transición e

implementación de las metodologías ágiles. Las primeras 4 gráficas del cuestionario

son acerca del acercamiento que los encuestados han tenido hacia las metodologías

ágiles, las gráficas 5, 6, 7, 8 y 9 son acerca de la organización donde labora el

personal encuestado, y las últimas 5 (10, 11, 12 ,13 y 14) son acerca de la transición

e implementación de las metodologías ágiles en la organización.

En las primeras 4 gráficas podemos ver que el personal ha participado muy poco en

este tipo de encuestas, han usado muy poco las metodologías ágiles aun cuando la

mayoría de los encuestados son desarrolladores de software.

En las gráficas 5, 6, 7, 8 y 9 podemos ver que el personal labora en grupos de

tamaño medio, considerando un máximo 20 personas, el personal tiene poco

conocimiento acerca de quienes usan metodologías ágiles dentro de la empresa, así

mismo de la cantidad de proyectos que se están usando bajo el esquema de

metodologías ágiles. La mayor parte del personal desconoce por cuanto tiempo han

usado metodologías ágiles en esta empresa, además no tienen la certeza de cuantas

localidades de la empresa utilizan metodologías ágiles.

En las últimas 5 gráficas (10, 11, 12, 13 y 14) podemos ver que el personal desea el

cambio a las metodologías ágiles entre otras cosas para mejorar, calidad,

productividad y el proceso de mantenimiento del software. Las principales barreras

que el personal ve para la implementación de una metodología ágil son la falta de

experiencia y la cultura organizacional. A pesar de este desconocimiento el personal

piensa que un alto porcentaje de proyectos usando estas metodologías es exitoso y

ha ayudado a reducir los defectos en el desarrollo de software y al incremento de la

productividad

40

Page 50: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Nivel de participación: en esta gráfica podemos ver el nivel de participación en

encuestas anteriores del personal de la empresa de desarrollo de software de Ciudad

Juárez acerca del desarrollo de software usando metodologías ágiles.

Gráfica 1: Nivel de participación

41

Page 51: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

En este cuadro podemos ver los roles que desempeña el personal encuestado en la

empresa de desarrollo de software de Ciudad Juárez. Esta pregunta no se

representa con gráfica de pastel ya que los encuestados podían contestar más de

una opción (o todas si así aplicaba su caso) por lo que se representa con una gráfica

en barras y porcentajes.

Gráfica 2: Roles desempeñados por los encuestados

42

Page 52: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Nivel de conocimiento/participación del personal encuestado de la empresa de

desarrollo de software de Ciudad Juárez sobre metodologías ágiles.

Gráfica 3: Nivel de Conocimiento/Participación

43

Page 53: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Tiempo que el personal de la empresa de desarrollo de software de Ciudad Juárez

ha usado las metodologías ágiles sin importar si ha sido por razones laborales o

personales.

Gráfica 4: Tiempo de uso de Metodologías Ágiles

44

Page 54: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Tamaño del área o grupo donde el personal encuestado labora.

Gráfica 5: Tamaño del área de trabajo

45

Page 55: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Conocimiento sobre la distribución del personal que usa metodologías ágiles en la

empresa de desarrollo de software de Ciudad Juárez.

Gráfica 6: Conocimientos sobre la empresa

46

Page 56: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Porcentaje de proyectos que se desarrollan en la empresa de desarrollo de software

de Ciudad Juárez usando metodologías de desarrollo ágiles.

Gráfica 7: Porcentaje de proyectos con metodologías ágiles

47

Page 57: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Tiempo durante el cual la empresa de desarrollo de software de Ciudad Juárez ha

estado haciendo uso de metodologías ágiles para el desarrollo de software.

Gráfica 8: Tiempo de uso de Metodologías Ágiles por la empresa

48

Page 58: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Número de localidades de la compañía que están haciendo uso de las metodologías

ágiles para el desarrollo de software.

Gráfica 9: Localidades que usan Metodologías Ágiles

49

Page 59: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Principales razones para adoptar el uso de metodologías ágiles para el desarrollo de

software en la empresa de desarrollo de software de Ciudad Juárez. Esta pregunta

se representa en grafica de barras y porcentajes ya que el personal encuestado

podía responder más de una opción (o todas si aplicaba el caso).

Gráfica 10: Razones para adoptar Metodologías Ágiles

50

Page 60: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Metodologías ágiles para el desarrollo de software que más conoce el personal

encuestado en la empresa de desarrollo de software de Ciudad Juárez.

Gráfica 11: Metodologías Ágiles más conocidas

51

Page 61: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Barreras/obstáculos que enfrenta el personal de la empresa de desarrollo de

software de Ciudad Juárez para adoptar en un futuro las metodologías ágiles para el

desarrollo de software. Esta pregunta no se representa con una grafica de pastel ya

que el personal encuestado podía responder más de una opción (o todas si aplicaba

en su caso) por lo que se representa con barras y porcentajes.

Gráfica 12: Barreras para adoptar las Metodologías Ágiles

52

Page 62: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Porcentaje de proyectos que el personal encuestado considera que han sido exitosos

usando metodologías ágiles en la empresa de desarrollo de software de Ciudad

Juárez.

Gráfica 13: Porcentaje de proyectos exitosos usando Metodologías Ágiles

53

Page 63: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Estimación en porcentaje sobre cuáles son los beneficios que se han obtenido en la

organización con el uso de metodologías ágiles en la empresa de desarrollo de

software de Ciudad Juárez. En este recuadro se toman en cuenta los porcentajes de

aquellos encuestados que respondieron esta pregunta, los que no respondieron

fueron excluidos.

Gráfica 14: Estimación de beneficios obtenidos

Beneficio Porcentaje estimadoIncremento en productividad 42%Mejora en tiempos de entrega 36%Reducción de defectos en el software 52%Reducción de costos 28%

54

Page 64: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

CONCLUSIONES Y RECOMENDACIONES

CONCLUSIONESEl uso de una metodología ágil permite a la empresa de desarrollo de software de

Ciudad Juárez desarrollar software de manera más rápida y segura, y a la vez

reducir el costo de desarrollo.

Existe el conocimiento básico sobre metodologías ágiles de desarrollo de software

aún cuando no se ha identificado una metodología en particular. La empresa tiene

implementado un método que facilita atender las necesidades inmediatas de clientes

demandantes de cambios en sus sistemas.

RECOMENDACIONESAunque la empresa cuenta con experiencia en el desarrollo de software utilizando

una metodología ágil, el personal tiene poco conocimiento de esto y no identifica a

ciencia cierta la metodología utilizada, se recomienda lo siguiente:

1. Identificar la metodología utilizada e informar al personal de la empresa cual

es la metodología así como los pasos y procesos que esta implica.

2. Capacitar al personal de desarrollo que forma parte de los dos equipos que

utilizan metodología ágil en el desarrollo de software para que tengan mejor

conocimiento del tema, eso permitirá madurar el proceso de desarrollo

mediante metodologías ágiles.

3. Definir adecuadamente los roles que se requieren en el modelo seleccionado

4. Dar mayor importancia al desarrollo de software por medio del uso de una

metodología ágil y formalizar su uso.

55

Page 65: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

LITERATURA CITADA

Abrahamsson, P., Ronkainen, J. 2002. Agile software development methods

Review and analysis.. VTT Publications.

Beck, K. 1999. Extreme programming explained: Embrace Change. Reading, Mass.,

Addison-Wesley.

Boehm, B. 2002. Get Ready For the Agile Methods, With Care. Computer.

Boehm, B. 1988. A Spiral Model of Software Development and Enhancement.

Bennington, B. 1956. Agile Requirements Methods.

http://www.therationaledge.com/content/agilerequirements.

Canós, J., Letelier, P. 2006. Metodologías Ágiles para el Desarrollo de Softaware.

Universidad Politécnica de Valencia.

http://www.willydev.net/descargas/prev/TodoAgil.pdf

Cockburn, A. 2001. Agile Software Development.. Addison-Wesley.

Cockburn, A. 2001. Agile software development: the people factor, Computer,

November 2001, IEEE.

Figueroa, G., Solis, C. 2008. Metodologías Tradicionales vs. Metodologías Ágiles.

Universidad Técnica Particular de Loja

Fowler, M. 2001. Planning Extreme Programming, Addison-Wesley Professional, 1st

edition.

Fowler, M., Beck, K. 1999. Refactoring: Improving the Design of Existing Code..

Addison-Wesley.

Highsmith, J. 2002. Agile software development ecosystems, Addison-Wesley,

Boston.

Highsmith, J., Orr, K. 2000. Adaptive Software Development: A Collaborative

Approach to Managing Complex Systems. Dorset House.

Microsoft, 2004. Microsoft Solution Framewordk Ver. 3.0. http://www.microsoft.com/DownLoads/details.aspx?FamilyID=a71ac896-1d28-45a4-880c-8b0cc8265c63&displaylang=en

Mills, H., O´Neill, D. 1980. The Management of Software Engineering, IBM Systems

Pires, Donald. 2001. Manifiesto Ágil, Uniersidad de California en Los Ángeles UCLA,

(en línea), disponible en http://www.manifiestoagile.com

56

Page 66: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Poppendieck M., Poppendieck T. 2003. Lean Software Development: An Agile

Toolkit for Software Development Managers. Addison Wesley.

Pressman, R. 1997. Software Engineering - A Practitioner's Approach, McGraw Hill.

Reynoso C. 2005. Métodos ágiles en el desarrollo de software.

http://www.microsoft.com/spanish/msdn/latam/mediacenter/webcast/architect.a

spx (15 Nov 2005)

Schwaber K., Beedle M. 2001. Agile Software Development with SCRUM.. Prentice

Hall.

Takeuchi, H., Nanoka, I. 1986. The new product development game. Harvard

Business Review Jan/Feb.

The Standish Group. 2001. Fallas en los desarrollos de Sistemas de IT.

Waters, K. 2007. How do you eat an elephant?

http://www.agilealliance.org/article/articles_by_category/5 (25 Marzo

2007).

Wells, D. 2003. Proceedings of Extreme Programming and Agile Methods XP/Agile

Universe.

57

Page 67: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

ANEXOS

Anexo 1: Cuestionario aplicado al personal y gerentes de JPMorgan Chase.

La siguiente encuesta tiene como objetivo determinar en nivel de uso de las

metodologías ágiles para el desarrollo de software dentro de la empresa. A

continuación se describe brevemente las metodologías ágiles así como las

tradicionales.

Las metodologías tradicionales concentran su atención en llevar una documentación

exhaustiva de todo proyecto y centran su atención en cumplir en un plan de proyecto,

definido todo esto, en la fase inicial del desarrollo del proyecto. Otra de las

características importantes dentro de este enfoque tenemos los altos costos al

implementar y al no ofrecer una buena solución para proyectos donde el entorno es

volátil. Las metodologías tradicionales o formales se enfocan en documentación,

planificación y procesos (plantillas técnicas de administración, revisiones, etc.)

Las metodologías tradicionales presentan ciertos problemas tales como:

Fases de obtención de requerimientos, análisis y diseño muy costosas en cuanto a

tiempo y recursos.

Muchos niveles de aprobación, lo cual lleva comúnmente al retraso en las fechas

de entrega.

Una vez que se llega a la fase de desarrollo es muy difícil para el equipo el

entender un sistema tan complejo al ser tan amplia el área que se abarca.

En el otro lado están las metodologías ágiles, las cuales se han incorporado muy

bien a un mundo de requerimientos cambiantes, y estas nos muestran ciertas

ventajas sobre los métodos tradicionales, tales como:

Buena respuesta a los cambios durante la fase de desarrollo, lo cual es cada vez

más común en los proyectos.

Entrega continua y rápida de secciones funcionales del sistema.

Involucramiento del cliente.

Eliminación del trabajo innecesario.

58

Page 68: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Mayor atención a la parte técnica y de diseño.

Mejora continua de los procesos y equipos de desarrollo

Las metodologías agiles presentan un nuevo enfoque que nace como respuesta a los

problemas de las metodologías tradicionales y se basa en aspectos puntuales, el

retrasar las decisiones y la planificación adaptativa; permitiendo potencia aún más en

el desarrollo de software a gran escala. El resultado es un Manifiesto Ágil cuyas

principales ideas son:

Los individuos y las iteraciones entre ellos son más importantes que las

herramientas y los procesos empelados.

Es más importante crear un producto de software que funcione que escribir

documentación exhaustiva.

La colaboración con el cliente debe prevalecer sobre la negociación de contratos.

Por favor lea cuidadosamente las siguientes preguntas y responda subrayando la(s)

respuesta(s) convenientes en cada pregunta(s), en alguna de ellas es posible

seleccionar más de una respuesta. En caso de responder este cuestionario por

medio de archivo electrónico favor de marcar en negrita las respuestas.

Nombre:Correo Electrónico: Empresa:

Preguntas sobre los participantes ¿Has tomado parte antes en una encuesta sobre metodologías de desarrollo?

a) Si

b) Primera vez

c) No

d) No recuerdo

59

Page 69: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

2 ¿Cuál de los siguientes roles describe mejor tu actual posición en la compañía?

- Administrador de proyectos

- Desarrollador/programador

- Jefe de desarrollo

- Consultor

- Arquitecto de software

- QA/pruebas/tester

- IT Staff/soporte

3 ¿Cuál de las siguientes situaciones describe mejor tu nivel actual de

conocimiento/participación en Metodologías Ágiles?

- Líder de equipo de desarrollo que usa metodologías ágiles

- Formo parte de un equipo de desarrollo que hace uso de metodologías ágiles

- Estoy considerando introducir metodologías ágiles en mi actual equipo

- He formado parte de equipos de trabajo que hacen uso de metodologías

ágiles

- He escuchado acerca de las metodologías ágiles, conozco muy poco al

respecto

4 ¿Por cuánto tiempo has hecho uso personalmente de las metodologías ágiles sin

importar si en el orden personal o laboral?

a) Nunca

b) 6 meses

c) Hasta 1 año

d) Entre 1 y 2 años

e) Entre 2 y 5 años

f) Más de 5 años

60

Page 70: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Preguntas sobre la organización5 ¿Qué tan grande es la empresa de software a la que perteneces? Incluyendo

personal relacionado en cualquier aspecto al desarrollo de software.

a) <5 personas

b) Entre 5 y 20 personas

c) Entre 21 y 50 personas

d) Más de 50 personas

6 ¿Actualmente la empresa tiene personal distribuido (que forma parte de los

equipos de desarrollo que usan metodologías ágiles) en localidades diferentes?

a) Si

b) No

7 ¿Qué porcentaje de los proyectos de tu empresa se desarrollan haciendo uso de

metodologías ágiles?

a) <20%

b) Entre 20 y 40%

c) Entre 40 y 60%

d) Entre 60 y 80%

e) Entre 80 y 100%

8 ¿Por cuánto tiempo tu empresa ha estado haciendo uso de metodologías ágiles en

sus proyectos?

a) Nunca

b) 6 meses

c) Hasta 1 año

d) Entre 1 y 2 años

e) Entre 2 y 5 años

f) Más de 5 años

61

Page 71: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

9 ¿Cuántas localidades distintas están haciendo uso de metodologías ágiles en la

compañía?

a) 1

b) 2

c) 3

d) Más de 3

e) Desconozco

Preguntas sobre la transición e implementación10 ¿Cuál es la principal razón para adoptar metodologías ágiles dentro de la

empresa? En esta pregunta puedes seleccionar más de una opción.

- Mejorar la habilidad en el manejo de cambios

- Incrementar productividad

- Mejorar calidad en el software

- Mejorar la relación entre TI y negocios

- Reducir riesgos de negocio

- Mejorar o aumentar la disciplina de desarrollo

- Mejorar el proceso de mantenimiento y cambios de software

- Mejorar el quipo de trabajo

11 ¿Qué metodologías ágiles conoces mas? En esta pregunta puedes seleccionar

más de una opción.

a) Scrum

b) XP

c) RUP

d) Otras: ¿Cuáles?

62

Page 72: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

12 ¿Cuáles son las barreras/obstáculos para adoptar en un futuro las metodologías

ágiles en tu actual organización? En esta pregunta puedes seleccionar más de una

opción.

- Cultura organizacional

- Resistencia al cambio en la organización

- Falta de experiencia con metodologías ágiles entre el personal

- Apoyo de los niveles más altos de la organización

- Proyectos demasiado complejos

- Falta de colaboración por parte de los clientes

- Desconfianza en los resultados de las metodologías ágiles

- Tiempo de transición muy largo

- Limitantes en presupuestos financieros

13 ¿Qué porcentaje de proyectos desarrollados con metodologías ágiles has sido

exitosos en su organización?

a) < 10%

b) Entre 10 y 30%

c) Entre 30 y 60%

d) Entre 60 y 90%

e) Cercano al 100%

f) 100%

14 Por favor intente estimar cuales son los beneficios que ha obtenido la

organización con el uso de metodologías ágiles (responder todos los incisos).

Beneficio Porcentaje estimadoIncremento en productividadMejora en tiempos de entregaReducción de defectos en el softwareReducción de costos

63

Page 73: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Anexo 2: Planeación de actividades para los equipos de desarrollo que usan

metodología ágil.

64

Page 74: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Anexo 3: Flujo del proceso de control de cambios para los equipos que trabajan

usando la metodología ágil de desarrollo.

65

Page 75: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Anexo 4: Flujo del proceso de desarrollo de sistemas para los equipos que utilizan

metodologías ágiles.

66

Page 76: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Anexo 5: Flujo del Proceso de Pruebas.

67

Page 77: TESINA: USO DE METODOLOGÍAS ÁGLES PARA EL DESARROLLO DE SOFTWARE EN UNA EMPRESA DE DESARROLLO DE SOFTWARE EN CIUDAD JUÁREZ

Anexo 6: Flujo del Análisis y Diseño de sistemas

68