Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías...

56
Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL iridis group Metodologías Ágiles Magister en Ingeniería de Software UNSL

Transcript of Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías...

Page 1: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Metodologías Ágiles

Magister en Ingeniería de SoftwareUNSL

Page 2: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Este curso

• Se basa en el análisis critico de metodologías y procesos de desarrollo

• Trata detalladamente dos metodologías Ágiles

• Quizas el mayor desafío que Ustedes tienen es formar una opinión basada en evidencia acerca de las metodologías ágiles y rigurosas

Page 3: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Aprobación

• 15 % : Participación en clase• 25 % : Trabajos Prácticos• 60% : Trabajo de investigación + Presentación

Page 4: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Objetivos de este modulo

• Tener una interpretación propia basada en evidencia acerca de por qué surgieron las metodologías ágiles

• Identificar fortalezas, debilidades, tendencias y preferencias en las metodologías robustas y ágiles

Page 5: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Contenidos

• Los inicios de la ingeniería de software• La crisis del software• Los procesos y modelos robustos• Los procesos y modelos ágiles• La gente

Page 6: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Advertencia

• Algunos puntos estarán interpretados, y Uds. son libres de tener una visión diferente

• Esta presentación no es “completa”• La forma en que algunos temas se presentan

pueden cuestionar algunos dogmas de la ingeniería de software

Page 7: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

El principio (sin ingeniería)

Page 8: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Contexto histórico

• La NATO declara la crisis del software en 1968, luego de crear el término Ingeniería de Software un año antes

• Deming, procesos, calidad en el resto de la industria

• Bill Curtis sobre variación entre programadores

• Fred Brooks “The mythical man-month”• Gerald Weinberg “The psichology og

programming”

Page 9: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Contexto histórico

• Evidencia de sectores no-software de una relación directa entre mejore procesos - mejores productos

• Clean-pipe & Dirty water• Una de las premisas de CMM

Page 10: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Contexto histórico

• Contratos multimillonarios con el DoD• Necesidad de “certificar” proveedores

Page 11: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Breve paréntesis

• Durante Semana Santa, escuché una excelente interpretación del Requiem, de Mozart por parte de la Sinfónica de Córdoba.

• Obviamente, la variación de cada uno de los individuos, o algunos en particular, con miembros de la Sinfónica de Londres, eran notables

Page 12: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Breve paréntesis

• El resultado final, sin embargo, era altamente comparable. Las diferencias se fundían en una excelente presentación, que dejó satisfechos a los aún mas exigentes

• Era tan descabellado pensar que un equipo de desarrollo de 400 personas podía funcionar como una orquesta?

Page 13: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

CMM

• Carneggie Mellon (por qué no el MIT? O Cal Tech?)

• Bill Curtis• Mark Paulk• Watts Humphrey

Page 14: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

El modelo del SEI

• Modelo IDEAL de process improvement• Ciclo clásico al estilo Demming, con una fase

inicial de diagnóstico contra un modelo de referencia

• CMM es el modelo de referencia

• Los niveles, y el término madurez, son extraídos de Crosby (“Quality is Free”)

Page 15: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Quality is free

• La calidad se mide por el costo de reparar errores

• Niveles de Crosby:– Uncertainty– Awakening– Enlightment– Wisdom– Certainty

Page 16: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Estructura de CMM

• Se pueden encontrar muchos tutoriales• 500 páginas de recomendaciones, aunque el

modelo podría explicarse en 20

• Breve debate: El nombre de los niveles (Inicial, Repetible, Definido, Gerenciado, Optimizado)

• Assessments de CMM (no auditorías, ni certificaciones)

Page 17: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Otros modelos

• Bajo la sombrilla de SPI (software process improvement) surgieron otros modelos

• SPICE• ISO 9001

• El espíritu de CMM se desmerece en una certificación.

Page 18: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Que se entiende por nivel Definido?

Page 19: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Seriamente

• CMM no es normativo, pero...• Características de un proceso robusto

– Upfront planning– Requirements Management, en un sentido

tradicional– Ciclos de vida waterfall, V-model – Métricas

