Qual é a maneira mais interessante de descrever o processo de "Idiot Proofing" de um pedaço de software [fechado]

13

Para mim, o Idiot Proofing significa apenas garantir que o usuário não possa quebrar um pedaço de software, mesmo que tenha tentado. Por exemplo, se um valor for lido em uma caixa de texto e convertido em um dobro, se o software subjacente for à prova de idiotas, ele não será interrompido se o usuário digitar um valor que não seja o dobro.

Recentemente, escrevi um cronograma de desenvolvimento e um dos itens foi nomeado "Interface do usuário à prova de idiotas". As pessoas que estou construindo este software fingiram estar brincando ofensivas com o termo, mas posso ver onde esse termo realmente deixaria as pessoas chateadas.

Qual é a melhor maneira de dizer isso?

sooprise
fonte
23
Chame isso, ID-10T Proofing
Jarrod Nettles
2
Lol, eu percebi o 1337 enquanto pesquisava no ID-10T. me falhar ...
sooprise
13
Essa pergunta me lembra uma das minhas citações favoritas: "A programação hoje é uma corrida entre engenheiros de software que se esforçam para criar programas maiores e melhores à prova de idiotas, e o Universo tentando produzir idiotas maiores e melhores. Até agora, o Universo está ganhando. " ~ Rich Cook
KallDrexx
3
como é que é a engenharia básica?
jk.
4
"Nada pode ser feito à prova de idiotas, porque os tolos são tão malditamente engenhosos."
M.Sameer

Respostas:

27

Se você estiver incluindo a "Interface do usuário à prova de idiotas" como um item de agendamento, estará apenas tentando adicionar qualidade ao seu software posteriormente. Qualquer sistema bem projetado validará suas entradas e dará orientações claras aos usuários, como é óbvio, não é algo que é colocado na programação como um item discreto (que é então sujeito a remoção quando a crise inevitável ocorrer).

Como alternativa, se for um item discreto (sei como algumas organizações pensam sobre agendamento), a "interface do usuário à prova de idiotas" deve ser alterada para "Biblioteca de validação de entrada" e movida para a frente do agendamento.

Perada
fonte
2
+1. Se você está tentando adicionar algum tipo de validação de entrada após o fato, você já perdeu praticamente. É melhor ter como ponto de vista as especificações ", o software deve lidar com entradas inválidas em qualquer lugar". Exatamente como lidar "graciosamente" com entradas inválidas depende muito do que o software está fazendo naquele momento específico. Para interfaces de usuário muito simples (pense talvez em um caixa eletrônico), pode até ser possível impossibilitar entradas inválidas .
um CVn
14
+1. A prova de idiotas não é uma tarefa. A prova de idiotas é uma consequência do bom design.
31511 S.Lott
4
Idiota-prova é um processo contínuo - porque o universo mantém fabricação idiotas cada vez mais engenhosos
Steven A. Lowe
Embora possa parecer errado e redundante, leve em consideração que os designers de interface e os testadores beta conheciam os projetos e o design geral do software e podem simplesmente não perceber (ignorar) que algo que parece perfeitamente óbvio para eles é de fato completamente desconcertante para um usuário comum. "Testar e depurar decisões de design da interface do usuário" é como poderia ser chamado. A validação de entrada é uma coisa, fazer com que o usuário entenda o que deve ser inserido onde é outra.
SF.
Para todos os promotores: ... faça o que fizer, você sempre esquecerá algo. O software é tão complexo que ter uma equipe que torna tudo "perfeito" em um primeiro tiro é quase inatingível. É por isso que o teste é necessário. Para detectar falhas e omissões, ou mesmo coisas em que ninguém pensava. Essa "interface do usuário à prova de idiotas" é exatamente o que é necessário.
precisa saber é o seguinte
10

Validação de entrada do usuário que eu pensaria que seria um termo profissional. Não vejo nada de errado com a prova de idiotas, se usado em documentos internos.

Ben Gale
fonte
3
Você me teve em "validação de entrada do usuário". Prova de idiota é um termo não profissional, independentemente de onde é usado.
Robert Harvey
2
Faça o que fizer, não coloque por escrito.
101311 JeffO
6

Endurecimento é uma boa palavra. Se alguém perguntar, diga a eles que a primeira passagem no software geralmente é escrita para cenários ideais e, como ferramentas de aço, o software precisa ser "reforçado" para o uso cotidiano difícil por clientes reais.

Robustificação é outra boa palavra para isso - você está tornando o código robusto para os tipos de desafios que os clientes reais colocam nele.

Ambas as palavras parecem legais e industriais, não culpam os usuários ou os programadores, e entendem o assunto.


