Contenido del curso
El software y la ingeniería
Diseño de software
Patrones de diseño
POO
Conclusiones finales
Historia y origen de la ingeniería de software
Resumen
La ingeniería de software es la disciplina que aplica un proceso sistemático y cuantificable al diseño, desarrollo y mantenimiento de software. Si te interesa entender de dónde viene este campo y por qué hoy redefine al mundo, aquí encontrarás los conceptos y personajes clave que lo hicieron posible.
¿Qué significa ingeniería y cómo se aplica al software?
Antes de hablar de software, conviene aterrizar la palabra base. Según la Universidad de Bath, en Reino Unido, engineering es el diseño, las pruebas y la construcción de máquinas, estructuras y procesos utilizando matemáticas y ciencia.
Esa raíz importa. Cuando trasladas la idea al software, el producto cambia, pero la lógica permanece: diseñas, pruebas y construyes con rigor.
¿Qué es la ingeniería de software? Según la IEEE, es la aplicación de un proceso sistemático, disciplinado y cuantificable al diseño, desarrollo, operación y mantenimiento del software.
Dentro de esa definición aparece una pieza que vas a escuchar mucho: el ciclo de vida del desarrollo de software, el nombre que se le dio a la mezcla de procesos que componen la construcción de un producto digital.
¿De dónde viene la ingeniería de software?
La historia arranca antes de que existiera la palabra software. Y empieza con una máquina hecha de engranes.
¿Quién construyó la primera computadora?
En el siglo XIX, el inglés Charles Babbage diseñó y construyó la máquina analítica, considerada por muchos la primera computadora [1:30]. Funcionaba con engranes y ruedas para realizar cálculos, pero lo más interesante está en su diseño conceptual.
Babbage contempló elementos que hoy reconoces de inmediato:
- Unidad de memoria, equivalente a la memoria RAM.
- Unidad de cálculos, equivalente al CPU.
- Unidad de entrada y salida de datos, equivalente a los periféricos.
Todo eso, pensado en una época limitada por las capacidades ingenieriles de su tiempo. Imagínate la visión.
¿Cuándo apareció por primera vez el término software engineering?
Damos un salto a agosto de 1966 [2:30]. Anthony Calvin Oettinger, presidente de la Association for Computing Machinery (ACM), utilizó el término ingeniería de software en el volumen 9 del diario de la organización.
Dos años después, en 1968, la OTAN organizó las primeras conferencias sobre ingeniería de software. Una de las ponencias, dictada por el profesor Friedrich Bauer, llevó precisamente ese título [3:00]. De una mención en un diario pasamos a una conferencia formal.
¿Por qué Margaret Hamilton es clave en esta historia?
A pesar de esas menciones tempranas, hay una persona a quien se le atribuye la acuñación real del término, porque fue ella quien empujó para que la ingeniería de software se viera como una disciplina seria.
La doctora Margaret Hamilton lideró el desarrollo del software de vuelo para el programa Apolo de la NASA, el que hizo posible que la humanidad llegara a la Luna [3:30]. El código que corría dentro del transbordador fue creado por su equipo.
¿Quién acuñó el término ingeniería de software? Margaret Hamilton, ingeniera de la NASA. Aunque otros lo mencionaron antes, ella impulsó que se reconociera como disciplina formal mientras desarrollaba el software del programa Apolo.
Su visión era clara: la ingeniería de software debía estar al mismo nivel que la ingeniería civil, la mecatrónica o la física. Una disciplina más, con su propio rigor y su propio lugar.
¿Qué conceptos clave deberías retener de esta historia?
Antes de pasar al ciclo de vida del desarrollo de software, vale la pena que tengas anclados los términos que más vas a usar:
- Ingeniería: diseño, pruebas y construcción con base en matemáticas y ciencia.
- Ingeniería de software: aplicación sistemática y cuantificable de ese proceso al software, según la IEEE.
- Ciclo de vida del desarrollo de software: el conjunto de procesos que componen la construcción de un producto.
- Máquina analítica: la primera computadora conceptual, con memoria, CPU y entrada/salida.
- ACM e IEEE: las organizaciones que ayudaron a formalizar el campo.
Con estas piezas claras, el siguiente paso será entrar de lleno al ciclo de vida del desarrollo de software.
¿Conocías esta historia? Cuéntame en los comentarios cuáles son tus personajes favoritos en la construcción de software y qué hicieron, para que aprendamos juntos un poco más sobre aquello a lo que nos dedicamos.