Objektorientiertes Design und UML: Unterschied zwischen den Versionen

Aus CCWiki
Zur Navigation springen Zur Suche springen
Keine Bearbeitungszusammenfassung
 
(21 dazwischenliegende Versionen von 4 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Im folgenden wird zuerst auf die Begriffe '''UML''' und '''modellieren''' eingegangen. In weiterer Folge werden wir uns mit zwei gebräuchlichen Diagrammtypen, dem '''Klassendiagramm''' und dem '''Sequenzdiagramm''' beschäftigen.
Im folgenden wird zuerst auf die Begriffe '''UML''' und '''modellieren''' eingegangen. In weiterer Folge werden wir uns mit zwei gebräuchlichen Diagrammtypen, dem '''{{Link|UML Klassendiagramm|Klassendiagramm}}''' und dem '''{{Link|UML Sequenzdiagramm|Sequenzdiagramm}}''' beschäftigen.
= Modellieren =
= Modellieren =
TODO: Hier soll beschrieben werden was '''modellieren''' im allgemeinen und dann speziell in der Softwareentwicklung bedeutet. <br> <br>
Hier soll beschrieben werden was '''modellieren''' im Allgemeinen und dann speziell in der Softwareentwicklung bedeutet.
Modellieren allgemeine Definition: <br>
== Modellieren allgemeine Definition ==
plastisch formen, gestallten, bearbeiten, durch Modellieren bilden <br> <br>
'''Modellieren''' bedeutet plastisch formen, gestalten, bearbeiten oder etwas durch '''Modellieren''' bilden.
Modellieren in der Softwareentwicklung: <br>
== Modellieren in der Softwareentwicklung ==
Modellieren in der Softwareentwicklung wird auch Softwaredesign genannt. Softwaredesign ist oft wichtig wegen der Komplexität der Computerprogramme, um das Risiko der "Fehlentwicklung" zu minimieren. Bevor die Software modelliert wird, werden im Zuge der Anforderungserhebung zunächst die einzelnen Anforderungen designiert. Diese werden meistens von Auftraggeber und Auftragnehmer gemeinsam ausgesucht.
Modellieren in der Softwareentwicklung wird auch Softwaredesign genannt. Softwaredesign ist oft aufgrund der Komplexität von Computerprogrammen wichtig, um das Risiko der "Fehlentwicklung" zu minimieren. Bevor die Software modelliert wird, werden im Zuge der Anforderungserhebung zunächst die einzelnen Anforderungen erhoben. Diese Anforderungen werden meistens von Auftraggeber und Auftragnehmer gemeinsam erarbeitet.
 
Modellieren kann also zur visuellen Darstellung von Programmen, der Softwarearchitektur, Programmabläufen, Datenflüssen, usw. verwendet.


= UML =
= UML =


Die Unified Modeling Language (UML), ist eine grafische Modellierungssprache zur Beschreibung von Softwaresystemen. Der Grundgedanke der UML besteht darin, eine einheitliche Notation für viele Einsatzgebiete zu haben.
Die '''U'''nified '''M'''odeling '''L'''anguage ('''UML'''), ist eine grafische Modellierungssprache zur Beschreibung von Softwaresystemen. Der Grundgedanke der '''UML''' besteht darin, eine einheitliche Notation für viele Einsatzgebiete zu haben.
 
'''UML''' gilt als Standard zur Analyse und Design objektorientierter Anwendungen. Sie bietet ein Gerüst, um so unterschiedliche Applikationen wie Datenbankanwendungen, Echtzeitsysteme oder Grafikprogramme einheitlich darstellen zu können. Die Aufgabe der '''UML''' ist Spezifikation, Visualisierung und Dokumentation von Modellen für Softwaresysteme. Sie wird von der '''O'''bject '''M'''anagement '''G'''roup entwickelt und ist sowohl von ihr als auch von der ISO (International organisation for standardization) zertifiziert.


UML gilt als Standard zur Analyse und Design Objektorientierter Anwendungen. Sie bietet ein Gerüst, um so unterschiedliche Applikationen wie Datenbankanwendungen, Echtzeitsysteme oder Grafikprogramme einheitlich darstellen zu können. Die Aufgabe der UML ist Spezifikation, Visualisierung und Dokumentation von Modellen für Softwaresysteme.
Die Diagramme in '''UML''' lassen sich in zwei Hauptgruppen aufteilen, Struktur- und Verhaltensdiagramme, welche im folgenden anhand von Vertretern der jeweiligen Gruppe kurz  beschrieben werden.


Die Diagramme in UML lassen sich in zwei Hauptgruppen aufteilen: Strukturdiagramm und Verhaltensdiagramme.
== Strukturdiagramme ==


'''Strukturdiagramme:'''
*[[UML Klassendiagramm|'''Klassendiagramm''']]
* '''Klassendiagramm'''
** Dient zur graphischen Darstellung von {{AL|Klasse|Klassen}} (=abstrakter Oberbegriff für die Beschreibung der gemeinsamen Struktur und des gemeinsamen Verhalten von Objekten), {{AL|Interface|Schnittstellen}} sowie deren {{AL|Beziehungen}}.
** beschreibt die statische Struktur von Objekten in einem System und ihre Bezeichnung untereinander


* '''Kompositionsstrukturdiagramm'''
* '''Kompositionsstrukturdiagramm'''
** zeigt einheitlich das Innere eines Klassifizierers (Metaklasse = Klasse einer Klasse) und dessen Wechselwirkung mit seiner Umgebung
** Zeigt einheitlich das Innere eines Klassifizierers (Metaklasse = Klasse einer Klasse) und dessen Wechselwirkung mit seiner Umgebung.


* '''Komponentendiagramm'''
* '''Komponentendiagramm'''
** stellt die Zusammenhänge der einzelnen Komponenten einer zu erstellenden Softwarelösung dar.
** Stellt die Zusammenhänge der einzelnen Komponenten einer zu erstellenden Softwarelösung dar.
** Die Darstellung umfasst dabei typischerweise Komponenten mit deren Schnittstellen bzw. Ports und wie Komponenten über Abhängigkeitsbeziehung und Konnektoren miteinander verbunden sind.
** Die Darstellung umfasst dabei typischerweise Komponenten mit deren Schnittstellen bzw. Ports und zeigt auch wie Komponenten über Abhängigkeitsbeziehung und Konnektoren miteinander verbunden sind.


* '''Verteilungsdiagramm'''
* '''Verteilungsdiagramm'''
** Beschreibt, welche Komponenten (Objekte) auf welchen Knoten ablaufen
** Dient zur Darstellung der Verteilung von Komponenten auf Rechenknoten.
** Zeigen daher, wie Komponenten konfiguriert sind und welche Abhängigkeiten bestehen
** Zeigt wie Komponenten konfiguriert sind und welche Abhängigkeiten bestehen
** Die Darstellung umfasst dabei typischerweise Rechnerknoten, Komponenten, Artefakte, Ausprägungsspezifikationen, Verbindungen und Verteilungsbeziehungen.
** Die Darstellung umfasst dabei typischerweise Rechnerknoten, Komponenten, Artefakte, Ausprägungsspezifikationen, Verbindungen und Verteilungsbeziehungen.
* '''Objektdiagramm'''
* '''Objektdiagramm'''
** Zeigt die Struktur des modellierten Systems für einen limitierten Zeitabschnitt bzw. konkreten Zeitpunkt (Momentaufnahme).
** Zeigt die Struktur des modellierten Systems für einen limitierten Zeitabschnitt bzw. konkreten Zeitpunkt (Momentaufnahme).
** Die Darstellung umfasst dabei typischerweise Ausprägungsspezifikationen von Klassen und Assoziationen.
** Die Darstellung umfasst dabei typischerweise Ausprägungsspezifikationen von Klassen und Assoziationen.
Ähnlich dem Klassendiagramm, jedoch werden die Objekte, also konkrete Instanzen von Klassen mit deren Werten dargestellt.
* '''Paketdiagramm'''
* '''Paketdiagramm'''
** Dient der Strukturierung der verschiedenen Darstellungen.
** Dient der Strukturierung der verschiedenen Darstellungen.
** Pakete ermöglichen einen guten Überblick über ein Gesamtsystem (für große Systeme sehr wichtig)
** Pakete ermöglichen einen guten Überblick über ein Gesamtsystem (für große Systeme sehr wichtig)
** Die Darstellung umfasst dabei typischerweise Pakete, Paketverschmelzungen, Paketimports und Abhängigkeitsbeziehungen.
** Die Darstellung umfasst dabei typischerweise Pakete, Paketverschmelzungen, Paketimports und Abhängigkeitsbeziehungen.
* '''Profildiagramm'''
* '''Profildiagramm'''
** wird in der Metamodellebene verwendet, um sogenannte Stereotype mit Klassen anzuzeigen
** Wird in der Metamodellebene verwendet, um sogenannte Stereotype mit Klassen anzuzeigen
** diese haben dann die Bezeichnung <<stereotype>> oder bei Profilen und Paketen <<profile>> bekommen.
** Diese haben dann die Bezeichnung <<stereotype>> oder bei Profilen und Paketen <<profile>> bekommen.
'''Verhaltensdiagramme'''
 
== Verhaltensdiagramme ==
 
* '''Aktivitätsdiagramm'''
* '''Aktivitätsdiagramm'''
** es wird meist der Ablauf eines Anwendungsfalls beschrieben, es eignet sich aber zur Modellierung aller Aktivitäten innerhalb eines Systems.
** Es wird meist der Ablauf eines Anwendungsfalls beschrieben, es eignet sich aber auch zur Modellierung aller Aktivitäten innerhalb eines Systems.
 
* '''Anwendungsfalldiagramm''' (Use-Case Diagramm)
* '''Anwendungsfalldiagramm''' (Use-Case Diagramm)
** Beschreibt das Zusammenwirken von Personen (Aktoren) mit einem System.
** Beschreibt das Zusammenwirken von Personen (Aktoren) mit einem System.
** Es stellt Anwendungsfälle und Akteure mit ihren jeweiligen Abhängigkeiten und Beziehungen dar.
** Es stellt Anwendungsfälle und Akteure mit ihren jeweiligen Abhängigkeiten und Beziehungen dar.
* '''Interaktionsübersichtsdiagramm'''
* '''Interaktionsübersichtsdiagramm'''
* '''Kommunikationsdiagramm'''
* '''Kommunikationsdiagramm'''
** Stellt den Austausch von Nachrichten dar.
** Stellt den Austausch von Nachrichten dar.
* '''Sequenzdiagramm'''
 
*[[UML Sequenzdiagramm|'''Sequenzdiagramm''']]
** Stellt die einzelnen Objekte und ihre Interaktion (auf zeitlichen Ablauf bezogen) dar
** Stellt die einzelnen Objekte und ihre Interaktion (auf zeitlichen Ablauf bezogen) dar
* '''Zeitverlaufsdiagramm'''
* '''Zeitverlaufsdiagramm'''
** Ist ein zweidimensionales Diagramm, wobei auf der x-Achse die Zeit, und auf der y-Achse Zustände von Objekten aufgetragen werden.
** Ist ein zweidimensionales Diagramm, wobei auf der x-Achse die Zeit, und auf der y-Achse Zustände von Objekten aufgetragen werden.
** Dieser Diagrammtyp ähnelt damit der Anzeige eines Oszilloskops, wird also seit langem in der Elektrotechnik verwendet.
** Dieser Diagrammtyp ähnelt damit der Anzeige eines Oszilloskops, wird also seit langem in der Elektrotechnik verwendet.
* '''Zustandsdiagramm'''
* '''Zustandsdiagramm'''
** Visualisiert die unterschiedlichsten Zustände, die Objekte in ihrem Leben annehmen können
** Visualisiert die unterschiedlichsten Zustände, die Objekte in ihrem Leben annehmen können
** Wird benutzt, um das Verhalten eines Systems oder die zulässige Nutzung der Schnittstellen eines Systems zu spezifizieren
** Wird benutzt, um das Verhalten eines Systems oder die zulässige Nutzung der Schnittstellen eines Systems zu spezifizieren


== Diagramme ==
== Diagramme ==
[[UML_Klassendiagramm|UML Klassendiagramm]]
=== [[UML_Klassendiagramm|Klassendiagramm]] ===
<br>
=== [[UML_Sequenzdiagramm|Sequenzdiagramm]] ===
[[UML_Sequenzdiagramm|UML Sequenzdiagramm]]
 
= TODO: Bitte Beachten =
Wenn möglich versuche die Quellen für die Information zu nennen. Wir nehmen das hier nicht so genau, aber es sollte möglich sein die entsprechende Seite aus der die Information entnommen wurde zu finden.
<br>
Bilder bitte direkt mit Quelle (Beispiel)
[[Datei:Bubble-sort-example-300px.gif|mini|none|Funktionsweise Bubblesort. Quelle: https://de.wikipedia.org/wiki/Bubblesort]]

Aktuelle Version vom 5. März 2021, 09:40 Uhr

Im folgenden wird zuerst auf die Begriffe UML und modellieren eingegangen. In weiterer Folge werden wir uns mit zwei gebräuchlichen Diagrammtypen, dem Klassendiagramm und dem Sequenzdiagramm beschäftigen.

Modellieren

Hier soll beschrieben werden was modellieren im Allgemeinen und dann speziell in der Softwareentwicklung bedeutet.

Modellieren allgemeine Definition

Modellieren bedeutet plastisch formen, gestalten, bearbeiten oder etwas durch Modellieren bilden.

Modellieren in der Softwareentwicklung

Modellieren in der Softwareentwicklung wird auch Softwaredesign genannt. Softwaredesign ist oft aufgrund der Komplexität von Computerprogrammen wichtig, um das Risiko der "Fehlentwicklung" zu minimieren. Bevor die Software modelliert wird, werden im Zuge der Anforderungserhebung zunächst die einzelnen Anforderungen erhoben. Diese Anforderungen werden meistens von Auftraggeber und Auftragnehmer gemeinsam erarbeitet.

Modellieren kann also zur visuellen Darstellung von Programmen, der Softwarearchitektur, Programmabläufen, Datenflüssen, usw. verwendet.

UML

Die Unified Modeling Language (UML), ist eine grafische Modellierungssprache zur Beschreibung von Softwaresystemen. Der Grundgedanke der UML besteht darin, eine einheitliche Notation für viele Einsatzgebiete zu haben.

UML gilt als Standard zur Analyse und Design objektorientierter Anwendungen. Sie bietet ein Gerüst, um so unterschiedliche Applikationen wie Datenbankanwendungen, Echtzeitsysteme oder Grafikprogramme einheitlich darstellen zu können. Die Aufgabe der UML ist Spezifikation, Visualisierung und Dokumentation von Modellen für Softwaresysteme. Sie wird von der Object Management Group entwickelt und ist sowohl von ihr als auch von der ISO (International organisation for standardization) zertifiziert.

Die Diagramme in UML lassen sich in zwei Hauptgruppen aufteilen, Struktur- und Verhaltensdiagramme, welche im folgenden anhand von Vertretern der jeweiligen Gruppe kurz beschrieben werden.

Strukturdiagramme

  • Kompositionsstrukturdiagramm
    • Zeigt einheitlich das Innere eines Klassifizierers (Metaklasse = Klasse einer Klasse) und dessen Wechselwirkung mit seiner Umgebung.
  • Komponentendiagramm
    • Stellt die Zusammenhänge der einzelnen Komponenten einer zu erstellenden Softwarelösung dar.
    • Die Darstellung umfasst dabei typischerweise Komponenten mit deren Schnittstellen bzw. Ports und zeigt auch wie Komponenten über Abhängigkeitsbeziehung und Konnektoren miteinander verbunden sind.
  • Verteilungsdiagramm
    • Dient zur Darstellung der Verteilung von Komponenten auf Rechenknoten.
    • Zeigt wie Komponenten konfiguriert sind und welche Abhängigkeiten bestehen
    • Die Darstellung umfasst dabei typischerweise Rechnerknoten, Komponenten, Artefakte, Ausprägungsspezifikationen, Verbindungen und Verteilungsbeziehungen.
  • Objektdiagramm
    • Zeigt die Struktur des modellierten Systems für einen limitierten Zeitabschnitt bzw. konkreten Zeitpunkt (Momentaufnahme).
    • Die Darstellung umfasst dabei typischerweise Ausprägungsspezifikationen von Klassen und Assoziationen.
Ähnlich dem Klassendiagramm, jedoch werden die Objekte, also konkrete Instanzen von Klassen mit deren Werten dargestellt.
  • Paketdiagramm
    • Dient der Strukturierung der verschiedenen Darstellungen.
    • Pakete ermöglichen einen guten Überblick über ein Gesamtsystem (für große Systeme sehr wichtig)
    • Die Darstellung umfasst dabei typischerweise Pakete, Paketverschmelzungen, Paketimports und Abhängigkeitsbeziehungen.
  • Profildiagramm
    • Wird in der Metamodellebene verwendet, um sogenannte Stereotype mit Klassen anzuzeigen
    • Diese haben dann die Bezeichnung <<stereotype>> oder bei Profilen und Paketen <<profile>> bekommen.

Verhaltensdiagramme

  • Aktivitätsdiagramm
    • Es wird meist der Ablauf eines Anwendungsfalls beschrieben, es eignet sich aber auch zur Modellierung aller Aktivitäten innerhalb eines Systems.
  • Anwendungsfalldiagramm (Use-Case Diagramm)
    • Beschreibt das Zusammenwirken von Personen (Aktoren) mit einem System.
    • Es stellt Anwendungsfälle und Akteure mit ihren jeweiligen Abhängigkeiten und Beziehungen dar.
  • Interaktionsübersichtsdiagramm
  • Kommunikationsdiagramm
    • Stellt den Austausch von Nachrichten dar.
  • Sequenzdiagramm
    • Stellt die einzelnen Objekte und ihre Interaktion (auf zeitlichen Ablauf bezogen) dar
  • Zeitverlaufsdiagramm
    • Ist ein zweidimensionales Diagramm, wobei auf der x-Achse die Zeit, und auf der y-Achse Zustände von Objekten aufgetragen werden.
    • Dieser Diagrammtyp ähnelt damit der Anzeige eines Oszilloskops, wird also seit langem in der Elektrotechnik verwendet.
  • Zustandsdiagramm
    • Visualisiert die unterschiedlichsten Zustände, die Objekte in ihrem Leben annehmen können
    • Wird benutzt, um das Verhalten eines Systems oder die zulässige Nutzung der Schnittstellen eines Systems zu spezifizieren

Diagramme