Articles

Adskillelse af bekymringer

Internet protocol stackEdit

adskillelse af bekymringer er afgørende for udformningen af internettet. I Internet Protocol Suite er der gjort en stor indsats for at adskille bekymringer i veldefinerede lag. Dette gør det muligt for protokoldesignere at fokusere på bekymringerne i et lag og ignorere de andre lag. Application Layer protocol SMTP er for eksempel bekymret over alle detaljer ved at gennemføre en e-mail-session over en pålidelig transporttjeneste (normalt TCP), men ikke mindst bekymret for, hvordan transporttjenesten gør denne service pålidelig. Tilsvarende er TCP ikke bekymret for routing af datapakker, som håndteres på Internetlaget.

HTML, CSS, JavaScriptEdit

hypertekst Markup Language (HTML), Cascading Style Sheets (CSS) og JavaScript (JS) er komplementære sprog, der anvendes i udviklingen af hjemmesider og hjemmesider. HTML bruges hovedsageligt til organisering af hjemmesideindhold, CSS bruges til definition af indholdspræsentationsstil, og JS definerer, hvordan indholdet interagerer og opfører sig med brugeren. Historisk set var dette ikke tilfældet: før introduktionen af CSS udførte HTML begge opgaver med at definere semantik og stil.

Fagorienteret programmeringredit

Fagorienteret programmering gør det muligt at behandle separate bekymringer som separate programmelkonstruktioner, hver på lige fod med de andre. Hver bekymring giver sin egen klassestruktur, hvori objekterne til fælles er organiseret, og bidrager tilstand og metoder til det sammensatte resultat, hvor de skærer hinanden. Korrespondanceregler beskriver, hvordan klasserne og metoderne i de forskellige bekymringer er relateret til hinanden på punkter, hvor de interagerer, tillader sammensat adfærd for en metode at stamme fra flere bekymringer. Multidimensionel adskillelse af bekymringer gør det muligt at manipulere analysen og sammensætningen af bekymringer som en multidimensionel “matrice”, hvor hver bekymring giver en dimension, hvor forskellige valgpunkter opregnes, med cellerne i matricen besat af de relevante programartefakter.

Aspektorienteret programmeringredit

Aspektorienteret programmering gør det muligt at behandle tværgående bekymringer som primære bekymringer. For eksempel kræver de fleste programmer en form for sikkerhed og logning. Sikkerhed og logning er ofte sekundære bekymringer, mens den primære bekymring ofte er at nå forretningsmål. Når man designer et program, skal dets sikkerhed imidlertid indbygges i designet fra starten i stedet for at blive behandlet som en sekundær bekymring. Anvendelse af sikkerhed bagefter resulterer ofte i en utilstrækkelig sikkerhedsmodel, der efterlader for mange huller til fremtidige angreb. Dette kan løses med aspektorienteret programmering. For eksempel kan der skrives et aspekt for at håndhæve, at opkald til en bestemt API altid logges, eller at fejl altid logges, når en undtagelse kastes, uanset om programmets procedurekode håndterer undtagelsen eller udbreder den.

niveauer af analyse i kunstig intelligensrediger

i kognitiv videnskab og kunstig intelligens er det almindeligt at henvise til David Marrs analyseniveauer. På et givet tidspunkt kan en forsker fokusere på (1), Hvad et aspekt af intelligens skal beregne, (2) hvilken algoritme den anvender, eller (3) hvordan algoritmen implementeres i udstyr. Denne adskillelse af bekymringer svarer til sondringen mellem grænseflade og implementering inden for programmel og Maskinteknik.

normaliserede systemeredit

i normaliserede systemer adskillelse af bekymringer er et af de fire vejledende principper. Overholdelse af dette princip er et af de værktøjer, der hjælper med at reducere de kombinatoriske effekter, der over tid bliver introduceret i programmer, der vedligeholdes. I normaliserede systemer understøttes adskillelse af bekymringer aktivt af værktøjerne.

SoC via partielle klasserrediger

adskillelse af bekymringer kan implementeres og håndhæves via delvise klasser.

SoC via delvise klasser i RubyEdit

bear_hunting.rb

class Bear def hunt forest.select(&:food?) endend

bear_eating.rb