Separation of concerns [ 1] är en av de grundläggande principerna för ingenjörskonst . I synnerhet mjukvaruteknik .
Inom datavetenskap är separation av bekymmer processen att dela upp ett datorprogram i funktionella block som överlappar varandras funktioner så lite som möjligt. I ett mer allmänt fall är ansvarsuppdelningen en förenkling av en enskild process för att lösa ett problem genom att dela upp den i interagerande processer för att lösa deluppgifter.
Uppdelning av ansvar gör att du kan minska systemets komplexitet, öka tillförlitligheten och anpassningsförmågan (flexibiliteten) hos program och säkerställa att de återanvänds .
Varje programmeringsparadigm handlar om separation av bekymmer. När det gäller procedurprogrammering - mellan procedurer och funktioner , OOP - mellan objekt , lägger aspektorienterad programmering till aspekter till denna lista.
Designmönster som MVC ger en separation av presentation och innehåll .
Service Oriented Architecture (SOA) innebär ansvarsfördelning mellan tjänster.
Termen Separation of Concerns föreslogs först av Edsger Dijkstra 1974 i artikeln "Om det vetenskapliga tänkandets roll" [2] för att beskriva det vetenskapliga tänkandets process. I sin moderna betydelse användes denna term 1989 av Chris Reid i hans bok The Elements of Functional Programming [3] .