Separasjon av bekymringer
Internet protocol stackEdit
Separasjon av bekymringer er avgjørende for utformingen Av Internett. I Internet Protocol Suite, stor innsats har blitt gjort for å skille bekymringer i veldefinerte lag. Dette gjør at protokolldesignere kan fokusere på bekymringene i ett lag, og ignorere de andre lagene. Application Layer protocol SMTP, for eksempel, er bekymret for alle detaljer om å gjennomføre en e-postøkt over en pålitelig transporttjeneste( vanligvis TCP), men ikke minst bekymret for hvordan transporttjenesten gjør den tjenesten pålitelig. PÅ samme måte er TCP ikke bekymret for rutingen av datapakker, som håndteres på Internett-Laget.
HTML, CSS, JavaScriptEdit
HyperText Markup Language (HTML), Cascading Style Sheets (CSS) og JavaScript (Js) er komplementære språk som brukes i utviklingen av nettsider og nettsteder. HTML brukes hovedsakelig for organisering av nettsideinnhold, CSS brukes til definisjon av innholdspresentasjonsstil, OG JS definerer hvordan innholdet samhandler og oppfører seg med brukeren. Historisk var dette ikke tilfelle: FØR innføringen AV CSS utførte HTML begge oppgaver for å definere semantikk og stil.
Subject-oriented programmingEdit
Subject-oriented programming gjør at separate problemer kan behandles som separate programvarekonstruksjoner, hver på lik linje med de andre. Hver bekymring gir sin egen klassestruktur som de felles objektene er organisert i, og bidrar med tilstand og metoder til det sammensatte resultatet der de skjærer over hverandre. Korrespondanseregler beskriver hvordan klassene og metodene i de ulike bekymringene er relatert til hverandre på punkter der de samhandler, slik at sammensatt oppførsel for en metode kan utledes av flere bekymringer. Flerdimensjonal Separasjon Av Bekymringer tillater analyse og sammensetning av bekymringer å bli manipulert som en flerdimensjonal «matrise» der hver bekymring gir en dimensjon der forskjellige valgpunkter er oppregnet, med cellene i matrisen okkupert av de aktuelle programvareartefakter.
Aspect-oriented programmingEdit
Aspect-oriented programmering gjør at tverrgående bekymringer kan tas opp som primære bekymringer. For eksempel krever de fleste programmer noen form for sikkerhet og logging. Sikkerhet og logging er ofte sekundære bekymringer, mens den primære bekymringen ofte er på å oppnå forretningsmål. Men når du designer et program, må sikkerheten bygges inn i designet fra begynnelsen i stedet for å bli behandlet som en sekundær bekymring. Bruk av sikkerhet etterpå resulterer ofte i en utilstrekkelig sikkerhetsmodell som etterlater for mange hull for fremtidige angrep. Dette kan løses med aspektorientert programmering. For eksempel kan et aspekt skrives for å håndheve at anrop til en BESTEMT API alltid logges, eller at feil alltid logges når et unntak kastes, uavhengig av om programmets prosesskode håndterer unntaket eller forplanter det.
analysenivåer i kunstig intelligensrediger
i kognitiv vitenskap og kunstig intelligens er Det vanlig å referere Til David Marrs analysenivåer. Til enhver tid kan en forsker fokusere på (1) hva noe aspekt av intelligens trenger å beregne, (2) hvilken algoritme den bruker, eller (3) hvordan algoritmen implementeres i maskinvare. Denne separasjonen av bekymringer ligner grensesnittet / implementeringsforskjellen i programvare og maskinvare engineering.
Normaliserte systemerrediger
i normaliserte systemer er separasjon av bekymringer en av de fire hovedprinsippene. Å overholde dette prinsippet er et av verktøyene som bidrar til å redusere kombinatoriske effekter som over tid blir introdusert i programvare som opprettholdes. I Normaliserte Systemer støttes separasjon av bekymringer aktivt av verktøyene.
SoC via partielle klasserrediger
separasjon av bekymringer kan implementeres og håndheves via delklasser.
SoC via delvise klasser i RubyEdit
bear_hunting.rb
class Bear def hunt forest.select(&:food?) endend
bear_eating.rb