modelo de desarrollo iterativo

18
sigma M M o o d d e e l l o o d d e e P P r r o o c c e e s s o o d d e e S S o o f f t t w w a a r r e e I I t t e e r r a a t t i i v v o o A A D D S S I I Mayo,2014 Editorial Sigma Digital Vol. 1

description

 

Transcript of modelo de desarrollo iterativo

Page 1: modelo de desarrollo iterativo

sigma

MMooddeelloo ddeePPrroocceessoo ddee

SSooffttwwaarree IItteerraattiivvoo

AADDSSII

Mayo,2014

Editorial Sigma DigitalVol. 1

Page 2: modelo de desarrollo iterativo

CCoonntteenniiddoo

PPrroocceessooss ddee ssooffttwwaarree

PPrroocceessoo ddee ssooffttwwaarree eenn llaa oorrggaanniizzaacciioonn

MMooddeelloo ddee pprroocceessoo ddee ssooffttwwaarree

CCllaassiiffiiccaacciioonn ddee llooss mmooddeellooss ddee pprroocceessoo ddee ssooffttwwaarree

MMooddeelloo ddee ddeessaarrrroolllloo iitteerraattiivvoo

EEll cciicclloo ddee vviiddaa ddeell mmooddeelloo ddee ddeessaarrrroolllloo iitteerraattiivvoo

GGeenneerraalliiddaaddeess ddeell mmooddeelloo ddee ddeessaarrrroolllloo iitteerraattiivvoo

MMeettooddoollooggííaass yy eell ddeessaarrrroolllloo iitteerraattiivvoo

VVeennttaajjaass ddee eessttee ttiippoo ddee mmooddeelloo

MMooddeellooss ddee pprroocceessoo iitteerraattiivvoo ee iinnccrreemmeennttaall

RReeffeerreenncciiaass

PPaagg..

33

55

66

77

77

88

99

1122

1133

1144

1177

Page 3: modelo de desarrollo iterativo

3

Introducción a los Procesos deSoftware

Un proceso de desarrollo de softwarees un conjunto de personas, estructurasde organización, reglas, políticas,actividades y sus procedimientos,componentes de software,metodologías, y herramientas utilizadaso creadas específicamente para definir,desarrollar, ofrecer un servicio, innovary extender un producto de software.

El objetivo de un proceso dedesarrollo de software es la creacióneficiente y eficaz de productos desoftware que cumplan con losrequisitos establecidos por el cliente.

El proceso de desarrollo de softwareno es único. No existe un proceso desoftware universal que sea efectivopara todos los contextos de proyectosde desarrollo. Debido a estadiversidad, es difícil automatizar todoun proceso de desarrollo de software.A pesar de la variedad de propuestasde proceso de software, existe unconjunto de actividades fundamentalesque se encuentran presentes en todosellos.

• EEssppeecciiffiiccaacciióónn ddee ssooffttwwaarree:: Se debedefinir la funcionalidad y restriccionesoperacionales que debe cumplir elsoftware.• DDiisseeññoo ee IImmpplleemmeennttaacciióónn:: Se diseña yconstruye el software de acuerdo a laespecificación.• VVaalliiddaacciióónn:: El software debevalidarse, para asegurar que cumplacon lo que quiere el cliente.• EEvvoolluucciióónn:: El software debeevolucionar, para adaptarse a lasnecesidades del cliente.

Page 4: modelo de desarrollo iterativo

4

Naturaleza Especialde Proceso Software

(Derniame et al., 1999)

• Es complejo

• No es un proceso de producción típico

• Tampoco es un proceso de ingeniería “pura”

• No es (completamente) un proceso creativo

• Está basado en descubrimientos que dependende la comunicación, coordinación y cooperacióndentro de marcos de trabajo predefinidos

Elementos Relacionados con elProceso Software

(Fuggetta, 2000)

• Tecnología de Desarrollo Software, soporte tecnológico, en forma deherramientas, infraestructuras y entornos.

• Métodos y Técnicas de Desarrollo Software, uso de la tecnología yrealización de las actividades.

• Comportamiento Organizacional, relacionado con los recursos humanos.

