clase1 CACIC 2007

36
1 Planificación Estratégica de Proyectos de Software CACIC 2007 - Clase 1 Mg. Rodolfo Bertone Mg. Pablo Thomas Facultad de Informática - UNLP Planificación estratégica de Proyectos de Software 2 CACIC 2007 - Clase 1 Agenda Introducción Software Ingeniería de Software Ciclo de vida de desarrollo de Software Técnicas de desarrollo ágiles

Transcript of clase1 CACIC 2007

Page 1: clase1 CACIC 2007

1

Planificación Estratégica de Proyectos de Software

CACIC 2007 - Clase 1

Mg. Rodolfo Bertone Mg. Pablo Thomas

Facultad de Informática - UNLP

Planificación estratégica de Proyectos de Software 2CACIC 2007 - Clase 1

Agenda

IntroducciónSoftwareIngeniería de SoftwareCiclo de vida de desarrollo de SoftwareTécnicas de desarrollo ágiles

Page 2: clase1 CACIC 2007

2

Planificación estratégica de Proyectos de Software 3CACIC 2007 - Clase 1

Introducción – Modalidad del curso

Consta de 5 clases teórico – prácticas

El día viernes en la segunda mitad del horario establecido, habrá un examen general tipo elección múltiple.

Planificación estratégica de Proyectos de Software 4CACIC 2007 - Clase 1

Introducción - Planificación Estratégica

La planificación estratégica es un enfoque de sistemas para guiar a una empresa durante un tiempo a través de su medio ambiente, para lograr las metas dictadas.

Esto define la PE de manera globalSe puede aplicar esta definición al área de Informática de una organización?Cuales es el contexto que debería tenerse en cuenta?

Page 3: clase1 CACIC 2007

3

Planificación estratégica de Proyectos de Software 5CACIC 2007 - Clase 1

Introducción - Planificación Estratégica

La planificación estratégica es el proceso administrativo de desarrollar y mantener una relación viable entre los objetivos recursos de la organización y las cambiantes oportunidades del mercado. El objetivo de la planificación estratégica es modelar y remodelar los negocios y productos de la empresa, de manera que se combinen para producir un desarrollo y utilidades satisfactorios.

Como se adecua esta “definición” al contexto del software?

Planificación estratégica de Proyectos de Software 6CACIC 2007 - Clase 1

Introducción - Planificación EstratégicaLa planificación estratégica proporciona la dirección que guiará la misión, los objetivos y las estrategias de la empresa, pues facilita el desarrollo de planes para cada una de sus áreas funcionales. Un plan estratégico completo guía cada una de las áreas en la dirección que la organización desea seguir y les permite desarrollar objetivos, estrategias y programas adecuados a las metas. La relación entre la planificación estratégica y la de operaciones es parte importante de las tareas de la gerencia.

Como podemos aplicar esta ideas ideas en la industria del software?

Page 4: clase1 CACIC 2007

4

Planificación estratégica de Proyectos de Software 7CACIC 2007 - Clase 1

Agenda

IntroducciónSoftwareIngeniería de SoftwareCiclo de vida de desarrollo de SoftwareTécnicas de desarrollo ágiles

Planificación estratégica de Proyectos de Software 8CACIC 2007 - Clase 1

Software - Introducción“Antes de mirar más profundamente el proceso de creación del software, será útil explorar algunos aspectos del software mismo. Como dice el viejo adagio: 'Para derrotar a tu enemigo debes conocerlo'.”(Freeman)

El software es más que programas.

Hay una característica de él que debe atenderse: el hecho que es un sistema

Page 5: clase1 CACIC 2007

5

Planificación estratégica de Proyectos de Software 9CACIC 2007 - Clase 1

Software - Introducción

Lo importante no es qué es el software, sino:cómo se piensa sobre él (qué imagen se tiene)qué papel juega en un contexto mayor

Punto de vista de una computadora: El software es sólo programasPensar así genera problemas.

Ej: medir la productividad por las líneas de código producidas por unidad de tiempo (la visión errónea más difundida). Identifica productividad en la construcción del sistema con la capacidad degenerar código

Planificación estratégica de Proyectos de Software 10CACIC 2007 - Clase 1

Software - IntroducciónEsta simplificación se traduce en condicionar el ambiente para producir código

Resultado:montañas de código que no se pueden integrar a trabajar como un sistemaconstrucción de sistemas que no satisfacen las necesidades de los usuarios, aunque estén bien técnicamente

Page 6: clase1 CACIC 2007

