50 años de Ingeniería del Software
Ignacio Trejos Zelaya | TEC y Cenfotec| boletinclic@camtic.org
La Ingeniería es muy antigua y fue caracterizada hace más de 2.000 años por Vitruvio (Marcus Vitruvius Pollio) así: “La Ingeniería nace tanto de la práctica (fabrica) como de la teoría (ratiocinatio). La práctica es una facilidad mecánica, desarrollada mediante el estudio y el ejercicio. La teoría es la capacidad de describir y explicar el objeto diseñado.” [1].
Con las aisladas excepciones de genios como Arquímedes y Leonardo da Vinci, el avance de la ingeniería fue errático y casual hasta que otros genios como Galileo, Descartes, Newton, Leibniz, Euler, Gauss, Faraday, Maxwell, y sus sucesores, impulsaron el avance de las ciencias físicas y matemáticas sobre las que se cimientan las ingenierías modernas. Con el paso de los siglos y gracias al esfuerzo de muchas personas, las ciencias permiten explicar los fenómenos naturales, formular modelos de estos y han hecho posible plantear diseños de artefactos cuyas propiedades sean analizables antes de emprender su construcción.
Otras fuerzas dieron origen a las ingenierías como profesión: el afán de creación de productos útiles y seguros para los seres humanos, el asumir responsabilidades ante la sociedad por el trabajo realizado, y la necesidad de transmitir sistemáticamente los conocimientos y principios a futuros colegas.
Thomas Tredgold, en 1828, en ocasión de la fundación del Instituto de Ingenieros Civiles del Reino Unido definía así a la Ingeniería: “el arte de dirigir las grandes fuentes de poder en la Naturaleza para el uso y la conveniencia del Hombre”. Hace unos 30 años, la Enciclopædia Britannica caracterizaba así a la Ingeniería: “la aplicación de principios científicos a la conversión óptima de los recursos naturales en estructuras, máquinas, productos, procesos y sistemas para el beneficio de la Humanidad”.
La profesora Mary Shaw, informática de la Universidad Carnegie-Mellon, caracteriza la Ingeniería de esta manera: “Crear soluciones eficaces respecto del costo… La Ingeniería no es solamente acerca de la resolución de problemas; es acerca de resolver problemas con un uso económico de los recursos, incluyendo el dinero. … a problemas prácticos... La Ingeniería trata de problemas prácticos cuyas soluciones importan a gente fuera del dominio ingenieril – los clientes. … mediante la aplicación de conocimiento científico… La Ingeniería resuelve problemas de una manera particular: aplicando ciencias, matemática y análisis de diseños. … a la construcción de cosas... La Ingeniería hace énfasis en las soluciones, que usualmente son artefactos tangibles. … al servicio de la Humanidad… La Ingeniería sirve no solo al cliente inmediato, sino que desarrolla tecnología y pericia que apoya a la sociedad.”[2].
Las opciones para los estudios superiores y sistemáticos en Ingeniería comenzaron a desarrollarse, principalmente en Europa, durante el siglo 19. Los ingenieros deben poseer un genuino interés en la traducción de lo teórico a lo práctico. El ingeniero moderno aplica conocimiento teórico y científico al diseño y la construcción de artefactos de valor económico que tienen utilización práctica. El ingeniero debe madurar sus capacidades de resolución de problemas y de diseño de soluciones, que aprende durante sus estudios formales – y deberá continuar haciéndolo durante su ejercicio profesional. El fundamento teórico le permite verificar, mediante cálculos sistemáticos y antes de construir el artefacto, que el diseño satisfará las especificaciones, las restricciones técnicas y las limitaciones de recursos. Aunque varía de una jurisdicción a otra, es usual que los ingenieros adquieran responsabilidades ante los clientes y el público.
Las asociaciones profesionales de ingenieros desarrollan[3]:
- un dominio de asuntos de perdurable interés humano.
- un cuerpo codificado de conocimientos y competencias.
- un cuerpo codificado de prácticas y normas técnicas.
- normas de ética, competencia y práctica.
Se reconocen hoy múltiples especialidades de Ingeniería, que incluyen: Aeroespacial, Agrícola, Ambiental, Automática, Automotriz, Biomédica, Biotecnología, Civil, Computacional, Computadoras, Comunicaciones, Construcción, Eléctrica, Electromecánica, Electrónica, Estructural, Fundaciones y Geotecnia, Industrial, Irrigación, Mantenimiento Industrial, Manufactura, Marina, Materiales, Mecánica, Mecatrónica, Metalúrgica, Minera, Nuclear, Petrolera, de Plásticos, Producción, Química, Sanitaria, Topografía, Transporte, etc. Una de las más recientes es la Ingeniería del Software.
El software es más que programas, pues comprende datos, modelos, documentación y procedimientos operativos mediante los cuales los sistemas informáticos son útiles al ser humano. El software logra que los sistemas informáticos procesen, almacenen, recuperen, organicen y comuniquen los datos de nuestro interés. El software diferencia a muchos productos que tienen empotrado un microprocesador y está presente en cada vez más actividades humanas. Muchos productos de software son grandes, complejos y críticos.
Hoy día el software es central para las tecnologías digitales en todas sus manifestaciones, particularmente por la convergencia de las tecnologías de computación y de comunicaciones[4]. Según Marc Andreessen, “el software se está comiendo al mundo”[5]: es el fundamento para la mayoría de las transformaciones digitales que se vienen gestando en este siglo, que ha llevado a disrupciones notorias y a la invención de innovadores modelos de negocios.
El término ‘Software Engineering’ fue acuñado en la década de 1960, cuando los ingenieros de hardware del programa Apollo de la NASA reconocieron el profesionalismo con el que trabajaba el equipo de desarrollo de software liderado por Margaret Hamilton, cuyos excelentes sistemas de software se ganaron respeto… y lograron que los humanos llegaran a la Luna.
Margaret Hamilton posa con el código que su equipo del MIT creó para el programa Apollo de la NASA entre 1961 y 1969 (fuente: MIT, news.mit.edu/2016/scene-at-mit-margaret-hamilton-apollo-code-0817)
En octubre de 1968 se celebró la primera Conferencia sobre Ingeniería del Software, convocada por la OTAN[6], en Garmisch (Alemania). Los estudiosos participantes enfocaron su atención en los problemas del software y en cómo esfuerzos internacionales podrían ayudar a reducir el impacto de una perceptible ‘crisis del software’. El término ‘Ingeniería del Software’ “implicaba la necesidad de que la manufactura de software se basara en los tipos de fundamentos teóricos y disciplinas prácticas que son tradicionales en las ramas establecidas de la Ingeniería” [7].
Los participantes discutieron temas como: relación del software con el hardware de las computadoras, diseño del software, producción e implementación del software, componentes de software, distribución del software, servicio del software, confiabilidad del software, gestión de proyectos grandes de software, educación de profesionales en Ingeniería del Software y separar al software como producto diferenciado del hardware[8].
Doug McIlroy, de Bell Labs, expone el concepto de ‘componente de software’ en Garmisch, 1968 (fuente: Brian Randell, homepages.cs.ncl.ac.uk/brian.randell/NATO/N1968/LECTURE.html)
Tales cuestiones tienen aún vigencia y han motivado – por 50 años – la acelerada evolución de la investigación y de la práctica en la construcción de complejos sistemas en los cuales el software es central. Mucho se ha avanzado desde entonces. Hoy contamos con cuerpos de conocimientos, carreras universitarias, números crecientes de profesionales graduados, un sector empresarial pujante e innovador, programas de actualización profesional, conferencias técnicas y profesionales, esquemas para definir y certificar competencias profesionales, conocimiento codificado que influye la práctica profesional, estándares técnicos internacionales, así como códigos de ética y de práctica profesional con los cuales los ingenieros de software se comprometen – para hacer del análisis, la especificación, el diseño, la construcción, la verificación, la validación, la integración y el mantenimiento de sistemas, productos y servicios intensivos en software una profesión útil y respetada, que contribuye a la innovación en la mayoría de las actividades humanas – a escala global.
[1] Vitruvius. De architectura, libri decem. Parafraseado por R. L. Baber.
[2] Shaw, Mary. Prospects for an Engineering Discipline of Software. IEEE Software, noviembre, 1990.
[3] Denning, Peter. Who are we? The profession of IT. Comm. ACM, 44(2), pp. 15-19, Feb. 2001.
[4] Un teléfono celular, por ejemplo, incluye al menos un microprocesador programable. El software que lo hace operacional excede el millón de líneas de código en lenguajes de programación como C, C++, Java, Swift y otros.
[5] Andreessen, Marc. Why Software Is Eating The World. The Wall Street Journal. 20 de Agosto del 2011.
[6] OTAN = Organización del Tratado del Atlántico Norte.
[7] Naur, Peter; Randell, Brian (eds.). Software Engineering: Report on a Conference Sponsored by the NATO Science Committee (Garmisch, Alemania, Oct. 7–11, 1968). Organización del Tratado del Atlántico Norte, 1969.
[8] Fue en 1969 que IBM separó la venta del software respecto del hardware y comenzó a crear esquemas de licenciamiento y actualización de versiones.
Compartir
NOTICIAS
Entradas recientes
- Contratación administrativa | SICOP 15 al 21 de setiembre del 2023
- Contratación administrativa | La Gaceta 15 al 21 de setiembre del 2023
- Expertos analizaron aprovechamiento responsable de la Inteligencia Artificial en Costa Rica
- AsoBlockchain realizará el TicoBlockchain 2023 en próximo noviembre
- Nueva encuesta de OMPI revela percepciones y conocimiento de la Propiedad Intelectual en el mundo