Domanda

Ci sono vari tipi di qualità che possono essere misurati in prodotti software, ad esempio idoneità allo scopo (ad esempio uso finale), manutenibilità, efficienza. Alcuni di questi sono un po 'soggettiva o specifici dominio (ad esempio i buoni principi di progettazione della GUI possono essere differenti tra le culture o dipendente dal contesto d'uso, pensare militare contro l'uso del consumatore).

Quello che mi interessa è una forma più profonda di qualità legati alla rete (o grafico) di tipi e la loro interrelazione, cioè, che tipo fa ogni tipo di riferimento a, ci sono chiaramente identificabili gruppi di interconnettività relative ad un'architettura correttamente più livelli, o viceversa c'è una grande 'pallone' di tipo riferimenti (codice 'monolitico'). Anche la dimensione di ogni tipo e / o metodo (misurata in quantità di codice Java byte o Net IL) dovrebbe dare qualche indicazione di dove grandi complessi algoritmi sono stati implementati come blocchi monolitici di codice invece di essere scomposto in più gestibile / mantenibile pezzi.

Un analyis basa su tali idee potrebbero essere in grado di calcolare le metriche che sono almeno un proxy per la qualità. I punti di soglia / decisionali esatte tra alta e bassa qualità sarebbe sospetto essere soggettiva, per esempio poiché per la manutenibilità ci manutenibilità media dai programmatori umane e quindi la decomposizione funzionale deve essere compatibile con il modo umano di lavoro menti. Come tale mi chiedo se non ci può 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 questo un'idea pericolosa, che se i proxy oggettivi per la qualità diventano popolari che le pressioni commerciali causerà agli sviluppatori di perseguire questi parametri a scapito della qualità complessiva (quegli aspetti della qualità non misurati con i proxy).

Addendum: Un altro modo di pensare la qualità sia dal punto di vista di entropia. L'entropia è la tendenza dei sistemi a ritornare da ordinato di stati disordinati. Chiunque abbia mai lavorato su un mondo reale, medie e progetto di software su larga scala potranno apprezzare il grado in cui la qualità del codice di base tende a degradare nel tempo. pressioni commerciali in genere si traducono in cambiamenti che si concentrano su nuove funzionalità (ad eccezione di dove la qualità stessa è il punto di principio di vendita, ad esempio in avionica software), e l'erosione della qualità attraverso problemi di regressione e 'shoe-horning' functionaility dove non si adatta bene da una prospettiva qualità e manutenzione. Quindi, possiamo misurare l'entropia di software? E se sì, come?

È stato utile?

Soluzione

NDepend , almeno per il codice .NET, fornirà i migliori parametri per la qualità del software che dobbiamo Data. Hanno 82 codice diverso metriche . E 'questo quello che stai cercando? Se sei un programmatore .NET, si può trovare questo post sul blog sull'analisi NDepend di un grande progetto molto popolare / open source per essere interessante.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top