Articles

Scheiding van zorgen

Internet protocol stackEdit

scheiding van zorgen is cruciaal voor het ontwerp van het Internet. In de Internet Protocol Suite zijn grote inspanningen geleverd om zorgen te scheiden in goed gedefinieerde lagen. Dit stelt protocol ontwerpers in staat om zich te concentreren op de zorgen in de ene laag, en negeren de andere lagen. Het Application Layer protocol SMTP, bijvoorbeeld, is bezorgd over alle details van het uitvoeren van een e-mail sessie over een betrouwbare transportservice (meestal TCP), maar niet in het minst bezorgd over hoe de transportservice die service betrouwbaar maakt. Ook TCP maakt zich geen zorgen over de routering van datapakketten, die wordt afgehandeld op de Internetlaag.

HTML, CSS, JavaScriptEdit

HyperText Markup Language (HTML), Cascading Style Sheets (CSS) en JavaScript (JS) zijn complementaire talen die worden gebruikt bij de ontwikkeling van webpagina ‘ s en websites. HTML wordt voornamelijk gebruikt voor de organisatie van webpagina-inhoud, CSS wordt gebruikt voor de definitie van inhoud presentatie stijl, en JS bepaalt hoe de inhoud interageert en zich gedraagt met de gebruiker. Historisch gezien was dit niet het geval: voorafgaand aan de introductie van CSS, HTML voerde zowel taken van het definiëren van semantiek en stijl.

Subject-oriented programmingdit

Subject-oriented programming maakt het mogelijk afzonderlijke problemen aan te pakken als afzonderlijke softwareconstructies, elk op gelijke voet met de andere. Elke zorg biedt zijn eigen klasse-structuur waarin de gemeenschappelijke objecten worden georganiseerd, en draagt staat en methoden bij aan het samengestelde resultaat waar ze elkaar snijden. Correspondentie regels beschrijven hoe de klassen en methoden in de verschillende zorgen zijn gerelateerd aan elkaar op punten waar ze interageren, waardoor samengesteld gedrag voor een methode om te worden afgeleid van verschillende zorgen. Multidimensionale scheiding van zorgen maakt het mogelijk de analyse en samenstelling van zorgen te manipuleren als een multidimensionale “matrix” waarin elke zorg een dimensie biedt waarin verschillende punten van keuze worden opgesomd, met de cellen van de matrix bezet door de juiste software artefacten.

Aspect-georiënteerd programmerendedit

Aspect-georiënteerd programmeren maakt het mogelijk horizontale problemen als primaire problemen aan te pakken. Bijvoorbeeld, de meeste programma ‘ s vereisen enige vorm van beveiliging en logging. Beveiliging en logging zijn vaak secundaire zorgen, terwijl de primaire zorg is vaak op het bereiken van zakelijke doelen. Echter, bij het ontwerpen van een programma, de veiligheid ervan moet worden ingebouwd in het ontwerp van het begin in plaats van te worden behandeld als een secundaire zorg. Het achteraf toepassen van beveiliging resulteert vaak in een onvoldoende beveiligingsmodel dat te veel gaten achterlaat voor toekomstige aanvallen. Dit kan worden opgelost met aspect-georiënteerd programmeren. Bijvoorbeeld, een aspect kan worden geschreven om af te dwingen dat oproepen naar een bepaalde API worden altijd gelogd, of dat fouten worden altijd gelogd wanneer een uitzondering wordt gegooid, ongeacht of het programma procedurele code behandelt de uitzondering of propageert.

analyseniveaus in kunstmatige intelligentieedit

in cognitieve wetenschap en kunstmatige intelligentie is het gebruikelijk om te verwijzen naar David Marr ‘ s analyseniveaus. Op elk moment kan een onderzoeker zich richten op (1) wat een aspect van intelligentie moet berekenen, (2) welk algoritme het gebruikt, of (3) Hoe dat algoritme wordt geïmplementeerd in hardware. Deze scheiding van punten van zorg is vergelijkbaar met het onderscheid tussen interface en implementatie in software-en hardware-engineering.

genormaliseerd systeemedit

in genormaliseerde systemen is scheiding van concerns een van de vier leidende beginselen. Vasthouden aan dit principe is een van de tools die helpt bij het verminderen van de combinatorische effecten die, na verloop van tijd, worden geïntroduceerd in software die wordt onderhouden. In genormaliseerde systemen scheiding van zorgen wordt actief ondersteund door de tools.

SoC via partiële klassenedit

scheiding van zorgen kan worden geïmplementeerd en afgedwongen via partiële klassen.

SoC via partiële klassen in RubyEdit

bear_hunting.rb

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

bear_eating.rb