12 Passos para um melhor código
Quais são as melhores práticas para desenvolver um código de qualidade?
Existem diversas metodologias disponíveis para tratar desses assuntos, como o guia de desenvolvimento da OWASP e o modelo de maturidade de software OpenSAMM do Pravir Chandra, livros como o Software Security: Building Security In do Gary McGraw, entre diversas outras referências, modelos de SDLC de fabricantes, etc.
Apesar de ser extensa e efetiva, essas referências trazem muitos conceitos de segurança e, com isso, a curva de aprendizado é longa, bem como a implementação de todo SDLC. Por isso, para ao menos verificar se sua equipe está trabalhando com o mínimo de qualidade no processo de desenvolvimento, Joel Spolsky postou em seu blog um teste que em suas palavras é “irresponsável e pouco rigoroso”, porém interessante, com as seguintes perguntas:
- Você usa controle de versão dos fontes?
- Você pode fazer uma build em um passo?
- Você faz builds diariamente?
- Você tem uma base de bug e falhas?
- Você conserta os bug e falhas antes de escrever novo código?
- Você tem um cronograma atualizado?
- Você tem uma especificação?
- Os programadores tem condições de trabalho em silêncio?
- Você tem as melhores ferramentas que o dinheiro pode comprar?
- Você tem equipe de testes?
- Os novos candidatos escrevem códigos durante suas entrevistas?
- Você adota o ” teste de usabilidade corredor”? * Chamar pessoas que estão passando para testar a usabilidade do seu novo código
Se você responder “sim” para mais de 10 questões, pode-se considerar que você adota boas práticas mínimas para manter a qualidade do software, qualquer valor de 10 para baixo indica problemas com o processo. A Microsoft responde “sim” para as 12 questões e mesmo assim temos o semanal Patch Tuesday!!!
O problema é que muitas fábricas de software e equipes de desenvolvimento respondam “sim” para 2 ou 3 questões. E olha que não estamos falando de segurança no código, proteção de validação de dados contra ataques de SQL Injection e XSS, autenticação e outros controles que devem ser previstos em aplicações de forma geral.
Se precisar de ajuda para reduzir riscos em seu ambiente, entre com contato para ajudarmos a mensurar o conhecimento de sua equipe e adotar um processo de desenvolvimento seguro para sua empresa.
–Leo Cavallari