Data Context Interaction

Data Context Interaction

Data Context Interaction (DCI) ist ein Architekturmuster für die Modellierung der Fachlichkeit komplexer objektorientierter Software. DCI trennt Fachobjekte ("Data") von Anwendungsfällen ("Context") und Rollen ("Interaction"). DCI wurde erstmals von Trygve Reenskaug, dem Erfinder des Model View Controller-Architekturmusters, beschrieben. Später wurde er darin federführend von James O. Coplien unterstützt.

Inhaltsverzeichnis

Beschreibung

Data Context Interaction basiert auf der Idee, nicht - wie sonst in der objektorientierten Analyse und Design üblich - Klassen zu modellieren, sondern Objekte zu beschreiben. Bei DCI sollte beim Modellieren eher an die Instanzen zur Laufzeit als an die Klassen, aus denen die Objekte instanziert wurden, gedacht werden.

Diese Herangehensweise verspricht keine mit Funktionalitäten überladene Klassen zu bekommen, sondern simple Fachobjekte ("Data") ohne eigene fachliche Funktionalität, welche unterschiedliche Rollen (d.h. Funktionalitäten) erfüllen, die aber selbst in die Interaction-Klassen ausgelagert werden. Die eigentliche Fachlichkeit (d.h. Anwendungsfälle) selbst wird in den sogenannten Context-Klassen abgebildet.

Data Context Interaction ist gekennzeichnet durch die strikte Trennung von Data (Datenobjekte - entspricht in etwa den Fachobjekten), Context (Kontext - entspricht Anwendungsfällen, Szenarien oder Algorithmen) und Interaction (Interaktionen - entspricht den Rollen, die die Datenobjekte in unterschiedlichen Kontexten wahrnehmen):

Data (Datenobjekte)

Bezeichnet die Fachobjekte und ihre Relationen untereinander. Diese Datenobjekte enthalten keinerlei fachliche Funktionen mehr und sind mehr oder weniger simple Datenhalter. Sie sollten dem gedanklichen Modell des Anwenders zu den Daten der Applikation entsprechen. Sie entsprechen dem Model des Model View Controller-Architekturmusters.

Ein Beispiel für ein Datenobjekt wäre ein "Bankkonto". Es hätte simple Methoden, um den Kontostand abfragen und verändern zu können, aber keine Funktionalitäten, welche Transaktionen oder den Zugriff auf andere Objekte oder Benutzerinteraktionen benötigen. Derartige Aufgabenstellungen werden in DCI durch die Kontexte ermöglicht.

Data-Klassen entsprechen den Entities, Value Objects und Aggregates im Domain Driven-Design.

Context (Kontext)

Beschreiben den Kontext, in welchem die Data-Objekte in spezifischen Rollen verwendet werden. Dies sind die Anwendungsfälle, Szenarien und Algorithmen der fachlichen Aufgabenstellung der Applikation.

Kontexte sind Objekte, welche einen oder mehrere Anwendungsfälle repräsentieren und werden für jede Ausführung eines Use-Cases instantiiert. Ihre Hauptaufgabe ist es, die Data-Objekte zu identifizieren, welche eine bestimmte Rolle in dem Anwendungsfall spielen, und diese auch mit dieser Rolle zu assoziieren. Dieses Binden der Data-Objekte an ihre Rollen ist vergleichbar mit dem Polymorphismus in der Objektorientierten Programmierung.

Die Umsetzung eines bestimmten Anwendungsfalles ist somit der Ablauf einer Business-Funktionalität basierend auf Daten-Klassen welche in diesem Anwendungsfall eine bestimmte Rolle spielen.

Die gesamte Businessfunktionalität einer Applikation ist somit die Summe eines Netzwerks an Methoden, dezentralisiert in verschiedenen Rollen.

Ein Beispiel für einen Kontext wäre ein Banktransfer zwischen zwei Konten. Dieser Banktransfer bedient sich des Datenobjektes "Bankkonto" in den Rollen "Quellkonto" und "Zielkonto". Die Trennung von Datenobjekten und Rollen ermöglicht es beispielsweise auch Banktransfers zwischen anderen Kontentypen (wie Kreditkonten oder Sparkonten) zu implementieren, ohne auf die eigentlichen Datenobjekte dahinter Rücksicht zu nehmen.

Interaction (Interaktionen)

Unter Interaktionen versteht man bei Data Context Interaction die Rollen, welche Datenobjekten zugeordnet werden können. Eine Rolle entspricht bei DCI der Vorstellung eines Anwenders von den Verantwortlichkeiten von Objekten im System. Eine Rolle ist eine Sammlung an Verantwortlichkeiten.

Während in der Objektorientierung die Verantwortlichkeiten in Objekten oder Klassen gesehen werden, werden diese bei DCI den Interaktionen und somit den Rollen zugeschrieben. Objekte übernehmen in einem Anwendungsfall bestimmte Rollen, welche von Anwendungsfall zu Anwendungsfall unterschiedlich sein können. Ein Bankkonto übernimmt einmal die Rolle "Quellkonto", ein anderes Mal die Rolle "Zielkonto" und wiederum ein anderes Mal die Rolle "Transferkonto".

Ein Beispiel für eine Rolle wäre ein Zielkonto, auf welches beim Anwendungsfall "Banktransfer" Beträge gebucht werden können.

Vergleiche zu anderen Technologien

