Esistono vari tipi di qualità che possono essere misurati nei prodotti software, ad es. idoneità allo scopo (ad esempio uso finale), manutenibilità, efficienza. Alcuni di questi sono in qualche modo soggettivi o specifici del dominio (ad esempio, i buoni principi di progettazione della GUI possono essere diversi tra culture o dipendenti dal contesto di utilizzo, pensare all'utilizzo militare rispetto al consumatore).
Ciò che mi interessa è una forma più profonda di qualità relativa alla rete (o al grafico) dei tipi e alla loro interrelazione, cioè, a quali tipi si riferisce ciascun tipo, ci sono gruppi chiaramente identificabili di interconnessione relativi ad un'architettura a più livelli, o al contrario c'è una grande "palla" di riferimenti di tipo (codice "monolitico"). Anche le dimensioni di ogni tipo e / o metodo (ad esempio misurate in quantità di codice byte Java o .Net IL) dovrebbero fornire indicazioni su dove grandi algoritmi complessi sono stati implementati come blocchi monolitici di codice invece di essere scomposti in più gestibili / mantenibili pezzi.
Un analista basato su tali idee può essere in grado di calcolare le metriche che sono almeno un proxy per la qualità. La soglia esatta / punti di decisione tra alta e bassa qualità sospetterei essere soggettiva, ad es. poiché per mantenibilità intendiamo la manutenibilità da parte di programmatori umani e quindi la scomposizione funzionale deve essere compatibile con il funzionamento delle menti umane. Come tale mi chiedo se non ci possa mai essere una definizione matematicamente pura di qualità del software che trascende tutti i possibili software in tutti gli scenari possibili.
Mi chiedo anche se questa sia un'idea pericolosa, che se i proxy obiettivi per la qualità diventano popolari, le pressioni commerciali spingono gli sviluppatori a perseguire questi parametri a scapito della qualità generale (quegli aspetti della qualità non misurati dai proxy). / p>
Un altro modo di pensare alla qualità è dal punto di vista dell'entropia. L'entropia è la tendenza dei sistemi a tornare dagli stati ordinati a quelli disordinati. Chiunque abbia mai lavorato su un progetto di software in scala reale, su scala medio-grande apprezzerà il grado in cui la qualità della base di codice tende a degradarsi nel tempo. Le pressioni commerciali in genere portano a modifiche che si concentrano su nuove funzionalità (tranne quando la qualità stessa è il principale punto di vendita, ad esempio nel software avionico) e l'erosione della qualità attraverso problemi di regressione e funzionalitàaille "scarpe-horning" dove non si adatta bene una prospettiva di qualità e manutenzione. Quindi, possiamo misurare l'entropia del software? E se sì, come?