6

Planificación estratégica de Proyectos de Software 11CACIC 2007 - Clase 1

Software – Que es ?

Alma y cerebro de una computadoraCorporización de las funciones de un sistemaEl conocimiento capturado acerca de un área de El conocimiento capturado acerca de un área de aplicaciónaplicaciónColección de los programas y datos necesarios para convertir a una computadora (de propósito general) en una máquina de propósito especial diseñada para una aplicación particular.Información (documentación) producida durante el desarrollo de un sistema software-intensivo.

Planificación estratégica de Proyectos de Software 12CACIC 2007 - Clase 1

Software – Que es ?El software es muchas cosas, pero todos son aspectos de la informaciónEn definitiva es una cuestión de semántica:

si software = programas ejecutables, excluimos una cantidad de información que debemos llamar de alguna manerasi incluimos toda la información relevante a una pieza de software ejecutable, entonces nos debemos relacionar con esa información en la misma forma rigurosa y sistemática que lo hacemos con el software ejecutable,

Esto es crucial para un desarrollo exitoso, pues si no se hace, la información se pierde o altera introduciendo errores

Page 7: clase1 CACIC 2007

7

Planificación estratégica de Proyectos de Software 13CACIC 2007 - Clase 1

Software - RepresentacionesCualquier información que en forma directa representa un eventual conjunto de programas y los datos asociados Incluye

programasdiseños detalladosdiseños de arquitectura (representados como diagramas de estructura)especificaciones escritas en un lenguaje formalrequerimientos del sistema expresados en una combinación de notacioneso cualquiera de centenares de posibilidades

Planificación estratégica de Proyectos de Software 14CACIC 2007 - Clase 1

Software – Por qué es único ?

Es intangibleAlto contenido intelectualNo se lo reconoce como un activo contableSu proceso de desarrollo es mano de obra intensivo, basado en equipos y por proyectosPotencialmente es modificable hasta el infinito

Page 8: clase1 CACIC 2007

8

Planificación estratégica de Proyectos de Software 15CACIC 2007 - Clase 1

Software – Cualidades (Procesos y Productos)

Corrección funcional: se comporta de acuerdo a las especificación de requerimientos funcionales.

Confiabilidad: el usuario puede depender del software

Robustez: se comporta "razonablemente", incluso en circunstancias no previstas en la especificación de requerimientos

Performance: uso económico de los recursos de compu-tación (en Ingeniería Software se la identifica con eficiencia)

Planificación estratégica de Proyectos de Software 16CACIC 2007 - Clase 1

Software – Cualidades (Procesos y Productos)

"Amistosidad“: fácil uso por los seres humanos

Verificabilidad: sus propiedades pueden verificarse fácilmente

Mantenibilidad: puede repararse y evolucionar

Reusabilidad: utilizar componentes sin modificarlas en otros sistemas

Portabilidad: puede correr en distintos ambientes

Page 9: clase1 CACIC 2007

9

Planificación estratégica de Proyectos de Software 17CACIC 2007 - Clase 1

Software – Cualidades (Procesos y Productos)Comprensibilidad: facilidad de ser entendidos por los usuarios (desarrolladores)

Interoperatividad: capacidad de coexistir y cooperar con otros sistemas

Productividad: mide la eficiencia del proceso de producción de software

Oportunidad: capacidad de liberar un producto en tiempo

Visibilidad: sus pasos previos y estado actual están correctamente documentados

Planificación estratégica de Proyectos de Software 18CACIC 2007 - Clase 1

Software

Ejercicio en grupo

Page 10: clase1 CACIC 2007

10

Planificación estratégica de Proyectos de Software 19CACIC 2007 - Clase 1

Agenda

IntroducciónSoftwareIngeniería de SoftwareCiclo de vida de desarrollo de SoftwareTécnicas de desarrollo ágiles

Planificación estratégica de Proyectos de Software 20CACIC 2007 - Clase 1

Ingeniería de SoftwareObjetivo de la Ingeniería: construcción de producto.

Objetivo de la Ingeniería Software: sistemas de software

Principal diferencia: el software es maleable.

Existe la idea que los cambios en el software son fáciles.

En este punto debe pensarse a los productos de software de otra forma:

Un cambio en el soft debe ser visto como un cambio en el diseño más que en el código

Page 11: clase1 CACIC 2007

11

Planificación estratégica de Proyectos de Software 21CACIC 2007 - Clase 1

