Aqui está uma citação de um manual de treinamento em andamento sobre SLIM e estimativa de software:
Observe também que há uma correlação entre esforço e defeitos. Isso significa que, quanto mais pessoas forem atribuídas a um projeto de um determinado tamanho, mais defeitos haverá.
Esforço é pessoa-tempo (pessoa-ano, pessoa-mês) para o projeto. Defeitos é a contagem de defeitos detectados em qualquer ponto do ciclo de vida. Tamanho é definido como os casos de uso, pontos de função ou SLOC que compõem o projeto.
Isso parece contra-intuitivo, assumindo um bom processo e engenheiros capazes. Por exemplo, ter mais pessoas significa mais olhos em todos os artefatos (especificações de requisitos, projetos, código, testes). Além de ter mais olhos, minha intuição sugere que há pouca relação entre esforço e defeitos em um projeto que utiliza técnicas de qualidade apropriadas.
Não consegui encontrar nenhum documento, além daqueles sobre o modelo Putnam (que é usado pelo SLIM), que sugere qualquer tipo de relacionamento conhecido entre defeitos e esforço ou defeitos e número de pessoas em um projeto. Esse é um relacionamento conhecido e a afirmação de que "mais pessoas = mais defeitos" é válida?
fonte
Respostas:
Minha intuição é assim:
Quanto mais pessoas designadas para um projeto de determinado tamanho, maior a sobrecarga da comunicação
=> maiores as chances de mal-entendidos e todos os tipos de problemas de comunicação
=> maior o número de defeitos resultantes.
E
Bons desenvolvedores são mais raros, mais difíceis de encontrar e contratar, do que os medíocres / ruins
=> quanto mais pessoas designadas para um projeto de determinado tamanho, menor o nível médio de competência
=> maior o número de defeitos resultantes.
Mas esse pode ser apenas o meu raciocínio, não tenho evidências de apoio.
Como uma observação lateral, suas suposições enfatizadas abaixo são IMHO (infelizmente) bastante fortes, levando em conta o estado de nossa profissão:
fonte
Poderia ser apenas uma correlação. O gerenciamento tende a designar mais pessoas para ajudar nos projetos que eles consideram mais complexos, ou projetos que estão atrasados devido a muitos bugs intransigentes ou projetos que exigem muito acoplamento entre vários componentes. Se você pudesse tomar decisões gerenciais fora da mistura, suspeito que a correlação pelo menos diminuísse, se não revertesse.
fonte
Dadas as definições recentemente atualizadas de tamanho e esforço, eu sugeriria que talvez os resultados sejam devidos ao fato de que o esforço (total de horas-homem) seja realmente um estimador melhor do tamanho real do projeto do que as medidas que a fonte está usando (o esforço seria uma medida perfeita se todas as equipes e recursos da equipe forem equivalentes).
Portanto, o que realmente está acontecendo é que projetos maiores têm mais defeitos, o que não é surpreendente.
fonte
Eu não acho que você pode assumir qualquer um deles no mundo real. Quanto mais pessoas em um projeto, maior a probabilidade de você ter maçãs podres que não conseguem acompanhar e desaceleram os melhores desenvolvedores. Mesmo se você seguir as premissas, existem algumas outras coisas que atrasam os projetos e causam mais defeitos à medida que você aumenta o número de pessoas:
Na minha experiência, os efeitos negativos de projetos carregados com desenvolvedores diminuem quando o projeto é muito modular e você tem apenas 1 ou 2 pessoas por camada. Não me importo com o sistema de controle de versão que você está usando, pois ter 4 desenvolvedores todos os checkins de mesclagem automática no mesmo arquivo de uma só vez provavelmente será uma má idéia.
fonte
Há uma diferença entre correlação e causalidade; a citação parece estar dizendo que o número total de defeitos tende a ser maior nos projetos em que um número maior de engenheiros está alocado. Isso faz todo o sentido para mim, tenho certeza que o MS Windows tem mais defeitos do que os aplicativos que eu crio, mas isso não significa que meus aplicativos sejam de qualidade superior.
Para dar outro exemplo mais abstrato - se pegarmos o número total de mortes por país e correlacionarmos isso com o número total de médicos no país, tenho certeza de que poderíamos dizer "países com mais médicos tiveram mais mortes". Isso não seria porque os médicos causaram as mortes, mas sim que um grande número de médicos é indicativo de uma grande população.
fonte
Vamos deixar de lado a afirmação sobre o número de pessoas por um momento.
Observar o número de defeitos injetados como uma função do esforço pode fazer sentido, desde que você assuma que o esforço aumentado requer necessariamente um tamanho maior, pois existe uma forte correlação entre o número de defeitos e o tamanho do software.
Portanto, se você presumir que quanto mais esforço for colocado em um projeto, mais linhas de código serão gravadas, provavelmente você poderá usar o esforço como um proxy de tamanho para prever o número de defeitos. A correlação entre o tamanho (por exemplo, LOC) e o número de defeitos foi mostrada repetidamente no trabalho de Watts Humphrey, Capers Jones e outros.
Não vejo como o número de pessoas se encaixa, além de mais pessoas implica mais esforço.
Como uma observação lateral, não confunda correlação com causalidade. Embora exista uma correlação entre o tamanho e o número de defeitos injetados, o tamanho não é a causa. A causa geralmente vem de, como você apontou, problemas de pessoas e processos. Dito isto, os defeitos em função do tamanho são uma grande métrica para entender se há um problema e para medir a eficácia da mudança.
fonte
Suponho que isso seja limitado a membros da equipe de programação principal e não a uma situação em que haja especialistas como: UI, UX, DBA etc.
Eu acho que precisa ser bem gerenciado, mas isso não é fácil. Pequenas equipes compostas por desenvolvedores de qualidade podem gerenciar a si mesmas. É mais provável que grandes seções de código tenham criado alguém com menos talento.
Ter mais membros da equipe pode facilitar a divisão de tarefas. Coloque os devlopers melhores ou mais experientes nas áreas difíceis. Tire algumas das tarefas mundanas ou que não são de programação dos seus melhores desenvolvedores e deixe que os desenvolvedores juniores lidem com as interrupções. Isso exigirá mais planejamento e reflexão, mas oferece uma oportunidade para alavancar seu talento.
Existe a noção de que é melhor ter um ótimo desenvolvedor que precise adquirir uma nova habilidade do que um desenvolvedor abaixo da média que já a conhece. Isso é ótimo se você tiver tempo. Provavelmente, a razão pela qual mais desenvolvedores estão sendo atribuídos a um projeto é devido à quantidade de trabalho necessária e aos prazos. Você pode ter alguém que possa se concentrar em uma área específica e se tornar mais qualificado. É ótimo ter esse conhecimento abrangente, mas às vezes com um pouco de orientação, um desenvolvedor menor pode receber alguma instrução e segui-lo.
A realidade é que não há muitas pessoas que já gerenciaram uma grande equipe em um projeto de sucesso. Mesmo que todos sejam talentosos, é difícil para as grandes equipes se autogerenciarem. Os egos atrapalham?
fonte