Alle(?) dataprogrammer fungerer etter prinsippet:
Data inn ➩ transformasjon ⥤ resultater
Transformasjonen er en oversettelse mellom modellrommet for inndata og modellrommet for resultater.
All programvare er således modelloversettere.
Enhver programvare opererer tre modellrom:
Innrommet
Transformasjonsrommet
Resultatrommet
Disse kan sammenfalle i en viss grad, men de er i prinsippet adskilte.
Modeller består av konsepter, navn, relasjoner, regler
Jo flere lag programvare, desto flere modeller å holde styr på, og etterhvert vet ingen hva som foregår, jfr. Digital modellmakt
Når dataprogrammets (dvs. systeminnviklerens) modell(er) ikke stemmer overens med menneskets ("brukeren"s) modell, oppstår mentale modellkollisjoner…
Systeminnviklere kaller slikt for Brukerfeil…