¿Es popular la medición de proyectos de software en la industria actual?

9

Me encontré con un desarrollador que quería un consejo externo sobre el proyecto de su equipo. Descubrí que están desarrollando un enorme paquete de software para los ejecutivos de las compañías, el gerente de proyectos y los desarrolladores que pueden calcular métricas automáticamente y graficarlas por iteración.

Como estudiante con experiencia en informática, sé muy poco sobre las métricas y su importancia, pero mis preguntas son:

  1. ¿La mayoría de las empresas tienen alguna forma, no tiene que ser un programa elegante, para medir métricas significativas?
  2. ¿Qué métricas, simples o combinadas, lo ayudan a reducir el alcance y las estimaciones de sus proyectos?
  3. Como persona que analiza las métricas, ¿con qué frecuencia basas tus decisiones en ellas? ES DECIR. ¿Las pruebas fallidas por semana aumentan drásticamente?
  4. ¿Sientes que la introducción de estudiar métricas te ha ayudado a comprender mejor el proyecto?

No estoy seguro de por qué, pero el proyecto de los desarrolladores me intrigó y debo saber más. Si y

Russ K
fuente

Respuestas:

6

Algunos libros sobre métricas que probablemente tenga la biblioteca de su universidad incluyen métricas de software y métricas y modelos en ingeniería de calidad de software . Esos 2 deberían darle un punto de partida. En el mundo industrial, muy pocas empresas tienen algún tipo de programa de medición métrica.

¿La mayoría de las empresas tienen alguna forma, no tiene que ser un programa elegante, para medir métricas significativas?

Visual Studio incluye algunas herramientas de análisis de código que pueden ayudarlo a comenzar. La mayoría de las empresas ni siquiera tienen algo para medir la peor métrica posible: líneas de código. "Simplemente hazlo" parece ser la fuerza motriz abrumadora en la industria, y las preocupaciones de mantenimiento reciben muy poca atención a las preocupaciones de los gerentes de "¿recibiré mi bono este año?" y "¿se hará esto en el tiempo que prometí?" Incluso con productos que se trasladan de año en año con cambios incrementales, esas dos preocupaciones eclipsaron las preocupaciones de los desarrolladores sobre la capacidad de mantenimiento y la detección / prevención de errores.

¿Qué métricas, simples o combinadas, lo ayudan a reducir el alcance y las estimaciones de sus proyectos?

Me parece que la complejidad ciclomática y el acoplamiento son indicadores sólidos de cuán defectuoso o difícil será mantener el código. Si la complejidad ciclomática es de alrededor de 20, encuentro que será casi imposible de probar (ya que tendrá hasta 2 ^ 20 rutas a través del código) y debe descomponerse en pedazos más pequeños. No puede eliminar la complejidad, pero puede dividirla en trozos más manejables.

Si está buscando una estimación , probablemente quiera investigar los puntos de función .

El% de cobertura de código está reduciendo drásticamente cada iteración, ¿alerta a sus desarrolladores del problema?

Me parece que a la mayoría de los gerentes les importa la cantidad de registros y la cantidad de errores que se solucionan. Mi gerente actual se opone a las pruebas unitarias (él piensa que es una pérdida de tiempo) y mi gerente anterior sintió que el tiempo dedicado a las pruebas unitarias era el tiempo que debería haberse dedicado a escribirlo en primer lugar.

El argumento canónico utilizado por los desarrolladores es que si mides algo, eso es solo lo que obtendrás. Este argumento proviene de la idea de que la única métrica son las líneas de código.

Tangurena
fuente
Gracias por la respuesta detallada y los enlaces relevantes. Solo como seguimiento: 1. ¿Por qué a un gerente le importaría la cantidad de registros? Quizás nuestra definición de check-in es diferente. 2. ¿Qué quieres decir con líneas de código como la peor métrica? ¿Peor como en no da una buena indicación sobre el proyecto?
Russ K
Se considerará que @Russ, un desarrollador que no está registrando código, no funciona. LOC es peor porque es trivial para el juego. Eche un vistazo a la diferencia entre el código de sangría K&R y Allman: en.wikipedia.org/wiki/Indent_style . El estilo Allman dará un recuento de LOC más alto simplemente colocando el abierto {en una línea separada. Descargo de responsabilidad: odio el estilo K&R ya que rara vez puedo encontrar el juego abierto {sin pasar demasiado tiempo jugando Where's Waldo.
Tangurena
In the industrial world, very few companies have any sort of metric measurement program at all.Cualquier empresa con una calificación CMMI de 2 o más tendrá un programa de análisis de mediciones / métricas en funcionamiento. La recopilación de mediciones y métricas es un requisito de nivel de madurez 2. El nivel de madurez 4 de CMMI requiere una gestión cuantitativa del proyecto, basada en esas mediciones y métricas, junto con cosas como el análisis de causa raíz para actuar sobre los problemas identificados. Hay una gran cantidad de organizaciones calificadas en CMMI Nivel 4 (o 5).
Thomas Owens
2

Estuve en una charla sobre métricas de software donde el orador hizo algunos, en mi humilde opinión, puntos de vista. Teniendo poca experiencia con estas cosas yo mismo, todavía estaba intrigada e inspirada, pero no puedo decir si está mal o bien.

Las ideas principales fueron:

  • Ninguna métrica singular es útil por derecho propio.
  • Establecer un objetivo absoluto (es decir, una cobertura de código del XX%) no tiene sentido.
  • Una métrica sin historial es útil.

Entonces, para resolver esto:

  • Mostrar varias métricas, como:
    • # de líneas totales / cambiadas
    • # de confirmaciones
    • % cobertura de código
    • # de pruebas
    • complejidad ciclomática
    • archivo / paquete / ... dependencia
    • ...
  • Mostrar datos de QA / CI:
    • # de errores / mejoras / cambios (personalmente creo que esta categorización es importante)
    • # total / agregado / fijo
  • Muestra estas métricas en gráficos que muestran tendencias a lo largo del tiempo.

De esta manera, cuando los tickets se arreglan rápidamente, se puede ver si la calidad del código disminuye. Además, cuando parece que no sucede mucho con la base de datos de errores, la calidad del código puede aumentar, ya que se están realizando refactorizaciones.

Resumiendo: es este tipo de comportamiento dinámico lo que es importante y lo que le brinda información en lugar de datos sin procesar (que sería el valor de una sola métrica).

Estoy planeando poner algunos gráficos de acuerdo con este esquema en un televisor de pantalla panorámica junto a nuestras lámparas de lava conectadas a CI. ;)

Macke
fuente
Así poner. Leí muchos artículos sobre cómo las métricas por sí solas son inútiles, como mencionaste, y el historial es importante. Gracias por tomarse el tiempo de responder.
Russ K