Modelos de Desarrollo de software

MODELOS PARA EL DESARROLLO DE SOFTWARE

Las actividades del proceso de software vistas en el numeral anterior fueron en un principio secuenciales y formaron parte del modelo en Cascada PRESSMAN (2010). Sin embargo, en la medida que los sistemas se hicieron más complejos surgieron nuevos enfoques como el modelo en espiral o modelos ágiles que pretendían disminuir costos o afrontar los riesgos e incertidumbres propios de los sistemas actuales donde los requerimientos no siempre están totalmente especificados o son muy susceptibles a cambios. El programa ADSI se guiará por este modelo de procesos en cascada, no obstante, se exponen otros modelos para tener una visión más amplia.

Modelo en cascada 

En este modelo las etapas del proceso a saber: especificación de requerimientos, modelado, desarrollo e implantación se dan de manera secuencial


Este fue el primer modelo propuesto y sigue siendo el padre de los demás modelos de procesos, cuando los requerimientos de un sistema están claramente definidos con anticipación y no se espera que cambien en el transcurso de las demás etapas es conveniente su aplicación.

Su ventaja es que contempla toda la funcionalidad del sistema desde un principio. Su desventaja es que los cambios posteriores o inclusión de nuevos requerimientos son muy costosos porque impactan todas las fases llevadas a cabo con anterioridad. Por otra parte toma tiempo importante del equipo la formalización o documentación de cada actividad una vez se finaliza.

Modelos incrementales

Este modelo está pensado para cuando se requiere entregar un producto de software con una funcionalidad reducida que posteriormente se va incrementando hasta llegar finalmente a la versión deseada del producto. Los requerimientos nuevos que se van agregando en cada entrega se denominan incrementos.


La ventaja es que se cuenta con un producto básico pero funcional en un tiempo menor comparado con el modelo en cascada. La desventaja es que algunos clientes temen que este proceso evolutivo de entregas se salga de control.

Modelo de evolución por prototipos

Este modelo se apoya en los llamados prototipos o versiones primarias del producto de software al cual se quiere llegar. Estos prototipos evolucionan o se mejoran cada vez que se aplican las actividades del proceso de software: especificación, planeación, modelado, desarrollo, implantación. Lo anterior es llamado una iteración



La diferencia con el modelo incremental es que un prototipo se puede descartar por completo e iniciar con uno nuevo en cualquier etapa del proceso evolutivo o iterativo. Su ventaja es que desde el primer prototipo ya se puede tener la realimentación del cliente y se pueden corregir en etapas muy tempranas cualquier falencia que se presente. Su desventaja es que no se puede estimar fácilmente el tiempo de finalización del proyecto.


Modelos ágiles

Recientemente se han popularizado los modelos ágiles que combinan las estrategias de los modelos en cascada, incremental y prototipos. Un ejemplo es el modelo SCRUM que está basado en el modelo incremental, pero plantea, entre otros, unas técnicas o criterios para determinar cuándo pasar a una siguiente versión del producto de software.

Estos modelos son apropiados cuando se anticipa que van a surgir cambios en los requerimientos a lo largo del proyecto y pretenden disminuir este impacto por un lado haciendo más liviano o ligero la formalización de las etapas del proceso del software y por otro haciendo énfasis en equipos de trabajo bastante cohesionados y motivados. PRESSMAN, (2010).


La desventaja es que estas metodologías requieren un entrenamiento y disciplina en los equipos de trabajo que no es accesible para todas las empresas.

Modelo basado en componentes 

Este modelo se apoya en software previamente desarrollado que se puede incorporar, parametrizar o configurar al proyecto en desarrollo y de esta forma disminuir la cantidad de código a producir.

Algunos softwares modernos como SAP, ORACLE, SIESA, entre otros, suministran componentes para una amplia gama de procesos de negocio (contabilidad, nómina, inventarios, entre otros) los cuales se configuran de acuerdo a las necesidades específicas del cliente. Lo anterior evita que la actividad de desarrollo se haga desde cero y los desarrollos se realizan para llenar las brechas o “gaps” entre la funcionalidad que requiere el cliente y lo ofrecido por el proveedor.




