Articles

Trennung von Bedenken

Internet protocol stackEdit

Die Trennung von Bedenken ist entscheidend für das Design des Internets. In der Internet Protocol Suite wurden große Anstrengungen unternommen, um Bedenken in klar definierte Ebenen zu unterteilen. Auf diese Weise können sich Protokolldesigner auf die Bedenken in einer Ebene konzentrieren und die anderen Ebenen ignorieren. Das Anwendungsschichtprotokoll SMTP ist beispielsweise besorgt über alle Details der Durchführung einer E-Mail-Sitzung über einen zuverlässigen Transportdienst (normalerweise TCP), aber nicht im geringsten besorgt darüber, wie der Transportdienst diesen Dienst zuverlässig macht. Ebenso kümmert sich TCP nicht um das Routing von Datenpaketen, das auf der Internetebene abgewickelt wird.

HTML, CSS, JavaScriptEdit

HyperText Markup Language (HTML), Cascading Style Sheets (CSS) und JavaScript (JS) sind komplementäre Sprachen, die bei der Entwicklung von Webseiten und Websites verwendet werden. HTML wird hauptsächlich für die Organisation von Webseiteninhalten verwendet, CSS wird für die Definition des Präsentationsstils von Inhalten verwendet, und JS definiert, wie der Inhalt mit dem Benutzer interagiert und sich verhält. Historisch gesehen war dies nicht der Fall: Vor der Einführung von CSS erfüllte HTML beide Aufgaben der Definition von Semantik und Stil.

Subjektorientierte Programmierungbearbeiten

Subjektorientierte Programmierung ermöglicht es, separate Anliegen als separate Softwarekonstrukte zu behandeln, die jeweils gleichberechtigt mit den anderen sind. Jedes Anliegen bietet eine eigene Klassenstruktur, in der die gemeinsamen Objekte organisiert sind, und trägt Status und Methoden zum zusammengesetzten Ergebnis bei, wo sie sich gegenseitig überschneiden. Korrespondenzregeln beschreiben, wie die Klassen und Methoden in den verschiedenen Anliegen an Punkten, an denen sie interagieren, miteinander in Beziehung stehen, sodass zusammengesetztes Verhalten für eine Methode aus mehreren Anliegen abgeleitet werden kann. Die mehrdimensionale Trennung von Bedenken ermöglicht es, die Analyse und Zusammensetzung von Bedenken als eine mehrdimensionale „Matrix“ zu manipulieren, in der jedes Anliegen eine Dimension bereitstellt, in der verschiedene Wahlpunkte aufgezählt werden, wobei die Zellen der Matrix von den entsprechenden Softwareartefakten belegt sind.

Aspektorientierte Programmierungbearbeiten

Aspektorientierte Programmierung ermöglicht es, Querschnittsthemen als primäre Anliegen anzusprechen. Zum Beispiel erfordern die meisten Programme irgendeine Form von Sicherheit und Protokollierung. Sicherheit und Protokollierung sind oft zweitrangige Anliegen, während das Hauptanliegen oft die Erreichung von Geschäftszielen ist. Beim Entwerfen eines Programms muss seine Sicherheit jedoch von Anfang an in das Design integriert werden, anstatt als sekundäres Anliegen behandelt zu werden. Die nachträgliche Anwendung von Sicherheit führt häufig zu einem unzureichenden Sicherheitsmodell, das zu viele Lücken für zukünftige Angriffe lässt. Dies kann mit aspektorientierter Programmierung gelöst werden. Beispielsweise kann ein Aspekt geschrieben werden, um zu erzwingen, dass Aufrufe einer bestimmten API immer protokolliert werden oder dass Fehler immer protokolliert werden, wenn eine Ausnahme ausgelöst wird, unabhängig davon, ob der Prozedurcode des Programms die Ausnahme behandelt oder weitergibt.

Analyseebenen in der künstlichen Intelligenzbearbeiten

In der Kognitionswissenschaft und der künstlichen Intelligenz wird häufig auf David Marrs Analyseebenen verwiesen. Zu jeder Zeit kann sich ein Forscher darauf konzentrieren, (1) was ein Aspekt der Intelligenz berechnen muss, (2) welchen Algorithmus er verwendet oder (3) wie dieser Algorithmus in Hardware implementiert ist. Diese Trennung von Bedenken ähnelt der Unterscheidung zwischen Schnittstelle und Implementierung in der Software- und Hardwaretechnik.

Normalisierte Systemebearbeiten

In normalisierten Systemen ist die Trennung von Anliegen eines der vier Leitprinzipien. Die Einhaltung dieses Prinzips ist eines der Werkzeuge, die dazu beitragen, die kombinatorischen Effekte zu reduzieren, die im Laufe der Zeit in Software eingeführt werden, die gewartet wird. In normalisierten Systemen wird die Trennung von Anliegen durch die Tools aktiv unterstützt.

Trennung über Teilklassenedit

Die Trennung von Bedenken kann über Teilklassen implementiert und erzwungen werden.

SoC über Teilklassen in RubyEdit

bear_hunting.rb

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

bear_eating.rb