Boa noite,
Visito o GUJ a muito tempo como uma forma de consulta, mas esse é o meu primeiro post, então perdão se eu disser algo muito estupido :oops:
O caso é o seguinte, estou estudando métricas no desenvolvimento de software. E para mim ficou claro que devemos utiliza-lás ao máximo principalmente nos requisitos não funcionais…
Mas pensando na vida e nos código que crio surgiu a seguinte dúvida:
Eu desenvolvo sempre buscando seguir práticas e padrões, isso com o objetivo de tornar o meu código mais fácil de ser mantido.
Mas como medir se o que eu estou fazendo é realmente efetivo para tornar a “manutenabilidade” do meu sistema melhor?
Indo além… é claro que para um determinado sistema ou trecho de código você encontre pessoas que estejam mais habituadas com um “padrão” e por isso achem mais fácil entender um código com os padrões X do que com os padrões Y. Mas será possível encontrar(ou talvez já exista) uma medida para medirmos qualquer sistema e encontrarmos o quão fácil ele é de ser alterado?
Diversos requisitos não funcionais como a eficiência podem ser quantificados e medidos, mas o que me deixa mais intrigado é com relação a qualidade interna do sistema.
Por exemplo, no momento da compra de um sistema podemos testar se ele aguenta 10.000 requisições por segundo. Mas não seria interessante se pudêssemos testar a “facilidade” de alteração e customização? Existe algum padrão de mercado para isso?
Para tentar me ajudar a entender usei a norma ISO 9126 (que por sinal já caiu se não me engano) afim de quebrar o meu problema em partes, e esta norma define a manutenabilidade do seguinte modo:
"Manutenibilidade
A capacidade (ou facilidade) do produto de software ser modificado, incluindo tanto as melhorias ou extensões de funcionalidade quanto as correções de defeitos, falhas ou erros.
Suas sub-características são:
Analisabilidade identifica a facilidade em se diagnosticar eventuais problemas e identificar as causas das deficiências ou falhas;
Modificabilidade caracteriza a facilidade com que o comportamento do software pode ser modificado;
Estabilidade avalia a capacidade do software de evitar efeitos colaterais decorrentes de modificações introduzidas;
Testabilidade representa a capacidade de se testar o sistema modificado, tanto quanto as novas funcionalidades quanto as não afetadas diretamente pela modificação;" [copiado dá wikipedia]
Essa quebra me ajudou porque fica claro que podemos medir a estabilidade, por exemplo, pelo número de erros gerados em um BugTracker.
Mas e como medimos a Analisibilidade , Modificabilidade e a Testabilidade?
Obrigado!