1. Década de 1960:
Nace la programación estructurada, que
introduce la idea de dividir el software en
módulos funcionales y utilizar estructuras de
control como bucles y condicionales.
Década de 1970:
Se desarrolla la programación modular, donde se
enfatiza la reutilización de código y la creación de
bibliotecas de funciones.
Surge la arquitectura en capas (layered architecture),
que separa el software en capas lógicas y define
interfaces claras entre ellas.
Década de 1980:
Se populariza la programación orientada a
objetos (POO), que permite encapsular datos y
comportamientos en objetos reutilizables.
Aparece el patrón de diseño Modelo-Vista-
Controlador (MVC), que separa la lógica de
negocio, la presentación y la interacción del
usuario en tres componentes distintos.
Década de 1990:
Surge la arquitectura cliente-servidor, donde las
aplicaciones se dividen en un cliente (interfaz de usuario) y
un servidor (lógica de negocio y almacenamiento de datos).
Se desarrolla el concepto de arquitectura de tres capas, que
separa la interfaz de usuario, la lógica de negocio y la capa
de datos en componentes independientes.
historia de la arquitectura de
software: sus inicios y
fundamentos.
2. Década de 2000:
Aparece la arquitectura orientada a servicios (SOA), que
promueve la creación de aplicaciones como conjuntos de
servicios independientes y reutilizables.
Se populariza la arquitectura basada en microservicios,
donde las aplicaciones se descomponen en pequeños
servicios autónomos y escalables.
Década de 2010:
Se promueve la arquitectura sin servidor (serverless),
donde las aplicaciones se ejecutan en entornos de
computación en la nube sin la necesidad de gestionar
servidores.
Aparece la arquitectura de contenedores, con tecnologías
como Docker, que permiten empaquetar y desplegar
aplicaciones de manera eficiente y portátil.
Actualidad (2020 en adelante):
Se enfatiza la arquitectura basada en eventos y la
integración de sistemas distribuidos mediante
tecnologías como Kafka y RabbitMQ.
Se promueve la arquitectura sin código (no-
code/low-code), que permite crear aplicaciones
utilizando herramientas visuales y sin necesidad de
escribir código.
3. 1960-1970: Desarrollo Convencional
El desarrollo convencional se basaba en un
enfoque lineal y secuencial, conocido como
"cascada". Las fases del desarrollo de
software, como el análisis de requisitos, el
diseño, la codificación y las pruebas, se
realizaban en orden secuencial.
Características:
• Enfoque secuencial y rígido.
• Requisitos y diseño completos antes de la
implementación.
• Poca interacción con los usuarios finales
durante el proceso de desarrollo.
• Dificultad para adaptarse a cambios en los
requisitos.
1970-1980: Desarrollo Estructurado
El desarrollo estructurado es una metodología de
desarrollo de software que se basa en la idea de que un
programa puede descomponerse en partes más
pequeñas y manejables. En lugar de abordar el
desarrollo de software como un proceso lineal, el
enfoque estructurado se centra en la modularidad y la
organización lógica del código.
Características:
• Diseño modular basado en estructuras de control y
datos.
• Uso de diagramas de flujo y pseudocódigo para
representar la lógica del programa.
• División de un sistema en módulos más pequeños y
más manejables.
• Mayor énfasis en la planificación y el análisis antes de
la implementación.
Evolución histórica de las
metodologías de desarrollo
4. 1980-1990: Desarrollo Orientado a Objetos (OO)
El desarrollo orientado a objetos (OO) es una metodología de desarrollo de
software que se basa en el concepto de objetos, los cuales encapsulan tanto los
datos como los comportamientos relacionados en una sola entidad. En lugar de
centrarse en la estructura y la lógica del programa, el enfoque orientado a objetos
se centra en la interacción y las relaciones entre los objetos.
En el desarrollo orientado a objetos, un programa se construye mediante la
creación y manipulación de objetos. Cada objeto es una instancia de una clase,
que define la estructura y el comportamiento común a un grupo de objetos
relacionados. Las clases se utilizan como plantillas o moldes para crear objetos
con características y comportamientos específicos
Características:
• Organización del software en objetos, que encapsulan datos y
comportamientos.
• Reutilización de código mediante herencia y composición.
• Enfoque en la modularidad y la flexibilidad.
• Análisis y diseño orientado a objetos, utilizando diagramas de clases y
diagramas de secuencia.