Ingeniería de SoftwareLa producción de Software es humano-intensiva: requiere más ingeniería que manufactura. El proceso de producción de software se vincula más con el diseño e implementación que con la manufactura.

En la ingeniería el ingeniero dispone de herramientas para describir el producto que son distintas del producto, no es así en la Ingeniería Software.

Planificación estratégica de Proyectos de Software 22CACIC 2007 - Clase 1

Ingeniería de SoftwareFairley

La Ingeniería Software es la disciplina tecnológica y de administración que se ocupa de la producción y evolución sistemática de productos de software que son desarrollados y modificados dentro de los tiempos y costos estimados

Ghezzi Ingeniería Software es el campo de la ciencia de la computación que trata con la construcción de sistemas de software que son tan grandes o complejos que son construídos por un equipo o equipos de ingenieros

IEEE1. El uso de un enfoque sistemático, disciplinado y cuantificable para el

desarrollo, operación y mantenimiento de software, es decir, la aplicación de la ingeniería al software,

2. el estudio de enfoques relacionados con (1)

Page 12: clase1 CACIC 2007

12

Planificación estratégica de Proyectos de Software 23CACIC 2007 - Clase 1

Ingeniería de Software - ProcesoProceso: Conjunto de pasos que involucran actividades, restricciones y recursos que producen un output de algún tipo

Involucra: Técnicas, Herramientas, Procedimientos

Proceso: Secuencia de pasos ejecutadas con un propósitodado [IEEE-STD-610].

Proceso Software: Un conjunto de actividades, métodos, prácticas y transformaciones que la gente usa para desarrollar y mantener software y los productos asociados.

Planificación estratégica de Proyectos de Software 24CACIC 2007 - Clase 1

Ingeniería de SoftwareLa aplicación exitosa de la disciplina ingeniería requiere:

Una combinación de soluciones técnicas y gerencialesUn conjunto bien definido productos necesita:

satisfacer el clienteasistir al desarrollador en el cumplimiento de esas necesidadescrear competencias para futuros negocios

Un conjunto bien definido de procesos:para cumplir con las necesidades a ser cumplidaspara controlar el desarrollopara mejorar el negocio

Un ciclo de proceso que soporte aprendizaje y realimentaciónTecnologías clave para soportar estas necesidades incluyen:

modelización, medición, reuso de procesos, productos, yotras formas de conocimiento realevante a la disciplina

Page 13: clase1 CACIC 2007

13

Planificación estratégica de Proyectos de Software 25CACIC 2007 - Clase 1

Agenda

IntroducciónSoftwareIngeniería de SoftwareCiclo de vida de desarrollo de SoftwareTécnicas de desarrollo ágiles

Planificación estratégica de Proyectos de Software 26CACIC 2007 - Clase 1

Ciclo de vida de desarrollo de Software

En el proceso de desarrollo de software: conjunto de actividades que generan productos intermedios los que, a su vez, son transformados en otros productos por otros procesos.

El desarrollo puede verse como una cadena de actividades con productos intermedios, esa visión es la de ciclo de vida.

Page 14: clase1 CACIC 2007

14

Planificación estratégica de Proyectos de Software 27CACIC 2007 - Clase 1

Ciclo de vida de desarrollo de Software

Planeamiento

DesarrolloOperación

yMantenimiento

Planificación estratégica de Proyectos de Software 28CACIC 2007 - Clase 1

Ciclo de vida de desarrollo de Software

Resultado

Requerimientos Diseño preliminar

Diseño detallado

Código

Necesidades

DeliveryDiseñar arquitectura

Especificar Requerimientos

Diseñar módulos

Codificar

PROJECT MANAGEMENT

Page 15: clase1 CACIC 2007

15

Planificación estratégica de Proyectos de Software 29CACIC 2007 - Clase 1

MCV: Cascada completoRequerimientos

de softtware

Diseño arquitectura

Diseño detallado

Codificación

Testeo unitario

Testeo integración

Testeo sistema software

Operación y mantenimiento

Planificación estratégica de Proyectos de Software 30CACIC 2007 - Clase 1

Características del CascadaComienzo: cuando los requerimientos están completamente determinadosUna etapa debe concluir antes de comenzar la subsiguienteRecorre las etapas secuencialmenteCuando se requiere, vuelve atrás y rehace el material: en la práctica es típicamente iterativoHistóricamente fue el primero de todos los modelosFue utilizado en una variedad de contextos y aún continua siendo el modelo de referencia que ha dado lugar a múltiples modelos

Page 16: clase1 CACIC 2007

16