Page 20: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

CMM y Producción en masa

– Stock– Hand-off– Proceso con nivel decreciente en la

necesidad de habilidades de los desarrolladores

– Responsabilidad diluida en la organización

Page 21: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Estructura de un Proceso de SW

• Pipeline de fases ETVX• Cada fase tiene un entregable físico:

documento de análisis, documento de diseño, etc

• Planes detallados para las actividades de cada fase

Page 22: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Los problemas de las metodologías rigurosas

• Tolvanen, 1998– overhead de proceso– métodos difíciles de usar y aprender– ambigüedad

Page 23: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Los problemas de las metodologías rigurosas

• Baskerville, Travis &Treux, 1992– métodos orientados a proyectos grandes

(realmente grandes)– falta de adaptabilidad

Page 24: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Los problemas de las metodologías rigurosas

• DeMarco & Lister, 1987– la gente puede centrarse mas en la

documentación que en el desarrollo real– no se asigna suficiente responsabilidad a los

desarrolladores– falta de motivación

Page 25: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Los problemas de las metodologías rigurosas

• Bohem (2002)– enfoques rigurosos mas apropiados para

sistemas críticos. La “inercia” de un enfoque rigurosos no es apropiada para ambientes de cambio y velocidad.

Page 26: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Desarrollo ágil de SW (Agile)

• Un compromiso útil entre nada de proceso y demasiado proceso (Fowler, 2001)

Page 27: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Lean thinking

• El modelo de manufactura en el que se baso Crosby, y luego inspirara CMM y otros procesos rigurososos, evolucionó

• Conceptos como:– Just in time– Satisfacción del cliente– Eliminación de pasos innecesarios

Page 28: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Ejemplo de empresas “Lean”

• Toyota– Los trabajadores pueden detener la línea si

detectan un defecto• eBay, Amazon, FedEx

– Eliminación de las órdenes y tracking innecesario. Just-in-time. Envíos sin stock.

• Chrysler– Acuerdos de colaboración con proveedores

Page 29: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Principios de producción Lean

• Toda tarea debe agregar valor al producto• Focalizarse en la gente que agrega valor• Agregar valor basado en demanda• Optimizar entre organizaciones

Page 30: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Gastos en producción Lean

• Producción en exceso• Stock• Pasos extra en el proceso• Búsqueda de información• Defectos• Esperas • Transportes

Page 31: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Agile Alliance

• 17 representantes de metodologías alternativas (XP, Scrum, Crystal...) reunidos en un hotel de Utah en 2001

• Companías que competían en un mismo mercado, intentando una “suma positiva”

Page 32: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Agile Manifesto

• declaración de principios• muy buena aceptación (debate Bohem)

Page 33: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Los cuatro valores

• Individuos e interacciones por sobre procesos y herramientas

• Software funcionando por sobre documentación detallada

• Colaboración por sobre negociación con el cliente

• Responder a cambios por sobre seguir un plan

Page 34: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Individuos e Interacciones

• La suposición de los roles intercambiables

Page 35: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Software por sobre documentación

• foco en la implementación por sobre el modelado

• no significa que no se documenten requerimientos, diseño, etc.

Page 36: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Debate

• UML, es Agile?• Como sé que mi proyecto tiene

suficiente/demasiada documentación?

Page 37: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Colaboración del Cliente

• algunas metodologías un poco extremas• el espíritu es no “extorsionar” al cliente con un

contrato. Estar dispuesto al cambio, y cerca del cliente para predecirlo.

Page 38: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Responder al cambio

• requirements emergence• cambios a los requerimientos originales

pueden tener mayor valor que los relevados inicialmente

Page 39: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Los 12 principios del Manifesto

1 - La prioridad es satisfacer al cliente a través de releases tempranos y frecuentes

2 - Recibir cambios de requerimientos, aun en etapas finales

3 - Releases frecuentes (2 semanas a un mes)4 - Técnicos y no técnicos trabajando juntos

TODO el proyecto

Page 40: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Los 12 principios del Manifesto