• Economía y Marketing, relacionado con la gestión de proyectos, debido aque el producto software final debe cumplir con unos plazos y costesdeterminados y debe satisfacer las necesidades del cliente al que vadestinado

Page 5: modelo de desarrollo iterativo

5

Procesos de Softwareen la

Organización.

En un mundo de cambios constantes ycompetencia global, las organizaciones dedesarrollo de software son presionadas aalcanzar mayor eficiencia con menorescostos. Para poder lograr este objetivo, esnecesario adoptar una forma de trabajo quepermita entender, controlar, comunicar,mejorar, predecir y certificar el trabajorealizado.

Actualmente existe una grandiversidad de opciones relacionadascon procesos de desarrollo.Constantemente se escuchandiferentes acrónimos como CMM,CMMI, RUP, ISO, PSP, TSP, etc., quecausan confusión, principalmentedebido a la mala interpretación de losmismos.

¿Por qué contar con un proceso de software?

Hasta hace poco tiempo, laproducción de software erarealizada con un enfoque artístico,a diferencia de un enfoqueindustrial. Ante la constantepresencia de proyectos fallidos, ycon el objetivo de mejorar lacalidad de los productos, en losúltimos años las organizacionesintrodujeron los métodos deingeniería de software.

A partir de estos, se formalizó elenfoque de ingeniería deproducto para desarrollarsoftware. Factores como laglobalización han obligado a lasorganizaciones a contar conmarcos de trabajo que las ayudenhacer las cosas de la manera máseficiente.

Fue entonces que se incorporó la ingenieríade procesos al desarrollo de software.

Page 6: modelo de desarrollo iterativo

5

6

Un proceso de software efectivo

• Habilita a la organización a incrementarsu productividad al desarrollar software.

• Permite estandarizar esfuerzos, promoverreuso, repetición y consistencia entreproyectos.

• Provee la oportunidad de introducirmejores prácticas de la industria.

• Permite entender que las herramientasdeben ser utilizadas para soportar unproceso.

• Establece la base para una mayorconsistencia y mejoras futuras.

• Mejora los esfuerzos de mantenimientoy soporte.

• Define cómo manejar los cambios yliberaciones a sistemas de softwareexistentes.

• Define cómo lograr la transición delsoftware a la operación, y cómo ejecutarlos esfuerzos de operación y soporte.

Modelos de Proceso de Software

Los estándares establecen los diferentesprocesos implicados a la hora dedesarrollar y mantener un sistema desdeque surge la idea o necesidad dedesarrollar las aplicaciones hasta que éstasse retiran de explotación. Sin embargo,ninguno impone un modelo de procesosconcreto (modelo de ciclo de vida) nicómo realizar las diferentes actividadesincluidas en cada proceso, por lo que cadaempresa deberá utilizar los métodos,técnicas y herramientas que considereoportuno.

Por su naturaleza, los modelos sonsimplificaciones; por lo tanto, un modelo deprocesos del software es una simplificacióno abstracción de un proceso real. Podemosdefinir un modelo de procesos del softwarecomo una representación abstracta de altonivel de un proceso software.

Cada modelo es una descripción de unproceso software que se presenta desdeuna perspectiva particular.Alternativamente, a veces se usan lostérminos ciclo de vida y Modelo de ciclode vida.

Page 7: modelo de desarrollo iterativo

7

Clasificaciónde los Modelos de Proceso de Software

Modelos Convencionales

• Modelo en cascada

• Modelo de proceso incremental

• Modelo de desarrollo rápido deaplicaciones (DRA)

• Modelos de procesos evolutivos

• Modelos especificados de procesos

• Modelo de desarrollo iterativos

Modelode

Desarrollo Iterativos

El desarrollo iterativo es un enfoque de desarrollo de software que permite laconvergencia de una solución con las metas deseadas a través de sucesivosperfeccionamientos a los requerimientos y los artefactos de desarrollo. El términoiteración a menudo se usa de manera errónea como sinónimo de incremento. Si bienlos enfoques iterativos se pueden usar con modelos de entregas incrementales, ambostérminos no son sinónimos. En este artículo, nos referiremos a las iteraciones comociclos de perfeccionamiento, y no necesariamente como incrementos entregables

