Pregunta

Existen varios tipos de calidad que se pueden medir en productos de software, por ejemplo, aptitud física para el propósito (por ejemplo, uso final), mantenimiento, eficiencia. Algunos de estos son algo subjetivos o específicos del dominio (por ejemplo, los buenos principios de diseño de la GUI pueden ser diferentes entre las culturas o dependiendo del contexto de uso, piense en el uso militar versus el consumidor).

Lo que me interesa es una forma más profunda de calidad relacionada con la red (o gráfico) de los tipos y su interrelación, es decir, a qué tipos se refiere cada tipo, hay grupos de interconectividad claramente identificables relacionados con una correcta Arquitectura escalonada, o por el contrario, hay una gran 'bola' de referencias de tipo (código 'monolítico'). Además, el tamaño de cada tipo y/o método (por ejemplo, medido en cantidad de código de byte Java o .NET IL) debe dar alguna indicación de dónde se han implementado algoritmos complejos grandes como bloques monolíticos de código en lugar de descomponerse en más manejables/mantenibles trozos.

Un análisis basado en tales ideas puede calcular métricas que son al menos un proxy de calidad. El umbral exacto/puntos de decisión entre alta y baja calidad sospecharía que ser subjetivo, por ejemplo, ya que por mantenibilidad nos referimos a la mantenibilidad de los programadores humanos y, por lo tanto, la descomposición funcional debe ser compatible con la forma en que funcionan las mentes humanas. Como tal, me pregunto si alguna vez puede haber una definición matemáticamente pura de calidad de software que trasciende todo el software posible en todos los escenarios posibles.

También me pregunto si esta es una idea peligrosa, que si los representantes objetivos para la calidad se vuelven populares, las presiones comerciales harán que los desarrolladores persigan estas métricas a expensas de la calidad general (aquellos aspectos de calidad no medidos por los proxies).

Anexo: Otra forma de pensar sobre la calidad es desde el punto de vista de la entropía. La entropía es la tendencia de los sistemas a volver de los estados ordenados a desordenados. Cualquier persona que haya trabajado en un proyecto de software de mundo real, mediana a gran escala apreciará el grado en que la calidad de la base de código tiende a degradarse con el tiempo. Las presiones comerciales generalmente dan como resultado cambios que se centran en la nueva funcionalidad (excepto donde la calidad misma es el principal punto de venta, por ejemplo, en el software de aviónica) y la erosión de la calidad a través de problemas de regresión y la funcionalidad de 'talla de zapatos' donde no encaja bien desde una perspectiva de calidad y mantenimiento. Entonces, ¿podemos medir la entropía del software? Y si es así, ¿cómo?

¿Fue útil?

Solución

Nudarse, al menos para el código .NET, proporcionará las mejores métricas para la calidad del software que tenemos hasta la fecha. Tienen 82 código diferente métrica. ¿Es esto lo que estás buscando? Si es un programador .NET, puede encontrar esto entrada en el blog Acerca de el análisis NDepend de un proyecto de código abierto muy popular/grande para ser interesante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top