the Mars Climate Orbiter
folcloreprogramaçãocultura de operações
A sonda de Marte perdida em 1999 porque o software de uma equipe falava em libras-força-segundo e o da outra esperava newtons-segundo.
Em 23 de setembro de 1999, o orbitador entrou na atmosfera marciana baixo demais e foi destruído: o software de solo da Lockheed Martin reportava o impulso dos propulsores em libras-força-segundo, unidades imperiais, enquanto a navegação do JPL esperava newtons-segundo, e meses de pequenos erros de trajetória se acumularam em silêncio. O relatório da NASA o transformou na parábola definitiva sobre contratos de interface. Unidades fazem parte do tipo; o universo não faz conversão implícita.
A Mars Climate Orbiter foi perdida em 23 de setembro de 1999 porque uma equipe forneceu valores de impulso dos propulsores em libras-força-segundo enquanto o software receptor esperava newtons-segundo. A sonda se aproximou muito mais baixo que o pretendido e não sobreviveu à atmosfera.
A falha interessante não são as unidades. É que essa era uma categoria de erro bem conhecida, com defesa bem conhecida, e a defesa não foi aplicada na interface entre duas organizações. Dentro de cada equipe as unidades eram consistentes e corretas; a divergência morava na passagem de bastão, que é exatamente onde a lista de verificação de ninguém rodava e todo mundo supunha que o outro lado tivesse sido explícito.
Esse padrão se generaliza muito além de sondas. Interfaces entre equipes são onde as especificações ficam por dizer, porque dentro de uma equipe o contexto compartilhado as torna invisíveis, e o custo de escrevê-las parece maior que o de supor. Grandezas tipadas que carregam suas unidades, testes de contrato explícitos nas fronteiras, e revisão focada nas passagens em vez dos componentes são as respostas, e são todas trabalho sem glamour que ninguém agenda até algo se perder.