Fundamentos de la Ingeniería de Software: Evolución, Crisis y Gestión de Requerimientos

Clasificado en Informática

Escrito el en español con un tamaño de 7,27 KB

Fundamentos y Evolución Histórica del Software

Evolución del Software (1950-1990)

La historia del software se caracteriza por hitos clave que definieron su distribución y complejidad:

  • 1950: Distribución limitada de software a la medida.
  • 1970: Sistemas multiusuario, tiempo real y bases de datos.
  • 1980: Sistemas distribuidos, inteligencia integrada y hardware de bajo costo.
  • 1990: Sistemas de escritorio, tecnología Orientada a Objetos (O.O.), sistemas expertos y redes neuronales.

Problemas y Características del Software

Problemas Comunes del Software

  • Incompatibilidad
  • Costo elevado
  • Desconfianza
  • Mantenimiento complejo

Características de los Productos de Software

Los productos de software deben ser mantenibles y confiables.

Componentes Esenciales del Software

  1. Planeación
  2. Especificación de requerimientos
  3. Diseño
  4. Estructura de datos
  5. Reportes
  6. Especificación de pruebas
  7. Programa

La Crisis del Software y sus Soluciones

Definición de Ingeniería de Software

Disciplina de la informática que ofrece métodos y técnicas para desarrollar y mantener un software de calidad que resuelva problemas de todo tipo.

Anatomía de la Crisis del Software

  • Síntomas:
    • Funcionalidad incorrecta.
    • Desarrollo y mantenimiento inadecuado.
    • Insatisfacción de la demanda.
  • Problemas:
    • Carencia de información.
    • Insatisfacción cliente/usuario.
    • Mantenimiento difícil y costoso.
    • Calidad sospechosa.
  • Causas:
    • Naturaleza del sistema.
    • Formación profesional.
    • Capacitación y actualización insuficientes.
    • Resistencia al cambio.
  • Solución:
    • Enfoque ingenieril.
    • Enfoque formal de resolución de problemas.
    • Análisis = Enfoque de sistemas.
    • Implementación = Enfoque de ingeniería.

Objetivos y Dificultades de la Producción de Software

Objetivos de la Ingeniería de Software

  • Maximizar la calidad.
  • Maximizar la productividad.
  • Minimizar riesgos.

Dificultades de la Producción de Software

  • Esenciales: Complejidad, conformidad, necesidad de cambio, invisibilidad.
  • Accidentales: Metodologías.

Mitos y Factores Contractuales

Mitos Comunes del Software

  • Basta con tener estándares y procedimientos.
  • Basta con tecnología de punta.
  • Meter más gente acelera el proyecto.
  • Hay que empezar a programar inmediatamente.
  • Los cambios se acomodan fácilmente.
  • El código es lo único que vale.

Factores Contractuales y Contextuales

Impulsores del cambio en la industria:

  • Time to market (Tiempo de salida al mercado).
  • Cambios en la relación de costo entre hardware y software.
  • Acceso a computadoras, redes, tecnología Orientada a Objetos (O.O.).
  • Interfaces gráficas.

Principios y Enfoques de la Ingeniería de Software

Enfoque para una Disciplina Sólida

Elementos clave para establecer una disciplina robusta:

  • Abstracción.
  • Notación y métodos de diseño.
  • Prototipo e interfaces usuarias.
  • Arquitectura del sistema (proceso de desarrollo, reuso, mediciones, herramientas y ambiente integrados).

Principios Fundamentales de la Ingeniería de Software

  • Rigor y Formalidad: Enfocados en el producto y el tiempo.
  • Separación de Aspectos: Distinción entre necesidades, procesos y desarrollo.
  • Modularidad: Descomposición estructurada del sistema.
  • Abstracción: Identificar lo más importante.
  • Anticipación al Cambio: Ver más allá de los requerimientos actuales.
  • Generalidad: Visualizar elementos reutilizables.
  • Incrementalidad: Conseguir el objetivo a través de incrementos.

Ingeniería de Requerimientos

Concepto y Tipos de Requerimientos

La Ingeniería de Requerimientos consiste en establecer lo que el cliente requiere.

Un requerimiento es la especificación de una actividad o función que debe cumplir el sistema.

Tipos de Requerimientos

  • Funcionales: Describen servicios o funciones específicas.
  • No Funcionales: Son un límite o restricción en el sistema o en el proceso de desarrollo (ej. rendimiento, seguridad).

Definición, Especificación y Lectores

Fases de los Requerimientos

El proceso incluye la definición de un requerimiento, las especificaciones de un requerimiento y las especificaciones del software.

Lectores del Documento de Requerimientos (Audiencias)

Los lectores se segmentan según su nivel de detalle requerido:

  1. Nivel 1 (Alto Nivel): Gerencia cliente, usuarios finales, ingenieros de clientes, gerencia contratista, arquitectos de sistema.
  2. Nivel 2 (Intermedio): Usuarios finales, ingenieros clientes, arquitectos del sistema, desarrolladores de software.
  3. Nivel 3 (Detalle Técnico): Ingenieros clientes, arquitectos del sistema, desarrolladores de software.

Problemas y Proceso

Problemas en la Definición de Requerimientos

  • Problemas complejos.
  • Requerimientos incompletos.
  • Requerimientos inconsistentes.

Razones de Inconsistencia

Generalmente se deben a prioridades diferentes o requerimientos diferentes entre stakeholders. La solución recomendada es el prototipado para clarificar requerimientos.

Proceso de la Ingeniería de Requerimientos

  1. Estudio de factibilidad.
  2. Análisis de requerimientos.
  3. Definiciones de requerimientos.
  4. Especificación de requerimientos.

El Documento de Requerimientos (DR)

Propósito del DR

Es la declaración oficial de los requerimientos del sistema. Incluye la definición y la especificación. Describe lo que es el sistema y cómo lo hará.

Requerimientos del Documento

El DR debe cumplir con los siguientes puntos:

  • Especificaciones de la conducta externa del sistema.
  • Especificaciones de los límites de la implementación.
  • Recordar el ciclo de vida del sistema.
  • Proporcionar respuestas a un evento no esperado.

Estructura del Documento de Requerimientos

  • Introducción: Describe las necesidades de crear el sistema y sus objetivos.
  • Glosario: Define términos usados.
  • Modelos del Sistema: Define modelos que muestran los componentes del sistema y sus relaciones.
  • Definición de Requerimientos Funcionales: Define los servicios proporcionados.

Entradas relacionadas: