Considerando como o software é desenvolvido durante um ciclo de lançamento (implementação, teste, correção de bugs, lançamento), eu estava pensando que seria possível ver algum padrão nas linhas de código que são alteradas na base de código; por exemplo, no final de um projeto, se o código se tornar mais estável, deve-se observar que menos linhas de código são modificadas por unidade de tempo.
Por exemplo, foi possível observar que, durante os primeiros seis meses do projeto, a média foi de 200 linhas de código por dia, enquanto no último mês foram 50 linhas de código por dia e durante a última semana (pouco antes dos DVDs do produto). foram enviados), nenhuma linha de código foi alterada (congelamento de código). Este é apenas um exemplo, e diferentes padrões podem surgir de acordo com o processo de desenvolvimento adotado por uma equipe específica.
De qualquer forma, existem métricas de código (alguma literatura sobre elas?) Que usem o número de linhas de código modificadas por unidade de tempo para medir a estabilidade de uma base de código? Eles são úteis para ter a sensação de que um projeto está chegando a algum lugar ou se ainda está longe de estar pronto para o lançamento? Existem ferramentas que podem extrair essas informações de um sistema de controle de versão e produzir estatísticas?
fonte
Respostas:
Uma medida que Michael Feather descreveu é " O conjunto ativo de classes ".
Ele mede o número de classes adicionadas em relação às "fechadas". O encerramento da classe descreve como:
Ele usa essas medidas para criar gráficos como este:
Quanto menor o número da diferença entre as duas linhas, melhor.
Você pode aplicar uma medida semelhante à sua base de código. É provável que o número de classes se correlacione com o número de linhas de código. Pode até ser possível estender isso para incorporar linhas de código por medida de classe, o que pode alterar a forma do gráfico se você tiver algumas grandes classes monolíticas.
fonte
Desde que exista um mapeamento relativamente consistente de recursos para as classes ou, nesse caso, sistema de arquivos, você poderá conectar algo como gource ao seu sistema de controle de versão e obter rapidamente uma noção de onde a maior parte do desenvolvimento está focada (e, portanto, quais partes do código são as mais instáveis).
Isso pressupõe que você tenha uma base de código relativamente organizada. Se a base de código for uma bola de barro, você verá essencialmente cada pequena parte sendo trabalhada devido a interdependências. Dito isto, talvez isso por si só (o agrupamento durante o trabalho em um recurso) seja uma boa indicação da qualidade da base de código.
Ele também pressupõe que sua equipe de negócios e desenvolvedores como um todo tenha alguma maneira de separar recursos no desenvolvimento (seja ramificações no controle de versão, um recurso por vez, qualquer que seja). Se, por exemplo, você estiver trabalhando em três recursos principais no mesmo ramo, esse método produzirá resultados sem sentido, porque você tem um problema maior do que a estabilidade do código em suas mãos.
Infelizmente, não tenho literatura para provar meu argumento. É baseado apenas na minha experiência de usar o gource em boas (e não tão boas) bases de código.
Se você estiver usando git ou svn e sua versão do gource for> = 0.39, é tão simples quanto executar o gource na pasta do projeto.
fonte
O uso da frequência das linhas modificadas como um indicador para a estabilidade do código é pelo menos questionável.
Inicialmente, a distribuição ao longo do tempo das linhas modificadas depende muito do modelo de gerenciamento de software do projeto. Existem grandes diferenças nos diferentes modelos de gerenciamento.
Em segundo lugar, a vítima nesta suposição não é clara - é a menor contagem de linhas modificadas causada pela estabilidade do software, ou simplesmente porque o prazo termina e os desenvolvedores decidiram não fazer algumas alterações agora, mas fazê-lo após o liberação?
Em terceiro, a maioria das linhas é modificada quando novos recursos são introduzidos. Mas o novo recurso não torna o código não estável. Depende da habilidade do desenvolvedor e da qualidade do design. Por outro lado, até erros graves podem ser corrigidos com poucas linhas alteradas - nesse caso, a estabilidade do software aumenta significativamente, mas a contagem de linhas alteradas não é muito grande.
fonte
Robustez é um termo relacionado à função correta de um conjunto de instruções, não à quantidade, verbosidade, concisão gramatical do texto usado para expressar essas instruções.
De fato, a sintaxe é importante e deve estar correta, mas qualquer coisa além disso, pois se refere à função desejada das instruções, observando as 'métricas' das instruções, é semelhante a traçar seu futuro lendo o padrão de folhas de chá na parte inferior da tela. você xícara de chá.
A robustez é medida por meio de testes. Testes unitários, testes de fumaça, testes de regressão automatizados; testes, testes, testes!
Minha resposta para sua pergunta é que você está usando a abordagem errada na busca de uma resposta para uma de robustez. É um arenque vermelho que linhas de código significam algo mais do que linhas de ocupação de código. Você só pode saber se o código faz o que você deseja fazer se testar se está fazendo o que é necessário.
Revise os equipamentos de teste adequados e evite o misticismo do código métrico.
Muitas felicidades.
fonte