Se sì, come e quale valore avrebbe questa valutazione nella comprensione del codice?
Ad esempio, suppongo che i programmi che utilizzano algoritmi genetici o neutri siano meno prevedibili di un calcolo della somma di pi.
Sembra che tu stia chiedendo una variazione del problema dell'arresto, quindi no, non esiste una soluzione generale per determinare quanto sia prevedibile un programma.
Tuttavia, puoi lanciare una batteria di test e revisioni del codice in qualsiasi applicazione e ottenere una sicurezza euristica per la prevedibilità di un programma.
Se si scrivono i test delle unità e si passano i test con i colori, si è abbastanza sicuri di dire che verrà eseguito in modo prevedibile.
Ovviamente niente è al 100%. I guasti meccanici si verificano, rappresentano anche quelli. Una macchina client può far esplodere il suo alimentatore a causa del rovesciamento del caffè da parte di qualcuno. Il tuo server è pronto a gestire il caso di perdere improvvisamente i contatti con un cliente?
È solo questione di mettere una guardia sicura dopo una guardia sicura dopo una guardia sicura.
Per prevedere, devi capire e questo è basato sulla tua abilità relativa alla complessità dell'applicazione. La valutazione della complessità può essere basata sul livello dello sviluppatore che potrebbe capirlo: principiante, medio, esperto.
La complessità ciclica potrebbe aiutarti a capire quanto è prevedibile un programma.
Come tu e altri avete insinuato, sembra esserci una correlazione (se non una causa) tra complessità e prevedibilità.
Se il sistema (il tuo programma fa parte di) non è caotico, sarà piuttosto prevedibile.
Se il sistema è caotico ... potrebbe essere molto difficile da prevedere.
Ora tutto ciò che devi fare è convertire le misure del codice come la complessità ciclomatica (che possiamo misurare) nel tipo di matematica usato nella teoria della complessità.
Non dimenticare di modellare anche il sistema operativo e il runtime.
Leggi altre domande sui tag software-evaluation