Produtividade de programação - Programming productivity

A produtividade de programação (também chamada de produtividade de software ou produtividade de desenvolvimento ) descreve o grau de habilidade de programadores individuais ou equipes de desenvolvimento de construir e desenvolver sistemas de software. Produtividade tradicionalmente se refere à relação entre a quantidade de software produzido e o custo gasto com ele. Aqui, a delicadeza está em encontrar uma maneira razoável de definir a quantidade de software.

Terminologia

A produtividade é um tópico importante investigado em disciplinas tão diversas como manufatura, psicologia organizacional, engenharia industrial, gestão estratégica, finanças, contabilidade, marketing e economia. Os níveis de análise incluem os níveis individual, de grupo, de divisão, organizacional e nacional [5]. Devido a essa diversidade, não há uma definição clara de produtividade e seus fatores de influência, embora as pesquisas sejam realizadas há mais de um século. Como na engenharia de software, essa falta de acordo comum sobre o que realmente constitui produtividade é percebida como um grande obstáculo para uma discussão fundamentada sobre produtividade. As seguintes definições descrevem o melhor consenso sobre a terminologia.

Produtividade

Embora não haja um consenso sobre a definição de produtividade, parece haver um acordo de que a produtividade descreve a relação entre a produção e a entrada:

Produtividade = Saída / Entrada

No entanto, nas várias disciplinas, noções diferentes e, particularmente, unidades de medida diferentes para entrada e saída podem ser encontradas. A indústria de manufatura normalmente usa uma relação direta entre o número de unidades produzidas e o número de unidades consumidas. As indústrias não manufatureiras geralmente usam horas-homem ou unidades semelhantes para permitir a comparação entre produtos e insumos.

Um acordo básico é que o significado de produtividade e os meios para medi-la variam dependendo do contexto que está sendo avaliado. Em uma empresa de manufatura, os contextos possíveis são:

  • a máquina individual ou sistema de manufatura;
  • a função de fabricação, por exemplo montagem;
  • o processo de fabricação de um único produto ou grupo de produtos relacionados;
  • a fabrica; e
  • todo o sistema de fábrica da empresa

Desde que os processos de produção clássicos sejam considerados uma métrica direta de produtividade, é simples: quantas unidades de um produto de qualidade especificada são produzidas por quais custos. Para o trabalho intelectual, a produtividade é muito mais complicada. Como medimos a produtividade de autores, cientistas ou engenheiros? Devido à crescente importância do trabalho do conhecimento (em oposição ao trabalho manual), muitos pesquisadores tentaram desenvolver meios de medição da produtividade que possam ser aplicados em um contexto não-manufatureiro. É comumente aceito que a natureza do trabalho do conhecimento difere fundamentalmente do trabalho manual e, portanto, fatores além da relação simples produção / entrada precisam ser levados em consideração, por exemplo, qualidade, oportunidade, autonomia, sucesso do projeto, satisfação do cliente e inovação. No entanto, as comunidades de pesquisa em nenhuma das disciplinas ainda foram capazes de estabelecer meios amplamente aplicáveis ​​e aceitos para medição da produtividade. O mesmo vale para uma área mais específica de produtividade de programação.

Lucratividade

Rentabilidade e desempenho estão intimamente ligados e, na verdade, são frequentemente confundidos. No entanto, como a lucratividade é geralmente definida como a relação entre receita e custo

Rentabilidade = receita / custo

Tem um escopo mais amplo do que o desempenho, ou seja, o número de fatores que influenciam a lucratividade é maior do que o número de fatores que influenciam a produtividade. Particularmente, a lucratividade pode mudar sem qualquer alteração na produtividade, por exemplo, devido a condições externas como custo ou inflação de preços. Além disso, a interdependência entre produtividade e lucratividade costuma ser atrasada, ou seja, os ganhos de produtividade raramente se refletem em ganhos de lucratividade imediatos e são mais provavelmente realizados no longo prazo.

Desempenho

O termo desempenho é ainda mais amplo do que produtividade e lucratividade e abrange uma infinidade de fatores que influenciam o sucesso de uma empresa. Conseqüentemente, instrumentos de controle de desempenho bem conhecidos, como o Balanced Scorecard , incluem a produtividade como um fator central, mas não único. Outros fatores relevantes são, por exemplo, a percepção dos clientes ou partes interessadas sobre a empresa.

Eficiência e eficácia

Eficiência e eficácia são termos que confundem ainda mais, já que muitas vezes se confundem e, além disso, eficiência costuma ser confundida com produtividade. A diferença entre eficiência e eficácia é geralmente explicada informalmente, pois eficiência é fazer as coisas certas e eficácia, fazer as coisas certas . Embora existam inúmeras outras definições, existe um certo consenso de que a eficiência se refere à utilização de recursos e influencia principalmente a entrada necessária do índice de produtividade. A eficácia, por outro lado, influencia principalmente o resultado do índice de produtividade, pois geralmente tem consequências diretas para o cliente. A eficácia pode ser definida como "a capacidade de atingir um resultado desejado".

Geralmente, presume-se que a eficiência pode ser quantificada, por exemplo, por taxas de utilização, consideravelmente mais facilmente do que a eficácia.

Qualidade

Tangen declara: "Melhorias na qualidade, além do fato de que produtos sem falhas aumentam os níveis de produção, não deveriam ser incluídas no conceito de produtividade." No entanto, a maior parte da literatura clássica em disciplinas não relacionadas a software, especialmente na área de manufatura, não discute explicitamente o papel da qualidade da produção na relação de produtividade. Trabalhos mais recentes de disciplinas não-manufatureiras têm um foco mais forte no conhecimento, escritório ou trabalho administrativo e, portanto, discutem cada vez mais o papel da qualidade com respeito à qualidade.

Drucker enfatiza a importância da qualidade para a avaliação da produtividade do trabalhador do conhecimento: "A produtividade do trabalho do conhecimento, portanto, deve visar primeiro à obtenção de qualidade - e não a qualidade mínima, mas ótima, senão máxima. Só então se pode perguntar:" Qual é o volume , a quantidade de trabalho? ""

Saari captura a importância da qualidade com sua fórmula estendida para produtividade:

Produtividade total = (qualidade e quantidade de saída) / (qualidade e quantidade de entrada)

No entanto, parece que esses esforços para incluir a qualidade na determinação da produtividade ainda não levaram a um conceito operacionalizável. Atualmente não está claro como quantificar os termos vagos “Qualidade e quantidade do produto”, bem como “Qualidade e quantidade do produto”, quanto mais calcular a proporção.

O que há de mais moderno em produtividade de programação

No desenvolvimento de software, as coisas são mais complicadas do que na produção de bens. O desenvolvimento de software é um processo de engenharia.

COCOMO II

Boehm foi um dos primeiros pesquisadores a abordar sistematicamente o campo da produtividade de software. Seu modelo de estimativa de custo COCOMO - agora COCOMO II - é o conhecimento padrão da engenharia de software. Nesse modelo, ele define um conjunto de fatores que influenciam a produtividade, como a confiabilidade exigida ou a capacidade dos analistas. Esses fatores foram amplamente reutilizados em outras abordagens de produtividade semelhantes. O resto do modelo é baseado em pontos de função e, finalmente, linhas de código de origem (LOC). As limitações do LOC como medida de produtividade são bem conhecidas.

Produtividade de software de Jones

Jones é autor de uma série de livros sobre produtividade de software. Além de várias considerações teóricas, sua principal contribuição é o fornecimento sistemático e integração de uma grande quantidade de dados relevantes para análises de produtividade. Em pelo menos dois de seus livros, ele fornece uma série de fatores de produtividade, mas também aponta que, para cada projeto, um conjunto diferente de fatores é influente. Esses fatores podem servir de base para avaliações de produtividade e para comparação com as médias industriais.

Esta é uma dessas listas:

Os 20 fatores cujos impactos quantificados em projetos de software foram determinados a partir de dados históricos são os seguintes:

  • Linguagem de programação usada
  • Tamanho do programa
  • A experiência de programadores e pessoal de design
  • A novidade dos requisitos
  • A complexidade do programa e seus dados
  • O uso de métodos de programação estruturada
  • Classe do programa ou método de distribuição
  • Tipo de programa da área de aplicação
  • Ferramentas e condições ambientais
  • Melhorar programas ou sistemas existentes
  • Manter programas ou sistemas existentes
  • Reutilizar módulos existentes e projetos padrão
  • Geradores de programa
  • Linguagens de quarta geração
  • Separação geográfica dos locais de desenvolvimento
  • Potenciais de defeito e métodos de remoção
  • Documentação (existente)
  • Prototipagem antes do início do desenvolvimento principal
  • Equipes de projeto e estruturas de organização
  • Moral e compensação do pessoal

Pontos de Função

Os pontos de função foram propostos em 1977 por Albrecht como uma medida de melhor tamanho para software do que LOC. Na medida em que é baseado na especificação do software e, portanto, visa medir o tamanho de sua funcionalidade e não o código em si. A razão é que o tamanho do código não depende apenas do tamanho da funcionalidade, mas também da capacidade do programador: melhores programadores produzirão menos código para a mesma funcionalidade. Os pontos de função passaram por várias reformulações ao longo dos anos, principalmente impulsionados pelo International Function Point User Group (IFPUG). Este grupo é grande, com mais de 1200 empresas como membros, o que mostra a aceitação bastante forte desta medida. No entanto, em muitos domínios, ainda carece de aplicação prática porque muitas vezes é concebida como aplicável apenas a sistemas de informação de negócios.

Engenharia de software baseada em valor

Vários pesquisadores propuseram a engenharia de software orientada para a economia ou baseada em valor como um paradigma importante na pesquisa futura em engenharia de software. Boehm e Huang destacam que não é importante apenas rastrear os custos em um projeto de software, mas também o valor real agregado, ou seja, o valor para o cliente. Eles explicam que é importante criar o caso de negócios de software e mantê-lo atualizado. Em essência, a engenharia de software baseada em valor se concentra no valor do cliente, medido principalmente em unidades monetárias.

Peopleware

O famoso livro Peopleware: Productive Projects and Teams, de de Marco e Lister, trouxe a importância dos fatores relacionados com as pessoas à atenção de um público mais amplo. Eles coletaram em muitos projetos de software experiências com boas e más práticas de gerenciamento que influenciam a produtividade da equipe. Eles e outros mostraram que esses são os problemas decisivos na engenharia de software, mas só foram capazes de descrevê-los de forma anedótica.

Fatores que influenciam a produtividade da programação

Provavelmente, há um grande número de fatores que influenciam a produtividade da programação de indivíduos e equipes. Por exemplo, o processo de desenvolvimento de software usado provavelmente influencia a eficácia e eficiência de uma equipe.

As personalidades dos programadores de software influenciam os estilos de codificação usados ​​que, por sua vez, influenciam a produtividade dos programadores.

Referências

Leitura adicional