O Apollo Guidance Computer ou O Nascimento da Engenharia de Software
Introdução ou O Apollo Guidance Computer
A jornada humana rumo à Lua é uma das conquistas mais marcantes da história. No centro desta odisseia espacial, o Apollo Guidance Computer (AGC) desempenhou um papel crucial. Este computador foi projetado para navegar, guiar e controlar a espaçonave, e sua operação correta era essencial para o sucesso da missão.
O sucesso da missão, não foi apenas uma façanha de engenharia aeroespacial, mas também marcou o nascimento da engenharia de software, a pratica que iria e engolir o mundo menos de 50 anos depois. Margaret Hamilton foi a resposável por liderar o desenvolvimento do software para o AGC. Este trabalho a qualificou como a primeira pessoa Engnheira de Software do planeta, e talvez de nossa Galaxia.
Quando Margaret se juntou ao MIT Instrumentation Laboratory, que colaborava com a NASA no programa Apollo, seu titúlo era de System Engineer. A engenharia de software como conhecemos hoje não existia. Naquela época, a programação era vista mais como uma ciência matemática do que uma prática de engenharia. Hamilton mais tarde cunhou o termo "Engenharia de Software" e se tornou então a Líder de Engenharia de Software do Programa Apollo.
Desenvolvimento Paralelo de Software e Hardware
Nesta empreitada, a equipe de desenvolvimento enfrentou e superou desafios sem precedentes, tanto em software quanto em hardware. Em termos de hardware um avanço significativo foi o uso de semicondutores para criar um dos primeiros computadores altamente integrados do mundo. Essa inovação não apenas economizou espaço e reduziu o peso - fatores críticos em viagens espaciais - mas também aumentou a confiabilidade e a eficiência do sistema.
O parte física do AGC estava sendo desenvolvido simultaneamente por outra equipe no mesmo laboratório. Uma arquitetura de conjunto de instruções (ISA) foi criada especificamente para ele. Além disse a parte logíca foi salva em uma memória ROM (Read-Only Memory) única, feita de ímãs e cordas de cobre especialmente projetada para garantir a persistência do programa durante a viagem espacial. Esta memória ROM tinha uma capacidade de 32 mil palavras de 15 bytes. Um pouco menos de 64KB. Se parece pouca coisa, aqui esta o software impresso ao lado de Margaret.
Construção de um Firmware e um Scheduler
A primeira tarefa crucial foi construir um software de plataforma básico. Esta camada de abstração desempenhava um papel crucial ao abstrair as complexidades do hardware, permitindo que o software interagisse com os componentes físicos de maneira simplificada. Isso incluía a leitura de entradas de sensores e do teclado, exibição de dados na tela e o controle de atuadores.
Após esta fase, a equipe enfrentou o desafio de desenvolver um executor eficiente. O escalonador de tarefas é vital para alocar e gerenciar diferentes tarefas que precisavam ser executadas dentro de restrições de tempo específicas. Dada a natureza crítica das missões Apollo, o scheduler do AGC tinha que ser extremamente confiável, garantindo que todas as tarefas essenciais fossem executadas no tempo certo sem falhas.
Gerenciamento de Link de Dados e Atualizações de Software à Distância
Outra função do AGC era gerenciar o link de dados para trocar informações com centro de controle de forma contínua e essencial para o sucesso das missões Apollo. A equipe de Hamilton desenvolveu um sistema que não apenas transmitia dados vitais de telemetria, mas também recebia comandos e atualizações da Terra, uma façanha tecnológica notável para a época. Mesmo com uma memória RAM limitada a 2kb, o AGC podia ser atualizado durante a missão ou capacidade de receber atualizações de software over the air.
Desenvolvimento da HMI ou UX Old School
A Human Machine Interface do AGC foi uma das primeiras do seu tipo, projetada para fornecer aos astronautas informações cruciais de maneira clara e acessível. Este sistema fornecia alertas e indicadores críticos sobre o funcionamento e a integridade dos sistemas da nave, permitindo aos astronautas monitorar e responder prontamente a qualquer condição anormal ou emergencial.
O teclado do AGC era igualmente inovador. Com combinações específicas de teclas e códigos, os astronautas podiam executar manobras complexas, como a inserção em órbita lunar, correções de curso ou início do pouso lunar. Cada uma destas manobras estava vinculado a algoritmos pre-programados no software do AGC.
Criação de uma Linguagem de Alto Nível e uma Máquina Virtual
A equipe também projetou um compilador/interpretador/runtime/vm para uma linguagem de alto nível, o que foi uma inovação significativa. Esta abstração foi especialmente projetada para implementar procedimentos complexos de navegação espacial. Permitiando incorporar pseudo-instruções complexas como a multiplicação de matrizes em sua linguagem de assembly.
Com estas instruções foi implmentado um algoritmo sofisticado de controle que envolvia a resolução de várias equações diferenciais, necessárias para calcular trajetórias, monitorar a posição da nave e atuar nas superficies de controle - afim de executar as manobras com precisão.
Tudo isso foi realizado sob as exigências de um dos ambientes mais hostis e desafiadores conhecidos pelo homem - o espaço.
Conclusão ou O Nascimento da Engenharia de Software
O trabalho pioneiro de Margaret Hamilton e sua equipe no Apollo Guidance Computer não foi apenas um triunfo para as missões espaciais da NASA; foi, mais significativamente, a alvorada da engenharia de software. Ao enfrentar e superar desafios sem precedentes no desenvolvimento de software para o AGC, Hamilton efetivamente criou o primeiro processo de desenvolvimento de software rigoroso e sistematizado, estabelecendo as linhas bases para a engenharia de software.
Margaret Hamilton não apenas liderou a criação de um software capaz de levar a humanidade a Lua, mas também pavimentou o caminho para um futuro onde o software se tornaria uma parte integrante de quase todos os aspectos da vida humana. Sua visão e dedicação transformaram a prática de programação em uma verdadeira disciplina de engenharia, com processos, padrões e uma estrutura que continua a evoluir e a influenciar incontáveisaspectos do nosso mundo moderno.
Espero que tenham achado a história do Apollo Guidance Computer tão fascinante quanto eu. Para aqueles interessados em explorar mais sobre este tópio, recomendo assistir este vídeo ou este.
Como sempre agredeço quaisquer dúvidas, sugestões ou correções - embora faça meu melhor para não falar bobagem, tudo que você leu aqui é mentira!
Um abraço e bons estudos!