5 - Hacer proyectos con individuos motivados6 - El medio de comunicación por excelencia es

cara a cara7 - La mejor métrica de progreso es la cantidad

de software funcionando8 - El ritmo de desarrollo es sostenible en el

tiempo

Page 41: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Los 12 principios del Manifesto

9 - Atención continua a la excelencia técnica10 - Simplicidad - Maximización del trabajo no

hecho11 - Las mejores arquitecturas, diseños y

requerimientos emergen de equipos auto-organizados

12 - A intervalos regulares, el equipo evalúa su desempeño y ajusta la manera de trabajar

Page 42: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

1. Satisfacción del cliente como prioridad uno

• Basado en los releases frecuentes y en etapas tempranas

• Glass (2001) Cuidado con el manejo de expectativas del cliente

Page 43: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

2 - Cambios son bienvenidos

• Brooks (1987) ya identificó el problema• “stabilize and synchronize” de Microsoft• requiremennts emergence• Como se factura esto?

Page 44: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

3 - Entregas frecuentes

• la psicología del programador (Weinberg): Objetivos próximos y distantes

• mejor manejo de requerimientos (Cockburn, 2000)

• evolución del modelo en espiral

Page 45: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

4 - Técnicos y desarrolladores trabajando juntos

“En mi trabajo, tengo los usuarios mas estúpidos del mundo”

• Microsoft: managers escriben código• Reducción del gap comunicacional

Page 46: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

5 - Motivación

• people factor• la gente es la mejor oportunidad para mejorar

la productividad (Bohem, 1981)• el Principio de Dilbert

Page 47: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

6 - Comunicación cara a cara

• No es necesariamente informal• el espacio físico debe favorecer la

comunicación • frecuentemente confundido con una reducción

en la documentación

Page 48: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

7 - Software es la mejor medida de progreso

• no significa que las metodologías ágiles no colecten otras métricas

• no confundir funcionalidad con “cantidad de software”

• la mayoría de las métricas tradicionales son un epifenómeno de software entregado

Page 49: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

8 - Ritmo de desarrollo sostenible

• DeMarco & Lister (1987) : Mas de 40 horas por semana no es sostenible en el tiempo

• responsabilidad social + efectividad ($)• una de las características de “venta” de CMM

a desarrolladores es, de hecho, la disminución del overtime

Page 50: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

9 - Excelencia técnica

• revisión continua de la arquitectura/diseño• mejora continua del producto• peer reviews

Page 51: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

10 - Maximizar el trabajo no hecho (o Simplicidad)

• no implementar mas de lo acordado• no debe confundirse con relegar diseño y

saltar a la codificación• Refactoring• No es “good enough quality”

• Cómo se alinea este principio con la forma de ser del desarrollador argentino?

Page 52: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

11 - Equipos auto-organizados

• sinergia (DeMarco & Lister)• es un principio que apunta a la organización• proceso de reclutamiento• objetivos - motivación - satisfacción con el

trabajo• preservar los equipos de un proyecto a otro

Page 53: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

12 - Autoevaluación

• mejora continua del proceso• conocimiento organizacional• los cambios pueden ser un poco erráticos si no

se aplica un criterio cuantitativo

Page 54: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Práctico #1

1 - Fundamentar reducciones en el costo de cambio de requerimientos en una metodología que cumple los principios de Agile. Comenzar con la curva clásica, de cualquier libro de ingeniería de software.

Page 55: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Práctico #1

2 - Evaluar el costo de cambios desde una perspectiva del cliente. Es similar la necesidad del cliente si se usa una metodología tradicional?

Page 56: Iridis group Metodologías Ágiles - Maestría en Ingeniería de Software -UNSL Metodologías Ágiles Magister en Ingeniería de Software UNSL.

Metodologías Ágiles - Maestría en Ingeniería de Software -UNSLiridis group

Práctico #1

3 - Si vemos un libro de requerimientos como una orden de trabajo, y las correspondientes estimaciones como el presupuesto, el contrato de la empresa de software con su cliente es bastante directo . Bosqueje como sería un contrato usando una metodología ágil que implemente la misma aplicación.