- Ingeniería de Software
❑ Ciclo de vida del Desarrollo de Software
❑ Modelos o Metodologías
I. Cascada
II. Construcción de prototipos
III. Espiral
Ciclo de vida del desarrollo de software
Surgimiento
• Los avances en los lenguajes de programación de alto nivel permitieron el desarrollo de sistemas
complejos.
• La acumulación de experiencia en el desarrollo de sistemas complejos permitió comenzar a estudiar
el proceso mismo del desarrollo, observando patrones comunes y clasificándolos.
El ciclo de vida de desarrollo de software o sistemas de información, también llamado proceso de
software, es un conjunto de actividades, fases o etapas, que conducen a la creación de un producto de
software de alta calidad, minimizando los riesgos del proyecto, proporcionando estabilidad, control y
organización.
Ciclo de vida del desarrollo de software
Existe una enorme diversidad de procesos de desarrollo de software y no existe un proceso ideal. Aun
así, algunas actividades fundamentales son comunes para todos ellos. Aquí presentamos un ciclo de
vida básico, que hemos dividido en 6 actividades:
1. Análisis
2. Diseño
3. Codificación
4. Pruebas
5. Implementación
6. Mantenimiento
Ciclo de vida del desarrollo de software
Análisis:
• Se analizan los requerimientos de cliente y cómo funciona el negocio.
• Reuniones con el cliente.
• Visitas al lugar de trabajo.
• Recopilar datos existentes, como: hojas de cálculo, bases de datos existentes, métricas de
performance (obtenidas de redes sociales u otros medios).
• Establecer las posibles tecnologías a implementar (plataformas, lenguajes, librerías, etc.) y la
factibilidad del proyecto.
• Se pueden establecer borradores de la estructura y arquitectura del sistema.
Ciclo de vida del desarrollo de software
Diseño
Con los resultados del análisis previo se divide el diseño en 4 partes clave.
• La estructura de datos (definición de la base de datos, DER, etc.).
• La arquitectura del software (diagramas arquitectónicos de alto y bajo nivel).
• Representaciones de interfaz (wireframes, flow charts, etc.).
• Un detalle procedimental (diagramas de flujo, especificaciones de casos de uso, etc.).
Ciclo de vida del desarrollo de software
Desarrollo o codificación
Se codifica el software siguiendo las indicaciones de los diseños establecidos previamente. Por
ejemplo:
• La creación de la base de datos
• La capa de acceso a datos (ej.: modelos)
• Algoritmos de la lógica del negocio (ej.: controladores).
• La interfaz según los wireframes (ej.: vistas, componentes).
En esta actividad se incluye además la creación de pruebas unitarias, ya que estos deben ser creados
por el programador.
Ciclo de vida del desarrollo de software
Prueba
Se prueba y valida el software para confirmar que hace lo que el cliente desea.
Esto se puede realizar de manera local, o remota en un servidor de prueba, dependiendo de los
recursos, tanto humanos como financieros, disponibles.
Ejemplo:
• Pruebas de integración.
• Pruebas automatizadas de QA.
• Pruebas manuales de QA.
Ciclo de vida del desarrollo de software
Implementación, instalación o despliegue
Se instala o pone en producción el sistema, donde puede ser usado por el cliente o usuario final.
• Instalación local: deberá instalarse en cada equipo (de forma manual o automatizada).
▪ Creación de un instalador y si es necesario un medio para la instalación (ej.: CD).
• Web, plataformas móviles o IoT: se debe desplegar el sistema en uno o más servidores o subir la
aplicación a las nubes que manejan las distintas tiendas online.
Ciclo de vida del desarrollo de software
Mantenimiento
Se aplican cambios asociados a la corrección de errores, solicitudes de actualización, etc. para
garantizar su funcionalidad continua. Puede volver a aplicar cada una de las actividades precedentes al
momento de generarse un cambio.
La naturaleza del software es tal, que una pieza de software nunca se finaliza completamente.
Siempre se van a tener que realizar cambios, ya sea por errores o bugs, pedidos de características del
cliente, modificaciones por razones de seguridad o prevención.
Es por esto que se considera un ciclo que se repite hasta que el software queda obsoleto o en desuso.
Ciclo de vida del desarrollo de software
Incidencia del Mantenimiento
A medida que pasa el tiempo, se deben utilizar más recursos para mantener el software funcionando
correctamente.
Hasta que se llegue al momento en que resultará más razonable crear un nuevo sistema que continuar
manteniendo al anterior, que se volvió obsoleto.
Ciclo de vida del desarrollo de software
Distintos autores pueden utilizar más o menos etapas al describir el Ciclo de Vida básico.
Ciclo de vida del desarrollo de software
Notas finales
Esta es una vista abstracta que establecemos y estudiamos de esta manera por practicidad. En la
realidad es normal que varias actividades ocurran de manera simultánea y/o solapadas.
La finalidad es establecer una estructura organizada y reproducible para el desarrollo de software de
alta calidad.
Modelos o metodologías
Un modelo o metodología de proceso es el conjunto de las etapas, acompañado de una estrategia de
desarrollo, métodos, herramientas y, a veces, el papel de las personas involucradas, utilizados por un
equipo para el desarrollo de software.
La elección de un modelo:
• La naturaleza del proyecto
• Normas y cultura de trabajo del equipo de desarrollo
• Las necesidades de entregas y la involucración del cliente
No es obligatorio a seguir un modelo al pie de la letra. Debe servir como una guía.
Aunque, esto también depende del equipo de trabajo, la organización y el producto.
Modelos o metodologías
Cascada
El modelo o metodología en Cascada sugiere un enfoque sistemático, secuencial en la ejecución de las
actividades del desarrollo del software.
Va de la mano con el ciclo de vida del desarrollo de software básico visto previamente.
Características principales:
• Cada actividad depende directamente de los resultados de la actividad anterior.
• Y el resultado de cada actividad, es uno o más documentos "aprobados".
• La siguiente actividad no debe comenzar hasta que la actividad previa haya finalizado.
Modelos o metodologías
Cascada
Las personas involucradas en cada
actividad pueden ser especialistas
dedicados, o abarcar varias actividades
a lo largo de un desarrollo.
Modelos o metodologías
Cascada
Su simpleza e intuitividad lo hace fácil de adoptar y aplicar a cualquier tipo de desarrollo.
Su principal problema es su inflexibilidad. Esto hace difícil responder a los cambios en los
requerimientos del cliente.
Modelos o metodologías
Cascada
Existen versiones más flexibles de esta
metodología, donde se permite, desde
una actividad cualquiera, volver hacia
una actividad anterior cualquiera de ser
necesario.
Modelos o metodologías
Modelo de construcción de prototipos
Un prototipo, en el desarrollo de software, es un modelo de preproducción cuya utilidad es probar un
concepto, viabilidad o cualquier otra característica específica de un sistema de software, con el fin
de obtener una retroalimentación rápida.
Este modelo se caracteriza por comenzar con el desarrollo cuando no es posible identificar todos los
requisitos detallados del sistema o cuando los requisitos son muy cambiantes.
Modelos o metodologías
Modelo de construcción de prototipos
1. A partir de los requerimientos generales se
genera un "diseño rápido".
2. El diseño rápido lleva a la construcción del
prototipo, cuyo propósito.
3. Finalmente, la retroalimentación del cliente
se utiliza para refinar los requerimientos del
software.
Modelos o metodologías
Modelo de construcción de prototipos
La iteración ocurre cuando se refinan las características del prototipo y se lo pone a punto.
Este proceso se repite permitiendo comprender mejor lo que se necesita hacer, generando un
software que se acerque cada vez más al producto final.
Este modelo incorpora dos factores que anteriormente no eran prioritarios:
• La iteración incremental
• La interacción frecuente con el cliente.
Modelos o metodologías
Modelo de construcción de prototipos
Las ventajas de este modelo son el desarrollo incremental rápido y la incorporación del cliente en
cada paso del desarrollo.
Algunas de sus problemáticas son:
• El cliente ve una fachada y asume cierta funcionalidad que en realidad no existe todavía.
• El desarrollador puede hacer compromisos de implementación con el afán de hacer que el
prototipo funcione rápidamente.
La clave está en ponerse de acuerdo en que el prototipo se construya para servir principalmente
como un mecanismo de definición de requisitos.
Modelos o metodologías
Modelo Espiral
Este modelo interpreta al software como un sistema que evoluciona con el tiempo. Por lo tanto, es
necesario que se acomode a la naturaleza cambiante del desarrollo.
El modelo en espiral, es un modelo de proceso de software evolutivo que conjuga la naturaleza
iterativa de construcción de prototipos con los aspectos controlados y sistemáticos del modelo en
cascada.
En este modelo el software se desarrolla en una serie de versiones incrementales.
Durante las primeras iteraciones, el incremento podría ser un modelo en papel o un prototipo.
Durante las últimas iteraciones, se producen versiones cada vez más completas del sistema.
Modelos o metodologías
Modelo Espiral
El modelo en espiral se divide en un número de actividades, también llamadas regiones de tareas.
En nuestro ejemplo tenemos 6 regiones:
• Comunicación con el cliente.
• Planificación
• Análisis de riesgos
• Ingeniería
• Construcción y adaptación
• Evaluación del cliente
Modelos o metodologías
Modelo Espiral
Cuando empieza este proceso se gira alrededor de
la espiral en la dirección de las agujas del reloj,
comenzando por el centro.
El primer circuito de la espiral puede producir el
desarrollo de una especificación de productos.
Los pasos siguientes en la espiral se podrían utilizar
para desarrollar un prototipo y progresivamente
versiones más sofisticadas del software.
Conclusión
Estos modelos iniciales muestran algunas de las formas en las que se intentaban formalizar y
estandarizar los procesos de la Ingeniería del Software en sus inicios.
Posteriormente cada vez más metodologías incorporaban iteraciones rápidas y adaptables a los
cambios de requerimientos, que debían resultar en un producto entregable.
Estas metodologías terminarían más tarde siendo clasificadas como Metodologías Ágiles, las cuales
se utilizan hasta el día de hoy.
[email protected]
[email protected]