lunes, 20 de noviembre de 2017

Margaret Hamilton: la inventora de la ingeniería de software

Margaret Hamilton en 1995 (Foto de Daphne Weld Nichols)
Margaret Hamilton nació en 1936 en Indiana. Hamilton se encargó del desarrollo del software de las naves del programa Apolo de la NASA, fue pionera en programación, acuñó el término de ingeniería en software y fundó su propia empresa Hamilton Technologies; todo esto en un ambiente dominado por hombres. En los últimos años ha recibido diversos reconocimientos como el premio de la NASA Space Act Reward en 2003 y la Medalla Presidencial de la Libertad en 2016 otorgada por el presidente Barack Obama.




De niña fue influenciada por su padre y por su abuelo, su padre era un poeta y filósofo mientras su abuelo era clérigo y escritor. Solía mantener largas conversaciones con su padre sobre el universo mientras que su abuelo solía explicarle los sermones que daba; ambos la apoyaron para que estudiara lo que quisiera sin importar su sexo [7]. Años después, mientras estudiaba matemáticas en el Earlham College, su profesora de matemàticas, Florence Long fue también una importante influencia; gracias a ella Hamilton planeaba estudiar matemáticas abstractas y convertirse en profesora [8].




Tras estudiar en el Earlham College, Hamilton comenzó a trabajar en proyectos que involucraban programación en 1959 bajo la tutela del profesor del MIT, Edward N. Lorenz. Durante esos años, Margaret empezó a trabajar en el sistema de defensa aéreo SAGE (sistema terrestre semiautomático de defensa aérea, por sus siglas en inglés) y comenzó a interesarse en la importancia que tenía la confiabilidad de los programas [8].

Margaret Hamilton trabajando en el proyecto SAGE, en 1962 (futurism.com)

Entre 1963 y 1964, mientras Hamilton se preparaba para estudiar un doctorado en matemáticas abstractas, se enteró que la NASA iba a empezar a trabajar con el MIT para desarrollar el software de las misiones del programa Apolo y decidió presentarse a entrevistas de trabajo para involucrarse en el programa [8]. Margaret comenzó trabajando en algoritmos que tenían que ver con las tablas de referencias lunares, en misiones no tripuladas. Después se involucró en la detección de errores, su recuperación y en la revisión de las interfaces; conforme el proyecto fue avanzando y el software fue tomado más en cuenta, Hamilton comenzó a tener una mayor relevancia y se convirtió en la encargada del software que sería instalado a bordo de la nave [9].

Margaret Hamilton junto al código del programa Apolo (MIT museum)
Margaret solía llevar a su hija de 4 años a su trabajo, un día su hija se encontraba jugando con el simulador del módulo de comando cuando activó de manera accidental el programa de prelanzamiento (llamado P01) mientras el módulo se encontraba a mitad de vuelo, lo que ocasionó que el programa se trabara. Al darse cuenta, Hamilton quiso agregar un código para evitar que eso pudiera suceder, sin embargo la idea fue desestimada por la NASA debido a que les pareció innecesario agregar un código para algo que los astronautas sabían que no tenían que hacer, así que Hamilton sólo agregó una nota en la documentación que iban a tener los astronautas advirtiéndoles que no presionaran el comando P01 a mitad de vuelo [10].



Llegó el día esperado y el Apolo 8, la segunda misión tripulada del programa, se encaminó a la Luna en diciembre de 1968. Mientras la misión se encontraba orbitando a la Luna, el astronauta Jim Lovell seleccionó el comando P01 lo que provocó que la información de navegación guardada en la computadora del módulo se borrara y que la computadora no fuera capaz de encontrar el camino de regreso; al final la solución fue que se enviara la información de navegación desde la Tierra y que se cargara en las computadoras del módulo, sin embargo este fallo pudo ser evitado si se hubiera tomado en cuenta la precaución de Hamilton [10].

Margaret Hamilton en el módulo de comando del Apolo (NASA)

Al año siguiente, durante la famosa misión Apolo 11, las previsiones de Margaret tuvieron una importancia crítica. Mientras el módulo lunar se preparaba para aterrizar se dispararon las alarmas 1201 y 1202; estas alarmas fueron diseñadas por el equipo de Margaret y les indicaban a los astronautas que la computadora encargada del aterrizaje se encontraba sobrecargada de tareas e información y que iba a enfocarse en las tareas más prioritarias para el aterrizaje. Debido a un error al hacer la verificación de los componentes del módulo antes del aterrizaje, el radar encargado de analizar el punto de llegada había sido colocado de manera errónea y estaba mandando demasiada información a la computadora encargada de realizar el aterrizaje, sin embargo, Hamilton y su equipo habían previsto esta situación y habían programado a la computadora para que le diera prioridad a las tareas más vitales para aterrizar, sin esta condición era poco probable que la computadora lograra aterrizar [11] [12].

Por estos años, Hamilton también acuñó el término de ingeniería de software para darle un mayor reconocimiento a la disciplina. En ese tiempo la programación y el desarrollo de software no eran vistos de manera tan seria como a cualquier otra ingeniería, tampoco existían programas enfocados en programación en las universidades (la programación era, en palabras de Hamilton, "visto por muchos como un arte y no como una ciencia" [7]), por lo que comenzó a darle el reconocimiento de ingeniería; al principio, Hamilton fue blanco de burlas por sus "ideas radicales", pero poco a poco la idea fue ganando adeptos y el desarrollo de software fue visto como una disciplina en sí misma.

Hamilton recibiendo la Medalla Presidencial de la Libertad en 2016 (White House)


Años más tarde, en 1986, Hamilton fundó Hamilton Technologies, con el objetivo de desarrollar programas y procesos que "maximicen la confiabilidad" y prevengan errores, para lo cual se desarrolló el USL (Lenguaje Universal de Sistemas, por sus siglas en inglés); cuyo objetivo es ofrecer un lenguaje, basado en la prevención de errores, para que los ingenieros de software puedan resolver problemas. Entre sus clientes se encuentran Boeing, IBM, Lockheed Martin y el MIT [13].





No hay comentarios:

Publicar un comentario