As organizações de desenvolvimento de software estão actualmente sob mais pressão do que nunca. Os custos de desenvolvimento continuam a aumentar. Existe cada vez maior necessidade de colocar rapidamente produtos no mercado, dando origem a períodos de desenvolvimento acelerados. As pressões para reduzir os custos estão a ter como consequência a redução dos recursos de desenvolvimento e uma maior adopção do outsourcing. Por outro lado, as aplicações estão a tornar-se cada vez mais complexas.
Todos estes factores podem fazer com que seja difícil manter a qualidade do código e reduzir ou manter os custos. A minimização dos defeitos é uma das formas mais eficazes de manter os custos de desenvolvimento baixos, algo que é uma prioridade para qualquer organização. Uma vez que o custo da resolução dos defeitos aumenta exponencialmente à medida que se avança no ciclo de vida de desenvolvimento, torna-se crítico identificar os defeitos o mais cedo possível. Os custos de descoberta dos defeitos após a disponibilização do software são significativos, podendo ser 30 vezes superiores ao que seriam se esses defeitos fossem identificados nas fases de desenho e arquitectura.
No entanto, os custos não são a única preocupação. Se disponibilizarmos software com bugs ou com problemas de desempenho, podemos ver a reputação da organização degradar-se e perder a confiança dos clientes. Por sua vez, a perda da confiança dos clientes pode provocar uma diminuição das receitas. Como tal, é importante seguir uma abordagem proactiva para melhorar a qualidade global do código, utilizando análise estática e dinâmica.
Melhoria proactiva da qualidade do código utilizando análise estática e dinâmica
No passado, os especialistas em desenvolvimento baseavam-se nas análises de código feitas por especialistas seniores para identificarem os defeitos e melhorarem a qualidade global. Actualmente, essas análises já não são suficientes. Por exemplo, com uma inspecção visual é difícil identificar problemas de qualidade que ocorrem quando a aplicação está a correr, nomeadamente alguns problemas de memória e de desempenho. Por outro lado, não parece ser muito eficaz em termos de custos colocar especialistas em desenvolvimento seniores a gastar tempo valioso na análise de código, quando poderiam estar a trabalhar em projectos com maior valor.
Vários estudos têm demonstrado que uma grande percentagem dos custos de software é imputável à identificação e correcção de defeitos. Como tal, fará todo o sentido investir em tecnologias que possam ajudar a reduzir esses custos. Os produtos automatizados podem reduzir a quantidade de tempo gasta com as análises do código, reduzindo assim os custos de desenvolvimento e aumentando ao mesmo tempo a rapidez de disponibilização do software ao mercado. Estes produtos também identificam facilmente problemas que possam ter passado despercebidos durante uma inspecção visual, aumentando assim a qualidade global do código e, consequentemente, a satisfação dos clientes.
Uma boa abordagem à detecção dos defeitos inclui a utilização de produtos automatizados ao longo do ciclo de vida de desenvolvimento ? durante as fases em que é desenvolvido código e após a sua conclusão ? para melhorar a qualidade global. A utilização de produtos de análise estática e dinâmica permite aos especialistas em desenvolvimento melhorar a qualidade do código ao longo do ciclo de vida do desenvolvimento de software.
Os produtos de análise estática examinam o código sem executarem o programa. Aplicam um conjunto de regras ao código que ajudam a identificar problemas de qualidade do mesmo nas primeiras fases do ciclo de vida do desenvolvimento. A análise estática pode ajudar-nos a identificar e a erradicar falhas durante a fase de codificação. Desta forma, permite um processo de resolução de problemas menos oneroso.
Os produtos de análise dinâmica monitorizam os programas enquanto estão a correr, permitindo identificar problemas run-time que não podem ser detectados quando se examina o código desenvolvido.
Baseado num documento intitulado ?Minimizing code defects to improve software quality and lower development costs?, publicado no site da IBM Rational.