Riesgos

7
2.1.1 Riesgos en Proyectos de Software Se define el riesgo como la posibilidad que un evento adverso, desgracia o contratiempo pueda manifestarse produciendo una pérdida. [29][39]. El riesgo es una posibilidad futura, por lo tanto una gestión adecuada puede determinar la ocurrencia o no ocurrencia de éstos. El riesgo siempre está relacionado con dos características: [29] [39] • La incertidumbre, ya que todos los acontecimientos caracterizados como riesgos puede o no ocurrir. • La pérdida, si el riesgo llega a ocurrir, este provocará daños o pérdidas en el proyecto. Los proyectos de software son claramente difíciles de administrar y una gran cantidad de ellos terminan en fracaso. En un proyecto de software, éste se puede traducir en una mala calidad del producto, incumplimiento de planes u objetivos y hasta el fracaso del proyecto. La gestión de riesgos en proyectos de software pretende identificar, estudiar y eliminar las fuentes de riesgo antes de que comiencen a amenazar el éxito o la finalización exitosa de un proyecto de desarrollo de software [11] [22] [39]. Los responsables del proyecto pueden tomar dos posturas frente a los riesgos, una es enfrentarlos una vez que ocurran y la otra es identificarlos en una etapa temprana y tomar acciones para mitigarlos [29] 2.1.2 Factores y Categorías de Riesgos Estudios previos han identificado siete categorías de riesgo en proyectos de software, incluyendo: (1) gestión, (2) clientes y usuarios, (3) requerimientos, (4) estimación y programación de actividades, (5) jefe de proyecto, (6) proceso de desarrollo de software y (7) personal de desarrollo [28]. En los siguientes párrafos se discute en detalle las siete categorías identificadas anteriormente.

Transcript of Riesgos

Page 1: Riesgos

2.1.1 Riesgos en Proyectos de Software

Se define el riesgo como la posibilidad que un evento adverso, desgracia o contratiempo pueda manifestarse produciendo una pérdida. [29][39]. El riesgo es una posibilidad futura, por lo tanto una gestión adecuada puede determinar la ocurrencia o no ocurrencia de éstos.

El riesgo siempre está relacionado con dos características: [29][39]

• La incertidumbre, ya que todos los acontecimientos caracterizados como riesgos puede o no ocurrir.

• La pérdida, si el riesgo llega a ocurrir, este provocará daños o pérdidas en el proyecto.

Los proyectos de software son claramente difíciles de administrar y una gran cantidad de ellos terminan en fracaso. En un proyecto de software, éste se puede traducir en una mala calidad del producto, incumplimiento de planes u objetivos y hasta el fracaso del proyecto. La gestión de riesgos en proyectos de software pretende identificar, estudiar y eliminar las fuentes de riesgo antes de que comiencen a amenazar el éxito o la finalización exitosa de un proyecto de desarrollo de software [11] [22] [39].

Los responsables del proyecto pueden tomar dos posturas frente a los riesgos, una es enfrentarlos una vez que ocurran y la otra es identificarlos en una etapa temprana y tomar acciones para mitigarlos [29]

2.1.2 Factores y Categorías de Riesgos

Estudios previos han identificado siete categorías de riesgo en proyectos de software, incluyendo: (1) gestión, (2) clientes y usuarios, (3) requerimientos, (4) estimación y programación de actividades, (5) jefe de proyecto, (6) proceso de desarrollo de software y (7) personal de desarrollo [28].

En los siguientes párrafos se discute en detalle las siete categorías identificadas anteriormente.

• Gestión Senior / Auspiciador

Las prácticas de gestión inadecuadas afectan el éxito de proyectos. Un riesgo serio en proyectos de software es la falta de apoyo de auspiciadores. Las malas prácticas de gestión y la falta de apoyo de auspiciadores pueden resultar en una falta de compromiso y/o disponibilidad por parte del cliente/usuario. Pueden existir serias consecuencias como resultado de la interferencia por parte de la gestión senior, dejando al jefe de proyecto sin la autoridad para gestionar apropiadamente éste. El cambiar al jefe de proyecto en forma arbitraria durante el desarrollo de éste puede también causar serias consecuencias.

Page 2: Riesgos

• Clientes / Usuarios

La falta de involucramiento del usuario en cualquiera de las fases del ciclo de desarrollo de software, también tendrá un impacto negativo en el éxito del proyecto. Los problemas de clientes/usuarios son una de las mayores fuentes de fracaso de un proyecto. Expectativas realistas de parte del cliente pueden reducir capacidad de conflicto, y esto puede a la vez ayudar en la percepción que el desarrollador y nivel de gestión tienen del éxito del proyecto.

• Requerimientos

El entendimiento de los requerimientos es un factor crítico para el desarrollo de un sistema exitoso. La falta total o parcial de entendimiento de ambos, el problema y su entorno, conduce a requerimientos incompletos o pobres, y por lo tanto causa serios riesgos para el proyecto. Si no existe un acuerdo de parte de los clientes y usuarios con respecto a los requerimientos del proyecto, aparecerán expectativas poco realistas con respecto a éste. La obtención de requerimientos tempranamente en el proceso de desarrollo y el uso de metodologías claramente definidas que ayudan al buen entendimiento de los requerimientos por aquellos involucrados en el proyecto, disminuye los riesgos de éste. Además, el uso de procedimientos bien definidos para procesar cambios en los requerimientos ayuda al éxito de un proyecto.

• Estimación de Esfuerzo y Programación de Actividades

Una mala estimación de esfuerzo es frecuentemente uno de los mayores contribuyentes al fracaso de los proyectos de software. Más proyectos de software fracasan por falta de tiempo que por todas las otras causas. Si los jefes de proyectos estuvieran mejor entrenados en técnicas de estimación y metodologías, sus estimaciones de esfuerzo y programación de actividades podrían ser más creíbles.

• Gestión de Proyecto

Un proyecto acéfalo, o con un jefe que no tiene la experiencia apropiada, corre un riesgo serio. Los principales riesgos de proyectos están asociados con el mismo proceso de gestión de proyectos, y muchas de las buenas prácticas de gestión de proyecto están relacionadas al proceso de gestión de riesgos. Por lo tanto, aquellos jefes de proyectos que son exitosos, son buenos en la gestión de riesgo. Estos exitosos jefes de proyectos no aceptan ni tampoco ignoran los riesgos potenciales del proyecto de software que están gestionando. Sin embargo, durante la ejecución de un proyecto, muchos jefes de proyecto están demasiado ocupados y sujetos a presiones propias del proyecto, de modo que ellos olvidan las fases de control de riesgo. Todos aquellos involucrados en el proyecto (nivel de gestión, desarrolladores y clientes/usuarios), y su impacto en éste necesitan ser considerados.

Page 3: Riesgos

Desarrolladores

El desempeño de los desarrolladores en el proceso de desarrollo de software es crítico en términos de la actividad que ellos desarrollan, y con quien interactúan. La falta de control de proyecto tiene como resultado que los desarrolladores trabajan horas extras sin recompensa, teniendo efectos negativos en sus vidas personales, y arriesgando el éxito del proyecto. Un mayor entendimiento de lo que contribuye a mantener a estas personas felices y motivadas ayudará a disminuir los riesgos del proyecto. Los desarrolladores tienen una única perspectiva de la noción de éxito que está directamente relacionada a la motivación. Debido a que la más importante recompensa de la motivación es el crecimiento personal, la necesidad de los desarrolladores por otras recompensas, tales como aumentos de sueldos y promociones, puede ser mitigada.

El satisfacer las necesidades de los desarrolladores de software contribuye a satisfacer las necesidades de clientes/usuarios como también las necesidades de la organización.

• Proceso de Desarrollo de Software

La gestión de riesgo es solo una faceta del proceso de desarrollo de software que comienza junto con la definición y continúa a través de la planificación, ejecución y control, hasta la completación y clausura del proyecto. Sin embargo, el análisis, seguimiento y control de riesgos es una de las áreas más débiles del proceso de desarrollo. El riesgo puede ser reducido a través del mejoramiento del proceso de desarrollo. La idea detrás del CMM (Capability Maturity Model), es situar el proceso de desarrollo de software bajo control estadístico y por lo tanto hacerlo más predecible.

