Reason (1990) ha proposto una teoria che integra due aree di ricerca distinte: lo studio degli slips o lapses, ovvero gli errori di esecuzione, e lo studio dei mistakes, ovvero gli errori di progettazione dell'azione. Il modello di Reason (GEMS), come già proposto da Rasmussen, identifica gli errori come malfunzionamenti ai tre livelli skill, rule e knowledge.
Gli slips (lapses) skill-based sono attribuiti principalmente a malfunzionamenti di controllo che sono fondamentalmente di due tipi:
inattenzione: omissione di un controllo di alto livello sul comportamento in qualche punto critico che causa un proseguimento delle azioni lungo un percorso diverso da quello voluto;
iperattenzione: esecuzione di un controllo nel momento sbagliato, durante una sequenza di azioni di routine.
Nei mistakes le azioni vengono eseguite seguendo un piano, ma questo può essere inadeguato per il raggiungimento del risultato desiderato. I mistakes sono associati alla soluzione di problemi.
I mistakes rule-based possono essere causati da:
applicazione sbagliata di buone regole, utilizzo cioè di regole robuste, ma sbagliate: una regola che ha permesso di ottenere buoni risultati in passato acquista maggiore forza e si impone sulle altre, impedendo all'utilizzatore di coglierne, a colpo d'occhio, l'inadeguatezza per la nuova circostanza;
applicazione di regole sbagliate, di regole non ben strutturate o poco eleganti e di regole sconsigliabili.
I mistakes knowledge-based sono malfunzionamenti che si verificano nel momento in cui il solutore del problema deve ricorrere ad un ragionamento, ma ha a disposizione un ristretto fuoco dell'attenzione ed è incapace di mantenerlo per un tempo sufficiente (razionalità limitata) e/o utilizza un modello mentale dello spazio del problema incompleto o inaccurato.
In ogni caso, è fondamentale sottolineare che commettere errori nell'interazione con un prodotto è naturale: l'errore non è altro che un'azione incompleta o inesatta nel tentativo di raggiungere un obiettivo. Appunto per questo è importante garantire agli utenti la possibilità di navigare liberamente senza entrare in vicoli ciechi o in situazioni critiche.
La prevenzione dell'errore si ottiene mediante l'utilizzo di vincoli d'uso, che impediscano al sistema di compiere azioni potenzialmente pericolose senza prima ricevere una conferma dall'utente, mediante la visibilità dello stato del sistema e delle possibilità operative, e attraverso la coerenza che permette all'utente di ricavare un modello concettuale efficace.