Actividades y metodologías en la construcción de software


¿Qué es desarrollo de software? 

El desarrollo de software, a veces denominado desarrollo de aplicaciones o diseño de software, es un conjunto de procesos repetidos que se utilizan para diseñar, crear, desplegar y dar soporte al software. Esto se hace mediante el uso de varios lenguajes de programación y codificación que proporcionan la estructura y la función del software desarrollado. El software puede crearse para satisfacer diversas necesidades, metas, objetivos y procesos, tanto personales como profesionales.

Este desarrollo se suele llevar a cabo a través de varias actividades planificadas las cuales son presentadas a continuación


Actividades Desarrollo de Software

Las actividades generales que se suelen utilizar en el proceso de construcción de software son:


Donde definimos Requerimientos como las características que debe tener el software, teniendo presente los siguientes puntos:
  • Obtención: Funcionalidades que debe cumplir el software, esto se realiza mediante entrevistas, cuestionarios y recolección de datos de los interesado
  • Planeación: Determina si un requerimiento es viable en términos de costo y tiempo
  • Especificación: Definición formal de requerimiento para ser trasmitido entre los interesados del proyecto y
  • Validación: Cumplimiento de características inherentes, es decir, no redundante, completo y  medible

Definimos Planeación como la guía del proyecto que canaliza a los interesados a conseguir el producto especificado. El Modelado como el  diseño abstracto del sistema basado en los requerimientos que detalla aspectos como la arquitectura de software, estructura de datos, interfaces y componentes; El Desarrollo como la generación de código fuente, el cual debería ser escrito con la intención de reducir la complejidad, anticiparse a la diversidad o cambios, facilitar pruebas de software y ajustarse a la normatividad vigente de ser necesario; y la Implementación como la puesta en marcha del producto una vez es aprobado por el cliente y/o el equipo de trabajo.

Las anteriores etapas son base para la aplicación de los modeles de desarrollo de software, donde cada modelo cuenta con unas ventajas y desventajas dependiendo de su aplicación. Estos modelos o metodologías se describen de manera resumida a continuación.

--------------------------------------------------------------
Metodologías Tradicionales

La gestión de proyectos tradicional es una metodología establecida en la que los proyectos se realizan en un ciclo secuencial. Sigue una secuencia fija: inicio, planificación, ejecución, seguimiento y cierre. El enfoque tradicional de la gestión de proyectos hace hincapié en los procesos lineales, la documentación, la planificación inicial y la priorización. En el enfoque tradicional, el tiempo y el presupuesto son variables y los requisitos son fijos

A continuación generalidades sobre los modelos tradicionales más populares:


Modelo en Cascada:


La metodología cascada es el proceso de desglosar los procesos secuenciales de un proyecto de forma descendente, de ahí su nombre. Este método se utiliza a menudo en la gestión de proyectos para satisfacer las especificaciones requeridas tanto por el cliente como por los consumidores. Este método requiere la finalización completa del proceso inicial antes de poder pasar al siguiente paso del plan, y va descendiendo hasta la última parte. 



Modelo Incremental 


Pensado para cuando se requiere entregar un producto con funcionalidad reducida que posteriormente se va incrementando hasta llegar a su versión final






Modelo por prototipo o evolutivo


Un modelo prototipo o modelo de desarrollo evolutivo es utilizado principalmente en el desarrollo de software para ofrecer al usuario una visión previa de cómo será el programa o sistema

Este modelo se apoya en prototipos que van evolucionando con cada interacción de las actividades del proceso de software: especificación, planeación, modelo, desarrollo, implantación.





Modelo basado en componentes

El objetivo de la tecnología de componentes software es construir aplicaciones complejas mediante ensamblado de módulos que han sido previamente diseñados por otros, a fin de ser reusados en múltiples aplicaciones. La ingeniería de programación que sigue esta estrategia de diseño se la conoce por el acrónimo CBSE (Component-Based Software Engineering) y es actualmente una de las tendencias más prometedoras para incrementar la calidad del software, abreviar los tiempos de acceso al mercado y gestionar el continuo incremento de su complejidad





--------------------------------------------------------------
Metodologías agiles

Las metodologías ágiles son enfoques para el desarrollo de productos que se ajustan a los valores y principios descritos en el Manifiesto Ágil para el desarrollo de software. Las metodologías ágiles pretenden ofrecer el producto adecuado, con una entrega incremental y frecuente de pequeños trozos de funcionalidad, a través de pequeños equipos multifuncionales auto-organizados, lo que permite la retroalimentación frecuente del cliente y la corrección del curso según sea necesario


SCRUM

Scrum es un marco de trabajo ágil a través del cual las personas pueden abordar problemas complejos adaptativos a la vez que se entregan productos de forma eficiente y creativa con el máximo valor. Así, Scrum es una metodología que ayuda a los equipos a colaborar y realizar un trabajo de alto impacto. La metodología Scrum proporciona un plan de valores, roles y pautas para ayudar a un equipo a concentrarse en la iteración y la mejora continua en proyectos complejos. Por otra parte, deberás saber que en Scrum se trabaja con equipos pequeños multidisciplinares en ciclos iterativos centrados en el cliente y se crea un producto de forma incremental.







Programación Extrema XP

La programación extrema es una metodología ágil de gestión de proyectos que se centra en la velocidad y la simplicidad con ciclos de desarrollo cortos y con menos documentación. La estructura del proceso está determinada por 5 valores fundamentales, 5 reglas y 12 prácticas de XP.

Al igual que otras metodologías ágiles, la programación extrema es una método de desarrollo de software dividido en sprints de trabajo. Los marcos ágiles siguen un proceso iterativo, en el que se completa y revisa el marco al final de cada sprint, refinándolo para adaptarlo a los requisitos cambiantes y alcanzar la eficiencia máxima. Al igual que otros métodos ágiles, el diseño de la programación extrema permite a los desarrolladores responder a las solicitudes de los clientes, adaptarse y realizar cambios en tiempo real.





--------------------------------------------------------------
Referencias

Sandra Garrido (9 de Diciembre de 2021),  Las metodologías agiles mas utilizadas y sus ventajas dentro de la empresa, Recuperado de: https://www.iebschool.com/blog/que-son-metodologias-agiles-agile-scrum

Proyectos agiles (s/f) Beneficios de Scrum. Recuperado de https://proyectosagiles.org/beneficios-de-scrum
Equipo de redacción de Drew (3 de Diciembre de 2019) Ventajas y desventajas de la metodología Scrum. Recuperado de https://blog.wearedrew.co/productividad/-ventajas-y-desventajas-de-la-metodologia-scru

Blog de Noticias UC (s/f) ¿Por qué utilizar metodologías agiles?. Recuperado de https://www.ucatalunya.edu.co/blog/por-que-usar-metodologias-agile

Historia de la empresa (s/f) ¿Que es el desarrollo de software. Recuperado de https://historiadelaempresa.com/desarrollo-de-softwar

Anna Perez (16 de Agosto) Características y fases del modelo incremental. Recuperado de: https://www.obsbusiness.school/blog/caracteristicas-y-fases-del-modelo-incrementa

Weebly (s/f) Ingenieria de software: Ciclo de vida de un prototipo. Recuperado de: https://ingsoftware.weebly.com/ciclo-de-vida-de-un-prototipo.htm

Felipe (6 de Julio de 2021) Model o de prototipos: ¿Qué es y cuales son sus etapas?. Recuperado de: https://www.hostingplus.com.co/blog/modelo-de-prototipos-que-es-y-cuales-son-sus-etapas/