bfpug_new.jpg (7052 bytes)Brazilian Function Point Users Group

Qual a produtividade do JAVA?

Esta pergunta está incluída aqui porque de fato ocorre muito. O importante é saber que um dado como a produtividade (média) do JAVA só faz sentido em comparações. Por exemplo, se você mediu a produtividade de um projeto cuja principal linguagem foi JAVA, pode querer saber se a mesma foi maior ou menor do que a de outros projetos realizados no mesmo ambiente. Não é adequado utilizar uma produtividade obtida junto a terceiros sem realizar medições. Feita esta ressalva, vamos ver como a pergunta acima pode ser respondida.

O banco de dados do International Software Benchmarking Standards Group (ISBSG) é uma importante fonte de dados sobre projetos. Na versão 7 do ISBSG há apenas 4 (quatro) novos desenvolvimentos, com dados confiáveis, cuja principal linguagem de programação é JAVA. As produtividades desses projetos aparecem visualmente no gráfico abaixo. O de menor produtividade está  próximo de 10 H/PF. O de pior produtividade, um pouco abaixo de 60 H/PF. Digamos que a média seja um pouco menos de 30 H/PF e a mediana, próxima de 20 H/PF. Isso não nos diz qual valor deve ser utilizado em um caso específico. Como vamos saber se o projeto que desejamos estimar está próximo do mais produtivo, da média, da mediana, ou do menos produtivo?
wpe3.jpg (9421 bytes)
O objetivo deste exemplo é mostrar que não se pode tomar uma boa decisão tendo apenas uma produtividade média. Seria preciso, também, conhecer outros atributos dos projetos, para saber por que um projeto tem a produtividade próxima de 60 H/PF, enquanto outro a tem próxima de 10 H/PF. Além disso, seria necessário saber em que faixa de produtividade a nossa organização está operando. Sem isso, o dado estatístico nos dará apenas a ilusão de que não estamos simplesmente "chutando". E, é claro, 4 projetos é uma quantidade muito, muito pequena.
Repare, no entanto, que muitas "estatísticas" de produtividade não dizem em quantos projetos as mesmas se basearam...
Vejamos o que dizem outras fontes, tais como o David Consulting Group, uma das empresas de FPA mais conhecidas e respeitadas nos EUA. No site do DCG, a produtividade é informada em Pontos de Função por Pessoa-Mês. Sabendo-se que o DCG utiliza um mês com 120 horas, essas produtividades podem ser convertidas para H/PF. Teremos então (dentre outros) os números abaixo:
Client/Server 6,7 H/PF
Web 4,4 H/PF
e-Business Web 7,5 H/PF
O JAVA deverá situar-se, possivelmente, próximo de Client/Server e e-Business Web. Como conciliar esses números com os do ISBSG? Se colocarmos todos os números citados no mesmo gráfico, teremos a próxima figura.
:
wpe7.jpg (9952 bytes)
Agora temos uma variação ainda maior. O mínimo está abaixo de 10 e o máximo continua próximo a 60. A média desceu para um número próximo a 20 e a mediana, para algo em torno de 17.
 
Se aproveitarmos o fato de JAVA e C++ serem linguagens algo semelhantes (ambas orientadas a objeto, sintaxe um pouco parecida), poderemos encontrar cerca de 20 projetos no banco de dados do ISBSG, misturando JAVA e C++. A produtividade média desses projetos ficará entre 17 e 18 H/PF.
 
Para não confundir o leitor, vamos reconhecer que a produtividade média dos projetos que utilizam JAVA deve estar entre 15 e 20 H/PF. Mas não é essa a questão.
O problema é que o seu projeto pode estar bastante distante disso, dependendo das demais características do mesmo. É por essa razão que a resposta para a pergunta "Qual a produtividade do JAVA" não deve ser dada apenas com um número. Mais uma vez, é preciso medir para ter segurança nos resultados.