Objektorientierung (OO)
Data Context Interaction ist ein Architekturmuster, welches sich nicht vollständig mit den Grundsätzen der Objektorientierung vereinbaren lässt. So gibt es in der Objektorientierung kein Konzept, welches vollständig auf die Rollen der Interaktionen von DCI passen würde. Das ist auch ein Grund dafür, dass die meisten Implementierungen von DCI mit objektorientierten Programmiersprachen gewöhnungsbedürftig sind.
Darüber hinaus kritisieren die Vertreter von DCI, dass die Objektorientierung landläufig eine Orientierung an Klassen darstellt, während DCI sich viel stärker an den Objekten der Laufzeit eines Programmes orientiert.
Domain-Driven Design (DDD)
Data Context Interaction ist ein Architekturmuster, welches die Bestandteile von Domänenmodellen des Domain-Driven Designs (Entitäten, Wertobjekte, Aggregate, Serviceobjekte und Fachliche Ereignisse) ergänzen kann, beziehungsweise durch diese ergänzt werden kann. So können die Datenobjekte von DCI durch die Entitäten, Wertobjekte und Aggregate von DDD verfeinert werden, Kontext Objekte wiederum lassen sich durch Serviceobjekte und Fachliche Ereignisse abbilden. Die Rollen der Interaktionen von DCI jedoch erweitern wiederum die Bestandteile des Domain-Driven Designs.
Aspektorientierte Programmierung (AOP)
Aspektorientierte Programmierung hat eine Vielfalt an Anwendungsbereichen, einige davon können auch mittels DCI umgesetzt werden, denn die Ziele von DCI sind vergleichbar mit den Zielen aspektorientierter Programmierung - und wie AOP basiert DCI auch auf einer starken Form der Reflection oder Meta-Programmierung. Im Gegensatz zu Aspekten können aber die Rollen der Interaktionen von DCI einfach aggregiert und zusammengefasst werden. Kontexte bieten einen Rahmen für die Zusammenarbeit von Rollen, während Aspekte nur mit den Objekten zusammenarbeiten auf die sie angewendet werden.
Composite oriented programming (COP)
Composite oriented Programming (eine mögliche Übersetzung ins Deutsche wäre Verbundorientierte Programmierung) entspricht einem Konzept, welches eine Überschneidung der hier genannten Konzepte DDD, AOP und DCI darstellt. Es beruht auf folgenden Prinzipien: Verhalten muss kontextabhängig modelliert werden, Entkopplung ist eine Tugend und muss daher ständig gepflegt werden, Geschäftsregeln sind wichtiger als Infrastruktur wie Persistenz oder Sicherheit. [1]

Implementierungen

Inzwischen gibt es eine Reihe von ersten Umsetzungen von Data Context Interaction für verschiedene Programmiersprachen. Da jedoch DCI ein anderes, neues Programmierparadigma darstellt, ist seine Umsetzung auf andere Programmiersprachen oft holprig und umständlich. Beispielsweise ist für die Umsetzung von Rollen üblicherweise das Injecten von Methoden notwendig. Einige wenige Sprachen unterstützen Rollen nativ, bei anderen Sprachen wird dynamische oder statische Injection oder Pre-Compilierung verwendet um DCI zu simulieren. Eine native Umsetzung von Data Context Interaction gibt es derzeit noch nicht.

Die einzige derzeit ernstzunehmende Umsetzung von DCI ist Qi4j, ein Java Framework für Domain-zentrierte Applikationsentwicklung, basierend auf Konzepten wie Aspektorientierte Programmierung, Data Context Interaction und Domain-Driven Design. Scala besitzt mit den so genannten Traits ein Sprachkonstrukt mit dem sich Rollen nativ umsetzen lassen[2], darüber hinaus gibt es erste Ansätze für Umsetzungen mit PHP (Wax Framework), Smalltalk, C++, C#, Ruby, JavaScript und Python

Weblinks

Einzelnachweise

  1. Composite Oriented Programming
  2. The DCI Architecture: A New Vision of Object-Oriented Programming, Trygve Reenskaug und James O. Coplien, 20. März 2009

Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Data, context and interaction — (DCI) is a paradigm used in computer software to program systems of communicating objects. Its goals are: To improve the readability of object oriented code by giving system behavior first class status; To cleanly separate code for rapidly… …   Wikipedia

  • Context awareness — is defined complementary to location awareness. Whereas location may serve as a determinant for resident processes, context may be applied more flexibly with mobile computing with any moving entities, especially with bearers of smart… …   Wikipedia

  • Data presentation architecture — (DPA) is a skill set that seeks to identify, locate, manipulate, format and present data in such a way as to optimally communicate meaning and proffer knowledge. Contents 1 Origin and context 2 Objectives 3 Scope 4 …   Wikipedia

  • Data flow diagram — example.[1] A data flow diagram (DFD) is a graphical representation of the flow of data through an information system, modelling its process aspects. Often they are a preliminary step used to create an overview of the system which can later be… …   Wikipedia

  • Context analysis — is a method to analyze the environment in which a business operates. Environmental scanning mainly focuses on the macro environment of a business. But context analysis considers the entire environment of a business, its internal and external… …   Wikipedia

  • Data stream mining — is the process of extracting knowledge structures from continuous, rapid data records. A data stream is an ordered sequence of instances that in many applications of data stream mining can be read only once or a small number of times using… …   Wikipedia

  • Data model — Overview of data modeling context: A data model provides the details of information to be stored, and is of primary use when the final product is the generation of computer software code for an application or the preparation of a functional… …   Wikipedia

  • Data mining — Not to be confused with analytics, information extraction, or data analysis. Data mining (the analysis step of the knowledge discovery in databases process,[1] or KDD), a relatively young and interdisciplinary field of computer science[2][3] is… …   Wikipedia

  • Context menu — A desktop context menu in GNOME which can be customized Context menus in Windows XP are customizable by third party software. A context menu (also called contextual, shortcut …   Wikipedia

  • Context-sensitive user interface — A context sensitive user interface is one which can automatically choose from a multiplicity of options based on the current or previous state(s) of the program operation.[1]Context sensitivity is almost ubiquitous in current graphical user… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”