Para comenzar, tenemos que mencionar que un modelo de desarrollo de software
es una descripcin simplificada del proceso de un software. Existen varios modelos para presentar el proceso de desarrollo de software, cada uno cuenta con sus ventajas y desventajas. Por lo que es necesario elegir el ms apropiado para satisfacer las necesidades de un proyecto dado. En algunas ocasiones se puede dar el caso de que se ocupe ms de un modelo para llevar acabo dicho proceso. Aunque existen muchos modelos diferentes de desarrollo de software, stos tienen algunas caractersticas en general: 1. Especificacin del software. Definir la funcionalidad y las restricciones del software. 2. Diseo e implementacin del software. Desarrollar software que cumpla con el paso anterior. 3. Validacin del software. Asegurarse que el software satisface la necesidad del cliente. 4. Evolucin del software. Cubrir necesidades que pueden cambiar por parte del cliente.
Modelo en cascada Este modelo es el ms bsico de todos y muestra un proceso donde los desarrolladores tienen que seguir las siguientes fases de forma sucesiva, es decir, una fase no debe empezar hasta que la fase previa haya finalizado: 1. Especificacin de requisitos. 2. Diseo del software. 3. Construccin. 4. Pruebas. 5. Instalacin. 6. Mantenimiento. Una de las ventajas de este modelo es que se planifica de una manera muy sencilla y que, al finalizar cada etapa, se produce una documentacin para su aprobacin. Como desventajas mencionar que los resultados se obtienen al final y que es muy difcil que pueda haber una evolucin de los requisitos ya que stos se especifican desde un principio. Existe una mejora de este modelo, el modelo en cascada iterativo. Aparte de que este mtodo deja de ser lineal y ahora trabaja de forma iterativa, su principal diferencia y ventaja es que permite la retroalimentacin. Esto provoca que los riesgos disminuyan, se reduzcan los costos y que se le pueda entregar al usuario una versin con la cual trabajar. Modelo RAD (Desarrollo Rpido de Aplicacin) Es un modelo de desarrollo de software lineal secuencial que enfatiza un ciclo de desarrollo extremadamente corto. Implica el desarrollo iterativo y la construccin de prototipos. Las etapas del modelo RAD son las siguientes: 1. Planificacin de los requisitos. 2. Diseo. 3. Construccin. 4. Implementacin. Como ventaja, mencionar que el sistema a desarrollar se puede dividir fcilmente en mdulos. Cada equipo de desarrolladores se encarga de una parte del sistema usando herramientas de pruebas automatizadas y en cada etapa, los avances parciales son integrados, probados y liberados. Por otro lado, las desventajas serian que se necesita comprender bien los requisitos, se necesitan muchos desarrolladores y que exista un compromiso de stos y de los clientes para un tiempo de entrega corto. Modelo de prototipos El modelo de prototipos propone que antes de llevar a cabo el desarrollo del software real, debe ser construido un prototipo de trabajo del sistema. Un prototipo es un bosquejo de lo que ser el sistema. Un prototipo suele mostrar funcionalidades limitadas, baja confiabilidad y un desempeo ineficiente en comparacin con el software real. En otras palabras, un prototipo es una versin incompleta del software. Las fases de este modelo son las siguientes: 1. Obtencin de requisitos. 2. Diseo rpido. 3. Construccin del prototipo. 4. Evaluacin del prototipo por parte del cliente. Si el cliente lo acepta, se desarrolla el softare real, de lo contrario, realiza la etapa 5 y se repite el ciclo. a. Diseo del software real. b. Implementacin c. Pruebas d. Mantenimiento 5. Sugerencias del cliente y nueva definicin de requisitos. Como ventajas podemos decir que ayuda en gran manera al desarrollo del software real a travs de la retroalimentacin e interaccin del cliente. Sin embargo, la construccin de los prototipos se vuelve compleja adems del tiempo y los costos que stos pueden tomar. Una gran desventaja es que el cliente puede llegar a creer que un prototipo sea el sistema.
Modelo evolutivo Este modelo tambin es llamado modelo incremental e iterativo. Consiste en una mejora del modelo en cascada integrando el modelo de prototipos. En este modelo la etapa de anlisis de requisitos y diseo son iguales que en el modelo en cascada. Luego se dividen las etapas que implican el diseo detallado y la implementacin. Este modelo acelera el desarrollo temprano de funcionalidades del software de alta prioridad. Adems, una cuidadosa programacin de las diferentes versiones puede conducir a un uso eficiente de los recursos disponibles. La caracterstica ms importante y principal de este modelo es que permite aadir nuevos requisitos en el proceso de desarrollo. As se facilita el desarrollo dinmico de las especificaciones del sistema. Modelo de espiral Es un modelo de proceso de software evolutivo que combina algunas caractersticas claves del modelo en cascada, modelo RAD y del modelo evolutivo. Fue desarrollado por Barry Boehm quien lo define como un generador de modelo de proceso guiado por el riesgo que se emplea para conducir sistemas intensivos de ingeniera de software concurrente y a la vez con muchos usuarios. En pocas palabras, incorpora un anlisis de riesgos y contempla cuatro etapas principales: 1. Planificacin. Se determinan objetivos y restricciones. 2. Anlisis de riesgos. Se evalan alternativas, identifica y resuelve riesgos. 3. Ingeniera. Se desarrolla y se verifica el software. 4. Evaluacin del cliente. Se realiza una valoracin de los resultados y empieza de nuevo la primera etapa. Con cada iteracin o cada ciclo alrededor de la espiral, se van construyendo sucesivas versiones del software cada vez ms completas. La ventaja principal es la deteccin y solucin de riesgos a temprano tiempo, as como la verificacin continua de la calidad y la gran utilidad para sistemas con requisitos inestables. Creemos que este mtodo solo tiene una desventaja: que no es recomendable para proyectos simples, los cuales, determinados para un tiempo corto de desarrollo, pueden extenderse (en cuanto al tiempo) sin necesidad de que suceda esto. Modelo basado en componentes (CBSE) Este enfoque de desarrollo se basa en la reutilizacin ya sea de diseo o de cdigo de proyectos con los que se haya trabajado anteriormente. Si bien, la primera y ltima etapa son similares a la de la mayora del resto de los modelos, las etapas intermedias son muy diferentes ya que en este modelo estn orientadas a la reutilizacin. 1. Anlisis de componentes. Una vez especificados los requisitos, se buscan los componentes para implementar esa especificacin. 2. Modificacin de requerimientos. Se analizan los requerimientos con respecto al anlisis de componentes y se realizan las posibles modificaciones. 3. Diseo del sistema con reutilizacin. Aqu se puede reutilizar un diseo o emplear un nuevo diseo de software. 4. Desarrollo e integracin. Si no se pudo reutilizar un diseo entonces se procede a desarrollar el software. Entonces como ventajas propias de este modelo son la reduccin de costos, tiempos, riesgos y software a desarrollar. Aunque, el levantamiento de requisitos siempre estar presente y la modificacin de los mismos pueda llevar a una difcil modificacin del sistema. Conclusiones El modelo de cascada tradicional puede considerarse como el modelo bsico y todos los dems modelos como los adornos o mejoras de este modelo. Sin embargo, el modelo de cascada tradicional no se puede utilizar en proyectos de desarrollo prcticos, ya que este modelo no es compatible con ningn mecanismo para manejar los errores cometidos durante cualquiera de las fases. Este problema se supera en el modelo de cascada iterativo. El modelo de cascada iterativo es probablemente el modelo de desarrollo de software ms utilizado evolucionado hasta ahora. Este modelo es fcil de entender y usar. Sin embargo, este modelo es adecuado slo para problemas bien entendidos; no es adecuado para proyectos de gran tamao ni para proyectos que estn sujetos a numerosos riesgos. El modelo de prototipo es adecuado para proyectos que no son bien entendidos es decir, las necesidades de los usuarios o los aspectos tcnicos no se comprenden correctamente. Este modelo es especialmente para el desarrollo de la parte de la interfaz de usuario de los proyectos. El enfoque evolutivo es adecuado para grandes problemas que se puede descomponer en una serie de mdulos para el desarrollo y entrega de software progresivo. Por supuesto, este modelo slo se puede utilizar si la entrega incremental del sistema es aceptable para el cliente. El modelo en espiral abarca todos los dems modelos de desarrollo de software. Este modelo se basa en el manejo de riesgos. El modelo en espiral es adecuado para el desarrollo de productos de software tcnicamente desafiantes que son propensos a varios tipos de riesgos. Sin embargo, este modelo es mucho ms complejo que los otros modelos. Esto es probablemente un factor de desnimo de su uso en proyectos comunes. Los modelos de desarrollo de software diferentes pueden compararse desde el punto de vista del cliente. Inicialmente, la confianza del cliente en el equipo de desarrollo es generalmente alta, independientemente del modelo de desarrollo seguido. Durante el largo proceso de desarrollo, la confianza del cliente normalmente cae, ya que ningn producto de trabajo es inmediatamente visible. Los desarrolladores pueden responder a las consultas de los clientes utilizando un lenguaje tcnico, y tambin pueden ocurrir retrasos durante el desarrollo. Esto da lugar a un posible resentimiento por parte cliente. Por otro lado, un enfoque evolutivo permite la experimentacin del cliente con un producto de trabajo mucho antes que el resto de los modelos. Otra ventaja importante del modelo incremental es que reduce el enfoque del cliente de acostumbrarse a un sistema completamente nuevo. La introduccin gradual del producto a travs de las fases incrementales proporciona tiempo para que el cliente pueda adaptarse al nuevo producto. Asimismo, desde el punto de vista econmico del cliente, el desarrollo incremental no requiere un gran desembolso de capital inicial. El cliente puede pedir las versiones incrementales como y cuando se puedan comprar. Podemos terminar diciendo que, la eleccin del modelo para desarrollar software depender mucho del tipo de aplicacin a la que nos enfrentemos, as como los riegos, tiempos y costos que esta conlleve; y tomar en cuenta que tan importante ser la interaccin que tendr el cliente durante el desarrollo del software.
Fuentes de consulta
Alonso, F., Martnez, L., & Segovia, F. J. (2005). Introduccin a la ingeniera de software. DELTA PUBLICACIONES. Godoy, J. D. (s.f.). El modelo RAD. Recuperado el 7 de Octubre de 2014, de https://docs.google.com/presentation/d/1KkRkeaqM5O8QuYyIjk4fYs- JgwtwdfBJJ5uBffColB8/embed#slide=id.i0 Modelos de desarrollo de software. (s.f.). Recuperado el 7 de Octubre de 2014, de http://es.slideshare.net/kellypt1/modelos-de-desarrollo-de-software Pressman, R. S. (1997). Ingeniera del software: un enfoque prctico. Mikel Angoar. Sommerville, I. (2005). Ingeniera de software. Addison Wesley.