Planificación estratégica de Proyectos de Software 31CACIC 2007 - Clase 1

Ventajas del CascadaBuen desempeño con definición estable del producto y con metodologías bien comprendidasComo todo el planeamiento se hace al principio, minimiza el overhead del planeamientoNo provee productos tangibles de software hasta el final, pero la documentación que generan provee indicaciones de progresoFunciona bien en proyectos complejos y bien comprendidosFunciona bien cuando los requerimientos de calidad predominan sobre los de costo y cronogramaComo no hay cambios en el proceso, se elimina una fuente de erroresTrabaja bien con gente técnicamente débil o inexperto, porque provee una estructura que minimiza el deperdicio de esfuerzo

Planificación estratégica de Proyectos de Software 32CACIC 2007 - Clase 1

Desventajas del CascadaLas desventajas provienen de la dificultad de especificar los requerimientos al comienzo del proyecto Reparar un olvido en el desarrollo puede ser muy costosoCiertos errores de requerimientos sólo se pueden apreciar en momentos de construcción avanzada del sistemaEl mayor problema es la falta de flexibilidad (en el desarrollo real en muchos casos no se trata de construir todo, sino lo máximo posible)Se puede volver atrás, pero con un gran esfuerzoAlgunas herramientas, métodos y actividades abarcan varias etapas y es difícil adecuarlos al modelo de fases disjuntasPara un desarrollo rápido genera demasiada documentaciónHasta el final genera pocos signos visibles de progreso, con lo que crea la percepción de avance lento

Page 17: clase1 CACIC 2007

17

Planificación estratégica de Proyectos de Software 33CACIC 2007 - Clase 1

Problemas del Cascada

El desarrollo de software es iterativo en su esencia

En los hechos de una etapa se pasa a cualquiera de las otras

Se ha convertido en un “modelo ideal típico”

Planificación estratégica de Proyectos de Software 34CACIC 2007 - Clase 1

MCV: Code-and-fix (prueba y error)

Page 18: clase1 CACIC 2007

18

Planificación estratégica de Proyectos de Software 35CACIC 2007 - Clase 1

Code-and-fixHabitualmente es el que se usa cuando no se usa ningún ciclo de vidaSi no hay mucho planeamiento seguro se usa este cicloSe parte de una idea general del producto (con o sin especificación)Luego se usa una combinación de diseño informal, metodologías varias hasta que se tiene un producto para entregar

Planificación estratégica de Proyectos de Software 36CACIC 2007 - Clase 1

Code-and-fixVentajas:

1. No hay overhead, no se pierde tiempo en ninguna actividad más que en codificar

2. No requiere entrenamiento: cualquiera que sepa programar está familiarizado con este ciclo

Desventajas:1. Salvo proyectos pequeños es un modelo peligroso: no se

puede evaluar el progreso hasta que se hizo el código, no hay forma de evaluar calidad ni de identificar riesgos

2. Si se descubre que el enfoque de diseño es equivocado, no hay otra que volver a empezar

Page 19: clase1 CACIC 2007

19

Planificación estratégica de Proyectos de Software 37CACIC 2007 - Clase 1

Modelo Espiral

McConnell

Planificación estratégica de Proyectos de Software 38CACIC 2007 - Clase 1

Modelo Espiral - Componentes

Objetivos. Objetivo general a alcanzar, luego se ira desglosando en más niveles. Restricciones. Restricciones que se imponen al proyecto. Alternativas. Se detallan las alternativas de solución. Riesgos. Se detallan los riesgos que podría generar cada alternativa. Resolución de Riesgos. Propuesta de solución a cada uno de los riesgos. Plan de la etapa siguiente. Plan de la etapa siguiente. Compromiso. Detalles de Compromisos para llevarla a cabo.

Page 20: clase1 CACIC 2007

20

Planificación estratégica de Proyectos de Software 39CACIC 2007 - Clase 1

Modelo Espiral - CaracterísticasEs el ciclo de vida más sofisticado

Es un ciclo de vida orientado al riesgo que parte el proyecto enpequeños mini-proyectos, cada uno de los cuáles ataca algún riesgo

El “riesgo” se refiere a no entender los requerimientos o la arquitectura, problemas de performance, etc

Una vez que se atacaron los principales riesgos concluye como loharía un cascada

Diagrama expresa: se parte en pequeña escala, explora los riesgos, hace un plan para manejarlos y plantea un enfoque para la próxima iteración

Planificación estratégica de Proyectos de Software 40CACIC 2007 - Clase 1

