CICLO DE VIDA
El
ciclo de vida es el conjunto de fases por las que pasa el sistema que se está
desarrollando desde que nace la idea inicial hasta que el software es retirado
o remplazado (muere).
Entre las funciones que debe tener un ciclo de vida
se pueden destacar:
·
Determinar el orden de
las fases del proceso de software.
·
Establecer los
criterios de transición para pasar de una fase a la siguiente.
·
Definir las entradas y
salidas de cada fase.
·
Describir los estados
por los que pasa el producto.
·
Describir las
actividades a realizar para transformar el producto.
·
Definir un esquema que
sirve como base para planificar, organizar, coordinar, desarrollar, entre
otros.
Las etapas de un ciclo de vida de un software son:
Inicio: éste es el
nacimiento de la idea. Aquí definimos los objetivos del proyecto y los recursos
necesarios para su ejecución. Hacia dónde queremos ir, y no cómo queremos ir.
Las características implícitas o explícitas de cada proyecto hacen necesaria
una etapa previa destinada a obtener el objetivo por el cual se escribirán
miles o cientos de miles de líneas de código. Un alto porcentaje del éxito de
nuestro proyecto se definirá en estas etapas que, al igual que la etapa de
debugging, muchos líderes de proyecto subestiman.
Planificación:
idearemos un planeamiento detallado que guíe la gestión del proyecto, temporal
y económicamente.
Implementación:
acordaremos el conjunto de actividades que componen la realización del
producto.
Puesta en producción:
nuestro proyecto entra en la etapa de definición, allí donde se lo presentamos
al cliente o usuario final, sabiendo que funciona correctamente y responde a
los requerimientos solicitados en su momento. Esta etapa es muy importante no
sólo por representar la aceptación o no del proyecto por parte del cliente o
usuario final sino por las múltiples dificultades que suele presentar en la
práctica, alargándose excesivamente y provocando costos no previstos.
Control en producción:
control del producto, analizando cómo el proceso difiere o no de los requerimientos
originales e iniciando las acciones correctivas si fuesen necesarias. Cuando
decimos que hay que corregir el producto, hacemos referencia a pequeñas
desviaciones de los requerimientos originales que puedan llegar a surgir en el
ambiente productivo. Si nuestro programa no realiza la tarea para lo cual fue
creada, esta etapa no es la adecuada para el rediseño. Incluimos también en
esta etapa el liderazgo, documentación y capacitación, proporcionando
directivas a los recursos humanos, para que hagan su trabajo en forma correcta
y efectiva.
Objetivos de cada etapa:
Expresión de necesidades:
Esta etapa tiene como objetivo el armado de un documento en el cual se reflejan
los requerimientos y funcionalidades que ofrecerá al usuario el sistema a
implementar (qué, y no cómo, se va a implementar).
Especificaciones:
Formalizamos los requerimientos; el documento obtenido en la etapa anterior se
tomará como punto de partida para esta etapa.
Análisis: Determinamos
los elementos que intervienen en el sistema a desarrollar, su estructura,
relaciones, evolución temporal, funcionalidades, tendremos una descripción
clara de qué producto vamos a construir, qué funcionalidades aportará y qué
comportamiento tendrá.
Diseño: Ya sabemos qué
hacer, ahora tenemos que determinar cómo debemos hacerlo (¿cómo debe ser
construido el sistema en cuestión?); definimos en detalle entidades y
relaciones de las bases de datos, seleccionamos el lenguaje que vamos a
utilizar, el Sistema Gestor de Bases de Datos, entre otros).
Construcción:
Empezamos a codificar algoritmos y estructuras de datos, definidos en las
etapas anteriores, en el correspondiente lenguaje de programación o para un
determinado sistema gestor de bases de datos. En muchos proyectos se pasa
directamente a esta etapa; son proyectos muy arriesgados que adoptan un modelo
de ciclo de vida de code & fix (codificar y corregir) donde se eliminan las
etapas de especificaciones, análisis y diseño con la consiguiente pérdida de
control sobre la gestión del proyecto.
Debugging (Depuración):
El objetivo de esta etapa es garantizar que nuestro programa no contiene
errores de diseño o codificación. En esta etapa no deseamos saber si nuestro
programa realiza lo que solicitó el usuario, esa tarea le corresponde a la
etapa de implementación. En ésta deseamos encontrar la mayor cantidad de
errores. Todas los programas contienen errores: encontrarlos es cuestión de
tiempo. Lo ideal es encontrar la mayoría, si no todos, en esta etapa. También
se pueden agregar pruebas de rendimiento.
Validación:
Esta etapa tiene como objetivo la verificación de que el sistema desarrollado
cumple con los requerimientos expresados inicialmente por el cliente y que han
dado lugar al presente proyecto. En muchos proyectos las etapas de validación y
debugging se realizan en paralelo por la estrecha relación que llevan. Sin
embargo, tenemos que evitar la confusión: podemos realizarlos en paralelo, pero
no como una única etapa.
Evolución: En la mayoría
de los proyectos se considera esta etapa como Mantenimiento y evolución, y se
le asigna, no sólo el agregado de nuevas funcionalidades (evolución); sino la
corrección de errores que surgen (mantenimiento). En la práctica esta
denominación no es del todo errónea, ya que es posible que aun luego de una
etapa de debugging y validación exhaustiva, se filtren errores.
MODELOS DE CICLO DE
VIDA
Las
principales diferencias entre los distintos modelos de ciclo de vida están
divididas en tres grandes visiones:
·
Alcance del ciclo de
vida: Hasta donde queremos llegar con el proyecto
·
La cualidad y la
cantidad de las etapas: Es decir en que dividiremos el ciclo de vida, según el
que adptemos.
·
Estructura y sucesión
de las etapas: Es decir si hay realimentación o tenemos la libertad de
repetirlas.
En
los modelos de ciclo de vida existentes siempre hay riesgo, que esta catalogado
como la probabilidad de retomar etapas anteriores, perdiendo tiempo, dinero y
esfuerzo.