¿Qué es la productividad del software?

Esencialmente es simple, se produce con el tiempo.

Productividad = Resultados/Tiempo

Sin embargo, la parte complicada es encontrar una medida adecuada para los resultados. Los resultados en el contexto del software son difíciles de estandarizar. En la mayoría de los casos, podemos pensar en el resultado de un esfuerzo de software como valor comercial y/o capacidades entregadas reconocibles por el usuario.

Por qué muchas empresas quieren medir la productividad del software

Los gerentes tienen el deber de buscar cuantificación y cierta certeza sobre el costo, el cronograma y el alcance de una empresa de software en particular. También buscarán medios y medidas para:

  • Punto de referencia frente a otras organizaciones
  • Seguimiento del progreso a lo largo del tiempo
  • Evaluar la productividad individual y del equipo.
  • Utilice la productividad para determinar las decisiones de deslocalización
  • Utilice la productividad para informar las decisiones de priorización

Medidas generales de productividad

Nos centramos principalmente en la productividad de los desarrolladores, ya que los desarrolladores tienden a hacer más y a costar más en un proyecto de software. Pero también es útil para comprender la productividad de otras personas involucradas, incluidos evaluadores, analistas, gerentes de proyectos, diseñadores, arquitectos y otras personas involucradas en proyectos de software.

Criterios de una buena métrica de productividad del software

No existe una métrica perfecta para el “resultado” del trabajo de software, por lo que tenemos que encontrar indicadores sustitutos alternativos que puedan ayudarnos a acercarnos a cuantificar el “resultado”.

Idealmente, para el software, queremos una "métrica de salida" que logre lo siguiente:

  • Se correlaciona fuertemente con el valor del negocio.
  • Es imposible de reproducir y consistente, objetivo, repetible y verificable de forma independiente.
  • es independiente independientemente del lenguaje de programación
  • es válido para comparar un proyecto con otro.
  • puede dar cuenta del trabajo más complejo que se asigna a miembros más capaces del equipo
  • que se pueden recoger de forma económica y sencilla.

Tenga en cuenta que las métricas ideales para la productividad individual varían ligeramente de las ideales para determinar la productividad del equipo.

Clasificación de métricas de software

La siguiente tabla fue elaborada por Steve McConnell y se analiza en esta presentación. para clasificar las métricas de productividad del software adecuadas. Los puntos de función COSMIC eran menos conocidos y el dimensionamiento automatizado no estaba disponible cuando Steve creó esta tabla por primera vez. He agregado la columna para puntos de función COSMIC. Esta columna adicional es subjetiva y, en nuestra opinión, no forma parte de la evaluación original de Steve.

LOC/SM
FP/SM
PPC/SM
Puntos de historia/SM
Revisiones de pares 360
Evaluación del Gerente
Previsibilidad de finalización de tareas
Casos de prueba aprobados
Tasas de defectos
La medición refleja verdaderamente la productividad 3 4 4 4 3 2 1 4 3
Representa directa o indirectamente toda o la mayor parte de la producción laboral. 4 4 4 5 5 5 2 4 3
Útil para medir el trabajo de no programadores. 1 4 4 4 5 5 5 4 4
Se resiste al "juego" de los contribuyentes individuales. 2 5 5 4 3 3 4 4 5
Fuertemente correlacionado con el valor del negocio. 2 3 4 4 3 4 2 4 3
Objetivo, verificable independientemente 4 4 5 3 2 2 4 4 4
Las medidas generan el mismo resultado independientemente del lenguaje de programación utilizado. 1 5 5 3 5 5 5 5 5
Admite comparaciones persona a persona dentro de un equipo 3 4 4 4 5 4 4 4 4
Cuentas para las mejores personas que obtienen las tareas más difíciles 2 4 5 4 5 5 1 5 2
Los datos se pueden recopilar de forma fácil y económica 3 1 5 3 3 4 3 3 4
25 38 45 38 39 39 31 41 37
Rango 9 5 1 5 3 3 8 2 7

En la evaluación original de Steve, la conclusión fue muy reñida entre varios enfoques, siendo “Casos de prueba aprobados” el más alto. Ahora, con la llegada de a) un enfoque más simple para el dimensionamiento funcional (puntos de función COSMIC frente a puntos de función IFPUG) yb) dimensionamiento automatizado, parece haber una métrica líder clara para evaluar la productividad: los puntos de función COSMIC.

Medidas de productividad engañosas

No existe una única métrica perfecta para el trabajo del software, pero hay algunas que son útiles y válidas. También hay algunos que probablemente induzcan a error, sean objeto de abuso o instiguen un comportamiento inútil.

Líneas de código

La medida de productividad aquí es la cantidad de líneas de código escritas a lo largo del tiempo. Dado que diferentes desarrolladores pueden variar 10 veces el número de líneas de código para una funcionalidad determinada, en el mejor de los casos, el LOC entregado a lo largo del tiempo solo puede ser una aproximación. Es fácil de medir pero no es necesariamente una buena medida. Los diferentes lenguajes de programación requieren diferentes números de líneas de código y varían significativamente de un lenguaje de programación a otro. El uso de líneas de código también puede alentar a los desarrolladores a escribir líneas adicionales superfluas, sólo para ser clasificados como "productivos". Esto tiene el efecto contrario al previsto, ya que puede generar costes de mantenimiento adicionales.

Puntos de la historia

Los Story Points son un indicador subjetivo y no estándar para la estimación del esfuerzo. Algunos afirmarán que “miden” la complejidad. En el mejor de los casos, pueden dar una indicación de la dificultad de una tarea en particular. En esencia, se trata de una indicación de los “días ideales del personal”. Estos no son adecuados para trabajos por contrato y no se pueden utilizar para comparar un equipo con el siguiente ni un proyecto con el siguiente. No se puede lograr ningún “aprendizaje” o “mejora continua” adoptando puntos de la historia.

La historia cuenta

El tamaño de la historia de usuario puede variar significativamente, ya sea que estime el tamaño en puntos de función COSMIC o en días de personal ideales. Una historia puede ser una tarea técnica de 10 minutos, mientras que otra historia puede requerir un mes entero de trabajo por parte del equipo. Según nuestra experiencia, las historias varían en tamaño desde 0 CFP hasta 120 CFP.

Otras medidas de productividad del equipo

La evaluación de la productividad basada en tarjetas de puntuación puede ser útil en algunas circunstancias, especialmente si los valores de las tarjetas están normalizados entre los equipos y se eligen para reflejar todos los criterios que la organización desea utilizar.

Es importante elegir criterios que se centren en los valores de la organización (de calidad y resultados). También es importante alinear los equipos con los verdaderos objetivos del negocio.

Recomendación

Puntos de función CÓSMICA

Nuestra medida de producción recomendada son los puntos de función COSMIC (CFP). Nuestras razones para esta recomendación son:

  1. La CFP tiene sus raíces en los principios fundamentales del comportamiento del software (entradas, salidas, lecturas y escrituras).
  2. CFP está centrado en el usuario: se alinea con lo que se necesita para ofrecer valor al usuario.
  3. La CFP es un indicador razonable del valor empresarial.
  4. La PPC se alinea muy bien con el esfuerzo real.
  5. CFP tiene una definición para una unidad de tamaño individual.
  6. La CFP proporciona una medida del tamaño, que es el factor más importante para determinar el costo y la duración de un proyecto.
  7. La CFP permite a los gerentes gestionar actividades que no son de desarrollo utilizando la CFP también como métrica base.
  8. La CFP es abierta, gratuita e independiente.
  9. Los CFP se adaptan a requisitos incompletos (es decir, ágiles)
  10. Los CFP se adaptan a casi cualquier tipo de software
  11. La estimación temprana de la PPC está mayoritariamente automatizada (mediante ScopeMaster®)

La medición de la productividad del desarrollo de software es la actividad de registrar las métricas y atributos de un esfuerzo de software con fines comparativos.

CFP es una forma confiable de evaluar la productividad del software

¿Qué tan productivos son nuestros desarrolladores de software?

¿Le gustaría saber si su equipo es más productivo que otro o que las normas de la industria?

Puede comparar las actividades de un equipo frente a otro dentro de una organización, evaluación comparativa interna. La comparación con otra organización similar se denomina evaluación comparativa externa.

Aunque los puntos de referencia de la industria pueden ser interesantes, los puntos de referencia locales/internos son los más confiables.

Evaluación comparativa de la productividad del desarrollo de software: evalúe su equipo

Si tienes un gran equipo, ¿por qué no publicar tu índice de productividad? ¿Quizás te ayude a conseguir trabajo de desarrollo?

Todo lo que necesita es un conjunto de historias de usuarios de un proyecto anterior, aproximadamente 1 hora y acceso a ScopeMaster.

  1. Tome un conjunto de requisitos de un proyecto reciente. Cárguelos en ScopeMaster. Deje que el analizador determine el tamaño.
  2. Agregue a la calculadora de productividad el esfuerzo total que requirió (en días persona), la duración (en meses) y la eliminación de defectos que logró.
  3. Luego determinará el índice de productividad de tu equipo.

Y eso es todo.

Si está por encima del promedio, digamos 6+ para un equipo web, entonces está en el camino hacia la grandeza. Si lo deseas, publicaremos el índice de productividad de tu equipo en nuestra clasificación.

Cuidado con las métricas engañosas

Los puntos de la historia, las líneas de código, las tallas de camisetas y los días-hombre son todos jugables o fáciles de manipular, técnicas que normalmente se utilizan para estimar el esfuerzo y el tiempo. Invariablemente son manipulados para su propio propósito. Sólo los métodos de dimensionamiento funcional estándar ISO son difíciles de jugar.

Evaluación comparativa del desarrollo de software