Modelo Espiral - CaracterísticasCada iteración abarca los seis pasos del espiral

Las iteraciones iniciales son las más baratas: se gasta menos en las iniciales

No hay que tomar el diagrama muy rígidamente: pueden no ser los seis pasos o más/menos de los cuatro loops

Se puede combinar con otros modelos de ciclo de vida de dos maneras:

Una vez que se redujeron los riesgos con iteraciones se puede seguir con otro cicloDentro de un ciclo de vida, se puede incluir una iteración para resolver algún tipo de riesgo

Page 21: clase1 CACIC 2007

21

Planificación estratégica de Proyectos de Software 41CACIC 2007 - Clase 1

Modelo Espiral - Ventajas

La mayor ventaja es que el aumento del costo disminuye el riesgo

Provee tanto control gerencial como el modelo tradicional de cascada

Como está orientado por los riesgos, provee información temprana sobre estos

Salir del proyecto no tiene alto costo de salida en las etapas tempranas

Planificación estratégica de Proyectos de Software 42CACIC 2007 - Clase 1

Modelo Espiral - Desventajas

La única dificultad es que es complicado: requiere un gerenciamiento cuidadoso

Puede ser dificultoso definir hitos para establecer el siguiente loop

Si el proyecto es modesto y no se requiere la flexibilidad y gestión de riesgo de este modelo conviene no aplicarlo

Page 22: clase1 CACIC 2007

22

Planificación estratégica de Proyectos de Software 43CACIC 2007 - Clase 1

Prototipos - TipologiaEscenarios o simulaciones, herramienta para entender o validar los requerimientos del usuario

Rápidos desechables, construcción “quick and dirty” que atacan un aspecto particular para que el usuario potencial lo utilice durante un tiempo y provea información al equipo.

Evolutivos, atacan una funcionalidad acotada del sistema que resuelve algunos de los requerimientos del usuario.

Planificación estratégica de Proyectos de Software 44CACIC 2007 - Clase 1

Requerimientosde softtware

Diseño preliminar

Diseño detallado, Codificación,

Testeo, DeliveryDiseño detallado,

Codificación, Testeo y Delivery

Diseño detallado, Codificación,

Testeo y Delivery

Etapa 1

Etapa 2

Etapa n

Entrega en etapas (implementación incremental)

Page 23: clase1 CACIC 2007

23

Planificación estratégica de Proyectos de Software 45CACIC 2007 - Clase 1

Entrega evolutivaConcepto

del softtware

Requerimientosde softtware

(preliminares)

Diseño arquitectura y

núcleo del sist.

Desarrollo de versión

Elicitación del feedback del consumidor

Incorporar el feedback del consumidor

Entrega de versión

Entrega de la versión final

Planificación estratégica de Proyectos de Software 46CACIC 2007 - Clase 1

Diseño

Codificación

Testeo

Análisis

Diseño

Codificación

Testeo

Análisis

Otra vista de la entrega evolutiva

Requerimientosde softtware

Requerimientosde softtware

Page 24: clase1 CACIC 2007

24

Planificación estratégica de Proyectos de Software 47CACIC 2007 - Clase 1

Prácticas de desarrollo incrementalAluden a desarrollo y entrega en etapas

Reducen el riesgo con el principio “divide y conquistarás”: los proyectos pequeños son menos dificultosos que los grandes

Facilitan la visibilidad

Permiten cambios durante el desarrollo

Los MCV que soportan el incremental:EspiralPrototipo evolutivoEntrega en etapasEntrega evolutiva

Planificación estratégica de Proyectos de Software 48CACIC 2007 - Clase 1

Compra de software (Commercial-off-the-shelf-software)

Es una alternativa que a veces no lo se la considera adecuadamenteRaramente satisface las necesidadesEstá disponible inmediatamenteHasta el momento en que se pone en funcionamiento los usuarios pueden trabajar sobre alguna versiónNo debe comparárselo con el producto planeado, sino con lo que resulta en la realidadEn el desarrollo se concede en diseño, costo y cronogramaRequiere la habilidad para la gestión de compras de softwareUna variante es la de contratar el desarrollo

Page 25: clase1 CACIC 2007

25

Planificación estratégica de Proyectos de Software 49CACIC 2007 - Clase 1

Diseño

Codificación

Testeo

Diseño

Codificación

Testeo

Sistema desarrollado previamente

Nuevo sistema a desarrollar

Requerimientosde softtware

Codificación

Testeo

Repositorio de software

Diseño

Modelo Reuso

Requerimientosde softtware

Requerimientosde softtware

Planificación estratégica de Proyectos de Software 50CACIC 2007 - Clase 1

Agenda

IntroducciónSoftwareIngeniería de SoftwareCiclo de vida de desarrollo de SoftwareTécnicas de desarrollo ágiles

Page 26: clase1 CACIC 2007

26

Planificación estratégica de Proyectos de Software 51CACIC 2007 - Clase 1

Métodos ágiles

Algunos problemas “motivadores” Requerimientos fuera de controlNo cumplimiento de los tiempos planificados (Desvíos)Estimaciones deficientesRe-trabajo excesivoBaja calidadCostos excedidosInsatisfacción del ClienteInsatisfacción de los profesionales participantes

Planificación estratégica de Proyectos de Software 52CACIC 2007 - Clase 1

Métodos ágilesCaracterísticas

Promueven prácticas adaptativas en lugar de predictivasIterativo. A intervalos regulares el equipo reflexiona sobre cómo ser más efectivo. Comunicación intensivaLa mayor prioridad es satisfacer al cliente a través de la entrega temprana y continua de software con valor. Se aceptan req cambiantes, incluso en etapas avanzadas. Se entrega software frecuentemente.Los responsables de negocio y los desarrolladores deben trabajar juntos diariamente a lo largo del proyecto.

Page 27: clase1 CACIC 2007

27

Planificación estratégica de Proyectos de Software 53CACIC 2007 - Clase 1

Métodos ágiles

CaracterísticasProyectos con profesionales motivados. Conversación cara a cara. Software que funciona es la principal medida de progreso. Los procesos ágiles promueven el desarrollo sostenible. La atención continua a la excelencia técnica y los buenos diseños mejoran la agilidad. Simplicidad es esencial. Las mejores arquitecturas, req. y diseños surgen de equipos que se auto-organizan.

Planificación estratégica de Proyectos de Software 54CACIC 2007 - Clase 1

XP - Valores & PrincipiosValores

ComunicaciónSimplicidadFeedbackCoraje

Cinco PrincipiosRealimentación rápidaAsumir la SimplicidadCambio IncrementalAdherirse (Abrazar) al CambioTrabajo de Alta Calidad

Más principiosEnseñar a aprenderInversión inicial pequeñaJugar para ganarHacer experimentos concretos: Comunicación honesta y abierta: Trabajar con el instinto de la gente y no contra ellosResponsabilidad aceptadaAdaptarse a las condiciones locales: Viajar livianoMediciones honestas

Page 28: clase1 CACIC 2007

28

Planificación estratégica de Proyectos de Software 55CACIC 2007 - Clase 1

XP - ValoresComunicación: Promueve la comunicación entre los stakeholders y el

equipo, así como también entre los desarrolladores y el equipo.

Simplicidad: Es importante que los desarrolladores entiendan el modelo para simplificar el proceso y el software en sí. Es mejor desarrollar algo simple y mejorarla más adelante si es necesario, que gastar tiempo en una idea compleja que nunca se usaráplenamente.

Feedback: “Optimismo es una ocupación peligrosa de programación, Feedback es el tratamiento” [Beck]. Con la comunicación de ideas a través de diagramas se tiene una rápida retroalimentación.

Coraje: El Coraje es importante porque se necesita tomar decisiones importantes y ser capaz de cambiar la dirección o rehacer el trabajo cuando alguna decisión fue inadecuada.

Planificación estratégica de Proyectos de Software 56CACIC 2007 - Clase 1

XP - Cinco principios

Realimentación rápida: El tiempo entre una acción y la retroalimentación de la misma es critico. Obtener feedback, interpretarlo, poner lo aprendido en el sistema lo más rápido posible. Asumir la Simplicidad: La solución simple es la mejor solución. Hacer una buena tarea: resolver hoy la tarea de hoy y confiar a la habilidad del desarrollador para añadir complejidad en el futuro. Cambio Incremental: Grandes cambios de una vez no funcionan. Los problemas se resuelven con una serie de pequeños cambios que hacen diferencia. Adherirse (Abrazar) al Cambio: La mejor estrategia es la que preseve la mayor parte de las opciones mientras resuelve el problema de mayor presión. Trabajo de Alta Calidad: Debe realizarse con la mayor calidad y rehacerlo, cuando exista algún motivo para ello. La calidad es una variable dependiente

Page 29: clase1 CACIC 2007

29

Planificación estratégica de Proyectos de Software 57CACIC 2007 - Clase 1

