El fracaso de muchos proyectos grandes de software en los 60 y

Anuncio
Ingeniería de Software
FCC-BUAP
Otoño 2003
Fig. 4.3 Red de Actividades de un Proyecto
Fig. 4.4 Gráfico de Gantt
44
Ingeniería de Software
FCC-BUAP
Otoño 2003
Sin embargo, los retrasos de las actividades que no están ligadas a la trayectoria crítica no
provocan necesariamente un aplazamiento en todo el calendario. Mientras que los retrasos no se
propaguen a estas actividades como para que se exceda el tiempo total del camino crítico, el
proyecto no se verá afectado. Por ejemplo, si T8 se retrasa, no se afectará la fecha final de
terminación del proyecto puesto que no se encuentra sobre la trayectoria crítica.
Por lo tanto, el análisis del camino crítico nos indica quién debe esperar y para qué, a
medida que se esta desarrollando el proyecto. También nos informa sobre cuales son las
actividades que deben ser terminadas dentro de lo planeado para evitar demoras.
Los administradores también utilizan las redes de actividades para asignar los trabajos en el
proyecto. Dichas redes pueden dar una percepción en la dependencia de las actividades que de
forma intuitiva no son obvias. Es posible modificar el diseño del sistema de tal forma que se acorte
la trayectoria crítica. El calendario del proyecto se puede acortar debido a que se reduce la cantidad
de tiempo de espera para finalizar las actividades.
La figura 4.4 es una forma alternativa de representar la información del calendario del
proyecto. Es un gráfico de barras (también llamado gráfico de Gantt) que muestra el calendario de
un proyecto y las fechas iniciales y finales de las actividades. Algunas de las actividades que se
muestran en la figura 4.4 son seguidas por una barra sombreada cuya longitud muestra la
amplitud de los posibles retrasos. Esto muestra que existe alguna flexibilidad en las fechas de
terminación de estas actividades. Si alguna de éstas no se completa a tiempo, la traye ctoria
crítica no se afectará hasta el final del periodo marcado por la barra sombreada. Las
actividades que caen sobre dicha trayectoria no tienen margen de error y se distinguen por no
tener asociada una barra sombreada.
Durante el desarrollo del proyecto, se deben comparar las estimaciones previstas con las
reales. Esta comparación se puede utilizar como base para revisar la calendarización en las siguientes partes del proyecto. Cuando se conozcan las cifras reales, se debe revisar la red de
actividades. Después, se deben reorganizar las actividades posteriores para reducir la longitud de
la trayectoria crítica.
4.4 GESTIÓN DE RIESGOS
Una tarea importante del administrador de proyectos es anticipar los riegos que podrían
afectar la programación del proyecto o la calidad del software a desarrollar y emprender acciones
para evitar esos riesgos. Un riesgo es un evento no deseado que tiene consecuencias negativas.
Los gerentes de proyecto deben ocuparse del análisis y la gestión de riesgos para
comprender y controlar los riesgos en sus proyectos. Los resultados del análisis de riesgos se
deben documentar a lo largo del plan del proyecto junto con el análisis de consecuencias cuando
el riesgo ocurra. Identificar éstos y crear planes para minimizar sus efectos en el proyecto se
llama administración o gestión de riesgos.
La administración de riesgos es importante particularmente para los proyectos de
software debido a las incertidumbres inherentes que enfrentan muchos proyectos. Estas
incertidumbres son el resultado de definir pobremente los requerimientos, las dificultades en la
estimación de tiempos y los recursos para el desarrollo del software, la dependencia en las
habilidades individuales, y los cambios en los requerimientos debidos a los cambios en las
necesidades del cliente. El administrador de proyectos debe anticiparse a los riesgos; comprender
el impacto de éstos en el proyecto, en el producto y en el negocio; y considerar los pasos para
evitarlos. En el caso de que ocurran, se deben crear planes de contingencia para que sea posible
aplicar acciones de recuperación.
45
Ingeniería de Software
FCC-BUAP
Otoño 2003
4.4.1 ¿Qué es un riesgo?
De forma simple, se puede definir un riesgo como una probabilidad de que una
circunstancia adversa ocurra. Los riesgos son una amenaza para el proyecto, para el software que
se está desarrollando y para la organización. Son muchos los eventos que ocurren durante el
desarrollo del software. Se distingue a los riesgos de otros eventos del proyecto examinando estos
tres aspectos:
1. Una pérdida asociada con el evento. El evento debe crear una situación donde al
proyecto le pasen algunas cosas negativas: una pérdida de tiempo, de calidad, dinero, control,
comprensión. Por ejemplo, si los requerimientos cambian drásticamente después de que se ha
hecho el diseño, entonces el proyecto puede sufrir pérdidas de control y de comprensión si tales
nuevos requerimientos son para funciones o características con las cuales el equipo de diseño no
está familiarizado. Y es probable que un cambio radical en los requerimientos lleve a la pérdida
de tiempo y dinero si el diseño no es lo suficientemente flexible para cambiar rápida y
fácilmente. La pérdida asociada a un riesgo se denomina impacto del riesgo.
2. La probabilidad de que el evento pueda ocurrir. Se debe tener alguna idea de la
probabilidad de que ocurra el evento. Por ejemplo, supongamos que un proyecto se está desarrollando en una máquina y puede transportarse a otra cuando el sistema esté completamente
probado. Si la segunda máquina es un modelo nuevo a ser entregado por el vendedor, se debe
estimar la probabilidad de que no esté listo en tiempo. La probabilidad del riesgo, medida desde
0 (imposible) hasta 1 (certeza), se denomina probabilidad de riesgo. Cuando la probabilidad
de riesgo es 1, entonces el riesgo se denomina problema, dado que hay certeza de que suceda.
3. El grado en que se puede cambiar el resultado. Para cada riesgo, se debe
determinar qué se puede hacer para minimizar o evitar el impacto del evento. El control de riesgo
involucra un conjunto de acciones tomadas para reducir o eliminar un riesgo. Por ejemplo, si los
requerimientos pueden cambiar después del diseño, se puede minimizar el impacto del cambio
creando un diseño flexible. Si la segunda máquina no está lista cuando el software esté probado,
hay que ser capaz de identificar otros modelos o marcas que tengan la misma funcionalidad y
desempeño, y puedan ejecutar el nuevo software hasta que se entregue el nuevo modelo.
4.4.2 Tipos de Riesgos
Hay dos fuentes principales de riesgos: los riesgos genéricos y los riesgos
específicos del proyecto. Los riesgos genéricos son aquellos comunes a todos los proyectos de
software, tales como entender mal los requerimientos, perder personal clave o dejar tiempo
insuficiente para las pruebas. Los riesgos específicos del proyecto son amenazas que resultan de
las vulnerabilidades particulares de un proyecto dado. Por ejemplo, un vendedor puede prometer
un software de red para una fecha particular, pero hay algún riesgo de que ese software no esté
listo a tiempo.
Los tipos de riesgo que pueden afectar un proyecto dependen de éste y el entorno
organizacional en el que se esté desarrollando el mismo. Sin embargo, muchos riesgos son
universales; la tabla 4.3 describe algunos de ellos.
Tabla 4.3 Riesgos posibles en el software
Riesgo
Rotación de personal
Tipo de
Riesgo
Proyecto
Descripción
Personal con experiencia abandona el proyecto antes
de que finalice.
46
Ingeniería de Software
FCC-BUAP
Otoño 2003
Cambio de
administración
Proyecto
Habrá un cambio de administración organizacional
con diferentes prioridades
No disponibilidad del
hardware
Proyecto
El hardware esencial para el proyecto no será
entregado a tiempo.
Cambio de
requerimientos
Proyecto y
producto
Habrá más cambios en los requerimientos que lo
anticipado.
Retrasos en la
especificación
Proyecto y
producto
Las especificaciones de las interfaces esenciales no
estarán a tiempo.
Subestimación del
tamaño
Proyecto y
producto
El tamaño del sistema se ha subestimado.
Bajo desempeño de la
herramienta CASE
Producto
Las herramientas CASE que ayudan al pro yecto no
tienen el desempeño anticipado.
Cambio de tecnología
Negocio
La tecnología fundamental sobre la que se construirá
el sistema se sustituye por nueva tecnología.
Competencia del
producto
Negocio
Un producto competitivo se pone en venta antes de
que el sistema se complete.
4.4.3 Actividades de la gestión del riesgo
La gestión del riesgo involucra varias etapas importantes, cada una de las cuales se
ilustra en la Figura 4.5. Primero, se determinan los riesgos del proyecto, de manera de enten der
qué puede ocurrir durante el desarrollo o el mantenimiento. Esta determinación consiste de tres
actividades: identificar los riesgos, analizarlos y asignarles prioridades a cada uno de ellos..
Si el sistema que se está construyendo es en alguna forma similar a uno construido con
anterioridad, ya se tendrá una lista de los problemas que pueden ocurrir, y por ende se podrá
revisar esa lista para determinar si el nuevo proyecto estará sujeto a los riesgos mencionados.
Para sistemas que son nuevos en alguna forma, se puede engrosar la lista con un análisis de
cada una de las actividades en el ciclo de desarrollo; descomponiendo el proceso en pequeñas
partes, se llega a ser capaz de anticiparse a problemas que puedan aparecer. Por ejemplo, se
decide que existe el riesgo de que el jefe de diseño renuncie durante el diseño. De manera
similar, se pueden analizar las suposiciones o las decisiones que se hacen sobre cómo se harán
los proyectos, quién los hará y con qué recursos. Entonces, cada suposición determina los
riesgos involucrados.
El proceso de administración de riesgos comprende varias etapas:
1. Identificación de riesgos. Identificar los posibles riesgos para el proyecto, el producto y los
negocios.
2. Análisis de riesgos. Valorar las probabilidades y consecuencias de estos riesgos.
3. Planeación de riesgos. Priorizar los riesgos y crear planes para abordarlos, ya sea para
evitarlos o minimizar sus efectos en el proyecto.
4. Supervisión de riesgos . Valorar los riesgos de forma constante y revisar los planes para la
mitigación de riesgos tan pronto como la información de los riesgos esté disponible.
El proceso de administración de riesgos, como otros de planeación de proyectos, es
un proceso iterativo que se aplica a lo largo de todo el proyecto. Una v ez que se genera un
conjunto de planes iniciales, se supervisa la situación. En cuanto surja más informa ción
acerca de los riesgos, éstos se deben analizar nuevamente y establecer nuevas prio ridades.
47
Ingeniería de Software
FCC-BUAP
Otoño 2003
La prevención de riesgos y los planes de contingencia se deben modificar tan pronto como
surja nueva información de los riesgos.
Los resultados del proceso de administración de riesgos se deben documentar en un
plan de administración de riesgos. Esto debe incluir una discusión de dichos riesgos a los
que se enfrenta el proyecto, un análisis de éstos y los planes requeridos para su
administración. Si es necesario, puede incluir algunos resultados de la administración de
riesgos, por ejemplo, planes específicos de contingencia que se activan si dichos riesgos
ocurren.
Fig. 4.5 El proceso de administración de riesgos
4.4.3.1 Identificación de Riesgos
Ésta es la primera etapa de la administración de riesgos. Comprende el
descubrimiento de los posibles riesgos del proyecto. En principio, no se les debe valorar o
priorizar en esta etapa aunque, en la práctica, por lo general no se consideran los riesgos
con consecuencias menores o con baja probabilidad.
Esta identificación se puede llevar a cabo a través de un proceso de grupo utilizando
un enfoque de lluvia de ideas o simplemente puede basarse en la experiencia del administrador. Para ayudar al proceso, se utiliza una lista de posibles tipos de riesgos. Estos
tipos incluyen:
1. Riesgos de tecnología. Éstos se derivan de las tecnologías de software o de hardware utilizadas en el sistema que se está desarrollando.
2. Riesgos de personas. Riesgos asociados con las personas en el equipo de desarrollo.
3. Riesgos organizacionales. Éstos se derivan del entorno organizacional donde el
software se está desarrollando.
4. Riesgos de herramientas. Éstos se derivan de herramientas CASE y de otro software de apoyo utilizado para desarrollar el sistema.
5. Riesgos de requerimientos. Éstos se derivan de los cambios de los requerimientos
del cliente y el proceso de administrar dicho cambio.
6. Riesgos de estimación. Éstos que se derivan de los estimados administrativos de las
características del sistema y los recursos requeridos para construir dicho sistema.
La tabla 4.4 da algunos ejemplos de riesgos posibles en cada una de estas categorías.
El resultado de este proceso debe ser una larga lista de riesgos que podrían ocurrir y afectar
el producto, el proceso o el negocio.
48
Ingeniería de Software
FCC-BUAP
Otoño 2003
4.4.3.2 Análisis de Riesgos
Durante éste proceso, se considera por separado cada riesgo identificado y se decide
acerca de la probabilidad y la seriedad del mismo. Esto recae en la opinión y experiencia
del administrador del proyecto. No se hace una valoración con números precisos sino en
intervalos:
1. La probabilidad de que el riesgo se valore como muy, bajo (<10%), bajo (10-25%),
moderado (25-50%), alto (50-75%) o muy, alto (>75%).
2. Los efectos del riesgo pueden ser valorados como catastrófico, serio, tolerable o
insignificante.
El resultado de este proceso de análisis se debe colocar en una tabla, la cual debe
estar ordenada acorde a la seriedad del riesgo. La tabla 4.5 ilustra esto para los ries gos
identificados en la tabla 4.4. Obviamente, aquí es arbitraria la valoración de la probabilidad
y seriedad. En la práctica, para hacer esta valoración se necesita información detallada del
proyecto, el proceso, el equipo de desarrollo y la organización.
Por supuesto, tanto la probabilidad y la valoración de los efectos de un riesgo
cambia conforme se disponga de mayor información acerca del riesgo y los pl anes de
administración del mismo se implementen. Por lo tanto, esta tabla se debe actualizar
durante cada iteración del proceso de riesgos.
Tabla 4.4 Riesgos por Tipo de Riesgo
Tipo de Riesgo
Tecnología
Riesgos Posibles
La base de datos que se utiliza en el sistema no puede procesar muchas
transacciones por segundo como se esperaba.
Los componentes de software a reutilizarse contienen defectos que limitan su
funcionalidad.
Es imposible reclutar personal con las habilidades requeridas para el p royecto.
Personas
El personal clave está enfermo y no disponible en momentos críticos.
La capacitación solicitada para el personal no está disponible.
Organizacional
Herramientas
Requerimientos
La organización se reestructura de tal forma que una administración diferente se
responsabiliza del proyecto
Los problemas financieros de la organización fuerzan a reducciones en el
presupuesto del proyecto.
Es ineficiente el código generado por las herramientas CASE.
Las herramientas CASE no se pueden integrar.
Se proponen cambios en los requerimientos que requieren rehacer el diseño.
Los clientes no comprenden el impacto de los cambios en los requerimientos.
El tiempo requerido para desarrollar el software está subestimado.
Estimación
La tasa de reparación de defectos está subestimada.
El tamaño del software está subestimado.
49
Ingeniería de Software
FCC-BUAP
Otoño 2003
Se pueden cuantificar los efectos de los riesgos que se identifican, multiplicando el
impacto del riesgo por la probabilidad del mismo, para obtener la exposición del riesgo.
Una vez que los riesgos se hayan analizado y clasificado, se debe discernir cuáles
son los más importantes que se deben considerar durante el proyecto. Este discernimiento
depende de una combinación de la probabilidad del riesgo en cuestión y los efectos del
mismo. En general. siempre se deben tomar en cuenta todos los riesgos catastróficos: así como
todos los riesgos serios que tienen más que una moderada probabilidad de ocurrir.
Tabla 4.4 Análisis de Riesgos
Riesgo
Probabilidad
Efectos
Los problemas financieros de la organización fuerzan a reducir el
presupuesto del proyecto.
Baja
Catastrófico
Es imposible reclutar personal con las habilidades requeridas para el
proyecto.
Alta
Catastrófico
El personal clave está enfermo y no disponible en momentos críticos.
Moderada
Serio
Los componentes de software a reutilizarse contienen defectos que limitan
su funcionalidad
Moderada
Serio
Se proponen cambios en los requerimientos que requieren rehacer el
diseño.
Moderada
Serio
La organización se reestructura de tal forma que una administración
diferente se responsabiliza del proyecto.
Alta
Serio
La base de datos que se utiliza en el sistema no puede procesar muchas
transacciones por segundo como se esperaba.
Moderada
Serio
El tiempo requerido para desarrollar el software está subestimado.
Alta
Serio
Las herramientas CASE no se pueden integrar.
Alta
Tolerable
Los clientes no comprenden el impacto de los cambios en los
requerimientos.
Moderada
Tolerable
La capacitación solicitada para el personal no está disponible.
Moderada
Tolerable
La tasa de reparación de defectos está subestimada.
Moderada
Tolerable
El tamaño del software está subestimado.
Alta
Tolerable
Es ineficiente el código generado por las herramientas CASE.
Moderada
Insignificante
Boehm (1991) identifica los "10 riesgos más altos" y recomienda técnicas de gestión de
riesgos para localizarlos (ver el recuadro siguiente). Sin embargo, el número exacto de riesgos
a supervisar debe depender del proyecto, pero debe ser manejable. Un número muy grande de
riesgos requiere obtener mucha información.
50
Ingeniería de Software
FCC-BUAP
Otoño 2003
LOS ITEMS DE MÁS ALTO RIESGO SEGÚN BOEHM
1.
Deficiencias del personal. Formar el plantel con personal con gran talento, equilibrar el trabajo,
conformación del equipo, edificación de la moral del grupo, entrenamiento cruzado, pla nificación previa de las
personas claves.
2.
Cronogramas y presupuestos no realistas. Estimación detallada del cronograma y de costos con
múltiples orígenes, diseño conforme a los costos, desarrollo por incrementos, reutilización del software,
depuración de los requerimientos.
3.
Desarrollo de funciones de software incorrectas. Análisis organizacional, análisis de la misión del
sistema, formulación de conceptos de operación, estudios de los usuarios, prototipado, preparación temprana de
los manuales de usuario.
4.
Desarrollo de interfaces de usuario incorrectas. Prototipado, aplicación de escenarios, análisis de tareas.
5.
Expectativas imposibles de satisfacer. Depuración de los requerimientos, prototipado, análisis costobeneficio, diseño conforme a los costos.
6.
Constantes cambios a los requerimientos. Umbral alto para el cambio, ocultamiento de información,
desarrollo por incremento (posponer los cambios hasta incrementos posteriores).
7.
Deficiencias en tareas ejecutadas externamente. Comprobación de referencias, auditorías preadjudicación, contratos adjudicados por cuota, diseño competitivo o prototipado, construcción del equipo.
8.
Deficiencias de componentes suministrados externamente. Pruebas comparativas (benchmarking)
inspecciones, comprobación de referencias, análisis de compatibilidad.
9.
Deficiencias del funcionamiento en tiempo real. Simulación, pruebas comparativas, modelado,
prototipado, instrumentación, afinado.
10.
Forzar al límite las capacidades de la informática. Análisis técnico, análisis costo-beneficio, prototipado,
comprobación de referencias.
4.4.3.3 Planeación y Control de Riesgos
El análisis de riesgos ayuda a listar los riesgos en orden de prioridad asignándole la
prioridad más alta al riesgo de mayor preocupación. Luego, se deben determinar los pasos para
controlar los riesgos. El concepto de control reconoce que no se puede ser capaz de eliminar
todos los riesgos. En lugar de ello, se puede ser capaz de minimizar el riesgo o mitigarlo,
tomando las acciones para manejar el resultado no deseado en una forma aceptable. Por lo
tanto, el control del riesgo involucra la reducción del riesgo, su planificación y su resolución.
Hay tres estrategias para la reducción de riesgos:
1. Anular o evitar el riego. Reducir la probabilidad de que el riesgo surja cambiando los
requerimientos de desempeño o funcionalidad. Por ejemplo, cambiar los componentes
defectuosos por otros de confiabilidad probada.
2. Disminuir o transferir el riesgo. Reducir el impacto del riesgo asignando riesgos a
otros sistemas o comprando seguros para cubrir cualquier pérdida financiera. Por ejemplo,
contar con varias personas que conozcan y puedan realizar el trabajo de otras para poder
sustituir a un desarrollador que se enferme.
3. Planes de contingencia. Asumir el riesgo, aceptándolo y controlándolo con los
recursos del proyecto. Si sucede lo peor, se está preparado para ello y se cuenta con una
estrategia para abordarlo. Por ejemplo, si hay problemas de flujo de recursos financieros,
contar con un plan de reducción de costos o de reducción del ritmo de trabajo.
Para colaborar con la toma de decisiones acerca de la reducción de los riesgos, se debe
51
Ingeniería de Software
FCC-BUAP
Otoño 2003
tener en cuenta el costo de reducción del riesgo. Se denomina influencia del riesgo a la
diferencia en la exposición del riesgo dividida por el costo de reducir el riesgo. En otras
palabras, la influencia en la reducción del riesgo es:
(exposición al riesgo antes de la reducción - exposición al riesgo después de la reducción)
(costo de la reducción del riesgo)
Si el valor de la influencia no es lo suficientemente alto para justificar la acción,
entonces se pueden contemplar técnicas de reducción menos costosas o más efectivas.
En algunos casos, se puede elegir un proceso de desarrollo para ayudar a reducir el
riesgo. Por ejemplo, los prototipos pueden mejorar la comprensión de los requerimientos y del
diseño, de manera que la selección de un proceso de prototipado puede reducir muchos riesgos
del proyecto.
Es útil registrar las decisiones en un plan de gestión del riesgo, de modo que tanto el
cliente como el equipo de desarrollo puedan revisar cómo pueden evitarse los problemas, y
también cómo deben manejarse cuando aparecen. Entonces, se debe monitorear el proyecto a
medida que avanza su desarrollo, reevaluando periódicamente los riesgos, su probabilidad y su
posible impacto
52
Descargar