Metodologías de software inapropiadas, pobre planificación, monitoreo y control, agregan riesgo a un proyecto. Mucho se ha escrito acerca de los efectos negativos de las subestimaciones en la programación de un proceso de desarrollo, lo cual resulta en un acortamiento de las actividades de éste.

La definición de estas siete categorías permitió enumerar factores de riesgo, cuyo listado dio origen a la encuesta de percepción de proyecto (Anexo 1). Estas categorías y factores por lo tanto forman parte de los modelos probabilísticos que se generaron más adelante y que se detallan en el Capítulo III.

2.1.3 La Gestión de Riesgos en Proyectos de Software

El objetivo central de la gestión de riesgos es evitar en lo posible el efecto negativo que los riesgos pueden tener sobre el proyecto. Para ello se deben identificar los factores de riesgo que pueden provocar la pérdida de control y mitigarlos [27]. La gestión de riesgos se divide en dos etapas, en primera instancia en una estimación de los riesgos y posteriormente, en un control de éstos (Figura 1). [11][13][16][29][40]

Page 4: Riesgos

A continuación se describen las etapas antes mencionadas:

1º Etapa: Estimación de Riesgos

En esta etapa se pretende identificar y analizar los riesgos, para así poder asignarles prioridades con el fin de identificar los riesgos más perjudiciales.

• Identificación de Riesgos, en este paso lo que se desea es identificar la mayor cantidad de riesgos posibles.

• Análisis de Riesgos, este análisis es útil para poder seleccionar entre varias alternativas de desarrollo, o para gestionar los riesgos asociados a una alternativa que se haya elegido. En este proceso los puntos a avaluar son los siguientes:

Exposición a riesgos.

Estimación de la magnitud de pérdida.

Estimación de la probabilidad de pérdida.

Retraso total del proyecto y margen del retraso.

Priorización de los Riesgos

Ya habiéndose creado una lista con los riesgos de la planificación, el paso que sigue es definir una prioridad para los riesgos, de forma que se sepa donde centrar el esfuerzo para la gestión de riesgos.

2º Etapa: Control de Riesgos

En esta etapa se formula la planificación de la gestión de riesgos, la resolución y la monitorización de los riesgos durante el desarrollo del proyecto.

• Planificación de la gestión de Riesgos

Se desarrolla un plan que controle cada uno de los riesgos clasificados de prioridad alta. Este plan debería también contener una serie de previsiones para la monitorización de los riesgos, como lo es el describir quién será el responsable para cada riesgo, así como cuándo debe realizar la monitorización y cómo debe ser realizada.

Page 5: Riesgos

• Resolución de Riesgos

Se generan métodos para tratar de resolver cada uno de los riesgos significativos.

• Monitorización de Riesgos

Los riesgos aparecen y desaparecen en el desarrollo del proyecto, por tal motivo se necesita un monitoreo de éstos para poder comprobar el progreso del control de riesgos e identificar como aparecen los nuevos riesgos. Para poder llevar a cabo esta tarea, se deben definir quienes serán los encargados de esta monitorización y establecer las comprobaciones intermedias de riesgos.

Es importante señalar que la gestión de riesgos consta de 5 niveles:

1. Control de crisis: Controlar los riesgos sólo cuando se han convertido en problemas.

2. Arreglar cada error: Detectar y reaccionar rápidamente ante cualquier riesgo, pero sólo después que se haya producido.

3. Mitigación de riesgos: Planificar con antelación el tiempo que necesitaría para cubrir riesgos en el caso de que ocurran, pero no intentar eliminarlos inicialmente.

4. Prevención: Crear y llevar a cabo un plan como parte del proyecto de software para identificar riesgos y evitar que se conviertan en problemas.

5. Eliminación de las causas principales: Identificar y eliminar los factores que pueden hacer posible la presencia de algún tipo de riesgo.

Por lo tanto, al realizar la estimación del riesgo se debe determinar qué nivel de la gestión es necesario aplicar.

Ahora que hemos mencionado como funciona la gestión de riesgos de proyectos de software, es necesario señalar la cabida de una herramienta como la que se describe en el presente trabajo en este proceso. Se puede señalar que la herramienta que utiliza modelos en redes bayesianas debe ser utilizada en la primera etapa de Estimación de Riesgos como ayuda para identificar y priorizar los riesgos más relevantes del proyecto.