miércoles, agosto 02, 2006

Puntapie para la garantia de calidad del software

A las 21hs del 1ro de agosto el excelente profesor Dante Otero me dio un 9 en el examen final de la materia por lo que me dio un puntapie para seguir escribiendo el capitulo sobre Garantia de calidad del software, que sera publicado el 15 de este mes despues de terminar de migrar common.pools de jakarta a .net y liquidar la ronda de finales :)
Espero que le sirva a alguien!!!
Saludos.

martes, julio 18, 2006

Introduccion al analisis y gestion del riesgo

Además de ser uno de los temas elegidos para mi final de ingeniería del software, se me ocurrió realizar esta publicación para aquellos que les interese el tema o que simplemente se encuentren en búsqueda de información para algún objetivo determinado.

Dejo en claro que la información que se esta presentando se encuentra elaborada en su mayoría a partir del libro Ingeniería del software de Roger Pressman y por supuesto con opiniones personales al respecto.

El riesgo afecta a los acontecimientos del futuro, por lo tanto el hoy y el ayer no nos debe preocupar ya que nos encontramos cosechando lo que ya hemos sembrado en un pasado con cada una de nuestras acciones. El análisis y la gestión del riesgo nos ayudan a planear un futuro un poco mas controlado brindándonos una serie de actividades que ayudan al equipo de software a comprender y gestionar esa incertidumbre , eso que no conocemos y representa un problema potencial.

Reconocer que algo puede llegar a ir mal representa el primer paso, luego, a cada uno de estos riesgos se le debe analizar la probabilidad de que pueda ocurrir o no y el daño que este pueda causar, si es que ocurre. La idea general es llegar a construir un plan de reducción, supervisión y gestión del riesgo (RSGR) o básicamente cualquier informe de riesgo suficientemente completo para ir auditando el proyecto en el día a día.

Conceptos generales de riesgo

Más allá de todas las definiciones que se pudieran llegar a presentar sobre el riesgo, en general se presentan dos características fundamentales:

Incertidumbre: el acontecimiento que caracteriza al riesgo puede o no ocurrir, es decir nunca existe un riesgo del 100% o del 0%.

Perdida: Si el riesgo se convierte en realidad ocurrirán pérdidas (a veces deseadas).

En el análisis y gestión del riesgo es importante tratar de cuantificar la incertidumbre (probabilidad de ocurrencia) y la perdida (impacto).

Los siguientes representan tipos de riesgos que nos podemos encontrar durante el desarrollo de un proyecto:

Riesgos de proyecto: Son una amenaza al plan de proyecto, es decir, si los riesgos se hacen realidad se vera afectado principalmente la planificación temporal y por lo tanto trae un aumento en el costo (tiempo = dinero). Además, los riesgos presentan problemas potenciales en áreas tales como recursos, cliente y requisitos.

Riesgos técnicos: representan una amenaza a la calidad del producto y por lo tanto a la planificación temporal del proyecto. Si un riesgo técnico se hace realidad básicamente se dificulta su implementación, podemos imaginarnos problemas tales como: ambigüedades en especificaciones, ignorancia al respecto de implementación con tecnologías de punta y hasta problemas en la interfaz de usuario.

Riesgos de negocio: Son aquellos riesgos que ponen en peligro la viabilidad del proyecto, los riesgos candidatos son: la construcción de un software que nadie necesite, la construcción de un producto que no encaja en la estrategia comercial de la compañía ya que esta ha cambiado con el tiempo, etc.

Riesgos conocidos: Son aquellos riesgos que se dan a conocer tras un meticuloso análisis del plan de proyecto.

Riesgos predecibles: Son aquellos riesgos que se heredan de la experiencia laboral del equipo de software, son conocidos por decantación natural (frase de Fernando Álvarez).

Identificación del riesgo:

La identificación del riesgo es la actividad principal de este análisis y gestión y tiene como ideal especificar las amenazas al plan de proyecto. Existen dos tipos diferenciados de riesgos para cada categoría presentada previamente. Los riesgos generales, aquellos que son una amenaza en la generalidad de los proyectos de software, y los riesgos específicos al proyecto mismo que como se pueden imaginar, son aquellos riesgos particulares de nuestro proyecto y son únicamente identificados por la gente que se encuentra en el entorno del proyecto y que tiene una clara visión del negocio en el cual el proyecto va a ser implementado.

Un método para identificar riesgos es generar una simple tabla de comprobación de riesgo que describa cada uno de los riesgos pero dentro del subconjunto de los riesgos conocidos y predecibles y dentro de las siguientes categorías mayormente utilizadas tales como: tamaño del proyecto, definición del proceso, entorno de desarrollo, tecnología utilizada.

Un ejemplo de lista puede ser:

Riesgo

Categoría

Estimacion del tamaño podria ser baja

PS

Los usuarios finales se resisten al sistema

BU


Referencia:

PS: riesgo de proyecto

BU: riesgo de negocio

Estimación del riesgo:

Una vez identificado el riesgo podemos comenzar una etapa de estimación o proyección del mismo, donde la actividad principal se centra, como dijimos previamente, en cuantificar la probabilidad de ocurrencia y el impacto. Lo ideal seria que 1) establecer una escala que refleje la probabilidad percibida del riesgo, 2) definir las consecuencias del riesgo, 3) estimar el impacto en el proyecto y en el producto, 4) evaluar la exactitud de esta proyección.

En esta etapa podemos hacer uso de la tabla previamente presentada y agregarle información de valor para poder gestionar el riesgo de manera relevante.

Riesgo

Categoría

Probabilidad

Impacto

Estimacion del tamaño podria ser baja

PS

60%

2

Los usuarios finales se resisten al sistema

BU

25%

3

Una vez que se han definido los niveles de impacto y se haya llenado la tabla trataremos de ordenar la misma por probabilidad de ocurrencia y por impacto.

El gestor del proyecto debería ser el encargado de estudiar esta tabla y definir una línea de corte, es decir un umbral de probabilidad e impacto dejando por encima a dichos riesgos que deben ser evaluados para una cierta exitosa implementación y por debajo aquellos que serán tomados en cuenta en diferentes situaciones del proyecto.

Puntos a tener en cuenta para la evaluación del impacto del riesgo

Existen tres factores que afectan a las consecuencias del riesgo si este ocurre.

La naturaleza del riesgo nos provee información acerca de los problemas probables que aparecerán si este ocurre.

El alcance del riesgo combina la severidad (Que tan serio es el problema) con su distribución en el proyecto (que proporción del proyecto se vera afectado, o bien, cuantos clientes se verán afectados).

La temporización del proyecto nos considera cuando y por cuanto tiempo se dejara sentir el impacto.

Para evaluar las consecuencias del riesgo, podemos referirnos a obtener la exposición al riesgo [ Hall, E.M. Managing RIk: Methods for software System development, addison wesley, 1998] donde:

Exposición al riesgo = P x C

Siendo P la probabilidad de ocurrencia y C el costo del proyecto si este ocurriera.

Esta exposición al riesgo puede ser evaluada para cada riesgo identificado durante la etapa de Identificación del riesgo y una vez que poseemos todas las exposiciones al riesgo, la sumatoria nos proporcionara un valor para ajustar nuestra estimación del coste de proyecto y también para estimar los posibles ingresos de recursos en determinadas etapas del proyecto.

Es importante hacer una evaluación lo mas objetiva posible en función del riesgo, la probabilidad y el impacto, para establecer un punto de referencia donde el proyecto seria preferible abandonarlo.