Page 8: modelo de desarrollo iterativo

7

8

El Ciclo de Vida delModelo de

Desarrollo Iterativo

En el sentido en que se trata de unciclo de perfeccionamiento, unaiteración no necesariamente debeincluir todas las fases del proceso dedesarrollo. Por ejemplo, es posible teneriteraciones específicas de las fases,como por ejemplo iteraciones deanálisis o iteraciones de diseño. Comousted puede imaginar, esto puede llevara una complejidad y una variabilidadconsiderables en el método dedesarrollo iterativo. En el extremosuperior de la gama de complejidad, sepodría terminar con ciclos deperfeccionamiento dentro de otrosciclos de perfeccionamiento, cada unode ellos con diferentes frecuencias deiteración. Por este motivo, resultaimportante identificar el enfoque dedesarrollo iterativo que mejor seadecue al tipo de solución de software,

tomando en cuenta las capacidades delas herramientas que se utilizan para eldesarrollo.

Los desarrolladores que utilizan estatécnica asumen, aceptan, y de hechoesperan que los productos quedesarrollan no se terminen con unaronda. En lugar de tratar de prevertodos los posibles problemas ynecesidades de los usuarios, que semueven a través de una serie deiteraciones para refinar y perfeccionarprogresivamente el producto para quesea útil. Una ventaja importante dedesarrollo iterativo es que permite a losdesarrolladores responder rápidamentea los problemas y las necesidadescambiantes ya las reconstrucciones,restauraciones y mejoras se estructurana la derecha en el proceso dedesarrollo.

Page 9: modelo de desarrollo iterativo

8

9

En la unión esta lafuerza

Este enfoque de desarrollo por logeneral implica una estrechacolaboración entre los miembros delequipo, que pueden provenir dediversos departamentos dentro de unaempresa. Al lograr que todos losinvolucrados en la planta baja, lasempresas pueden reducir los costos dedesarrollo, fomentar la innovación y eldesarrollo de productos que integrenmúltiples perspectivas desde elprincipio. El desarrollo iterativotambién requiere un gran esfuerzo deinvestigación y análisis como laspersonas responde a las presiones delmercado, las necesidades declaradasde los consumidores y clientes, y laretroalimentación interna sobre elproducto en fase de desarrollo.

Un Modelo Dinámico

Este proceso es dinámico y puede sermuy rápido. Algunas empresas puedentener ciclos tan cortos como unasemana. Al inicio de cada ciclo, losdesarrolladores se reúnen paraidentificar los cambios que desean poneren práctica y que se centran en estoscambios; como otras cuestiones surgen,que se pueden añadir a los ciclos dedesarrollo posteriores. Esto fomenta elenfoque y la ayuda a las empresas acumplir las expectativas con másfacilidad; como los productos en eldesarrollo iterativo empiezan a serlanzado al público, los usuarios queestán probando los productos puedenseguir los cambios planificados y puedeninformar de problemas y estar segurosde que hay un período de tiempodeterminado en el que se puedanabordar.

La liberación

En el desarrollo iterativo, seempieza con la etapa deplanificación de un proyecto, semueve a través de estas etapas enel desarrollo y lanzamiento delproducto. Cuando se libera elproducto, los resultados vienen depruebas de productos y usuarios, yestos resultados se doblan en lapróxima versión. "Release" puedeser un término engañoso; eldesarrollo iterativo puede implicarla liberación “in-house” de unproducto en las etapas iniciales, noque lo suelte del producto alpúblico.

Generalidades del Modelo de

Desarrol lo I terativo

Page 10: modelo de desarrollo iterativo

9

10

“Somos agiles, hacemos iteraciones”

Esta frase podemos oírla a menudode equipos y empresas que proclamanel uso de metodologías de desarrolloágil, pero no siempre el valor de haceriteraciones es bien entendido. Amenudo, los procesos de desarrollo dela empresa son adaptadossimplemente para seguir realizandoexactamente el mismo modelo deproceso predictivo, manteniendo laplanificación inicial en todo momentopero realizando la ejecución de formaiterativa.

