Técnicas eficaces y métodos ágiles

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    Notes on slide 1



    Qu se entiende por desarrollo eficaz?

    Cuando se consiguen los objetivos con los que fue concebido un proyecto software, por ejemplo que est listo en una fecha determinada y con un alto nivel de calidad

    Consigue que los clientes queden satisfechos, al ver que obtienen lo que haban pedido en tiempo y forma

    Qu se entiende por desarrollo eficaz?

    Cuando se consiguen los objetivos con los que fue concebido un proyecto software, por ejemplo que est listo en una fecha determinada y con un alto nivel de calidad

    Consigue que los clientes queden satisfechos, al ver que obtienen lo que haban pedido en tiempo y forma

    Desarrollo eficiente es aquel que optimiza el tiempo y los recursos humanos y materiales que son necesarios para la cosecucin del proyecto.

    Incrementa los beneficios que se pueden obtener del desarrollo de un producto.



    Desarrollo eficiente es aquel que optimiza el tiempo y los recursos humanos y materiales que son necesarios para la cosecucin del proyecto.

    Incrementa los beneficios que se pueden obtener del desarrollo de un producto.



    El desarrollo gil, rene un conjunto de buenas prcticas que persiguen: La entrega de software de alta calidad y que los objetivos de nuestros clientes, sean los mismos que los que a la organizacin le hagan ganar dinero.

    Esto puede sonar muy idealista, pero si lo meditamos, al hacer que nuestros objetivos sean los mismos que el de los clientes, estaremos consiguiendo su satisfacin, con ello, incrementaremos su nivel de confianza, y los fidelizaremos de forma que para sucesivos proyectos, cuenten con nosotros para llevarlos a cabo.

    En consecuencia el desarrollo gil contribuye a que el desarrollo sea eficaz, puesto que hay una mayor motivacin por satisfacer los objetivos de los clientes ya que son tambin los nuestros, pero tambin contribuye a que sea eficiente, y es que, este conjunto de buenas prcticas, como veremos, estn diseadas teniendo en cuenta que las necesidades del cliente puedan evolucionar y de hecho evolucionarn durante el transcurso del proyecto (los temidos cambios de requisitos), de manera que estos cambios sean fciles de acomodar y por tanto se pierda el menor tiempo y dinero posibles.

    El desarrollo gil, rene un conjunto de buenas prcticas que persiguen: La entrega de software de alta calidad y que los objetivos de nuestros clientes, sean los mismos que los que a la organizacin le hagan ganar dinero.

    Esto puede sonar muy idealista, pero si lo meditamos, al hacer que nuestros objetivos sean los mismos que el de los clientes, estaremos consiguiendo su satisfacin, con ello, incrementaremos su nivel de confianza, y los fidelizaremos de forma que para sucesivos proyectos, cuenten con nosotros para llevarlos a cabo.

    En consecuencia el desarrollo gil contribuye a que el desarrollo sea eficaz, puesto que hay una mayor motivacin por satisfacer los objetivos de los clientes ya que son tambin los nuestros, pero tambin contribuye a que sea eficiente, y es que, este conjunto de buenas prcticas, como veremos, estn diseadas teniendo en cuenta que las necesidades del cliente puedan evolucionar y de hecho evolucionarn durante el transcurso del proyecto (los temidos cambios de requisitos), de manera que estos cambios sean fciles de acomodar y por tanto se pierda el menor tiempo y dinero posibles.


    En resumen, el desarrollo gil es una herramienta que facilita el desarrollo eficaz y eficiente de productos software, y stos a su vez a la satisfacin del cliente y al incremento de los beneficios de la organizacin.
    Hemos de darnos cuenta que en todo este tiempo no hemos hablado de Web 2.0 por ningn lado, y es que, el desarrollo gil es un conjunto de buenas prcticas aplicables al desarrollo de software en general, y no especfico del software relacionado con la web2.0. Por tanto podramos renombrar esta parte del curso, y llamarla de forma ms adecuada


    Vamos a hablar de:

    Cules son los principios bsicos del desarrollo gil, as como para qu casos es ms adecuado y para cules no sirve (que tambin los hay)

    Hablaremos tambin de metodologas giles para el desarrollo de software, sus caractersticas, rasgos comunes y diferencias.

    Veremos tambin en detalle algunas de las tcnicas ms comunes usadas por un equipo de desarrollo gil, as como las diferentes herramientas que facilitan la aplicacin de stas tcnicas.

    Y tambin cmo las metodologas giles integran mtodos y tcnicas de gestin de proyectos

    El manifiesto gil es un documento redactado en 2001 por un grupo de 17 desarrolladores de sofware que no estaban de acuerdo con los modelos de desarrollo basados en procesos, a los que consideraban muy pesados.

    Entre estos desarrolladores, estn Kent Beck (autor de Extreme Programming), Allistarir Cockburn (Autor de Crystal) y Martin Fowler



    A los individuos y su interaccin por encima de los procesos y las herramientas:

    Los procesos tienen que ser una ayuda que sirva de gua para el desarrollo y las herramientas una ayuda para mejorar la eficiencia, pero lo ms importante, es un equipo con conocimientos tericos, talento y una actitud adecuada.

    El software que funciona, por encima de la documentacin exhaustiva:

    Los documentos son importantes, permiten transferir conocimiento, registrar informacin, y muchas veces son obligatorios por cuestiones legales, pero no generan valor a los clientes, ni permiten obtener retroalimentacin de como va evolucionando el proyecto. Los documentos no pueden sustituir la comunicacin entre las personas. Por eso, siempre que sea posible debe preferirse, y reducir al mnimo indispensable el uso de documentacin, que genera trabajo que no aporta un valor directo al producto.

    La colaboracin con el cliente, por encima de la negociacin contractual:

    Las prcticas giles estn especialmente indicadas para productos difciles de definir con detalle en el principio, o que si se definieran as tendran al final menos valor que si se van enriqueciendo con retro-informacin continua durante el desarrollo. Tambin para los casos en los que los requisitos van a ser muy inestables por la velocidad del entorno de negocio.
    Para tener un feedback continuo del progreso del producto, el cliente ha de ser parte del equipo de desarrollo, y los contratos no ayudan a que la colaboracin entre ambas partes sea fluida, sino que es una mera formalidad que divide las responsabilidades de desarrollador y cliente y por tanto induce a que se produzcan disputas entre ambas partes.

    La respuesta al cambio, por encima del seguimiento de un plan:

    Para proyectos que tienen como caracterstica inherente la evolucin, los planes preestablecidos no son adecuados. Es ms importante la anticipacin, y sobre todo la capacidad de adaptacin al cambio.



    Vamos a leer los principios recogidos en el manifiesto gil, e intentar comprenderlos, as podremos responder a las dos preguntas a continuacin.


    El entorno de la web 2.0, se caracteriza por su rpida evolucin, continuamente aparecen nuevos productos y servicios, nuevas fuentes de datos, etc. en definitiva, es un negocio que se mueve muy rpido. Para mantener un nivel de competitividad, puede ser necesario adaptar el producto que se est desarrollando, esto es , hacer cambios en los requisitos iniciales.

    Que el negocio se mueva rpido tambin implica que el nivel de exigencia de los clientes sea mayor, os sonar mucho la frase “Esto tiene que estar para ayer” esto es porque la velocidad en la entrega es una ventaja competitiva. Cuanto ms rpido seas desarrollando un producto, ms podrs ajustar el presupuesto, y por tanto ms competitivo sers.


    El entorno de la web 2.0, se caracteriza por su rpida evolucin, continuamente aparecen nuevos productos y servicios, nuevas fuentes de datos, etc. en definitiva, es un negocio que se mueve muy rpido. Para mantener un nivel de competitividad, puede ser necesario adaptar el producto que se est desarrollando, esto es , hacer cambios en los requisitos iniciales.

    Que el negocio se mueva rpido tambin implica que el nivel de exigencia de los clientes sea mayor, os sonar mucho la frase “Esto tiene que estar para ayer” esto es porque la velocidad en la entrega es una ventaja competitiva. Cuanto ms rpido seas desarrollando un producto, ms podrs ajustar el presupuesto, y por tanto ms competitivo sers.


    El entorno de la web 2.0, se caracteriza por su rpida evolucin, continuamente aparecen nuevos productos y servicios, nuevas fuentes de datos, etc. en definitiva, es un negocio que se mueve muy rpido. Para mantener un nivel de competitividad, puede ser necesario adaptar el producto que se est desarrollando, esto es , hacer cambios en los requisitos iniciales.

    Que el negocio se mueva rpido tambin implica que el nivel de exigencia de los clientes sea mayor, os sonar mucho la frase “Esto tiene que estar para ayer” esto es porque la velocidad en la entrega es una ventaja competitiva. Cuanto ms rpido seas desarrollando un producto, ms podrs ajustar el presupuesto, y por tanto ms competitivo sers.


    El entorno de la web 2.0, se caracteriza por su rpida evolucin, continuamente aparecen nuevos productos y servicios, nuevas fuentes de datos, etc. en definitiva, es un negocio que se mueve muy rpido. Para mantener un nivel de competitividad, puede ser necesario adaptar el producto que se est desarrollando, esto es , hacer cambios en los requisitos iniciales.

    Que el negocio se mueva rpido tambin implica que el nivel de exigencia de los clientes sea mayor, os sonar mucho la frase “Esto tiene que estar para ayer” esto es porque la velocidad en la entrega es una ventaja competitiva. Cuanto ms rpido seas desarrollando un producto, ms podrs ajustar el presupuesto, y por tanto ms competitivo sers.

    Los mtodos tradicionales no son adecuados, en la medida en la que

    Insisten en que haya una planificacin muy detallada del desarrollo. Lo cul requiere que:

    Se definan de forma exhaustiva los requisitos al principio del proyecto, esto hace ms difcil acomodar cambios en fases ms adelantadas del desarrollo. Adems, en los modelos en cascada que son aquellos en los que se realizan anlisis, diseo, codificacin, pruebas e implantacin de forma secuencial, el cliente no ve el resultado del producto hasta que este est terminado, y claro, nunca est conforme con el resultado, es ah donde vienen las disputas contractuales por los cambios.

    Por otro lado, para hacer posible el seguimiento del plan, es necesario que haya una separacin clara de los roles del equipo de desarrollo, que cada uno se ocupe de una cosa, esto dificulta las tareas de comunicacin, porque no hay implicacin entre lo que hace cada cul, por eso, es necesario que haya mucha documentacin, la documentacin al final se convierte en un mecanismo de comunicacin entre los implicados en el proyecto. Esta falta de fluidez en la comunicacin hace que el desarrollo sea lentsimo.

    Los mtodos tradicionales no son adecuados, en la medida en la que

    Insisten en que haya una planificacin muy detallada del desarrollo. Lo cul requiere que:

    Se definan de forma exhaustiva los requisitos al principio del proyecto, esto hace ms difcil acomodar cambios en fases ms adelantadas del desarrollo. Adems, en los modelos en cascada que son aquellos en los que se realizan anlisis, diseo, codificacin, pruebas e implantacin de forma secuencial, el cliente no ve el resultado del producto hasta que este est terminado, y claro, nunca est conforme con el resultado, es ah donde vienen las disputas contractuales por los cambios.

    Por otro lado, para hacer posible el seguimiento del plan, es necesario que haya una separacin clara de los roles del equipo de desarrollo, que cada uno se ocupe de una cosa, esto dificulta las tareas de comunicacin, porque no hay implicacin entre lo que hace cada cul, por eso, es necesario que haya mucha documentacin, la documentacin al final se convierte en un mecanismo de comunicacin entre los implicados en el proyecto. Esta falta de fluidez en la comunicacin hace que el desarrollo sea lentsimo.

    Los mtodos tradicionales no son adecuados, en la medida en la que

    Insisten en que haya una planificacin muy detallada del desarrollo. Lo cul requiere que:

    Se definan de forma exhaustiva los requisitos al principio del proyecto, esto hace ms difcil acomodar cambios en fases ms adelantadas del desarrollo. Adems, en los modelos en cascada que son aquellos en los que se realizan anlisis, diseo, codificacin, pruebas e implantacin de forma secuencial, el cliente no ve el resultado del producto hasta que este est terminado, y claro, nunca est conforme con el resultado, es ah donde vienen las disputas contractuales por los cambios.

    Por otro lado, para hacer posible el seguimiento del plan, es necesario que haya una separacin clara de los roles del equipo de desarrollo, que cada uno se ocupe de una cosa, esto dificulta las tareas de comunicacin, porque no hay implicacin entre lo que hace cada cul, por eso, es necesario que haya mucha documentacin, la documentacin al final se convierte en un mecanismo de comunicacin entre los implicados en el proyecto. Esta falta de fluidez en la comunicacin hace que el desarrollo sea lentsimo.

    Esta transparencia muestra el coste de acomodar cambios en un ciclo de vida del software en cascada. Como se puede ver, en fases ms adelantadas del desarrollo el coste del cambio es mucho mayor.

    Esta es una curva bastante realista del coste del cambio siguiendo mtodos giles de desarrollo. Debido a que el software se desarrolla de forma iterativa, y en cada iteracin hay un proceso de validacin por parte del cliente, el coste del cambio se reduce al coste del cambio por iteracin. La curva, de todas formas no es constante debido a que en iteraciones avanzadas, el volumen de artefactos que se maneja, cdigo, planos uml, documentos, etc, es mayor y por tanto requiere ms esfuerzo de mantenimiento.

    Pero el desarrollo gil No es la forma definitiva para desarrollar software. No sirve para todos los casos, de hecho, se han de dar una serie de condiciones para que la aplicacin de un modelo gil de desarrollo tenga xito. Por ejemplo, si estamos ante un proyecto en el que se cumplen alguna de las siguientes opciones tendra que replantearse el uso de una metodologa gil en favor de otra ms tradicional, que contemple procesos de planificacin, como puede ser RUP, o Mtrica, etc.

    Por ejemplo, no sera adecuado aplicar una metodologa gil si:
    * Se cuenta con un equipo de desarrollo con ms de 20 miembros o si est distribuido geogrficamente, ya que la organizacin y comunicacin entre los miembros del equipo sera muy catica
    * Cuando el equipo es poco experimentado, por ejemplo si se cuenta slo con becarios. Es muy importante contar con un equipo en el que sus miembros tengan experiencia, conocimientos y capacidad de autogestin. * Cuando estamos ante un proyecto crtico, como software de tiempo real, en el que los requisitos son muy estrictos y se conocen de antemano. Como puede ser un sistema de control de trfico areo, o algo as. * Si el software que se desarrolla tiene que ser mantenido por terceros. En ciertos entornos, que es muy comn subcontratar desarrollo a terceros, y luego que lo mantenga o implante un equipo distinto, se requiere que haya una documentacin bastante exhaustiva.

    Pero, sin embargo s se pueden reutilizar muchas de las tcnicas que veremos son de uso cotidiano en un proyecto que se desarrolle de forma gil.

    Los mtodos giles son adecuados para proyectos que
    Cuenten con un equipo de desarrollo que
    Sea experimentado
    Pueda comunicarse de forma fluida
    No sea demasiado numeroso
    Pertenezcan a dominios muy dinmicos (como el negocio web!)
    Pero no para proyectos que
    Cuenten con un equipo poco experimentado (junior) o con poca capacidad de comunicacin y autogestin Tengan requisitos especiales de planificacin, gestin, o control.

    Esta transparencia, resume ms o menos cul es la panormica actual del desarrollo de software, que no es ms que el reflejo de las consecuencias que tiene la burocracia y la falta de comunicacin entre los miembros de un equipo de desarrollo.

    En un proyecto software gestionado de forma tradicional es tpico que el cliente tenga unas necesidades que no sepa explicar (de ah que sea importante tenerlo en el equipo de desarrollo), que el analista funcional, lo especifique an as, de manera distinta a lo que el cliente transmiti, que el analista orgnico lo disee a su manera, el programador (que generalmente es un mandao, lo codifique a su aire) cuando al final lo que quera el cliente, era algo bastante ms simple.

    Es graciosa tambin la parte comercial del proyecto, la diferencia entre un comercial bueno y uno malo, es que uno malo es capaz de vender un proyecto, pero slo uno bueno es capaz de hacerlo sin “vender humo”, vamos, sin engaar al cliente.

    Esta transparencia, resume ms o menos cul es la panormica actual del desarrollo de software, que no es ms que el reflejo de las consecuencias que tiene la burocracia y la falta de comunicacin entre los miembros de un equipo de desarrollo.

    En un proyecto software gestionado de forma tradicional es tpico que el cliente tenga unas necesidades que no sepa explicar (de ah que sea importante tenerlo en el equipo de desarrollo), que el analista funcional, lo especifique an as, de manera distinta a lo que el cliente transmiti, que el analista orgnico lo disee a su manera, el programador (que generalmente es un mandao, lo codifique a su aire) cuando al final lo que quera el cliente, era algo bastante ms simple.

    Es graciosa tambin la parte comercial del proyecto, la diferencia entre un comercial bueno y uno malo, es que uno malo es capaz de vender un proyecto, pero slo uno bueno es capaz de hacerlo sin “vender humo”, vamos, sin engaar al cliente.


    Las metodologas giles se basan en el desarrollo de forma incremental e iterativa del producto software.
    Cada iteracin, genera una pequea release del producto, que aade funcionalidad de forma incremental a la anterior.
    En cada iteracin, adems, se cubre todas las fases del desarrollo, con mayor o menor nfasis. Por ejemplo en iteraciones ms tempranas se dedicarn ms esfuerzos a las actividades de anlisis, y en iteraciones ms avanzadas a actividades de pruebas, pero en general, se realizarn tareas de anlisis, diseo, codificacin y pruebas en cada iteracin. Cada iteracin, asimismo tiene una duracin ms o menos fija, que vara segn la metodologa, es por ello que se dice de las iteraciones que son “time-boxed”

    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    En esta transparencia se describe cmo es el ciclo de vida del desarrollo de software iterativo, concretamente, este es el ciclo de vida del proceso unificado de desarrollo de sofware (UP)

    [CLICK]

    Cada una de las divisiones verticales del proceso es una iteracin, en cada una de ellas se crea una pequea release del producto de forma incremental.

    [CLICK]

    As mismo, en cada iteracin, realizan tareas de todas las fases del desarrollo

    [CLICK]

    Pero el reparto de esfuerzos es distinto en cada iteracin,en la iteracin E1, por ejemplo, que es la primera iteracin de la fase de elaboracin del producto, se hace un gran esfuerzo en tareas de modelado del negocio, anlisis de requisitos, anlisis y diseo, sin embargo, el esfuerzo invertido en implementacin pruebas e implantacin es menor. (Esto es lgico ya que el objetivo de esta fase es tener un ncleo del producto, con la funcionalidad principal, para lo cul ha de hacerse un estudio que explore y priorice los requisitos del producto) . Sin embargo en la iteracin C2, de la fase de construccin, donde ya se tiene gran parte de la funcionalidad de la aplicacin definida, a pesar de que siguen realizando tareas de modelado de negocio, requisitos y anlisis, los esfuerzos son ms intensos en tareas de codificacin y prueba.


    Cada metodologa se diferencia de las dems en que propone un conjunto de actividades diferentes y define sus propios artefactos.

    El concepto de artefacto es importante, un artefacto es cualquier producto de cualquier actividad durante el desarrollo de software. Puede ser un documento, un diagrama, un fichero de cdigo, un manual de usuario.

    Se generan nuevos artefactos, y se refinan los existentes en cada iteracin. Por ejemplo el Modelo de casos de uso se est refinando hasta casi las ltimas iteraciones, describiendo nuevas funcionalidades y quizs modificando las existentes.

    La tabla muestra para una metodologa inventada, el conjunto de actividades y los artefactos que esta, o bien necesita para llevar a cabo las tareas dentro de la actividad, o bien genera como producto de realizarlas.

    Existen muchas metodologas giles de desarrollo, pero en esta transparencia se encuentran las 7 ms importantes, veremos unas nociones bsicas de XP, que es la referencia en cuanto a metodologas de desarrollo y rene las prcticas ms empleadas, y tambin veremos Scrum, que es un framework de planificacin de proyectos y complementa las tcnicas propuestas por XP.

    Del resto, Agile Unified Process, combina en un enfoque gil tcnicas y mtodos que se encuentran en mtodos como RUP, y el proceso unificado de Jacobson, con prcticas giles habituales, como las que propone XP.

    Crystal, en realidad es una familia de metodologas desarrolladas por la consultora de Allistair cockburn (que es el idelogo de los casos de uso) que permite escalar las prcticas giles al tamao del proyecto.

    FDD es un enfoque gil basado alrededor del concepto de feature, que no es ms que la especificacin de una necesidad del usuario

    DSDM y Lean, centran el proceso de desarrollo alrededor del concepto de ROI (retorno de inversin) Lean no especifica prcticas tcnicas, por ello en ese sentido se asemeja a Scrum ya que es ms un framework para el seguimiento de proyectos.

    DSDM es una metodologa ms pesada, podra considerarse semigil ya que propone un conjunto demasiado amplio de artefactos.

    Esta tabla es una valoracin cualitativa de las metodologas giles que os acabo de presentar. Para cada metodologa se presenta si dada una caracterstica, resulta adecuada, o no, o no es sensible a ella.
    As podemos ver si cada metodologa es recomedable para :
    Equipos de desarrollo pequeos Proyectos en los que los requisitos sean especialmente inestables
    Equipos de desarrollo que trabajen de forma distribuida
    Entornos en los que sea necesario producir una documentacin muy detallada, es decir que requieran de una cultura burocrtica como pueden ser las administraciones pblicas.
    Sistemas que sean especialmente crticos
    O desarrollos que involucren ms de un cliente.

    Las filas de cultura burocrtica y sistemas crticos las he marcado como sombreadas porque no son aspectos que sean contemplados por proyectos propios de la web 2.0, por las caractersticas que estos presentan. Ya que los proyectos de este tipo no suelen ser sistemas crticos ni suelen estar desarrollados para clientes que exijan un nivel de burocracia muy alto.

    Aunque Lean y Scrum son las nicas metodologas que se adecun a todas las caractersticas de los proyectos, son metodologas que se ocupan de la dimensin de gestin dentro del proceso de desarrollo, ms que de la dimensin tcnica. De ellas, explicaremos Scrum. De las restantes, la ms interesante es extreme programming ya que es la que propone un conjunto de tcnicas ms versatiles. Empezaremos por sta.

    Esta tabla es una valoracin cualitativa de las metodologas giles que os acabo de presentar. Para cada metodologa se presenta si dada una caracterstica, resulta adecuada, o no, o no es sensible a ella.
    As podemos ver si cada metodologa es recomedable para :
    Equipos de desarrollo pequeos Proyectos en los que los requisitos sean especialmente inestables
    Equipos de desarrollo que trabajen de forma distribuida
    Entornos en los que sea necesario producir una documentacin muy detallada, es decir que requieran de una cultura burocrtica como pueden ser las administraciones pblicas.
    Sistemas que sean especialmente crticos
    O desarrollos que involucren ms de un cliente.

    Las filas de cultura burocrtica y sistemas crticos las he marcado como sombreadas porque no son aspectos que sean contemplados por proyectos propios de la web 2.0, por las caractersticas que estos presentan. Ya que los proyectos de este tipo no suelen ser sistemas crticos ni suelen estar desarrollados para clientes que exijan un nivel de burocracia muy alto.

    Aunque Lean y Scrum son las nicas metodologas que se adecun a todas las caractersticas de los proyectos, son metodologas que se ocupan de la dimensin de gestin dentro del proceso de desarrollo, ms que de la dimensin tcnica. De ellas, explicaremos Scrum. De las restantes, la ms interesante es extreme programming ya que es la que propone un conjunto de tcnicas ms versatiles. Empezaremos por sta.

    Esta tabla es una valoracin cualitativa de las metodologas giles que os acabo de presentar. Para cada metodologa se presenta si dada una caracterstica, resulta adecuada, o no, o no es sensible a ella.
    As podemos ver si cada metodologa es recomedable para :
    Equipos de desarrollo pequeos Proyectos en los que los requisitos sean especialmente inestables
    Equipos de desarrollo que trabajen de forma distribuida
    Entornos en los que sea necesario producir una documentacin muy detallada, es decir que requieran de una cultura burocrtica como pueden ser las administraciones pblicas.
    Sistemas que sean especialmente crticos
    O desarrollos que involucren ms de un cliente.

    Las filas de cultura burocrtica y sistemas crticos las he marcado como sombreadas porque no son aspectos que sean contemplados por proyectos propios de la web 2.0, por las caractersticas que estos presentan. Ya que los proyectos de este tipo no suelen ser sistemas crticos ni suelen estar desarrollados para clientes que exijan un nivel de burocracia muy alto.

    Aunque Lean y Scrum son las nicas metodologas que se adecun a todas las caractersticas de los proyectos, son metodologas que se ocupan de la dimensin de gestin dentro del proceso de desarrollo, ms que de la dimensin tcnica. De ellas, explicaremos Scrum. De las restantes, la ms interesante es extreme programming ya que es la que propone un conjunto de tcnicas ms versatiles. Empezaremos por sta.

    XP tom este nombre cuando sus fundadores se preguntaron, oye, que pasa si llevamos las prcticas habituales al extremo? Como afectar eso al proceso de desarrollo? Por ejemplo las revisiones de cdigo, qu pasa si revisamos cdigo constantemente, afectar positivamente al desarrollo del producto?
    Esto conduje a prcticas como el pair programming y el refctoring, que fomentan el desarrollo de diseos muy simples y efectivos, que optimizan el valor del producto.

    Pero claro, para aplicar esta metodologa hay que contar con un equipo de desarrollo cuyos miembros sean muy buenos. Tienen que ser muy verstiles, muy buenos diseadores, buenos programadores, tener inculcada una cultura de tsting, que sean capaces de comunicarse muy bien con otros equipos de trabajo y con el cliente, etc. Lo cul es de por s dificil porque los tcnicas suelen tener dificultades para hablar en los mismos trminos que entiende el cliente.

    Adems, es una metodologa muy poco ceremoniosa, vamos, que se generan un conjunto mnimo de artefactos que sean suficientes para aportar valor al producto, como el cdigo, las historias de usuario, pruebas, etc. (hablaremos ms en detalle de las historias de usuario)

    Tabmin son pocos los roles existentes:

    El cliente crea y prioriza las historias que han de ser implementadas.

    El programador disea, codifica y prueba las historias

    El coach o entrenador monitoriza el proceso de desarrollo, y gua a los miembros del equipo de manera que estos presten especial atencin a problemas que potencialmente puedan surgir, o cuestiones que puedan ser optimizadas

    El tracker monitoriza el progreso del equipo alertndolo cuando la agenda sea muy ajustada o sea necesario realizar un reajuste de las tareas a realizar.


    XP propone un conjunto bastante amplio de tcnicas y prcticas, de las cules podis encontrar extensa informacin en el enlace de la transparencia, pero de las cules yo considero ms importantes, las siguientes,

    porque son reutilizables en todas los escenarios, independientemente del tamao del proyecto y del equipo de desarrollo. Siempre van a aportar valor.

    Una historia de usuario no es ms que una pequea descripcin textual de dos o tres lneas que hace el cliente de una funcionalidad que el sistema ha de tener. No contiene por tanto trminos tcnicos, si no que usa lenguaje del dominio, el que entiende el cliente. Cada historia representa una necesidad.

    Tienen un nivel de detalle muy inferior al de las especificaciones de requisitos, y esta es su principal ventaja, las historias de usuario slo tienen que contener la informacin necesaria para hacer una estimacin del tiempo que va a tardar en implementarse dicha funcionalidad, y para priorizarla sobre el desarrollo de otras.

    A la hora del desarrollo de la historia de usuario, ya se har una descripcin ms detallada de lo que se va a implementar, que posiblemente contenga restricciones tcnicas.





    En la imagen se puede ver cmo se usan historias de usuario en la prctica. Cada post-it es una historia de usuario. Los postit con maleables, se pueden mover, agrupar, y categorizar, en la imagen se puede ver que ciertas historias, estn marcadas son un nmero que puede corresponder a la iteracin para la que estn planificados, tambin se pueden asignar a miembros del equipo de desarrollo, que son los papeles morados. En definitiva, son muy visuales, ya que a golpe de vista dan una idea de lo que se est haciendo y queda por hacer del sistema.

    Un diseo simple siempre es ms fcil de implementar y mantener que uno complejo. De hecho un diseo complejo es un riesgo para el desarrollo, dentro de unos meses nadie te asegura que incluso quien lo diseo lo vaya a comprender, cuando menos, un nuevo integrante del equipo de desarrollo. Es por ello que hay que intentar que el diseo de soporte nica y exclusivamente a la funcionalidad que es necesario implementar, pero hacindolo de forma ordenada, intentando que el diseo sea fcilmente reconocible para otros desarrolladores. Para eso es muy til el uso de patrones de diseo.
    Cuntos sabis lo que es un patrn de diseo?
    Los patrones de diseo son soluciones “estndar” a problemas de desarrollo de software, aunque slo la comprensin qu son, para qu sirven y cmo y cuando aplicar uno u otro patrn de diseo dara para un extenssimo curso, digamos que adems de ser un mecanismo de comunicacin entre desarrolladores (y ahora explicar porqu) son las mejores soluciones a problemas de desarrollo de software comunes. Lo del mecanismo de comunicacin es porque cada patrn tiene un nombre, entronces a nivel de arquitectura, es mucho ms fcil decir “esto es un patrn Singleton” que decir esto es una clase con un constructor privado y un mtodo pblico getInstance que devuelve una instancia de esa clase, la nica que hay.


    Favorites, Groups & Events

    Técnicas eficaces y métodos ágiles - Presentation Transcript

    1. http://www.dicampus.es Técnico Web 2.0
    2. Técnicas de http://www.dicampus.es desarrollo eficaces en la Web 2.0
    3. Desarrollo eficaz, eficiente y ágil http://www.dicampus.es  Desarrollo eficaz ‣ Consigue los objetivos con los que fue concebido un proyecto software
    4. Desarrollo eficaz, eficiente y ágil http://www.dicampus.es  Desarrollo eficaz ‣ Consigue los objetivos con los que fue concebido un proyecto software Satisface a los clientes
    5. Desarrollo eficaz, eficiente y ágil http://www.dicampus.es  Desarrollo eficiente ‣ Optimiza el tiempo y los recursos humanos y materiales necesarios para la consecución del proyecto
    6. Desarrollo eficaz, eficiente y ágil http://www.dicampus.es  Desarrollo eficiente ‣ Optimiza el tiempo y los recursos humanos y materiales necesarios para la consecución del proyecto Incrementa los beneficios
    7. Desarrollo eficaz, eficiente y ágil  Desarrollo ágil ‣ Reúne un conjunto de buenas prácticas que http://www.dicampus.es persiguen: ✓ La entrega de software de alta calidad ✓ La alineación entre los objetivos de la organización y los de nuestros clientes
    8. Desarrollo eficaz, eficiente y ágil  Desarrollo ágil ‣ Reúne un conjunto de buenas prácticas que http://www.dicampus.es persiguen: ✓ La entrega de software de alta calidad ✓ La alineación entre los objetivos de la organización y los de nuestros clientes Contribuye a que el desarrollo sea eficaz y eficiente
    9. En resumen... Desarrollo ágil http://www.dicampus.es Desarrollo Desarrollo eficaz eficiente Incremento de Satisfacción del los beneficios cliente
    10. Buenas prácticas para http://www.dicampus.es el desarrollo de software. Métodos y técnicas ágiles
    11. ¿De qué vamos a hablar? http://www.dicampus.es  Desarrollo ágil  Metodologías ágiles de desarrollo de software.  Buenas prácticas  Herramientas  Gestión ágil de proyectos
    12. Principios básicos del desarrollo ágil  El Manifiesto Ágil: http://www.dicampus.es  Escrito en Febrero de 2001  Surge como crítica y respuesta a las metodologías existentes, basadas en procesos, más formales, y pesadas.  Recoge los valores en los que se basa el desarrollo ágil, y los principios que se derivan de éstos valores. http://agilemanifesto.org
    13. Principios básicos del desarrollo ágil  El Manifiesto expone (Valores): “Estamos poniendo al descubierto mejores métodos para desarrollar software, haciéndolo y ayudando a otros a que lo hagan. Con este http://www.dicampus.es trabajo hemos llegado a valorar: A los individuos y su interacción, por encima de los procesos y las herramientas. El software que funciona, por encima de la documentación exhaustiva. La colaboración con el cliente, por encima de la negociación contractual. La respuesta al cambio, por encima del seguimiento de un plan. Aunque hay valor en los elementos de la derecha, valoramos más los de la izquierda.”
    14. Principios básicos del desarrollo ágil  De los valores se derivan doce principios seguidos por los creadores del manifiesto. Algunos son: http://www.dicampus.es o Nuestra principal prioridad es satisfacer al cliente a través de la entrega temprana y continua de software de valor. o Son bienvenidos los requisitos cambiantes, incluso si llegan tarde al desarrollo. Los procesos ágiles se doblegan al cambio como ventaja competitiva para el cliente. o Las personas del negocio y los desarrolladores deben trabajar juntos de forma cotidiana a través del proyecto. o La forma más eficiente y efectiva de comunicar información de ida y vuelta dentro de un equipo de desarrollo es mediante la conversación cara a cara.
    15. Tarea: 3’  Echemos un vistazo a los principios recogidos en el http://www.dicampus.es manifiesto. Comprenderlos nos ayudarán a responder una serie de preguntas. o Artículo original en inglés: http://agilemanifesto.org/principles.html o Traducción al castellano en wikipedia: http://tinyurl.com/ dhkdb8
    16. http://www.dicampus.es Pregunta
    17. Pregunta ¿Porqué es adecuado el modelo de desarrollo ágil para la web 2.0? http://www.dicampus.es
    18. Pregunta ¿Porqué es adecuado el modelo de desarrollo ágil para la web 2.0? http://www.dicampus.es  El negocio en la web es un entorno que se mueve rápidamente
    19. Pregunta ¿Porqué es adecuado el modelo de desarrollo ágil para la web 2.0? http://www.dicampus.es  El negocio en la web es un entorno que se mueve rápidamente  Es necesario acomodar cambios aún estando en fases adelantadas del desarrollo
    20. Pregunta ¿Porqué es adecuado el modelo de desarrollo ágil para la web 2.0? http://www.dicampus.es  El negocio en la web es un entorno que se mueve rápidamente  Es necesario acomodar cambios aún estando en fases adelantadas del desarrollo  No hay tiempo que perder, la velocidad en la entrega es una ventaja competitiva
    21. http://www.dicampus.es Pregunta
    22. Pregunta ¿Y porqué NO son adecuados los métodos tradicionales? http://www.dicampus.es
    23. Pregunta ¿Y porqué NO son adecuados los métodos tradicionales? http://www.dicampus.es  Métodos tradicionales se basan en el seguimiento de un plan ➔ Dificultad para acomodar cambios.
    24. Pregunta ¿Y porqué NO son adecuados los métodos tradicionales? http://www.dicampus.es  Métodos tradicionales se basan en el seguimiento de un plan ➔ Dificultad para acomodar cambios.  El seguimiento del plan exige mantener un nivel de burocracia alto (mucha documentación) ➔ Lentitud en el desarrollo
    25. Coste del cambio en procesos en cascada http://www.dicampus.es
    26. Coste del cambio siguiendo métodos ágiles http://www.dicampus.es
    27. No silver bullet  El desarrollo ágil no vale para todos los casos  No es adecuado para cierto tipo de proyectos http://www.dicampus.es  Más de 20 desarrolladores  Equipos distribuidos  Equipos poco experimentados  Proyectos críticos, (software de tiempo real, etc.) F.P. Brooks, “No silver bullet: Essence and accidents of software engineering,” IEEE computer, vol. 20, 1987, págs. 10-19.
    28. Recapitulando hasta aquí.  Los métodos ágiles son adecuados para proyectos que http://www.dicampus.es o Cuenten con un equipo de desarrollo que • Sea experimentado • Pueda comunicarse de forma fluida • No sea demasiado numeroso o Pertenezcan a dominios muy dinámicos (como el negocio web!)  Pero no para proyectos que o Cuenten con un equipo poco experimentado (junior) o con poca capacidad de comunicación y autogestión o Tengan requisitos especiales de planificación, gestión, o control.
    29. Panorámica actual del desarrollo de SW http://www.dicampus.es
    30. Panorámica actual del desarrollo de SW http://www.dicampus.es
    31. Metodologías de desarrollo http://www.dicampus.es  Conjunto de procedimientos y técnicas para el desarrollo de productos software.  Los procedimientos y técnicas no surgen por casualidad o Han demostrado ser efectivos o Buenas prácticas
    32. Metodologías ágiles - Similitudes  Basadas en el desarrollo incremental e iterativo del producto software http://www.dicampus.es  Cada iteración : o Genera una pequeña release del producto o Comprende todas las fases del desarrollo • Análisis • Diseño • Codificación • Prueba • Implantación o Suele tener una duración determinada, según la metodología.
    33. Metodologías ágiles - Ciclo de vida http://www.dicampus.es
    34. Metodologías ágiles - Ciclo de vida http://www.dicampus.es
    35. Metodologías ágiles - Ciclo de vida http://www.dicampus.es
    36. Metodologías ágiles - Ciclo de vida http://www.dicampus.es
    37. Metodologías ágiles - Ciclo de vida http://www.dicampus.es
    38. Metodologías ágiles - Diferencias  Cada una enfatiza más una dimensión del desarrollo o XP - La técnica http://www.dicampus.es o Scrum, Lean - La de gestión  Cada una propone un conjunto de actividades diferentes  Cada una define sus propios artefactos. Ej: Metodología XXX Actividad Necesita (Artefactos de entrada) Genera (Artefactos de salida) Requisitos Documento de visión (Iteración 1) Modelo de casos de uso Especificación complementaria Modelado Modelo de casos de uso Modelo de dominio (Iteración 1) Modelo de clases Codificación Modelo de casos de uso Ficheros de código (Iteración 1) Especificación complementaria Scripts de despliegue Modelo de clases ... ... ...
    39. Metologías ágiles más conocidas http://www.dicampus.es Feature Driven Development Agile Unified Process eXtreme Programming Lean Software Development Crystal Scrum Dynamic Systems Development Method A Practical Guide to Seven Agile Methodologies http://www.devx.com/architect/Article/32761
    40. Adecuación al tipo de proyecto y equipo Adecuado XP Scrum Lean FDD AUP Crystal DSDM para? Equipos - ✓ ✓ ✓ ✓ ✗ ✗ http://www.dicampus.es pequeños Requisitos - - ✓ ✓ ✓ ✓ ✗ volátiles Equipos ✓ ✓ ✓ ✓ ✗ ✗ ✗ distribuidos Cultura - - - ✓ ✓ ✗ ✗ burocrática Sistemas - - - - ✓ ✗ ✗ críticos Varios - - - ✓ ✓ ✗ ✗ clientes
    41. Adecuación al tipo de proyecto y equipo Adecuado XP Scrum Lean FDD AUP Crystal DSDM http://www.dicampus.es para? Equipos - ✓ ✓ ✓ ✓ ✗ ✗ pequeños Requisitos - - ✓ ✓ ✓ ✓ ✗ volátiles Equipos ✓ ✓ ✓ ✓ ✗ ✗ ✗ distribuidos Varios - - - ✓ ✓ ✗ ✗ clientes
    42. Dimensión técnica - XP  Lleva las prácticas habituales al extremo (de ahí su nombre) http://www.dicampus.es  Requiere de equipos muy hábiles  Ciclos muy cortos (1-4 semanas)  Muy poco ceremoniosa, i.e. Pocos artefactos o Story cards, Código, Pruebas, poco más.  Muy pocos roles o Cliente - Descripción de necesidades, validación o Programador - Desarrollo de la solución o Coach - Cumplimiento del proceso o Tracker - Seguimiento de agenda
    43. XP - Técnicas empleadas  Pair programming  User Stories  Colective code ownership  Planning Game http://www.dicampus.es  Continuous Integration  Small Releases  Sustainable Pace  Metaphor  Whole Team  Simple design  Coding Standards  Testing  Onsite Customer  Refactoring http://www.extremeprogramming.org/rules.html
    44. XP - Técnicas empleadas  Pair programming  User Stories  Colective code ownership  Planning Game http://www.dicampus.es  Continuous Integration  Small Releases  Sustainable Pace  Metaphor  Whole Team  Simple design  Coding Standards  Testing  Onsite Customer  Refactoring http://www.extremeprogramming.org/rules.html
    45. XP - Historias de Usuario  Es una herramienta de planificación  Captura requisitos de muy alto nivel http://www.dicampus.es  Escritas por el cliente  Lenguaje de negocio  Sirven para estimar esfuerzos y planificar el desarrollo, no son requisitos finales http://userstories.com
    46. http://www.dicampus.es XP - User Stories
    47. XP - Diseño Simple Consejos http://www.dicampus.es  Sigue el principio KISS (Keep it simple, stupid!)  Nunca diseñes para dar soporte a una funcionalidad no planificada. (AKA sobrediseño)  Usa patrones de diseño para que tu diseño sea más fácil de comprender, más adaptable y más extensible. Pero sin ser un pattern happy. http://www.cmcrossroads.com/bradapp/docs/ patterns-intro.html
    48. XP - Testing / TDD / BDD http://www.dicampus.es  Creación de tests automatizados que describan los requisitos del código antes de que ésta sea escrito  Sirven de documentación (lo que tiene que hacer el sistema)  Si el código se modifica, los tests comprueban que sigue funcionando Test Driven Development: By Example, Kent Beck, Addison-Wesley Longman, 2002
    49. XP - Testing / TDD / BDD  Test-Driven Development (TDD) se centra en aspectos funcionales del código. Imperativo http://www.dicampus.es  “Se obtiene el número de productos en la tienda, se vende uno, se vuelve a obtener el número de productos en la tienda, el número de productos final, es el número de productos inicial menos 1”  Behaviour Driven Development (BDD) se centra en aspectos funcionales del dominio. “Declarativo  Al vender un producto en la tienda, se comprueba que queda un producto menos en stock”.
    50. XP - Testing / TDD / BDD. Método 1. Crea un test que describa una característica del sistema 2. Ejecútalo y obsérvalo fallar http://www.dicampus.es 3. Añade funcionalidad de manera que la especificación descrita por el test se cumpla 4. Ejecuta el test con éxito. Tu código se acaba de crear y es un código correcto. 5. Refactoriza el código (cambia la implementación manteniendo las interfaces) 6. Vuelve a ejecutar las pruebas, y comprueba que sigue funcionando  Ejemplos: tdd_ruby, bdd_ruby
    51. XP - Testing / TDD / BDD.  Práctica indispensable, sobre todo en entornos dinámicos (carentes de sistema estático de tipos) Ruby, Python, PHP, javascript, etc. http://www.dicampus.es palabras=[\"hola\",\"adios\",2] for (var i=0; i< palabras.length; i++) document.writeln(palabras[i].toUpperCase());  Herramientas:  XUnit: JUnit, NUnit, JSUnit, PyUnit...  BDD: JBehave, DocTest (Python), RSpec (Ruby), Cucumber...  Mock Objects: JMock, NMock, pMock...
    52. XP - Refactoring  Cambiar la estructura del código sin alterar su http://www.dicampus.es funcionalidad  Para qué? o Manteniblidad o Adaptabilidad o Rendimiento Refactoring: Improving the Design of Existing Code By Martin Fowler et al. Addisson - Wesley, 1999
    53. XP - Refactoring  Los bad smells nos indican la necesidad de aplicar una refactorización. Por ejemplo. http://www.dicampus.es o ¿Tienes muchos if-else anidados? • Sustituye las comprobaciones por invocaciones polimórficas (Replace conditionals with polymorphism) o ¿Tienes un método con muchas líneas de código? • Extrae parte de su comportamiento a un método privado y dale un nombre significativo. (Extract method) o ¿Una clase es poco cohesiva? • Mueve sus métodos menos cohesivos a otra clase donde tengan más sentido (Move method) http://www.refactoring.com/catalog/index.html
    54. XP - Refactoring  Cada refactoring es una pequeña modificación. o Algunas muy simples y específicas. (Ej. Encapsulate downcast) http://www.dicampus.es Object lastReading() { return readings.lastElement(); } Reading lastReading() { return (Reading)readings.lastElement(); } o Otras no tanto (Ej Replace Type Code With State /Strategy ) Ejemplo: refactoring películas
    55. XP: Integración continua  Integración frecuente del código en un entorno similar al de producción http://www.dicampus.es  Aplica diversas técnicas y herramientas o Self-testing code: El código incluye pruebas que verifican su funcionamiento. XUnit, Selenium... o Source code management: El código desarrollado por varios miembros del equipo se integra en un sistema de control de versiones. CVS, SVN, Git... o Task automation: El código incluye mecanismos de automatización, por ejemplo, para ejecutar las pruebas de forma automática, o generar informes. Make, Ant,, rake... Continuous Integration: Improving Software Quality and Reducing Risk. Martin Fowler. Addison-Wesley, 2007
    56. XP: Integración continua  Elementos (punto de vista estático) o Servidor de control de versiones http://www.dicampus.es • Mantiene en un repositorio el código desarrollado por los miembros del equipo o Servidor de integración continua • Periódicamente descarga la última versión del código del repositorio. (svn update) • Ejecuta tareas de pruebas (ant test) • Informa a los miembros del equipo del resultado de las pruebas (web, twitter, mail, sms, etc.) o Máquinas de desarrollo • Contienen copias de trabajo del repositorio • Confirman los cambios al repositorio (svn commit)
    57. XP: Integración continua  Elementos (punto de vista estático) http://www.dicampus.es
    58. XP: Integración continua  Elementos (punto de vista dinámico) Continuous Integration Server User @ Workstation Version Control Server Time http://www.dicampus.es update code check if build needed modify code has the code changed? commit changes [code changed] update code build code: results notify (results)
    59. XP: Integración continua  Herramientas comerciales o Cruise Control (CC.net, CC.rb...) http://www.dicampus.es o BuildBot (para python) o Hudson • Open source • Gratuito • Multiplataforma • Extensible
    60. XP: Integración continua  Beneficios o No esperamos al final para integrar http://www.dicampus.es • ¿Cuánto tiempo nos llevaría integrar? • ¿Donde fallaría? o Los fallos se detectan de forma temprana o Al terminar de codificar, el sistema tiene calidad de producción o Se obtiene un feedback continuo del estado del proyecto o Ahorramos tiempo y en consecuencia dinero.
    61. Dimensión de gestión - Scrum http://www.dicampus.es  Se centra en el seguimiento y la planificación del proyecto de forma ágil  Complementa las técnicas de desarrollo vistas en XP  Aporta métodos y técnicas para la reducción del riesgo (planificación) (PDF) Schwaber, K. Advanced Development Methods. SCRUM Development Process
    62. Scrum - Reducción del riesgo  Reducción del riesgo http://www.dicampus.es
    63. Scrum - Conceptos clave http://www.dicampus.es  Release - Subconjunto de la funcionalidad del producto que tiene valor por sí misma. Cada release se desarrolla en varios sprints.  Sprint - Unidad mínima de planificación, en la que se desarrollan un conjunto de funcionalidades del producto.
    64. Scrum - Conceptos clave (Artefactos)  Product / Release/ Sprint Backlogs o Requisitos de alto nivel del producto / Funcionalidad a http://www.dicampus.es implementar en la release / Funcionalidad a implementar durante un sprint  Burn down chart o Muestra el progreso diario durante la ejecución de un sprint o Permite ver si el progreso es adecuado o Anticipa posibles retrasos permitiendo elaborar planes de contingencia
    65. Scrum - Conceptos clave (Roles)  Product Owner o Mantiene el product backlog, representando los intereses de los clientes. http://www.dicampus.es  Scrum master o Coordina el trabajo entre los miembros del equipo, su misión es la de hacer que la planificación se cumpla y que el resto de miembros tenga los medios para hacer su trabajo.  Developers  Testers  Clients o Quienes lo van a usar y pagan por el producto
    66. Scrum - Proceso  Macroproceso: Desarrollo del producto o Obtención de las funcionalidades deseadas (historias de usuario) que forman el product backlog. http://www.dicampus.es o Desarrollo de cada release  Microproceso: Desarrollo de la release o Pregame (Planificación de la release) • Confección del release backlog. • Estimación del esfuerzo de ejecución de la release. o Game (Ejecución de la release) • Planificación y desarrollo cada sprint o Postgame (Entrega de la release) • Completado de la documentación y preparación de la entrega
    67. Scrum: Desarrollo de cada sprint  Partimos del sprint backlog http://www.dicampus.es  Objetivo: implementar la funcionalidad del sprint backlog, con calidad de producción, en el tiempo estimado.  Si no se alcanza la agenda algo hemos hecho mal o Los Burndown charts nos ayudarán a monitorizar el progreso  El feedback diario por parte del equipo también nos ayudará a optimizar el progreso del sprint. o Scrum meetings
    68. Scrum: Burn down chart  Indica el trabajo que queda por hacer durante un sprint  Permite hacer una estimación de cuando se va a terminar de desarrollar el sprint. http://www.dicampus.es http://xprocess.blogspot.com/
    69. Scrum: Scrum meetings  Daily scrum (A diario) o Corta duración http://www.dicampus.es o De pie (ayuda a cumplir la duración) o Todo el mundo es bienvenido pero sólo los miembros del equipo (Pigs) pueden hablar o En el mismo sitio y a la misma hora (se penalizan los retrasos) o Cada miembro responde a las siguientes preguntas • ¿Qué hiciste ayer? • ¿Qué vas a hacer hoy? • ¿Has encontrado algún problema que te dificultase el trabajo? (Responsabilidad del Scrum master solucionarlos)
    70. Scrum: Scrum meetings (II)  Sprint planning meeting (Al principio) o Confeccionar el sprint backlog http://www.dicampus.es o 8 horas como mucho  Sprint review meeting (Al final) o Presentar el trabajo completado a los stakeholders o 4 horas máximo  Sprint retrospective (Al final) o ¿Qué ha ido bien? ¿Qué se puede mejorar? Mejora continua del proceso o 3 horas máximo.
    71. Scrum explained: 8’ http://www.dicampus.es http://www.youtube.com/watch?v=Q5k7a9YEoUI&fmt=22
    72. Fin de la exposición http://www.dicampus.es ¿Preguntas?
    73. Mejora continua http://www.dicampus.es me@miguelfernandez.info
    74. Mejora continua grazie obrigado http://www.dicampus.es ‫ﺷﻜﺮﺍ‬ merci ॿॿॿॿॿॿॿ спасибо Gracias Danke thanks ‫תודה‬
    75. Otras referencias A practical guide to seven agile methods - http://www.devx.com/architect/  Article/32761 Martin Fowler - http://martinfowler.com  http://www.dicampus.es Recursos sobre AUP, Agile Modelling, etc. - http://www.ambysoft.com/  eXtreme Programming - http://www.extremeprogramming.org/  Sobre historias de usuario - http://userstories.com/  Patrones de diseño - http://www.hillside.net/  Patrones para el diseño de pruebas unitarias - http://xunitpatterns.com/  Artículo de fowler sobre integración continua - http://martinfowler.com/  articles/continuousIntegration.html Hudson home page - https://hudson.dev.java.net/  Lámparas de lava como indicador del estado del proyecto - http://  mark.michaelis.net/Blog/BuildStatusUsingLavaLampsByKenNichols.aspx Recursos sobre SCRUM - http://www.scrumalliance.org/resources 

    + Miguel FernándezMiguel Fernández, 7 months ago

    custom

    471 views, 0 favs, 0 embeds more stats

    Sopporting slides for a course on Agile Methods and more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 471
      • 471 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 0
    • Downloads 15
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories