programvarelag
Et programvarelag, eller bare lag, er en logisk inndeling av programvare som adskiller ansvar og funksjonalitet i separate enheter. Hvert lag har sitt eget ansvarsområde og kommuniserer med lagene over eller under via veldefinerte grensesnitt. Hensikten er å oppnå modularitet, lettere vedlikehold og bedre mulighet for gjenbruk og testing. En principielt lagdelt arkitektur følger ofte prinsippene om separasjon av bekymringer, abstraksjon, lav kobling og høy kohesjon.
Vanlige lag i tradisjonell programvare inkluderer presentasjonslaget som håndterer brukergrensesnitt og brukerinteraksjon, applikasjonslaget (tjenestelaget) som koordinerer
Fordeler med en lagdelt tilnærming inkluderer bedre testbarhet og vedlikehold, enklere substitusjon av komponenter, og mulighet
Begrepet programvarelag brukes også bredt for å beskrive abstraksjon i ulike arkitekturer som Clean Architecture, MVVM