Sin duda, la división de los procesos dedesarrollo en ciclos cortos e iterativoses uno de los pilares del desarrollo ágil,pero para aportar autentico valor debeir acompañado de mecanismos defeedback que nos permitan aprender decada una de las iteraciones querealizamos y aplicar lo aprendido en lassiguientes. A continuación trataremosde ilustrarlo.

Durante la ejecución de un proyectobasado en una planificación predictiva ysu posterior ejecución, a menudoobservamos la siguiente gráfica.

¿Por qué se produce esto?

Habitualmente, la depresión de lacurva de valor viene dada porque laejecución se realiza en función de laplanificación original. En proyectos enque tenemos un contexto cambiante,cuanto más alejada en el tiempo sehaya la ejecución de una tarea conrespecto a cuándo se planificó,mayor es el gap entre el contextoactual en el que se tiene queejecutar la tarea y el contextoprevisto por la planificación. Es decir,las premisas en las que se basa latarea a ejecutar (los requerimientos) y su encaje dentro de la solución global se hayanmás lejanos del punto inicial de consenso / certeza, aumentando la complejidad de latarea, lo que repercute directamente en las dimensiones de tiempo y coste de suejecución.

Page 11: modelo de desarrollo iterativo

10

11

¿Qué es entonces lo que hace que el desarrollo iterativomejore la ejecución del proyecto?

El feedback, y más allá de él en símismo, el aprendizaje derivado dedicho feedback.

En los proyectos realizados de formaempírica (en los que se incluyen lasmetodologías agiles) requerimos estarconstantemente evaluando el contextoen el que nos encontramos,extrayendo conclusiones del mismo ytomando decisiones en función de lasmismas.

Es el aprendizaje obtenido de losdiferentes ciclos de feedback y de suanálisis, el que nos permite que semantenga la alta entrega de valor a lolargo de toda la ejecución delproyecto.

Ya no nos encontramos ante unescenario conformado por ciclos deejecución sobre una planificacióninicial, sino por ciclos deplanificación y ejecución. Lastareas a realizar cada ciclo sonplanificadas al inicio del mismo,basándose en el contexto actualdel proyecto y el aprendizajeobtenido de las iteracionesanteriores, reduciendo al máximoel gap comprendido entreplanificación y ejecución y losefectos del mismo comentadosanteriormente.

Page 12: modelo de desarrollo iterativo

11

12

Si echamos un vistazo a las diferentes metodologías de desarrollo ágil, todasellas enfatizan la necesidad de introducir visibilidad y transparencia a todos losniveles del proyecto. Ello no radica simplemente en un deseo de aportartransparencia por el mero hecho de hacerlo, si no en la necesidad de disponerde toda la información sobre la ejecución del proyecto y su estado actual,retroalimentarnos de la misma, analizarla y extraer conocimiento de ella. Eseste un requisito fundamental para, en conjunción con el desarrollo iterativo,conseguir el objetivo final del proyecto: maximizar el ROI entregado, noúnicamente al final del mismo sino también durante su ejecución.

Metodologías y elDesarrollo Iterativo

Existen varias metodologíasque pueden utilizarse en eldesarrollo iterativo. Entre ellaspodemos destacar el “UnifiedProcess” y su variante el“Rational Unified Process”, queson estándares actuales a nivelinternacional. Un modeloiterativo nuevo que ha surgidocon fuerza últimamente es el“Extreme Programming (XP)”.Cabe mencionar también elmodelo llamado “Feature DrivenDevelopment”.

Como ya sabemos los modelositerativos se basan en dividir elproyecto de desarrollo en varias.

etapas, llamadas iteraciones. Lasiteraciones son cortas (unas cuantassemanas, excepto en proyectos enormes)y su duración es fija (no puedealargarse: si hay retrasos, estos seincluyen en otra iteración).

La idea central es que, en cada una deesas iteraciones, se construye una partepequeña del sistema. Para esa parte delsistema, se realiza todo el proceso:análisis, diseño, programación y pruebas.Se acaba la iteración con un ejecutableque incluye todas las partes del sistemaconstruidas hasta el momento. Losaspectos del sistema con más riesgo (porejemplo, la arquitectura) se construyenen las primeras iteraciones.

Page 13: modelo de desarrollo iterativo

12

13

Las ventajas de este tipo de modelo son las siguientes:

1. FFlleexxiibbiilliiddaadd. Los requerimientosno quedan totalmente fijados hastael final del proyecto de desarrollo.Por ello, se pueden realizar cambiosde forma flexible. Por una parte, elconocimiento que se adquiere enuna iteración sirve para plantear deforma más realista losrequerimientos de la siguiente. Porotra parte, este conocimiento nospuede hacer reformar partes delsistema construidas en iteracionesanteriores. En una palabra, todos losdocumentos del sistema(requerimientos, diseño y código) noson rígidos sino que puedencambiarse durante todo el procesode desarrollo. (Típicamente suelenser modificados en mayor medida enlas primeras iteraciones y en menormedida en las últimas).

2. MMiittiiggaacciióónn ddee rriieessggooss.. Como laspruebas se hacen desde el principiodel proyecto, puede determinarse la

viabilidad o eficiencia de lasdecisiones de diseño. Además, loselementos con más riesgo se tratanen las primeras iteraciones, con locual se puede implementar unamitigación de riesgos más tempranay exitosa.

3. RReettrrooaalliimmeennttaacciióónn.. Como hayejecutables desde el mismocomienzo del proyecto, el clientepuede examinarlos y proponer loscambios que necesita para sunegocio. También los desarrolladorestienen una rápida retroalimentaciónde lo que funciona y lo que no, yaque las pruebas se realizan desde elcomienzo mismo del proyecto y nose debe esperar al final para hacerlas modificaciones necesarias.Como consecuencia, un modelo dedesarrollo iterativo es condiciónnecesaria (aunque no suficiente)para la correcta ejecución de unproceso de desarrollo de software.

Caso practico

La mejora iterativa fue exitosamenteaplicada al desarrollo de una familiaextensa de compiladores para unafamilia de lenguajes de programaciónen una gama de arquitecturas dehardware. Un conjunto de 17 versionesdel sistema se desarrollaron en unlugar, generando 17 mil líneas decódigo fuente de lenguaje de alto nivel(6500 de código ejecutable). Elsistema posteriormente fuedesarrollado en dos sitios diferentes,llegando a dos versiones diferentes dellenguaje base: una versiónesencialmente se enfocaba enaplicaciones matemáticas, añadiendonúmeros reales y varias funcionesmatemáticas, y la otra se centró enañadir capacidades para escribir delcompilador.

Cada iteración fue analizada del punto devista de los usuarios (las capacidades dellenguaje fueron determinadas en partepor las necesidades del usuario) y elpunto de vista del desarrollador (el diseñodel compilador evolucionó para ser másfácilmente modificable, por ejemplo, paraañadir nuevos tipos de datos). Medicionestales como acoplamiento ymodularización fueron seguidas sobremúltiples versiones.

Page 14: modelo de desarrollo iterativo

14

Modelos de ProcesoIterativo e Incremental

La principal característica deestos modelos es que permitecrear cada vez versiones máscompletas de software, paraesto construimos versionessucesivas de un producto. Secrea una primera versión que esutilizada por el usuario donde seprovee retroalimentación aldesarrollador, y según losrequerimientos especificados deéste usuario se crea unasegunda versión.

El ciclo de vida incremental

Desarrollar por partes elproducto software, paradespués integrarlas a medidaque se completan. Un ejemplode un desarrollo puramenteincremental puede ser laagregación de módulos endiferentes fases. El agregarcada vez más funcionalidad alsistema.

El ciclo de vida iterativo

En cada ciclo, iteración, serevisa y mejora el producto. Unejemplo de desarrollo iterativoes aquel basado enrefactorizaciones, en el quecada ciclo mejora más lacalidad del producto. Esimportante señalar que esteciclo no implica añadirfuncionalidades en el producto,pero si revisión y mejora.

