Fundamentos de la Ingeniería de Software: Conceptos, Modelos de Ciclo de Vida y Herramientas

Enviado por Programa Chuletas y clasificado en Diseño e Ingeniería

Escrito el en español con un tamaño de 9,17 KB

Introducción a la Ingeniería del Software

Definición de Ingeniería

La ingeniería es la ciencia de la producción. Es la aplicación de la ciencia y las matemáticas mediante la cual las propiedades de la materia y las fuentes de energía de la naturaleza se hacen útiles para la gente.

Como actividad humana, la ingeniería implica la aplicación del conocimiento y los métodos científicos al diseño y la producción de productos complejos.

Ingeniería del Software: Un Enfoque Disciplinado

Diferenciándose por el producto final, todas las ingenierías comparten elementos comunes:

  • La ciencia de la ingeniería: Principios y mecanismos fundamentales.
  • Procesos de diseño: Incluyen una fase de conceptualización y una fase de diseño detallado.
  • Aspectos de gestión y organización: La tecnología producida involucra a personas y organizaciones. Además, los creadores de tecnología rara vez trabajan aislados, sino en equipos y estructuras organizacionales.

¿Qué es el Software?

El software se define como el conjunto completo de programas, procedimientos y documentación relacionada que se asocia con un sistema, especialmente un sistema de computadora.

En un sentido específico, el software son los programas de computadora: un conjunto de instrucciones destinadas a que una computadora lleve a cabo una tarea. Es importante destacar que el software es modificable y flexible, lo que implica su evolución.

Su complejidad inherente se debe a dos factores principales:

  • El software tiene una alta propensión al cambio.
  • El software es invisible.

La ingeniería del software es la aplicación de un enfoque sistemático, disciplinado y cuantificable al desarrollo, la operación y el mantenimiento del software. Este enfoque implica:

  • Seguir un plan de manera metódica.
  • Respetar estándares establecidos.
  • Permitir que sus resultados y el propio proceso sean medibles.

Conceptos Fundamentales en Ingeniería de Software

Para comprender el proceso de desarrollo, es crucial definir los siguientes términos:

  • Actividad: Proceso que ocurre en el tiempo y el espacio, donde un agente actúa con objetivos determinados. Ejemplos incluyen actividades de prueba, obtención de requisitos o documentación.
  • Artefacto: Algo tangible creado con un propósito práctico. Es el fruto de una actividad y se considera un “elemento de la información”. Ejemplos: diagramas de casos de uso, lista de requisitos.
  • Método: Especificación de una secuencia de acciones orientadas a un propósito determinado.
  • Metodología: Conjunto de métodos coherentes y relacionados por principios comunes.
  • Especificación: Descripción detallada y precisa de algo existente o de una situación concreta, ya sea presente o futura.
  • Ciclo de vida del software: La evolución del software desde su concepción hasta el momento en que deja de utilizarse. Modelos comunes incluyen el ciclo en cascada, en espiral o el proceso unificado.
  • Proceso software: Conjunto de políticas, estructuras organizativas, tecnologías, procedimientos y artefactos necesarios para concebir, desarrollar, implantar y mantener un producto software.

Modelos de Ciclo de Vida del Software

Modelo de Ciclo de Vida en Cascada

La secuencia tradicional de fases es: Requisitos > Diseño > Construcción > Pruebas > Mantenimiento.

Características del modelo Cascada:

  • Se caracteriza por su secuencialidad estricta en las fases.
  • El sistema se entrega completo al finalizar el proyecto.
  • El estado del proyecto es visible en todo momento.
  • Asume que los requisitos son estables durante todo el desarrollo.
  • Los límites entre fases son muy rígidos, lo que puede propagar errores.

Es el modelo más antiguo. Aunque mantiene el concepto de fase, en modelos anteriores las actividades no se limitaban a una sola fase, sino que ocurrían en varias de ellas mediante avances iterativos.

Ciclo de Vida Iterativo

