La aproximación iterativa está dirigida por los riesgos La aproximación iterativa está dirigida por los riesgos Las iteraciones alivian los riesgos técnicos.

Slides:



Advertisements
Presentaciones similares
EL PROCESO DE DESARROLLO DEL SOFTWARE
Advertisements

Ciclo de vida de desarrollo de software
IDENTIFICAR NECESIDADES, PROBLEMAS U OPORTUNIDADES
PLANIFICACIÓN DE TESTING
CICLO DE VIDA DEL DESARROLLO DE SOFTWARE
También conocido como Diseño Lógico Rodrigo Salvatierra Alberú.
Control Interno Informático. Concepto
CICLO DE VIDA DE LOS SISTEMAS DE INFORMACIÓN
Gestión de Recursos Informáticos Unidad Nº 3: Gestión de calidad y eficiencia.
CONTROL DE CALIDAD.
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
Modelos de Proceso del Software
DIAGRAMAS DE CLASES Completando los diagramas de interacción, es posible identificar la especificación de las clases que participarán en la solución indicando.
MODELANDO EL DOMINIO Capítulo 2 del libro guía Gloria Lucía Giraldo G. UNIVERSIDAD NACIONAL DE COLOMIBIA DISEÑO Y CONSTRUCCIÓN DE PRODUCTOS DE SOFTWARE.
SISTEMAS DE DISEÑO ASISTIDO POR COMPUTADORA
PLANEACION DE UNA ESTRUCTURA ORGANIZACIONAL
El Proceso Unificado es Iterativo e Incremental
Análisis, diseño e implementación para realizar los casos de uso
DISEÑO DE LA INTERFAZ DE USUARIO
Modelo de ciclo de vida en espiral
DISEÑO DE SOFTWARE 1ª. Parte
El Proceso Unificado es Iterativo e Incremental
Gestión de Proyectos Informáticos Sesión N° 5 Ciclo de Vida de un Proyecto Roberto Jijena I.
Juan Antonio del Valle Flores
Unidad VI Documentación
Planificación y modelado
Modelos de desarrollo de Software
 ¡Por fin una descripción de la arquitectura! ¡Por fin una descripción de la arquitectura!  La vista de la arquitectura del modelo de casos de uso La.
Ingeniería del Software
Ingeniería de Requerimiento
INGENIERÍA DE SOFTWARE
¿Por qué Casos de Uso?.
Tema 1: Introducción a la Ingeniería de Software
Diseño de Software y su Proceso
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
VISIÓN GENERAL DE LA IS Con independencia del modelo de proceso hay tres fases genéricas: Fase de definición Fase de desarrollo Fase de mantenimiento Cada.
El modelo de análisis tiene como objetivo generar una arquitectura de objetos que sirva como base para el diseño posterior del sistema. Dependiendo del.
“condición que necesita el usuario para resolver un problema o conseguir un objetivo determinado”. Los requisitos de un sistema son los aspectos que el.
 La arquitectura se desarrolla en iteraciones de la fase de elaboración La arquitectura se desarrolla en iteraciones de la fase de elaboración  Ejemplo.
Ing. Noretsys Rodríguez. Definición de Conceptos  Falla: Ocurre cuando un programa no se comporta de manera adecuada. Es una propiedad estadística de.
INTRODUCCIÓN AL PROCESO UNIFICADO DE DESARROLLO DESOFTWARE
Alexander Aristizabal Ángelo flores herrera
Explicar las causas que afectan la calidad. Una vez definidos y seleccionados correctamente los problemas en la gran mayoría de casos es preciso recopilar.
Diseño de Sistemas.
Factores y Métricas que determinan la Calidad de un producto
Ciclo de vida de un sistema
FACTIBILIDAD DE LOS SISTEMAS DE INFORMACIÓN
TIPOS DE AUDITORÍAS EN SISTEMAS DE INFORMACIÓN
IDENTIFICACIÓN DEL CICLO DE VIDA DEL SOFTWARE. POLITÉCNICO COLOMBIANO JAIME ISAZA CADAVID.
TIPOS DE PRUEBAS DEL SOFTWARE
Elaborado por: Mayoral Cruz Matilde Morales Espinoza Anllhins
METODOLOGÍAS ÁGILES “PROCESO UNIFICADO ÁGIL (AUP)
árbol de problemas y objetivos
Fases de la planificación estratégica según Russell Ackoff
Estructurar tus ideas para hacerlas realidad
JHENNIFER SANCHEZ ORTIZ CRISTIAN CAMILO RIASCOS ALEJANDRO PINEDA SANCHEZ FERNANDO JAVIER REBELLON.
Ciclo de Vida del Software
UNIDAD : FUNDAMENTOS DE OPERACIONES Tema 2 La Producción y Logística
Proceso de desarrollo de Software
Investigación preliminar  Entender la naturaleza del problema  Definir el alcance y las restricciones o limitaciones del sistema  Identificar los beneficios.
CONCEPTO DE CICLO DE VIDA 1 En los departamentos de Sistemas se debe definir un marco de referencia común que debe ser:  Pueda ser empleado por todos.
Fundamentos de Computación
VI. EVALUACIÓN DE LOS RECURSOS
Modelo de procesos de software
Bachillerato Ingeniería en Informática Fundamentos de Computación.
Objetivos de la prueba Los objetivos principales de realizar una prueba son: Detectar un error. Tener un buen caso de prueba, es decir que tenga más probabilidad.
1 Tema 2: Introducción al proceso unificado de desarrollo de software.
Verificación y Validación del Software
VERIFICACIÓN Y VALIDACIÓN DE SISTEMAS 3.10 Fase de manejo de requerimientos 4.1 Modelado de pruebas en UML Ponente: ing. Alejandro tapia vazquez.
Entregables del Proyecto
Transcripción de la presentación:

La aproximación iterativa está dirigida por los riesgos La aproximación iterativa está dirigida por los riesgos Las iteraciones alivian los riesgos técnicos La dirección es responsable de los riesgos no técnicos La dirección es responsable de los riesgos no técnicos Tratamiento de los riesgos La iteración genérica Lo que es una iteración

Un riesgo es una variable del proyecto que pone en peligro o impide el éxito del proyecto. Es la “probabilidad de que un proyecto experimente sucesos no deseables, como retrasos en las fechas, excesos de coste, o la cancelación directa”. Identificamos, priorizamos, y llevamos a cabo las iteraciones sobre la base de los riesgos y su orden de importancia. Esto se hace así cuando evaluamos tecnologías nuevas, y cuando trabajamos para cumplir con las necesidades de los usuarios —los requisitos—, sean éstos funcionales o no funcionales. También es así cuando, en las primeras fases, vamos estableciendo una arquitectura que será robusta, es decir, que podrá incorporar los cambios con un riesgo bajo de tener que rediseñar algo. Sí, organizamos las iteraciones para conseguir una reducción del riesgo.

Otros riesgos importantes son temas de rendimiento (velocidad, capacidad, precisión), Habilidad, disponibilidad, integridad de las interfaces de usuario, adaptabilidad, y portabilidad. Muchos de estos riesgos no son visibles hasta que se implementa y prueba el software que implementa las funciones subyacentes. Éste es el motivo por el cual se deben llevar a cabo iteraciones que examinen los riesgos, incluso en las fases de inicio y elaboración, y hasta la codificación y la prueba. El objetivo es acabar con los riesgos en una iteración temprana.

Una observación interesante sobre esto es que, en principio, todos los riesgos técnicos pueden hacerse corresponder con un caso de uso o un escenario de un caso de uso. Aquí, correspondencia quiere decir que el riesgo se atenúa si se desarrolla el caso de uso con sus requisitos funcionales y no funcionales. Esto es cierto no sólo para los riesgos relativos a los requisitos y a la arquitectura, sino también para la verificación del hardware y del software subyacentes. Mediante una cuidadosa selección de los casos de uso, podemos probar todas las funciones de la arquitectura subyacente.

La reducción del riesgo es un eje central de las iteraciones que hacemos en las fases de inicio y de elaboración. Más adelante, en la fase de construcción, la mayoría de los riesgos se han reducido hasta un nivel de rutina, queriendo decir con esto que se someten a prácticas de desarrollo ordinarias. Intentamos ordenar las iteraciones de manera que cada una de ellas se construya sobre la anterior. Intentamos reducir así el riesgo concreto de que si no ordenamos bien las iteraciones, podríamos tener que rehacer varias iteraciones previas. Regresar

Los riesgos han sido clasificados en muchas categorías. Sin embargo, es suficiente para nuestros propósitos el dar sugerencias, sin ser exhaustivos. Hemos identificado cuatro categorías amplias: 1.Riesgos relacionados con nuevas tecnologías: Puede que haya que distribuir los procesos en muchos nodos, lo cual posiblemente origine problemas de sincronización. Algunos casos de uso pueden depender de técnicas informáticas que aún no están bien conseguidas, como el reconocimiento del lenguaje natural o el uso de la tecnología Web.

2. Riesgos relativos a la arquitectura. Estos riesgos son tan importantes que hemos diseñado el Proceso Unificado para que los trate de manera estándar; es decir, la fase de elaboración y las iteraciones para la arquitectura dentro de ella proporcionan un lugar explícito en el proceso para tratarlos. Mediante el establecimiento temprano de una arquitectura que acomode los riesgos, eliminamos el riesgo de no ser capaces de incorporar fácilmente los cambios. Eliminamos el riesgo de tener que rehacer después una buena parte del trabajo. Esta arquitectura resistente a los riesgos es robusta. La adaptación elegante al cambio es característica de la robustez (Apéndice C) de la arquitectura.

Otra ventaja de obtener pronto una arquitectura robusta incluye el mostrar dónde encajan los componentes reutilizables, lo que nos permite pensar en comprar en lugar de desarrollar al principio del proyecto. También reduce el riesgo de descubrir demasiado tarde que el sistema es demasiado caro de construir. Por ejemplo, Los casos de uso que seleccionamos inicialmente no sirven para ayudarnos a obtener la estructura de subsistemas que necesitamos para hacer evolucionar el sistema con los casos de uso que irán llegando. En las primeras iteraciones, digamos durante la fase de elaboración, puede que no nos demos cuenta de que varios actores utilizan el mismo caso de uso a través de diferentes interfaces. Un ejemplo de esta situación es la de tener varios interfaces para sacar dinero: uno emplea un interfaz gráfico de usuario y un computador personal; y otro utiliza un protocolo de comunicaciones sobre una red. Si nuestro diseño trata de cumplir sólo uno de estos casos de uso, podemos acabar con una arquitectura que no tenga un interfaz interno que nos permita añadir nuevos tipos de interacción. El riesgo reside en que será difícil hacer que un sistema de ese tipo evolucione.

Ciertos marcos de trabajo planificados para su reutilización, puede que en realidad no se hayan usado fuera del proyecto original para el cual se construyeron. El riesgo reside en que un marco de trabajo como ese no funcionará bien con otros marcos de trabajo, o en que no será fácil de reutilizar. La nueva versión del sistema operativo que pretendemos utilizar puede no haber alcanzado el nivel de calidad necesario para que confiemos en él. El riesgo reside en que podemos vernos obligados a retrasar la entrega de nuestro propio software mientras esperamos que el fabricante actualice el sistema operativo.

3. Riesgos relativos a construir el sistema adecuado, es decir, que cumpla con su misión y sus usuarios. Este riesgo subraya la importancia de identificar los requisitos funcionales y no funcionales, lo cual significa esencialmente identificar los casos de uso correctos con las interfaces de usuario correctas. Es importante encontrar las funciones más importantes al principio para estar seguros de que se implementan al principio. Para ello, disponemos los casos de uso por orden de importancia relativa al cumplimiento de las necesidades de los clientes y de los requisitos de rendimiento. Consideramos tanto el comportamiento como las capacidades, tales como el rendimiento.

Cuando seleccionamos casos de uso, basamos el orden en que los tratamos en su riesgo potencial, como la posibilidad de encontrar problemas con el rendimiento del caso de uso. Especialmente en las fases de inicio y de elaboración, existe una estrecha relación entre ciertos requisitos (y los casos de uso que los expresan) y los riesgos que descansan en su interior. Los casos de uso que el equipo seleccione tendrán su impacto en la arquitectura que están desarrollando. Por ejemplo: El caso de uso Sígueme permite a un abonado a una línea redirigir sus llamadas a otro número. ¿Debería aplicarse esta redirección a todas las llamadas? ¿Qué se debe hacer con las llamadas del despertador? El abonado estará en esos casos probablemente en su número básico, y no querrá que se redireccione la llamada.

4. Algunos riesgos son relativos al rendimiento. Por ejemplo, El tiempo de respuesta de un caso de uso debe ser menor de 1 segundo. El número de instancias concurrentes de un caso de uso sobrepasa las en una hora. La identificación de áreas problemáticas como éstas depende en gran medida de personas con una dilatada experiencia. Debido a que es probable que ninguna persona tenga la experiencia necesaria, tendrán que estudiar el sistema varias personas, hacer listas de posibles problemas, y reunirse en sesiones de identificación de riesgos. No se pretende que estas aes resuelvan los problemas, simplemente que los identifiquen y priorizen el orden en que se van a estudiar más en profundidad en iteraciones dentro de las fases de inicio y elaboración. Regresar

Riesgos no técnicos son aquellos que una dirección atenta puede detectar y desviar. Los siguientes son ejemplos de esta categoría: La organización a fecha de hoy no cuenta con gente con experiencia en ciertos aspectos poco usuales del proyecto propuesto. La organización pretende implementar partes del sistema propuesto en un lenguaje que le es nuevo. El calendario propuesto por el cliente parece ser demasiado corto, a menos que cada paso encaje en su lugar sin problemas. La organización sólo puede cumplir sus plazos si terceras empresas subcontratadas, con las que no se ha trabajado antes, pueden entregar a tiempo ciertos subsistemas. Puede que el cliente no sea capaz de devolver ciertas aprobaciones dentro de los límites de tiempo necesarios para llegar a la fecha de entrega.

Los riesgos de este tipo caen fuera del propósito de este trabajo. Baste decir que la organización de desarrollo debería identificarlos, poner los medios administrativos necesarios para seguir los desarrollos en cada una de las áreas de riesgo, y garantizar que los directivos responsables emprendan acciones cuando uno de estos riesgos aparece. Regresar

Una vez que se han identificado y priorizado los riesgos, a continuación el equipo decide cómo tratar cada uno de ellos. Cuentan fundamentalmente con cuatro elecciones: evitarlo, limitarlo, atenuarlo, o controlarlo. Algunos riesgos pueden y deberían evitarse, quizá mediante una replanificación del proyecto o un cambio en los requisitos. Otros riesgos deberían limitarse, es decir, restringirse de modo que sólo afecten a una pequeña parte del proyecto. Algunos riesgos pueden atenuarse ejercitándolos y observando si aparecen o no. Si aparece, el aspecto positivo es que el equipo ha aprendido más sobre él. Puede que el equipo esté en disposición de encontrar una forma de evitarlo, limitarlo o controlarlo.

Sin embargo, hay riesgos que no pueden atenuarse. Lo único que puede hacer el equipo es controlarlos y observar si aparecen. Si esto ocurre, el equipo debe seguir sus planes de contingencia. Si aparece un riesgo “asesino de proyectos”, debemos respirar hondo y analizar la situación. ¿Queremos continuar, o deberíamos parar el proyecto Hasta el momento sólo hemos gastado un tiempo y dinero limitados. Sabíamos que podía suceder uno de estos riesgos —éste es el motivo por el cual estamos haciendo las primeras iteraciones—. Por tanto, hicimos un buen trabajo encontrando un riesgo de esta magnitud antes de poner a trabajar a todos los desarrolladores en el proyecto.

El tratamiento de un riesgo lleva su tiempo. Evitarlo o limitarlo conlleva hacer una recreación, o rehacer algún trabajo. La atenuación de un riesgo podría requerir que el equipo construyese algo que lo haga evidente. El controlar un riesgo implica la selección de un mecanismo de control, su puesta en marcha, y su ejecución. A su vez, la atenuación o control de los riesgos lleva un esfuerzo de desarrollo importante, es decir, tiempo. Debido a que el tratamiento de los riesgos consume tiempo, una organización raramente puede tratarlos todos a la vez. Este es el motivo por el cual es necesaria la priorización de las iteraciones. Esto es lo que queremos expresar con desarrollo iterativo dirigido por los riesgos. Y es una gestión de riesgos sólida. Regresar

 Como hemos visto, las iteraciones difieren marcadamente en las diferentes fases del ciclo de desarrollo, como consecuencia de que los desafíos que afrontan los desarrolladores son diferentes en cada fase.  Nuestra intención en esta sección es presentar el concepto de iteración a un nivel genérico: qué es, cómo planificarla, cómo organizarla, y cuál es su resultado. Regresar

 Una iteración es un miniproyecto —un recorrido más o menos completo a lo largo de todo los flujos de trabajo fundamentales— que obtiene como resultado una versión interna.  Ésta es una explicación intuitiva de lo que es una iteración.  Sin embargo, hemos ampliado esta definición para ser capaces de describir el trabajo que tiene lugar en una iteración por debajo de su superficie.  Podemos imaginar una iteración como un flujo de trabajo, lo cual significa que es una elaboración entre trabajadores que utilizan y producen artefactos.  En el Proceso Unificado distinguimos entre flujos de trabajo fundamentales y flujos de trabajo de iteración.

 Por ahora, nos son familiares los cinco flujos de trabajo fundamentales: requisitos, análisis, diseño, implementación y prueba.  Estos flujos de trabajo fundamentales sólo sirven para ayudarnos a describir los flujos de trabajo de iteración, por razones pedagógicas.  Por tanto, no hay nada mágico en lo que constituye un flujo de trabajo fundamental; fácilmente podríamos haber utilizado otro conjunto de flujos de trabajo fundamentales, como por ejemplo, uno que integrase el análisis y el diseño.  Se utilizan para simplificar la descripción de flujos de trabajo más concretos, de igual forma que una clase abstracta nos ayuda a describir clases concretas.

 Estos flujos de trabajo más concretos son los flujos de trabajo de iteración. Los flujos de trabajo fundamentales se describen en detalle en los Capítulos 6 al 11, y los flujos de trabajo de iteración en los Capítulos 12 al 16, partiendo de los fundamentales.  En la Figura 5.3, se describen los elementos genéricos del flujo de trabajo de cada iteración.  Todas pasan por los cinco flujos de trabajo fundamentales.  Todos comienzan con una actividad de planificación y terminan con un análisis.  En la Parte III, describiremos cuatro iteraciones arquetípicas, una por cada fase del Proceso Unificado.  Cada una de ellas reutiliza las descripciones de los flujos de trabajo fundamentales, pero de forma diferente. Regresar