Existen diversos tipos de calidad que se pueden medir en productos de software, por ejemplo, idoneidad para el propósito (por ejemplo, uso final), mantenibilidad, eficiencia. Algunos de estos son algo subjetivos o específicos del dominio (por ejemplo, los buenos principios de diseño de GUI pueden ser diferentes entre culturas o dependen del contexto de uso, piense en el uso militar versus el uso del consumidor).
Lo que me interesa es una forma más profunda de calidad relacionada con la red (o gráfico) de tipos y su interrelación, es decir, a qué tipos se refiere cada tipo, ¿hay grupos de interconectividad claramente identificables relacionados con un 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 bytes Java o .Net IL) debería dar alguna indicación de dónde se han implementado algoritmos complejos grandes como bloques de código monolíticos 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 es subjetivo, por ejemplo, ya que por mantenibilidad nos referimos a mantenibilidad por parte de programadores humanos y, por lo tanto, la descomposición funcional debe ser compatible con el funcionamiento de las mentes humanas. Como tal, me pregunto si alguna vez puede haber una definición matemáticamente pura de la calidad del software que trascienda todo el software posible en todos los escenarios posibles.
También me pregunto si es una idea peligrosa, que si los representantes objetivos de calidad se vuelven populares, las presiones comerciales harán que los desarrolladores busquen estas métricas a expensas de la calidad general (aquellos aspectos de la calidad no medidos por los representantes).
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 revertir de estados ordenados a desordenados. Cualquiera que haya trabajado en un mundo real, un proyecto de software de mediana a gran escala apreciará el grado en que la calidad de la base del código tiende a degradarse con el tiempo. Las presiones comerciales generalmente resultan en cambios que se centran en la nueva funcionalidad (excepto donde la calidad en sí 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 'horquilla' donde no encaja bien Una perspectiva de calidad y mantenimiento. Entonces, ¿podemos medir la entropía del software? Y si es así, ¿cómo?