XP - Más principiosEnseñar a aprender: Más que enseñar un método de testeo, diseño o lo que fuera, enseñar estrategias para hacer todo el testeo que se debe hacer.Inversión inicial pequeña: Un gran presupuesto es fuente de desastres. Un presupuesto apretado fuerza a limar requerimientos e incita a hacer un buen trabajo. Jugar para ganar: Diferenciar entre jugar para ganar y jugar para no perder, ayuda a poner la vara alta. Hacer experimentos concretos: Testear las ideas antes de ponerlas en práctica.Comunicación honesta y bbierta: Despersonalizar las argumentaciones, no convertir en secreto cosas innecesarias.

Trabajar con el instinto de la gente y no contra ellos: partir de que la gente quiere ganar, aprender, interactuar, etc.Responsabilidad aceptada: La responsabilidad se acepta no se impone. Se ejecutan las tareas que decide el equipo.Adaptarse a las condiciones locales: Todo lo que se intente hacer debe adecuarse a las condiciones específicas del ambiente. Viajar liviano: No se puede mover rápido con un equipaje muy pesado. Los artefactos deberían ser: pocos, simples y valiosos. Mediciones honestas: Medir es valioso pero deben hacerse a un nivel de detalle que lo permitan nuestros instrumentos.

Planificación estratégica de Proyectos de Software 58CACIC 2007 - Clase 1

XP - Actividades básicas

CodificaciónAl final del día tiene que haber un programaEs la actividad sin la que no se puede hacer nada

Testing“Lo que no se puede medir no existe” (Hume)Features del software que no se pueden demostrar por el testeo no existen

EscucharLos programadores no conocen el dominio, luego aprenden escuchando a los clientes

DiseñoEl diseño organiza la lógica de cada una de las partes

Page 30: clase1 CACIC 2007

30

Planificación estratégica de Proyectos de Software 59CACIC 2007 - Clase 1

XP - Materias primas

La historia Los valores (comunicación, simplicidad, feedback y coraje)Los principios (cinco + más principios)Actividades básicas (Codificar, Testear, Escuchar y Diseñar)

El trabajo consiste en estructurar las cuatro actividades básicas

Planificación estratégica de Proyectos de Software 60CACIC 2007 - Clase 1

XP - Las Prácticas

1. El Juego de la Planificación2. Versiones Pequeñas3. Diseño Simple4. Testing5. Refactoring6. Metáforas7. Programación por Pares8. Propiedad Colectiva9. Integración Continua10. Semana de 40 hs11. Cliente in Site12. Estándares de Codificación

Page 31: clase1 CACIC 2007

31

Planificación estratégica de Proyectos de Software 61CACIC 2007 - Clase 1

XP - Estrategia de gerenciamiento

MedicionesHerramienta básica de gestión de XPPocas métricas y retirar las que cumplieron sus funciónNo es “gestión por los números”

CoachingPreocupado por la ejecución (y evolución) técnica del procesoCoacher: no tiene responsabilidad en las decisiones, sino que los demás las tomen bien, buen comunicador y técnicamente, apoyo en dificultades técnicas

TrackingMedir lo hecho contra lo predecido

IntervenciónCuando los problemas no pueden ser resueltos por el equipo

Planificación estratégica de Proyectos de Software 62CACIC 2007 - Clase 1

XP - Estrategias clave

PlaneamientoDesarrolloDiseñoTesteo

Page 32: clase1 CACIC 2007

32

Planificación estratégica de Proyectos de Software 63CACIC 2007 - Clase 1

XP - Planeamiento

Se escriben las Historia de los usuariosSe crean un Plan de Entrega de VersionesSe hacen muchas versiones pequeñasSe mide la velocidad del proyectoEl proyecto se divide en iteracionesEl Planeamiento de Iteración comienza con cada iteraciónMover la genteCada día se comienza con un stand-up meeting Se modifican los procesos de XP cuando sea necesario

Planificación estratégica de Proyectos de Software 64CACIC 2007 - Clase 1

XP - Codificación

El cliente está siempre disponibleCodificación estándarCodificar primero la unidad de testeoTodo el código de producción es programado de a paresSolo un par por vez integran códigoIntegración continuaCódigo colectivoOptimizar al finalNo trabajar horas extras

Page 33: clase1 CACIC 2007

33

Planificación estratégica de Proyectos de Software 65CACIC 2007 - Clase 1

XP - Diseño