Aliás, aqui está o velho mascote de Metrowerks, Arnold, o cara que costumava nos ajudar os programadores de Mac a endurecer e a fortalecer nosso código com um forno de tratamento térmico, uma forja e uma bigorna e uma marreta pequena:

Bob Murphy
fonte
endurecimento geralmente se refere a tolerância a falhas do hardware subjacente - ou resistência a raios gama ;-) robustez pode significar um monte de coisas
Steven A. Lowe
@ Steven: Bem, sim. Mas isso é para a comunicação com o que é presumivelmente um público não técnico, e a questão é realmente sobre como "girar" a tarefa, de modo que seja palatável para essas pessoas.
Bob Murphy
isso faz sentido; o público não técnico provavelmente viu anúncios de TV para laptops "reforçados". Então, eles vão pensar que é ok para soltar o seu software 3 pés em concreto ;-)
Steven A. Lowe
@Steven: Sim, e se eles viram o mais recente comercial de laptops da Toshiba, também perceberão que, se não lhe derem tempo e recursos para fortalecer o software, isso provocará o Apocalipse Zumbi. B ^)
Bob Murphy
4

Programação defensiva

É o que eu fui ensinado. Voltar quando tivemos que talhar nossos próprios pedaços de madeira.

Se você quer ser PC, chame de programação "antecipatória".

Steven A. Lowe
fonte
4

Quando eu estava aprendendo, chamamos de prova de balas .

A maioria dos outros eufemismos que li também se aplica.

Stephen
fonte
3

Que tal um sistema ou interface do usuário "tolerante a falhas"?

Vinod R
fonte
3

"Prova idiota" deve consistir em ambos

  • projetar a interface do usuário para que seja fácil de usar e leve o usuário a inserir dados da maneira que os programadores esperam; e

  • testando a interface do usuário para determinar se a interface pode ser quebrada inserindo valores de dados inesperados.

Ambas as etapas podem aparecer razoavelmente no cronograma de desenvolvimento, onde o design é avaliado por um especialista em experiência do usuário e o código entregue é testado por um testador para garantir que dados inválidos sejam manipulados corretamente (para o que "corretamente" significa para o seu aplicativo).

Robert Harvey
fonte
Você não respondeu à pergunta que foi feita.
Robert Harvey
@ Robert - Eu acredito que sim. A melhor maneira de dizer "prova de idiota" é "revisar o design para melhorar a facilidade de uso" ou "testar se a interface manipula dados inválidos" dependendo do sentido de "prova de idiota" que você quer dizer.
Justin Caverna
OK, isso faz sentido.
Robert Harvey
2

A prova de idiotas envolve muito mais do que simples validação de entrada. Eu nem incluiria isso em sua definição.

A validação de entrada é um processo em que você limpa e valida os dados do usuário para eliminar valores ilegais / sem sentido. Isso sempre deve ser feito com qualquer informação vinda de fora do seu programa, a fim de eliminar o óbvio e também proteger-se de ataques (por exemplo, ataques de injeção de sql).

Eu consideraria a prova de idiotas um conjunto de lógicas para impedir que o usuário acidentalmente causasse grandes danos a si próprio por meios legais.

Por exemplo, fazer rmrejeitar o comando rm -rf /e fechar variantes não tem nada a ver com validação ou correção. É um comando perfeitamente válido. Infelizmente, é um comando que pode e pode eliminar todos os seus dados de todos os seus discos no Unix / Linux. A prova idiota disso rejeitaria esse comando e sugeriria rm -rf --i-really-mean-this /, ou se estiver no modo interativo, que o usuário digite uma resposta afirmativa após um aviso.

Qualquer coisa que seja destrutiva para o sistema deve ser à prova de idiotas. Qualquer coisa que possa causar constrangimento em potencial também pode ser um candidato (por exemplo, "você tem certeza de que deseja enviar este e-mail sem anexo, mesmo que tenha mencionado um no seu texto?" E "você tem certeza de que deseja enviar este e-mail para o empresa inteira? ")

A prova de idiotas é uma colaboração entre o controle de qualidade (tentando ser o melhor idiota) e o desenvolvimento (tentando antecipar todos esses cenários e projetá-los).

Quanto a um sinônimo mais amigável , posso sugerir "análise destrutiva do caminho do código" ou "ativar o feedback do usuário para operações críticas". Qualquer que seja o nome, você deve realmente iniciá-lo o mais cedo possível no processo de design.

antitônico
fonte
1

"Verificação de sanidade" tende a funcionar muito bem com bastante frequência ...

