O software espacial não é uma magia arcana. Você ainda está usando 0 e 1, não 1 e 3. Portanto, provavelmente não há nenhum fator relevante na descrição do que está acontecendo no desenvolvimento de software.
Algumas pequenas diferenças que vêm à mente no momento são:
- Extremamente orientado a processos.
- O software espacial sempre terá cronômetros de watchdog de software e hardware.
- Todo sistema espacial em que trabalhei era um sistema de tempo real difícil.
- Você simula (com grande precisão) cada ator externo ao sistema. Isso geralmente envolve a construção de hardware personalizado (às vezes realmente caro) que é usado apenas para testes.
- Você gasta enormes esforços e gastos fazendo testes formais.
- O cliente (geralmente JPL) está extremamente envolvido no processo de teste.
- Você geralmente usa compiladores e ambientes de desenvolvimento antigos e conhecidos, em vez de novos.
- Codifique resenhas, revisões de código e revisões de código.
- É melhor você se sentir confortável em alternar entre os mundos de hardware e software. Você não precisa saber como projetar o hardware, mas precisa saber como ele funciona.
- Uso extensivo de equipamentos de teste, como osciloscópios, analisadores lógicos, sintetizadores e analisadores de espectro.
- Pelo menos 3 locais para armazenar o programa de aplicativo. O padrão é gravado na ROM. Isso nunca vai mudar. Os outros 2 são para a versão atual e a próxima / última versão.
- A análise de falhas (MTBF) é realmente importante.
- Sistemas redundantes e planos de failover para os componentes críticos.