O que é produtividade de software?
Na verdade, é bem simples: produtividade é simplesmente saída ao longo do tempo.
A parte complicada, no entanto, é encontrar uma medida adequada para saídas. Saídas — pelo menos no contexto de software — são difíceis de padronizar. Na maioria dos casos, podemos pensar nessas saídas em termos de valor comercial e/ou como entregamos capacidades reconhecíveis pelo usuário.
Por que tantas empresas querem medir a produtividade do software? Isso é realmente tão importante?
Para qualquer empreendimento de software, os gerentes têm o dever de buscar quantificação e algum grau de certeza sobre custo, cronograma e escopo. Eles também buscarão meios e medidas para…
- …referência em relação a outras organizações
- …acompanhar o progresso ao longo do tempo
- …avaliar a produtividade individual e da equipe
- …usar a produtividade para determinar decisões de terceirização
- …usar a produtividade para informar decisões de priorização
Medidas gerais de produtividade
Nós tendemos a focar principalmente na produtividade do desenvolvedor, já que os desenvolvedores são geralmente os membros mais ativos e mais caros de um projeto de software. No entanto, também é útil entender a produtividade dos outros, incluindo testadores, analistas, gerentes de projeto, designers, arquitetos e qualquer outra pessoa que contribua para o sucesso desses projetos.
Critérios de uma boa métrica de produtividade de software
Infelizmente, não existe uma métrica perfeita para “saída” no trabalho de software. Portanto, temos que encontrar indicadores proxy alternativos que nos aproximem da quantificação da saída.
Idealmente, para software, queremos uma “métrica de saída” que atinja o seguinte:
- está fortemente correlacionado ao valor do negócio
- é injogável, bem como consistente, objetivo, repetível e independentemente verificável
- é independente, funcionando independentemente da linguagem de programação
- é válido para comparar um projeto com outro
- pode explicar o trabalho mais complexo atribuído a membros da equipe mais capazes
- pode ser coletado de forma barata e fácil
Como nota lateral, as métricas ideais para produtividade individual variam um pouco daquelas ideais para determinar a produtividade da equipe. Use o que funcionar melhor para seu cenário.
Classificação de métricas de software
A tabela a seguir foi produzida por Steve McConnell e é discutido nesta apresentação para classificar métricas de produtividade de software adequadas. Os pontos de função COSMIC eram menos conhecidos e o dimensionamento automatizado não estava disponível quando Steve criou esta tabela pela primeira vez. Adicionamos a coluna para pontos de função COSMIC aqui. Esta coluna extra é subjetiva e, em nossa opinião, não faz parte da avaliação original de Steve.
LOC/SM
|
FP/SM
|
PCP/SM
|
Pontos de história/SM
|
360 avaliações por pares
|
Avaliação do Gestor
|
Previsibilidade de conclusão de tarefas
|
Casos de teste aprovados
|
Taxas de defeitos
|
|
---|---|---|---|---|---|---|---|---|---|
A medição reflete verdadeiramente a produtividade | 3 | 4 | 4 | 4 | 3 | 2 | 1 | 4 | 3 |
Direta ou indiretamente é responsável por toda ou a maior parte da produção de trabalho | 4 | 4 | 4 | 5 | 5 | 5 | 2 | 4 | 3 |
Útil para medir o trabalho de não programadores | 1 | 4 | 4 | 4 | 5 | 5 | 5 | 4 | 4 |
Resiste ao “jogo” de colaboradores individuais | 2 | 5 | 5 | 4 | 3 | 3 | 4 | 4 | 5 |
Fortemente correlacionado com o valor do negócio | 2 | 3 | 4 | 4 | 3 | 4 | 2 | 4 | 3 |
Objetivo, verificável de forma independente | 4 | 4 | 5 | 3 | 2 | 2 | 4 | 4 | 4 |
As medidas têm a mesma saída, independentemente da linguagem de programação usada | 1 | 5 | 5 | 3 | 5 | 5 | 5 | 5 | 5 |
Suporta comparações pessoa a pessoa dentro de uma equipe | 3 | 4 | 4 | 4 | 5 | 4 | 4 | 4 | 4 |
Considera que as melhores pessoas recebem as tarefas mais difíceis | 2 | 4 | 5 | 4 | 5 | 5 | 1 | 5 | 2 |
Os dados podem ser coletados de forma fácil e barata | 3 | 1 | 5 | 3 | 3 | 4 | 3 | 3 | 4 |
25 | 38 | 45 | 38 | 39 | 39 | 31 | 41 | 37 | |
Classificação | 9 | 5 | 1 | 5 | 3 | 3 | 8 | 2 | 7 |
Na avaliação original de Steve, a conclusão foi uma disputa acirrada entre várias abordagens, com “Test Cases Passed” classificado como o mais alto. Agora, com o advento de uma abordagem mais simples para dimensionamento funcional (pontos de função COSMIC vs. pontos de função IFPUG) e dimensionamento automatizado, parece haver uma métrica líder clara para avaliar a produtividade: Pontos de Função CÓSMICO.
Medidas enganosas de produtividade
Embora não haja uma única métrica perfeita para o trabalho de software, algumas são mais úteis do que outras. Existem algumas métricas que provavelmente enganarão, serão abusadas ou instigarão comportamentos inúteis.
Linhas de Código (LOC)
Os desenvolvedores podem variar muito nas linhas de código escritas para qualquer funcionalidade dada. É fácil de medir, mas não necessariamente um bom medida, pois diferentes linguagens de programação exigem diferentes quantidades de codificação, e as variações entre elas podem ser vastas. Usar linhas de código como medida também pode encorajar desenvolvedores a escrever linhas supérfluas simplesmente para aumentar sua produtividade. Isso tem um efeito contraintuitivo, pois pode gerar custos adicionais de manutenção.
Pontos de história
Story Points são um proxy subjetivo e não padrão para estimativa de esforço. Alguns alegarão que eles medem a complexidade; a realidade é que, na melhor das hipóteses, eles poder dão uma indicação de dificuldade para uma tarefa específica. Em essência, essas são uma indicação de dias “ideais” para a equipe. Elas não são adequadas para trabalho contratado e não podem ser usadas para comparar uma equipe com a outra, nem um projeto com o outro. Não há aprendizado ou melhoria contínua atingível pela adoção de pontos de história.
Contagens de histórias
O tamanho da história do usuário também pode variar significativamente. Uma história pode ser uma tarefa técnica de dez minutos para um indivíduo; outra história pode exigir um mês inteiro de trabalho para uma equipe inteira. Em nossa experiência, as histórias variam de 0 CFP a 120 CFP, o que torna a contagem uma métrica inconsistente.
Outras medidas de produtividade da equipe
A avaliação de produtividade baseada em Score Card pode ser útil em algumas circunstâncias, especialmente se os valores dos cartões forem normalizados entre as equipes e escolhidos para refletir todos os critérios que a organização deseja usar.
É importante escolher critérios que se concentrem nos valores da organização (em termos de qualidade e resultados). Também é importante alinhar as equipes com os verdadeiros objetivos do negócio.
O vencedor: pontos de função COSMIC
Nossa medida de saída recomendada é Pontos de função CÓSMICOS (CFP). Eis o porquê:
- PCP está enraizado em princípios fundamentais do comportamento do software (entradas, saídas, leituras e gravações).
- O CFP é focado no usuário; ele se alinha com o que é necessário para entregar valor para o usuário.
- PCP é um proxy razoável para valor comercial.
- PCP alinha bem para esforço real.
- PCP tem uma definição para um unidade individual de tamanho.
- PCP fornece um medição de tamanho, que é o fator mais significativo na determinação custo e duração de um projeto.
- PCP permite que os gestores gerir atividades não relacionadas com o desenvolvimento, com CFP como um métrica base.
- CFP é aberto, livre e independente.
- CFPs são adequados para requisitos incompletos (ou seja, Ágil).
- CFPs são adequados para quase qualquer tipo de software.
- PCP estimativa inicial é quase totalmente automatizado (por ScopeMaster, é claro).
A medição da produtividade do desenvolvimento de software é a atividade de registrar as métricas e atributos de um empreendimento de software para fins comparativos.
Quão produtivos são nossos desenvolvedores de software?
Quer saber se sua equipe é mais produtiva do que outras equipes ou do que as normas do setor?
Você pode comparar as atividades de uma equipe com outra dentro de uma organização, o que é benchmarking interno. Comparar com outra organização semelhante é conhecido como benchmarking externo. Embora os benchmarks do setor possam ser interessantes, os benchmarks locais e internos são geralmente considerados os mais confiáveis.
Benchmarking de produtividade de desenvolvimento de software e avaliação de sua equipe
Se você tem uma ótima equipe, por que não publicar seu índice de produtividade? Isso pode ajudar você a ganhar trabalho de desenvolvimento. Tudo o que você precisa é de um conjunto de histórias de usuários de um projeto anterior, cerca de uma hora, e acesso ao ScopeMaster.
- Pegue um conjunto de requisitos de um projeto recente. Carregue-os no ScopeMaster e deixe o analisador calcular o tamanho.
- Para a calculadora de produtividade, insira o esforço total do projeto (em dias pessoais), a duração do projeto (em meses) e a remoção de defeitos que você finalmente conseguiu no projeto.
- O ScopeMaster determinará então o índice de produtividade da sua equipe.
…e é só isso!
Se você estiver acima da média (aproximadamente seis no índice), então você está no caminho para a grandeza. Se você quiser, podemos até publicar o índice de produtividade da sua equipe na nossa tabela de classificação!
Lembre-se: tenha cuidado com métricas enganosas. Spontos de referência, linhas de código, tamanhos de camisetas e dias-homem são todas técnicas jogáveis e facilmente manipuláveis para estimar tempo e esforço. Siga os métodos de dimensionamento funcional padrão ISO para obter os melhores resultados.