INTRODUCCIN
Tradicionalmente el desarrollo de aplicaciones informticas se
llevaba a cabo de forma individualizada, a base de codificar (generar
lneas de cdigo) y probar lo realizado cuanto antes. La misma
persona escriba el cdigo, lo ejecutaba y, si fallaba, lo depuraba. El
proceso se realizaba sin ninguna planificacin previa y sin que soliese
existir documentacin alguna. Debido a que la movilidad en el trabajo
era baja, los ejecutivos estaban seguros de que esa persona estara
all cuando se produjese algn fallo. En principio, el hecho de que
desde un primer momento se vaya generando cdigo, podra
considerarse como un sntoma de enorme progreso, pero puede
suponer posteriormente un gran retroceso e incluso la necesidad de
desechar una gran parte de lo realizado en el caso de que existan
errores y no se puedan llevar a cabo las modificaciones necesarias
para subsanarlos (por ejemplo, si al 90% del cdigo se descubre que
el diseo de la base de datos es incorrecto, puede suponer desechar
el trabajo y tener que comenzar de nuevo). Con este enfoque,
cualquier cosa que no sea codificacin pura y dura no se realiza (como,
por ejemplo, actividades de planificacin, de documentacin, de
aseguramiento de la calidad).
Esta forma de desarrollar aplicaciones es muy comn en muchas
organizaciones y, generalmente, se utiliza cuando no se elige o sigue
un enfoque de desarrollo (ciclo de vida) concreto y/o apenas se realiza
la actividad de planificacin. Adems, otro factor que juega a favor de
este enfoque de codificar y probar es que requiere poca experiencia y
cualquier persona podr fcilmente familiarizarse con l
[MCCONNELL, 1997].
Esta forma de desarrollar software puede ser eficaz en programas
pequeos. Para otro tipo de proyectos, puede resultar peligrosa su
utilizacin, ya que no se puede conocer el progreso del proyecto, ni
tampoco su calidad, simplemente se est codificando y probando
hasta que finaliza el proyecto. Otras maneras de realizar el desarrollo
software, como se vern en los siguientes apartados, permitirn, por
ejemplo, conocer el progreso, detectar un error lo antes posible, etc.
Por lo tanto, es probable que las aplicaciones realizadas segn este
enfoque de codificar y probar sean poco flexibles, y ante posibles
modificaciones (por cambios en los requerimientos del cliente,
cambios en el hardware, etc.) se incremente el coste de los proyectos
e, incluso, en ocasiones, resulten virtualmente irrealizables debido a la
PROTOTIPADO
En realidad, este modelo se aplica solo a las etapas iniciales y puede
ser utilizado en cualquiera de los otros modelos. Se busca eliminar
ambigedades y cuestiones de mala interpretacin con la
consecuencia de posteriores cambios en etapas muy avanzadas del
desarrollo, definiendo iterativamente los requerimientos en forma
conjunta con el usuario en etapas tempranas del ciclo. A partir de una
definicin preliminar de requerimientos por parte del usuario se genera
un prototipo preliminar que es iterativamente revisado, modificado y
aprobado por el usuario.
La etapa de definicin de requerimientos o relevamiento queda
fuertemente integrada a la etapa de anlisis. Este modelo es la salida
de la etapa de anlisis y la entrada a la etapa de diseo global. Al estar
aceptado formalmente por el usuario, los diseadores tienen en claro
sus necesidades, y cualquier modificacin que proponga el usuario en
las etapas finales (prueba e implementacin) ser objeto de nuevas
negociaciones (tiempo, funcionalidad o costo). Pareciera que el ciclo
iterativo consumiera ms tiempo en el proyecto, pero en realidad se
ahora tiempo de modificaciones en etapas mas tardas del ciclo, que
son mucho mas costosas cuanto ms cerca del final del proyecto se
encuentren.
USUARIO
Prototipo preliminar
DISEO
GLOBAL
Prototipo definitivo
DEFINICION DE
REQUERIMIENTOS Y
ANALISIS
MODELO INCREMENTAL
El modelo incremental [LEHMAN, 1984] corrige la necesidad de
una secuencia no lineal de pasos de desarrollo. En el modelo
incremental (vase la figura 2.2) se va creando el sistema software
aadiendo componentes funcionales al sistema (llamados
incrementos). En cada paso sucesivo, se actualiza el sistema con
nuevas funcionalidades o requisitos, es decir, cada versin o
refinamiento parte de una versin previa y le aade nuevas funciones
[AMESCUA et al, 1995]. El sistema software ya no se ve como una
nica entidad monoltica con una fecha fija de entrega, sino como una
integracin de resultados sucesivos obtenidos despus de cada
iteracin.
El modelo incremental se ajusta a entornos de alta incertidumbre,
por no tener la necesidad de poseer un conjunto exhaustivo de
requisitos, especificaciones, diseos, etc., al comenzar el sistema, ya
que cada refinamiento ampla los requisitos y las especificaciones
derivadas de la fase anterior.
Es de aplicacin en implementaciones de sistemas cuyos mdulos
son implementables en forma independiente y sucesiva (los ERPs por
ejemplo). Tiene varias ventajas:
-
Del lado del cliente, este tiene una percepcin mas concreta
del avance del proyecto, al ver funcionando mdulos en forma
sucesiva en vez de tener que esperar ver toda la implantacin
al final.
MODELO EN ESPIRAL
Con el fin de paliar los inconvenientes del modelo en cascada,
[BOEHM, 1988] propuso el modelo en espiral, que consta de una serie
de ciclos. Cada uno empieza identificando los objetivos, las
alternativas y las restricciones del ciclo. Una vez evaluadas las
alternativas respecto a los objetivos y teniendo en cuenta las
restricciones, se lleva a cabo el ciclo correspondiente para, una vez
finalizado, empezar a plantear el prximo.
Para ver de forma ms clara el modelo en espiral, lo explicaremos
con un ejemplo. Cada ciclo de la espiral comienza con la identificacin
de los objetivos de la parte del producto que est siendo elaborada
(rendimientos, funcionalidad, adaptacin al cambio, etc.). Por ejemplo,
una empresa que desea aumentar su productividad de software.
Las alternativas principales de la implementacin de esta
porcin del producto (usar el diseo A, usar el diseo B, reutilizar el
mdulo X de la aplicacin Z, comprar a un proveedor externo, etc.).
Para el ejemplo anterior, existen diferentes alternativas: en el rea de
10
11
12
BIBLIOGRAFA
Amescua Seco, A., Garca Snchez, L., Martnez Fernndez, P. y Daz
Prez, P., Ingeniera del Software de Gestin: anlisis y diseo de
aplicaciones, Paraninfo, Madrid, 1995.
Boehm, B. W., A Spiral Model of Software Development and
Enhancement, Computer, pp. 61-72, mayo 1988.
Davis, A., Bersoff, E. y Comer, E., AStrategy for Comparing
Alternative software deve-lopment Life Cycle Models, IEEE
Transactions on Software Engineering, vol. 14, n 10, pp.
1453-1461, octubre 1988.
International Standards Organization / Internacional Electrotechnical
Commission,
ISO/IEC 12207-1 - Information Technology Software Parte 1:
Software life-cycle process (ISO/IEC 12207-1 - Tecnologa de la
Informacin Software Parte 1: Proceso del ciclo de vida
software), 1994.
13