Los componentes también pueden ser proporcionados a través de “frameworks” o librerías que también son código ya elaborado y que puede ser configurado, utilizado y en algunos 20 casos modificado en esta fase de desarrollo. Ejemplo de estos frameworks son J2EE, Microsoft .Net, Laravel (PHP), AngularJS, entre otros.

Una desventaja es que no siempre el componente o módulo cumple con todos los requerimientos del cliente y en algunos casos las empresas limitan o disminuyen los requerimientos en favor de una mayor prontitud en la entrega del producto de software especificado.

Este proceso se basa en los modelos tradicionales ya expuestos como son cascada, prototipos e incrementales y hace énfasis en la utilización de casos de uso apoyados en el lenguaje UML para modelar los requerimientos del cliente. PRESMAN, (2010).

Está compuesto por cuatro fases: Concepción, elaboración, construcción y transición. Al igual que los modelos ágiles el proceso unificado también afronta el desafío del cambio constante de los requerimientos y requiere de un entrenamiento al equipo de proyecto que no todas las empresas pueden acceder.

Proceso unificado




Este proceso se basa en los modelos tradicionales ya expuestos como son cascada, prototipos e incrementales y hace énfasis en la utilización de casos de uso apoyados en el lenguaje UML para modelar los requerimientos del cliente (PRESMAN, 2010).

Está compuesto por cuatro fases: Concepción, elaboración, construcción y transición.

Al igual que los modelos ágiles el proceso unificado también afronta el desafío del cambio constante de los requerimientos y requiere de un entrenamiento al equipo de proyecto que no todas las empresas pueden acceder.

CONCLUSIONES

En resumen, cada modelo de construcción de software ofrece ventajas y desventajas específicas que deben ser consideradas según el contexto del proyecto. El modelo de cascada, con su enfoque secuencial, es ideal para proyectos con requisitos bien definidos desde el inicio. Por otro lado, el modelo incremental permite una mayor flexibilidad y adaptación a cambios, entregando el software en etapas. Los modelos por prototipos son especialmente útiles cuando los requisitos no están claros, ya que permiten la creación de versiones preliminares para obtener retroalimentación temprana.

Los modelos ágiles han ganado popularidad debido a su capacidad para responder rápidamente a los cambios y su enfoque en la colaboración continua con el cliente. Estos modelos promueven la entrega frecuente de pequeñas partes funcionales del software, lo que facilita la detección temprana de problemas y la adaptación a nuevas necesidades. En contraste, el modelo por componentes se centra en la reutilización de partes ya desarrolladas, lo que puede reducir significativamente el tiempo y costo de desarrollo, aunque requiere una planificación cuidadosa para asegurar la compatibilidad entre componentes.

Finalmente, el proceso unificado combina elementos de varios modelos, ofreciendo un enfoque iterativo y centrado en la arquitectura del software. Este modelo es particularmente efectivo para proyectos complejos que requieren una estructura robusta y bien definida desde el principio. En conclusión, la elección del modelo de construcción de software debe basarse en las características específicas del proyecto, los requisitos del cliente y el entorno de desarrollo, asegurando así la máxima eficiencia y calidad en el producto final.


REFERENCIAS Y FUENTES DE INFORMACIÓN

  • Pressman Roger S, (2010),  Ingenieria de Software, un enfoque práctico, Univesity of Connecticut. Ed MacgrwHill.  ISBN: 978-607-15-0314-5
  • Matellán Olivera, V. González Barahona, J. M. y Pedro de las Heras Quirós. (2004). Sobre software libre: compilación de ensayos sobre software libre. Grupo de Sistemas y Comunicaciones. Dykinson Recuperado de https://elibro-net.ucompensar.basesdedatosezproxy.com/es/lc/ucompensar/titulos/60881
  • Fundación Universitaria Compensar ( 2025) Fundamentos de Construcción de Software, Etapa de profundización. 





Comentarios

Entradas populares de este blog

Actividades del Desarrollo de software