sexta-feira, abril 27, 2007

Produtividade no desenvolvimento de software

A questão da produtividade de uma equipe de desenvolvimento é de extrema relevância para a análise de um projeto, já que ela define entre outros fatores, o seu prazo e o seu custo. Por que é tão difícil estimar com precisão o tempo de um conjunto de atividades?

Geralmente a experiência conta muito para a definição de prazos e metas reais e concretas. Porém deve haver variáveis menos subjetivas que essa para se alcançar o sucesso em um projeto.

O maior erro ao se estipular prazos é o caráter teórico da avaliação.

Sabe-se que um programador tem uma produtividade média X. Multiplica-se isso pelo número de programadores e, pronto, tem-se a produtividade do conjunto e, portanto, o tempo de projeto.

Essa abordagem apesar de simples e aparentemente lógica, não conta com a interferência de fatores cotidianos que terminam provocando atrasos, como reuniões da equipe, doenças e possíveis afastamentos de funcionários, membros que entram e que saem, além das mais diversas interações dentro do grupo. Tudo isso deve ser levado em consideração durante o processo de análise.

Outro fator que limita a fixação de prazos mais apertados é a questão do nível de complexidade do projeto. Estatísticas mostram que a produtividade para o desevolvimento de um SO, por exemplo, é cerca de duas vezes menor quando comparada com sistemas tradutores. Prestando atenção, percebe-se que projetos de grande porte têm dois fatores negativos quanto à produtividade: a própria complexidade do sistema, e o grande número de membros do grupo, que gera mais interações entre a equipe, que por sua vez diminui a produtividade geral.

A maioria dos dados relativos à produtividade existentes referem-se a projetos desenvolvidos em linguagem Assembly, nos quais ela é medida em instruções por indivíduo em um ano. Mas algumas pesquisas realizadas com linguagens de alto nível já mostram que a produtividade aumenta cerca de cinco vezes em relação à linguagens de baixo nível, já que cada linha de código em linguagem alto nível correponde, em média, a cinco instruções assembly.

Portanto, apesar de complexa, a análise de produtividade pode ser aproximada dos níveis reais a partir de estimativas mais práticas e mais concretas, levando em consideração os mais diversos fatores que limitam a produtividade da equipe. Além disso, a avaliação do uso de uma linguangem de alto nível adequada pode proporcionar níveis ainda maiores de produtividade.

2 comentários:

Heber disse...

Cara, gostei muito da ideia do seu blog, é muito parecida com a ideia do meu, pretendo acompanha-lo, tenho muito interesse em padrões de projeto e engenharia de software.

heberfa

Heber disse...

Ok! Bruno, ja coloque um link para o seu blog no meu