Page 15: modelo de desarrollo iterativo

14

15

No olvides “la parte iterativa”, del “ciclo de vida

iterativo e incremental”

De la unión del ciclo de vida iterativo yel incremental al final de cada iteración seconsigue una versión más estable delsoftware, de más calidad, y añadiendoademás nuevas funcionalidades respecto aversiones anteriores.

Pero en la práctica, muchas veces nosencontramos con que los equipos olvidanla parte iterativa, olvidan que cadaprototipo debe mejorar en calidad alanterior, y se centran solo en añadirfuncionalidad.

El problema de esto es que pasadas unascuantas iteraciones, el producto se haceinmantenible, por su baja calidad, y porello es muy difícil añadir nuevafuncionalidad.

VVeennttaajjaass

Las ventajas que ofrece un desarrollo iterativo e incremental son varias y variadas,pero debe quedar claro que es muy difícil obtener todas juntas ya que depende delcontexto en el que se implemente el proceso. En general las ventajas son:

• Resolución de problemas de altoriesgo en tiempos tempranos delproyecto.

• Visión de avance en el desarrollodesde las etapas iniciales deldesarrollo.

• Obtención del feedback delusuario lo antes posible, paraorientar el desarrollo alcumplimiento de sus necesidades yrealizar todas las adaptacionesidentificadas para cumplir con losobjetivos planteados.

• Menor tasa de fallo del proyecto,mejor productividad del equipo, ymenor cantidad de defectos, segúndemuestran estudios realizadossobre proyectos que han aplicadoesta técnica.

• Permite manejar la complejidaddel proyecto, apuntando a laresolución de los problemas porpartes, y no caer en la inanición del“súper análisis” del producto.

• El aprendizaje y experiencia delequipo iteración tras iteración,mejora exponencialmente eltrabajo, aumenta la productividady permite optimizar el proceso enel corto plazo.

• El trabajo iterativo deja unaexperiencia en el equipo quepermite ir ajustando y mejorandolas planificaciones, lograndomenores desvíos en la duracióntotal del proyecto.

• Su adopción, con ciertosrecaudos, no presenta grandesinversiones.

Page 16: modelo de desarrollo iterativo

15

16

Hasta el momento se podría decir que no existen grandesdesventajas, pero sí hay puntos a manejar con sumo cuidado:

Page 17: modelo de desarrollo iterativo

16

17

Referencias

PPRROOCCEESSOO DDEE SSOOFFTTWWAARREEDisponible en:

http://sg.com.mx/content/view/23

MMODELOS DE DESARROLLO ITERATIVODisponible en:

http://www.aurumsol.com/espanol/articulos/art1/art1-4.html

WWHHAATT IISS IITTEERRAATTIIVVEE DDEVELOPMENDisponible en:

http://www.wisegeek.com/what-is-iterative-development.htm

DDESARROLLO ITERATIVO EN SOLUCIONES DE GESTION DE PROCESO DE NEGOCIOSDisponible en:

http://www.ibm.com/developerworks/ssa/websphere/library/techarticles/1005_defreitas/1005_defreitas.html

DDESARROLLO ITERATIVODisponible en:

http://blog.masterinprojectmanagement.net/desarrollo-iterativo/

EELL CCIICCLLOO DDEE VVIIDDAA IITTEERRAATTIIVVOO EE IINNCCRREEMMEENNTTAALL YY EELL RRIIEESSGGOO DDEE OOLLVVIIDDAARRSSEE DDEELL IITTEERRAATTIIVVOO YYQQUUEEDDAARRSSEE SSOOLLOO CCOONN EELL IINNCCRREEMMEENNTTAALL

disponible en:http://www.javiergarzas.com/2012/10/iterativo-e-incremental.html

MMOODDEELLOOSS DDEE PPRROOCCEESSOO IITTEERRAATTIIVVOOSS EE IINNCCRREEMMEENNTTAALLEESSDisponible en:

http://scruz334.blogspot.es/1193793960/modelos-de-proceso-iterativos-e-incrementales/

Page 18: modelo de desarrollo iterativo

17