Ein zentraler Teil eines jeden Entwicklungsprojekts besteht darin, eine gute Kenntnis des Kontextes oder der Domäne zu
erwerben, die für die zu entwickelnde Software oder das zu entwickelnde System relevant ist. Der Begriff der Domäne
bezieht sich praktisch immer auf die Problemdomäne, die als Vorläufer für die Definition einer Lösungsdomäne betrachtet
wird. Eine Beschreibung der Domäne kann in unterschiedlicher Form erfolgen. Wenn jedoch ein Modell dieser Domäne
erstellt wird, verhilft dies zu einem bessern Verständnis, es hilft den Stakeholdern dabei, eine gemeinsame Sicht der
Domäne zu verwenden, es stellt die Basis zum Ermitteln der Anforderungen der Lösungsdomäne bereit, und es enthält
nützliche Informationen für spätere Analyse- und Designaufgaben.
Unterschiedliche Menschen haben unterschiedliche Vorstellungen von der Domänenmodellierung, und der Begriff des
"Domänenmodells" wird überstrapaziert: Er kann die verschiedenen Features einer bestimmten Domäne beschreiben, die
Gemeinsamkeiten und die Variabilität der Features in einer Domäne, die Informationen, die in einer Domäne bearbeitet
werden können, usw. Daher kann dieser Bereich sinnvollerweise in drei Hauptaktivitäten kategorisiert werden:
Ein Domänenmodell ist ein Modell der Domäne, in der ein Unternehmen sein Geschäft betreibt. Daher sollte eigentlich die
Domäne eines Unternehmens mit der jedes anderen Unternehmens übereinstimmen, das in dieser Domäne sein Geschäft
betreibt. Tatsächlich aber sind Abweichungen in der Domänenmodellierung das Ergebnis zweier Faktoren: der
Detaillierungsebene des Domänenmodells und der Art und Weise, wie das Modell im Kontext spezieller Methodik verwendet
wird. In seiner einfachsten Bedeutung bezeichnet der Begriff des Domänenmodells das Klassendiagramm, das erstellt wird,
um die Konzepte in der Domäne und ihre wichtigsten Beziehungen darzustellen. Normalerweise umfasst dies Klassen mit
Attributen und Operationen zur Darstellung konzeptioneller Domänenelemente. Diese Modelle können formlose Informationen
beinhalten, von Geschäftsanwendungsfällen der hohen Ebene unterstützt werden, usw.
Die Domänenmodellierung beinhaltet häufig die Kenntnis der vorhandenen Softwaresysteme, die in einer Domäne verwendet
werden. In diesen Fällen konzentriert sich die Domänenmodellierung zu einem großen Teil auf die Identifizierung und
Modellierung der Gemeinsamkeiten und Unterschiede, durch die sich die Softwaresysteme in der Domäne auszeichnen, um
darzulegen, welche Aspekte der Problemdomäne derzeit durch die Software angesprochen werden. Mit der
Domänenmodellierung wird definiert, was die Softwaresysteme leisten, indem die Funktionen, Objekte, Daten und
Beziehungen der Softwaresysteme in der Domäne systematisch modelliert werden. Die Folge davon ist
-
die Kenntnis der Funktionen der in der Domäne verwendeten Softwaresysteme
-
ein einheitliches Vokabular, das die Bedeutung der Domäne für die verschiedenen Stakeholder beinhaltet
-
eine vollständige Dokumentation der verwendeten Softwaresysteme, ihrer wichtigsten Funktionen und Beziehungen
Eine wichtige Ausgabe der Domänenmodellierung ist ein umfangreiches Domänenwörterbuch, das Elemente beinhaltet, die zur
Beschreibung der Features und Entitäten im Domänenmodell verwendet werden, sowie eine Übersicht über ihren wichtigsten
Zweck.
Nähere Informationen finden Sie auch unter Artefakt: Geschäftsanalysemodell.
Die Domänenanalyse ist gemäß CMU/SEI-90-TR-21 ein Prozess zum Identifizieren, Erfassen, Organisieren und Darstellen der
relevanten Informationen in einer Domäne, basierend auf der Analyse vorhandener Systeme und ihres Entwicklungsverlaufs,
den Kenntnissen, die von Domänenexperten gewonnen werden, der zugrunde liegenden Theorie und der neu entstehenden
Technologie innerhalb einer Domäne.
Die Domänenanalyse sollte gemäß CARDS94 die betreffende Domäne sorgfältig abgrenzen, Gemeinsamkeiten und Unterschiede
der Systeme in der Domäne berücksichtigen, die Beziehungen zwischen den verschiedenen Elementen in der Domäne
verdeutlichen und dies sinnvoll darstellen.
Abhängig von der Form der Domänenmodelle, die analysiert werden, und der verschiedenen Zielsetzungen für die Analyse,
gibt es viele verschiedene Möglichkeiten der Analyse einer Domäne. Beispielsweise konzentrieren sich einige Methoden
auf die Analyse der Gemeinsamkeiten und Unterschiede in den Produktfamilien. Die Feature-orientierte Domänenanalyse
(Feature Oriented Domain Analysis, FODA) zielt darauf ab, unterschiedliche, für den Benutzer sichtbare Features
innerhalb einer Klasse von zusammengehörigen Softwaresystemen zu identifizieren. Andere Methoden der Domänenanalyse
konzentrieren sich auf bestimmte Blickpunkte oder Problemstellungen innerhalb einer Domäne. Die CWSA-Analyse (Cognitive
Work and Safety Analysis) konzentriert sich auf die Arbeit der Mitarbeiter, auf die Entscheidungen, die Sie treffen,
und auf die Strategien, die Sie verwenden, um Sicherheitsmängel in einem System zu identifizieren.
Die Domänenentwicklung ist eine Strategie, die eine größere Effizienz und Wiederverwendung anstrebt, um eine Familie
ähnlicher Systeme zu realisieren. Die Domänenentwicklung beinhaltet alle Aufgaben, die zum Erstellen von Kern-Assets
für die Software erforderlich sind. Zu diesen Aufgaben gehört Folgendes: Identifizierung einer oder mehrerer Domänen,
Erfassung der Variation innerhalb einer Domäne, Gestaltung eines anpassungsfähigen Designs und Definition des
Mechanismus zur Übersetzung von Anforderungen in Systemen, die aus wiederverwendbaren Komponenten erstellt wurden. Die
Produkte (oder Software-Assets) dieser Aufgaben sind Domänenmodelle, Designmodelle, domänenspezifische Sprachen,
Codegeneratoren und Codekomponenten. Diese Aufgaben sind von entscheidender Bedeutung dafür, dass eine systematische
Lösung zur Wiederverwendung in einem Unternehmen erstellt werden kann.
[CARDS94] CARDS: Nilson, Roslyn; Kogut, Paul; & Jackelen, George Component Provider's and Tool Developer's
Handbook Central Archive for Reusable Defense Software (CARDS). STARS Informal Technical Report
STARS-VC-B017/001/00. Unisys Corporation, März 1994.
[CMU/SEI-90-TR-21]Feasibility Study (CMU/SEI-90-TR-21, ADA 235785).
[EVANS03] E. Evans, Domain-Driven Design: Tackling Complexity in the Heart of Software, Addison-Wesley, 2003.
[FODA] Kang, Kyo C.; Cohen, Sholom G.; Hess, James A.; Novak, William E.; & Peterson, A. Spencer
Feature-Oriented Domain Analysis (FODA)
[SEI] Domain Engineering at the Software Engineering Institute:
http://www.sei.cmu.edu/domain-engineering/domain_eng.html
|