SimplicidadNo agregar funcionalidad antes de tiempoRefactorizar cuando y donde sea posible

Planificación estratégica de Proyectos de Software 66CACIC 2007 - Clase 1

XP - Testing

Todo el código debe tener unidades de testeoTodo código debe pasar las unidades de testeo antes de ser liberadoCuando se encuentra un error, se crean tests.Frecuentemente se corren tests de aceptación y se publica el resultado.

Page 34: clase1 CACIC 2007

34

Planificación estratégica de Proyectos de Software 67CACIC 2007 - Clase 1

SCRUM - Generalidades

Después de XP es la mas conocida, recomendada como complemento (ocupa un lugar bajo en el mercado)

La palabra Scrum, procede de la terminología del juego de rugby, donde designa al acto de preparar el avance del equipo en unidad pasando la pelota a uno y otro jugador. Igual que el juego, Scrum es adaptativo, ágil, auto-organizante y con pocos tiempos muertos.

Fundamento: un proceso necesita aceptar el cambio en lugar de esperar predictibilidad.

No está concebido como método independiente, sino que se promueve como complemento de otras metodologías (por ej. XP)

Como método tiene valores y prácticas de gestión, sin pronunciarse sobre requerimientos, implementación y demás cuestiones técnicas; de allí su deliberada insuficiencia y función de complemento

Planificación estratégica de Proyectos de Software 68CACIC 2007 - Clase 1

SCRUM – ValoresEquipos auto-dirigidos y auto-organizados. No hay manager que decida, ni otros títulos que “miembros del equipo”; la excepción es el Scrum Master que debe ser 50% programador y que resuelve problemas, pero no manda. Los observadores externos pueden observar, pero no interferir ni opinar.Una vez elegida una tarea, no se agrega trabajo extra. En caso que se agregue algo, se recomienda quitar alguna otra cosa.Encuentros diarios 15 a 30 minutos “Scrums” con las tres preguntas:

• ¿Qué has hecho en este proyecto desde el ultimo encuentro ?• ¿ Qué planeas hacer en el proyecto entre hoy y el próximo encuentro?• ¿ Qué obstáculos se te han presentado para lograr lo prometido?

Iteraciones de trabajo de treinta días (“sprints”); se admite que sean más frecuentes.Al principio de cada iteración, planeamiento adaptativo guiado por el cliente.

Page 35: clase1 CACIC 2007

35

Planificación estratégica de Proyectos de Software 69CACIC 2007 - Clase 1

XP + SCRUM – Experiencias

Microsoft ha combinado los modelos de trabajo ágiles XP y Scrum para finalizar el lanzamiento de las nuevas versiones: SQL Server 2005, Visual Studio 2005 tool suite y Biztalk server2006 integration server

Planificación estratégica de Proyectos de Software 70CACIC 2007 - Clase 1

Ciclo de vida de desarrollo de Software

Ejercicio de Ciclos de Vida

Page 36: clase1 CACIC 2007

36

Planificación estratégica de Proyectos de Software 71CACIC 2007 - Clase 1

ReferenciasArango, G., “¿Qué es la Ingeniería de Software?”, Noticiero SADIO, año 25, 1 (marzo-abril) 1993, 7-11.Basili, V., Class Notes, Chap 1 The Software Business. Freeman, P., “Psst, What Is Software, Anyway?”, en Software Perspectives. The System is the Message, Addison-Wesley, Reading Mass, 1987. Capítulo 1, pp 3-28.Ghezzi, C., Jazayeri, M., Mandrioli, D., Fundamentales of Software Engineering, Prentice-Hall International, Englewood Cliffs, 1991.McConnell, S., “Who Needs Software Engineering?”, IEEE Software, jan-feb 2001McConnell, S., Software Project Survival Guide, Microsoft Press, 1998, RedmondMcConnell, S., Rapid Development, Microsoft Press, 1996Zelkowitz, M.V., MSWE 607 Software Life Cycle Methods and Techniques, Maryland, 2000, Notas de aulaReifer, D.J., “Web Development: Estimating Quick-to-Market Software”, IEEE Software, nov/dic 2000Feiler, P H and Humphrey, W S ‘Software process development and enactment: concepts and definitions’ in Proc. 2nd Int. Conf: Software Process, Berlin, Germany (25-26 February 1993) pp 28-39Extreme Programming: A gentle introduction,

http://www.extremeprogramming.org/index2.htmlBeck,K., Extreme Programming. Embrance Change, Addison-Wesley, Bosto, 2000http://jeffsutherland.com/scrum