Marlon
fonte
3
Para mim, "verificação de sanidade" significa aproximadamente a mesma coisa que "afirmar": garantir que o estado interno esteja correto. Não é realmente a mesma coisa que validação de entrada externa.
Mason Wheeler
@Mason, penso nisso como verificar o estado do sistema, em todos os pontos, quanto à entrada válida que faz sentido. Por exemplo, verificar se a data de término é posterior à data de início, além de verificar se há entrada de lixo, etc. Também vejo seu ponto de vista e concordo com você.
Marlon
1

"Tratamento de erros" ou "validação de entrada" seriam outros termos que eu usaria para o que você descreve. À prova de balas seria outro termo que eu poderia ver sendo usado em alguns círculos, pois a idéia aqui é tornar o software robusto o suficiente para lidar com quase tudo. Sólido como rocha seria outra gíria que eu poderia imaginar alguém querendo usar aqui também.

JB King
fonte
1

"Prova do pior cenário possível". Porque, como desenvolvedores, todos sabemos que se isso puder ser feito, será feito . Então você só precisa estar preparado para lidar com a pior situação do seu caso com seu software.

As medidas de segurança não são apenas uma maneira de proteger os usuários contra invasões cibernéticas externas, mas também contra si mesmos. Vivemos em um mundo imperfeito com usuários imperfeitos.

user29981
fonte
1

Gold-plating é o termo educado (e com um som muito positivo) que eu uso quando falo sobre melhorar a experiência da interface do usuário final de qualquer forma (GUI ou outra).

A prova de idiotas, como você diz, é a maior parte desse processo, junto com as melhorias no design ou no fluxo de trabalho (pense no reconhecimento do feedback do usuário final).

A idéia aqui é que você possa usar esse termo livremente no ambiente de trabalho e ser visto como um processo valioso (uma vez concluído) pelo gerenciamento e pelos usuários, mesmo que demore algum tempo (e, portanto, geralmente custa algum dinheiro).

muitos outros termos relacionados a esse processo (geralmente no final do ciclo) fazem com que pareça com esse processo:

  • implica usuários (geralmente gerenciamento ;-) são burros
  • é difícil de conseguir
  • tem pouco patrimônio líquido

Ao associar o ouro ao processo (o metal geralmente equivale a "valor" em vez de "custo"), vi o processo mudar de despesa para investimento na mentalidade de alguns gerentes.

É como afirmar abertamente que, até que isso seja feito, esse pedaço de aço desajeitado ainda não é uma joia. Mas uma vez que é banhado ... então é valioso.

moliad
fonte
Vejo como esse termo funciona para seu público. Para a maioria dos gerentes, o revestimento com ouro seria a primeira coisa a cortar no projeto. Em outras palavras, as partes não necessárias.
Gilbert Le Blanc
Estranho - eu vejo o termo "revestimento de ouro" como significando que você está desperdiçando seu tempo fazendo algo que não oferece melhoria funcional . Garantir entradas válidas etc. faz melhora funcional oferta e, portanto, (pelo meu definição) não revestimento de ouro.
ChrisF
o detalhe é que o revestimento em ouro não melhora os componentes internos do software. apenas melhora o aspecto externo. Eu o uso quando não-técnicos estão envolvidos especificamente porque não se relaciona a uma parte específica do processo de final de ciclo. As pessoas entendem como, uma vez feito o revestimento de ouro, é agradável, fácil de usar e tem um valor agregado. não é apenas um pedaço de software comum.
moliad 12/07
Na minha experiência, o revestimento com ouro é normalmente usado para descrever software carregado com recursos desnecessários , como sinônimo de bloatware .
Mark Booth
Sim, fiz uma pequena pesquisa e descobri que o termo às vezes é usado dessa maneira na literatura (obrigado pelo comentário). O engraçado é que, em muitos lugares em que trabalhei, a prova de idiotas foi considerada uma prova de ouro nesse sentido (depende realmente do tipo de trabalho que eu acho).
moliad 12/07
1

Utilizando com mais frequência em relação aos processos de fabricação, mas acho que um bom ajuste é o Poka-Yoke :

"[poka yo-ke] é um termo japonês que significa" proteção contra falhas "ou" à prova de erros "

Foi originalmente descrito como baka-yoke, mas como isso significa "à prova de idiotas" (ou "à prova de idiotas"), o nome foi alterado para o mais leve poka-yoke.

De maneira mais ampla, o termo pode se referir a qualquer restrição de modelagem de comportamento projetada em um produto para evitar operação incorreta pelo usuário ".

Matt Wilko
fonte
1

Um termo comum em lojas maiores também é garantia de qualidade (QA) .

É um termo geral e vago de propósito, que você pode moldar para seu próprio significado específico dentro do seu ciclo de liberação.

moliad
fonte
0

Chamamos isso de Prova Humana. Somos todos idiotas.

Wyatt Barnett
fonte