Programação defensiva

  • Published on
    05-Jul-2015

  • View
    121

  • Download
    0

Embed Size (px)

DESCRIPTION

Abordagem da programao defensiva e suas forma de aplicao.

Transcript

<ul><li> 1. Programao DefensivaFelypeTabosa, 7 semestre, Engenharia de SoftwareKayo Rayner, 5 semestre, Engenharia de Software </li></ul> <p> 2. RefernciasCODE COMPLETE, 2 EDIO. McConnell, Steve.Exemplo de cdigo em programao defensiva. http://imasters.com.br/desenvolvimento/a-programacao-defensiva- merece-um-nome-tao-ruim/ 3. Origem da programao defensivaOrigina-se no conceito de direo defensiva do automobilismo que busca evitar acidentes atravs de uma conduta de direo de automveis antecipando e buscando evitar possveis situaes de acidentes. 4. O que programao defensiva?No "O software faz, portanto funciona". a maneira de programar tentando prevenir que erros afetem o sistema. entender que seu cdigo no seguro o suficiente e que mesmo aps manutenes o cdigo continuar a ser inseguro. 5. O que programao defensiva?"Um homem prevenido vale por dois"."Seja uma pessoa prevenida, esteja sempre preparado para acontecimentos inesperados Johnny De CarliAquele que se empenha a resolver as dificuldades resolve-as antes que elas surjam. Aquele que se ultrapassa a vencer os inimigos triunfa antes que as suas ameaas se concretizem. Sun Tzu-A arte da guerra. 6. Do que devemos proteger o cdigo?Entradas invlidas.Eventos que "nunca aconteceroErros de outros programadores. 7. Protegendo o programa de entradas invlidasVerifique os valores de todos osdados de fontes externas.Verifique os valores de todos osparmetros de entrada da rotinaDecida como ir tratar deentradas incorretas. 8. "Aproveite bem as pequenas coisas; algum dia voc vai descobrir que elas eram grandes. Robert Brault." As grandes coisas no so feitas por impulso, mas atravs de uma srie de pequenas coisas acumuladas. Vincent van Gogh."As pequenas coisas fazem toda a diferena". 9. Assertivas um cdigo usado durante o desenvolvimento(normalmente uma rotina ou uma macro) que permite a um programa fazer sua prpria verificao enquanto executado.Assertivas so especialmente teis em programas grandes e complexos, e em programas de alta confiabilidade. 10. Assertiva 11. As assertivas podem ser usadas pra verificar suposies como as seguintes:Se o valor de um parmetro de entrada(ou sada) cai dentro de seu intervalo esperado.Se um arquivo ou fluxo est aberto(ou fechado) quando uma rotincomea a ser executada(ou quando ela acaba de ser executada).Se um arquivo ou fluxo esta no incio(ou no fim) quando uma rotina comea a ser executada(ou quando ela acaba de ser executada).-Se um ponteiro no-nulo.-Se um arrayou outro continer passado para uma rotina pode conter pelo menos um nmero X de elementos de dados.-Se uma tabela foi inicializada para conter valores reais. 12. Exemplo em C++ de uma macro de assertiva 13. Diretrizes para uso de assertivasUse cdigo de tratamento de erro para as condies que voc espera que ocorram; use assertivas para as condies que nunca devem ocorrerEvite colocar cdigo executvel em assertivas 14. -Use assertivas para documentar e verificar pr-condies e ps-condies 15. Para cdigo altamente robusto, faa uma assertiva... 16. ... E depois trate o erro de qualquer maneira 17. Tcnicas de tratamento de erroAs assertivas so usadas para tratar de erros que nunca devem ocorrer no cdigo. As tcnicas de tratamento de erro so usadas para tratar de erros esperados. 18. Tcnicas de tratamento de erroTcnicas de tratamento de erro:-Retornar um valor neutro-Substituir pelos prximos dados vlidos-Retornar a mesma resposta da vez anterior-Substituir pelo valor vlido mais prximo-Registrar uma mensagem de alerta em um arquivo de log-Retornar um cdigo de erro-Configurar um valor de uma variavelde status-Retornar o status como valor de retorno da funo-lanar uma exceusando o mecanismo de exceo interno da linguaguem 19. ExceesAs excees so um meio especfico pelo qual o cdigo pode passar erros ou eventos excepcionais ao cdigo que o chamou.A estrutura bsica de uma exceo que uma rotina usa throwpara lanar um objeto de exceo.Excees quando usadas com sabedoria reduzem a complexidade porem quando usadas imprudentemente podem tornar o cdigo quase impossvel de seguir. 20. Excees-Use excees para notificar outras partes do programa sobre erros que no devem ser ignorados-Lance uma exceo somente para as condies que sejam realmente excepcionais-No use uma exceo para se eximir da responsabilidade-Evite lanar excees em construtores e destrutores, a no ser que voc as capture no mesmo lugar-Lance excees no nvel de abstrao correto 21. Excees 22. Excees-Inclua na mensagem de exceo todas as informaes que levam exceo-Evite blocos cacthvazios 23. ExceesConhea as excees que seu cdigo de biblioteca lana-Considere a construo de um relator de exceo centralizado 24. Problemas com dados de entradaDados sujos.Dados em limite de reas seguras 25. SoluoVerificar a validade dos dados que entram em parte de risco do sistema.Utiliza barricadas no seu programa.Converter os dados de entrada, assim que possvel. 26. Defenda seu programa com barricada 27. O que defender com barricadas evitar que dados sujos, atrapalhem o funcionamento total do software, criar mecanismos(classes de validao) que detectem esses dados e os trate antes de serem utilizados(classes internas). 28. Auxiliares de depuraoEm programao defensiva, utilizar os auxiliares de depurao, ajuda bastante na busca e deteco de erro. 29. Com o auxiliar fica fcil identificar 30. Verso de: produo X desenvolvimentoProgramadores iniciantes, tendem a se limitar na verso de produo. Isso ocasiona problemas. Pois eles devem saber que as duas verses so diferentes. A verso de produo deve ser executada rpido a outra pode ser lenta.Deve-se utilizar meios na verso de desenvolvimento que se detecte erros mais facilmente. 31. Saia da defensiva, v para o ataque 32. Como atacar corretamenteNo permitir que programadores habituem-se a apenas pressionar o entra e escape do problema conhecidoPreencha toda a memria e descubra erros para alocao de memrias.E como no futebol, sabemos que a boa defesa o bom ataque. E se voc recuar na identificao dos erros, eles iro aparecer para o cliente. 33. Planeje e acerte 34. Como se planejar e evitar duplicaes ou erros?Utilize ferramentas de controle de versoFerramentas internas como a Ant(ferramentas para compilar, montar, testar e executar).Crie seus pr-processadores.Tutorial de como utilizar o Ant 35. Mas afinal, o quanto de programao defensiva deve ser deixada no cdigo? 36. A resposta...Um dos paradoxos da programao defensiva que, durante o desenvolvimento, voc gostaria que um erro fosse perceptvel voc preferiria irritar-se com ele do que correr o risco de no perceb-lo. No entanto, durante a produo, voc preferiria que o erro fosse o mais discreto possvel. 37. ... Continuao. Veja tcnicas sugeridasMantenha cdigo que identifica erros importanteEm quais reas do seu programa, permitido a existncia de erros no- detectados e os locais que no deve.Remova o cdigo que identifica erro simplesRegistre os erros em arquivos de Logs. Em uma aplicao a parte grfica aceitvel algum erro, o que no aceitvel erros de clculos., a partir dos dados externosRemova cdigo que resulta em falhas sriasFaa com que o programa pare de rodar, imprima mensagem de errosegera um log para enviar para o suporte. 38. Mas at quando ser defensivo na programao defensiva? 39. RespostaVoc dever planejar em quais pontos utilizar a programao defensiva. Como j dito, na programao defensiva voc ir produzir cdigo para utilizar seu prprio cdigo e isso poder causar lentido caso muito cdigo defensivo seja criado-no programa. Imagino como em um jogo de futebol, o tcnico no poder colocar 8 jogadores para defender o lado esquerdo do campo, por conta de um craque do outro time, pois o lado direito ir ficar desprotegido e poder perder a partida. Assim na programao, voc deve saber dosar as reas para incluso da programao defensiva. </p>