Evolución de la Ingeniería de Software

  • Años 50's

    Años 50's
    Se aplica al desarrollo de software el mismo proceso que al desarrollo de hardware, tipo cascada rigurosa. Las lecciones aprendidas fueron las siguientes: Buenos principios No ignorar matemáticas, ciencias de la computación, sociales, económicas y administrativas.
    Usar el método científico para aprender a través de la experiencia.
    No comprometerse demasiado antes de entender la complejidad de un proyecto Evitar
    Seguir demasiado rigurosamente el proceso de desarrollo secuencial.
  • Años 60's

    Años 60's
    Se inició la cultura del hacker en el buen sentido de la palabra, es decir experto en programación, y la del vaquero (cowboy) que hace desarrollos heroicos de última hora
    La crisis del software originalmente fue definida en términos de productividad, pero evolucionó para enfatizar la calidad
    El desarrollo de software es artesanal. Las propiedades de software, tales como: fácil de modificar, fácil de copiar, no se gasta, es invisible, fomentaron el proceso de desarrollo tipo “codifica y corrige”.
  • Años 70's

    Años 70's
    Se identifican las diferentes fases del desarrollo: requerimientos, análisis, diseño, codificación y pruebas. Se introduce la programación estructurada y métodos formales para especificar software. Se identifican principios de diseño, como modularidad, encapsulación, abstracción de tipos de datos, acoplamiento débil y alta cohesión, entre otros. Se publica el modelo de cascada y se definen los conceptos de verificación y validación.
  • Años 80's

    Años 80's
    Se busca la productividad y escalabilidad de sistemas y equipos de desarrollo. La Orientación a Objetos renace con fuerza a través de las múltiples propuestas de lenguajes de programación. Se crea el primer modelo de madurez de capacidades de procesos (SW-CMM) y los primeros estándares. Nace el concepto de Fábricas de Software y se generan las primeras herramientas para incrementar la productividad a través de la programación por el usuario, tales como 4GLs.
  • Años 90's

    Años 90's
    El paralelismo y distribución adquiere mayor importancia con respecto a procesos secuenciales. La Orientación a Objetos se extiende a las fases de análisis y diseño, se acuerda un lenguaje de modelado (UML) y se genera el primer proceso comercial de desarrollo orientado a objetos (RUP). Los diseñadores y los arquitectos de software empiezan a recaudar las mejores experiencias a través de patrones de diseño y de arquitectura El Software Libre toma fuerza y se crean los primeros ejemplos exitosos.
  • Año 2,000

    Año 2,000
    Con la creciente demanda de software en muchas organizaciones pequeñas, la necesidad de soluciones de software de bajo costo llevó al crecimiento de metodologías más simples y rápidas que desarrollaran software funcional, de los requisitos de implementación, más rápidos y más fáciles.
    El uso de prototipos rápidos evolucionó a metodologías ligeras completas como la programación extrema (XP), que intentó simplificar muchas de las áreas de la ingeniería de software.
  • Año 2010 - Hasta El Presente

    Año 2010 - Hasta El Presente
    Sistemas de software muy grandes todavía utilizan metodologías muy documentadas, con muchos volúmenes en el conjunto de documentación sin embargo, sistemas más pequeños tenían un enfoque alternativo más simple y rápido para administrar el desarrollo y mantenimiento de cálculos y algoritmos de software,
    Autonomía computacional es una visión en la cual la Inteligencia Artificial alcanza plenamente sus objetivos las máquinas se vuelven autónomas, evalúan las situaciones y determinan la mejor opción