Teniendo en cuenta cómo se desarrolla el software durante un ciclo de lanzamiento (implementación, prueba, corrección de errores, lanzamiento), estaba pensando que uno debería poder ver algún patrón en las líneas de código que se cambian en la base del código; por ejemplo, hacia el final de un proyecto, si el código se vuelve más estable, uno debería ver que se modifican menos líneas de código por unidad de tiempo.
Por ejemplo, uno podría ver que durante los primeros seis meses del proyecto, el promedio fue de 200 líneas de código por día, mientras que durante el último mes fue de 50 líneas de código por día, y durante la última semana (justo antes de los DVD del producto fueron enviados), no se cambió ninguna línea de código (congelación de código). Esto es solo un ejemplo, y podrían surgir diferentes patrones de acuerdo con el proceso de desarrollo adoptado por un equipo en particular.
De todos modos, ¿hay alguna métrica de código (alguna literatura sobre ellas?) Que use el número de líneas de código modificadas por unidad de tiempo para medir la estabilidad de una base de código? ¿Son útiles para tener una idea de si un proyecto está llegando a algún lado o si aún está lejos de estar listo para lanzarse? ¿Hay alguna herramienta que pueda extraer esta información de un sistema de control de versiones y producir estadísticas?
fuente
Respuestas:
Una medida que Michael Feather ha descrito es " El conjunto activo de clases ".
Mide el número de clases agregadas contra las "cerradas". El cierre de clase se describe como:
Utiliza estas medidas para crear gráficos como este:
Cuanto menor sea el espacio entre las dos líneas, mejor.
Es posible que pueda aplicar una medida similar a su base de código. Es probable que el número de clases se correlacione con el número de líneas de código. Incluso puede ser posible extender esto para incorporar una línea de código por medida de clase, que podría cambiar la forma del gráfico si tiene algunas clases monolíticas grandes.
fuente
Siempre que haya un mapeo relativamente consistente de características para las clases, o para el caso, el sistema de archivos podría conectar algo como gource en su sistema de control de versiones y muy rápidamente tener una idea de dónde se centra la mayor parte del desarrollo (y por lo tanto qué partes del código son las más inestables).
Esto supone que tiene una base de código relativamente ordenada. Si la base del código es una bola de lodo, esencialmente verá cada pequeña porción en la que se trabaja debido a las interdependencias. Dicho esto, tal vez eso en sí mismo (la agrupación mientras se trabaja en una función) es una buena indicación de la calidad de la base del código.
También supone que su negocio y su equipo de desarrollo en su conjunto tienen alguna forma de separar las características en el desarrollo (ya sea en el control de versiones, una característica a la vez, lo que sea). Si, por ejemplo, está trabajando en 3 características principales en la misma rama, entonces este método produce resultados sin sentido, porque tiene un problema mayor que la estabilidad del código en sus manos.
Desafortunadamente, no tengo literatura para probar mi punto. Se basa únicamente en mi experiencia de usar gource en bases de código buenas (y no tan buenas).
Si está utilizando git o svn y su versión de gource es> = 0.39, es tan simple como ejecutar gource en la carpeta del proyecto.
fuente
El uso de la frecuencia de las líneas modificadas como indicador de la estabilidad del código es al menos cuestionable.
Al principio, la distribución en el tiempo de las líneas modificadas depende en gran medida del modelo de gestión de software del proyecto. Existen grandes diferencias en los diferentes modelos de gestión.
En segundo lugar, la víctima en esta suposición no está clara: es el recuento más bajo de líneas modificadas causado por la estabilidad del software, o simplemente porque la fecha límite expira y los desarrolladores decidieron no hacer algunos cambios ahora, sino hacerlo después de la ¿lanzamiento?
En tercer lugar, la mayoría de las líneas se modifican cuando se introducen nuevas características. Pero la nueva característica no hace que el código no sea estable. Depende de la habilidad del desarrollador y de la calidad del diseño. Por otro lado, incluso los errores graves pueden corregirse con muy pocos cambios de línea; en este caso, la estabilidad del software aumenta significativamente, pero el recuento de líneas cambiadas no es demasiado grande.
fuente
Robustez es un término relacionado con la función correcta de un conjunto de instrucciones, no con la cantidad, la verbosidad, la concisión, la corrección gramatical del texto utilizado para expresar esas instrucciones.
De hecho, la sintaxis es importante y debe ser correcta, pero cualquier cosa más allá de eso, ya que se refiere a la función deseada de las instrucciones al observar las 'métricas' de las instrucciones, es similar a trazar su futuro leyendo el patrón de hojas de té en la parte inferior de tu taza de te
La robustez se mide mediante pruebas. Pruebas unitarias, pruebas de humo, pruebas de regresión automatizadas; pruebas, pruebas, pruebas!
Mi respuesta a su pregunta es que está utilizando un enfoque incorrecto al buscar una respuesta a una de solidez. Es una pista falsa que las líneas de código significan algo más que líneas que ocupan código. Solo puede saber si el código hace lo que quiere que haga si prueba que está haciendo lo que necesita.
Vuelva a visitar los arneses de prueba adecuados y evite el misticismo de código métrico.
Los mejores deseos.
fuente