Este modelo surge como respuesta a las debilidades del modelo tradicional en cascada.

El desarrollo iterativo agrupa tareas en pequeñas etapas repetitivas (iteraciones). Es uno de los modelos más utilizados, ya que se alinea con estrategias de desarrollo ágiles y programación extrema, siendo empleado en diversas metodologías.

El análisis de cada iteración permite identificar puntos de mejora que se incorporan en los ciclos posteriores. Además, la gestión de riesgos se vuelve más precisa, ya que se tiene una visión de los riesgos asociados a cada iteración al iniciar la planificación.

Los procesos cíclicos ofrecen un margen de flexibilidad adicional.

Ventajas del Desarrollo Iterativo

  1. En cada iteración se pueden comprobar los avances y el beneficio reportado.
  2. El riesgo asumido es menor; si surge un impedimento, puede solventarse en la siguiente iteración.
  3. El desfase entre lo planeado y lo ejecutado se minimiza con la sucesión de pequeñas iteraciones.
  4. La complejidad del proyecto se diluye en partes más pequeñas y manejables.
  5. El conocimiento sobre el producto es creciente y progresivo, sin requerir una visión detallada completa al inicio.

Debilidades del Desarrollo Iterativo

  1. Implica tener un cliente involucrado activamente durante todo el desarrollo.
  2. La relación con el cliente debe basarse en principios éticos y una colaboración mutua.
  3. Infunde una gran responsabilidad en el equipo de desarrollo.
  4. Los requerimientos definidos y cerrados al inicio pueden cambiar notablemente durante el desarrollo del producto.

Ciclo de Vida en Espiral

Este modelo es una combinación del ciclo de vida en cascada y el modelo iterativo.

Las fases por las que transcurre cada ciclo de la espiral son:

  • Planificación: Se determinan los objetivos y el alcance del ciclo. El tamaño y la funcionalidad del software se incrementan con cada iteración.
  • Análisis de riesgo: Se evalúa todo aquello que pueda afectar al proyecto. Para ello, se diseñan los prototipos que serán validados en el ciclo.
  • Implementación: Se desarrolla y valida el software, proceso que está condicionado por el análisis de riesgos previo.
  • Evaluación: Antes de pasar a la siguiente iteración, se analiza si los riesgos detectados se han solucionado. Esta fase determina el avance del proyecto.

Ventajas del Modelo en Espiral

  • Los factores de riesgo son reducidos significativamente.
  • El desarrollo es iterativo, permitiendo incorporar funcionalidades de forma progresiva.

Inconvenientes del Modelo en Espiral

  • La duración de la ejecución no es concreta.
  • Fallos en el análisis de riesgos podrían influir negativamente en todo el proyecto.

Medición y Herramientas de Soporte

Medición

La medición es fundamental para la estimación de recursos, coste y esfuerzo, así como para la evaluación del personal y la productividad.

Permite conocer el estado de un proyecto durante su ejecución para realizar los ajustes o mejoras necesarios. La medición de los productos y sus características hace posible la mejora continua de la calidad.

Herramientas CASE (Computer-Aided Software Engineering)

Surgen de la necesidad de automatizar parte de las tareas de desarrollo.

Una herramienta software es un programa de computadora que ayuda a realizar un proceso específico o lo automatiza completamente. Una herramienta CASE es una herramienta software utilizada en una o más fases del desarrollo de un producto software para apoyar una tarea específica de ingeniería del software.

Objetivos y Beneficios de las Herramientas CASE

  • Sus objetivos más comunes incluyen: desarrollar, probar, analizar, diseñar o mantener un software o su documentación.
  • Facilitan la realización de actividades complejas.
  • Sin ellas, sería muy difícil recopilar, utilizar y mantener el software de manera eficiente.

La Integración CASE (I-CASE) se refiere a la capacidad que tiene una herramienta CASE para compartir datos y cooperar con otras herramientas del entorno de desarrollo.

Entradas relacionadas: