Et viktig utviklingsprinsipp er prinsippet om avhengighetsomvending [«Dependency inversion principle» (DIP) på engelsk] som gir dekobling av viktige programvarekomponenter, såkalte høynivåkomponenter.
I stedet for at disse skal konsumere mange små "arbeidskomponenter" (dvs. lavnivåkomponenter) direkte, for å fungere, velger man å heller gjøre seg avhengig av abstraksjoner. Dette gjelder begge typer komponenter, både lavnivå og høynivå. I praksis vil man da gjerne benytte grensesnitt.
DIP er det siste viktige designmønsteret i SOLID.