Pergunta

Na Toyota fabricação de linhas eles sempre sabem o caminho de uma parte ter viajado. Só assim eles podem ter certeza que eles podem corrigi-lo de algo der errado. É este o aplicável em software também?

Todas as mensagens de erro devem me dizer exatamente o caminho que eles percorreram. Alguns fazem, as mensagens de erro com rastreamento de pilha. Será esta uma interpretação correta? Poderia ser usado em algum outro lugar?

Ok, aqui é o podcast. Eu acho que é interessante

http://itc.conversationsnetwork.org/shows/detail3798.html

Foi útil?

Solução

A idéia boa sempre que possível. Infelizmente, geralmente é proibitivamente difícil manter o controle de toda a história do estado da máquina. Você simplesmente não pode marcar cada estrutura de dados com o local onde você tem que partir, e todo o estado de que objeto. Você pode ser capaz de armazenar apenas os eventos externos e em que forma reproduzir onde tudo veio.

Alguns exemplos:

Eu fiz o trabalho em um projeto onde era possível e isso ajudou imensamente. Quando estávamos chegando perto de transporte, e ficando sem erros para corrigir, teríamos o nosso jogo em "modo de zero jogadores", onde o computador se reproduzir repetidamente em si toda a noite com todas as variações de personagens e locais. Se ele afirmou, seria exibir a chave aleatória que começou a partida. Quando nós viemos para o trabalho na manhã nós escrever o para baixo chave de nossa tela (há geralmente era um) e iniciá-lo novamente usando essa chave. Então nós apenas vê-lo até que o assert subiu, e segui-lo para baixo. O importante é que poderíamos recriar todas as entradas originais que levou ao erro e execute novamente quantas vezes como queríamos, mesmo depois de recompilações (dentro de limites ... o número de buscas do gerador de números aleatórios não poderia ser alterado , mas que teve uma RNG separado para o material não-jogo como fx visual). Isso só funcionou porque cada jogo começou após uma reinicialização quente e levou apenas uma pequena quantidade de dados como entrada.

Ouvi dizer que Bungie usou um método semelhante para tentar descobrir má geometria em seus níveis de Halo. Eles iriam definir os kits de desenvolvimento em execução durante a noite em um modo especial onde o protagonista indestrutível iria mover e saltar aleatoriamente. Na parte da manhã eles olhar e ver se ele ficou preso na geometria em algum local onde ele não podia sair. Pode ter havido granadas envolvidos também.

Em outro projeto que realmente conectado toda a interação do usuário com um timestamp para que pudéssemos reproduzi-la. Isso funciona muito bem se você pode, mas a maioria das pessoas têm interações com um DB mudando cujo estado inteiro pode não ser armazenada tão facilmente.

Outras dicas

É menos vital com software. Se algo der errado no software, normalmente você pode reproduzir a falha e analisá-lo em cativeiro. Mesmo que isso só acontece 1 vez em 1000, muitas vezes você pode ligar todo o registro e executá-lo 1000 vezes (um simples ensaio de impregnação).

Isso é muito mais caro e em uma linha de fabricação demorada, ao ponto de ser impossível.

Tendo como muita informação disponível quanto possível, pela primeira vez se der errado não é uma coisa ruim, mas não é tão importante para mim, pois é a Toyota.

Esta é uma boa abordagem. Mas esteja ciente de que você não deve excesso de fazê-logging. Caso contrário, você não poderia encontrar as informações interessantes em todo o ruído, e reduz o desempenho geral (criação do objeto, por exemplo, anônimo, dependendo do idioma).

A produção de mensagens de erro com um rastreamento de pilha completo é normalmente más práticas de segurança.
Por outro lado, e mais em linha com a Toyota de intenções, cada módulo desenvolvido deve ser rastreada até o programador original (s) - e eles devem ser responsabilizados por trabalho de má qualidade, correções de bugs, falhas de segurança, etc. Não para fins disciplinares , mas ambos manutenção e educação, se necessário. E talvez para bônus, na situação contrária ...; -)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top