336 lines
8.8 KiB
Markdown
336 lines
8.8 KiB
Markdown
# 5.2 Softwaremodellierung
|
||
|
||
## Modellierungssprachen
|
||
|
||
### Übersicht
|
||
|
||
```
|
||
Modellierung - Sprachen
|
||
├── UML (Unified Modeling Language)
|
||
├── Struktogramme (Nassi-Shneiderman)
|
||
├── Flussdiagramme (Flowcharts)
|
||
├── Entity-Relationship (ER)
|
||
└── Aktivitätsdiagramme
|
||
```
|
||
|
||
---
|
||
|
||
## UML - Unified Modeling Language
|
||
|
||
### UML-Diagrammtypen
|
||
|
||
```
|
||
UML 2.5 - Diagrammübersicht
|
||
├── Strukturdiagramme
|
||
│ ├── Klassendiagramm
|
||
│ ├── Objektdiagramm
|
||
│ ├── Komponentendiagramm
|
||
│ ├── Verteilungsdiagramm
|
||
│ └── Paketdiagramm
|
||
└── Verhaltensdiagramme
|
||
├── Anwendungsfalldiagramm
|
||
├── Aktivitätsdiagramm
|
||
├── Zustandsdiagramm
|
||
└── Sequenzdiagramm
|
||
```
|
||
|
||
---
|
||
|
||
## Klassendiagramm
|
||
|
||
### Elemente
|
||
|
||
```
|
||
Klassendiagramm - Symbole
|
||
┌─────────────────────────┐
|
||
│ Klassenname │
|
||
├─────────────────────────┤
|
||
│ - attribut: Typ │ ← Eigenschaften
|
||
├─────────────────────────┤
|
||
│ + methode(): Rückgabetyp│ ← Methoden
|
||
└─────────────────────────┘
|
||
|
||
Sichtbarkeit:
|
||
+ public (öffentlich)
|
||
- private (privat)
|
||
# protected (geschützt)
|
||
~ package (Paket)
|
||
```
|
||
|
||
### Beziehungen
|
||
|
||
```
|
||
Beziehungsarten
|
||
├── Assoziation ───────
|
||
├── Aggregation ◇─────── (hat ein, kann auch ohne existieren)
|
||
├── Komposition ◆────── (hat ein, existiert nicht ohne)
|
||
├── Vererbung △───────
|
||
└── Implementierung ▷───
|
||
```
|
||
|
||
### Beispiel
|
||
|
||
```
|
||
┌─────────────┐ ┌─────────────┐
|
||
│ Kunde │ 1 * │ Bestellung │
|
||
├─────────────┤─────────│─────────────┤
|
||
│ -name │* │ -datum │
|
||
│ -adresse │ │ -status │
|
||
├─────────────┤ ├─────────────┤
|
||
│ +bestellen()│ │ +erstellen()│
|
||
└─────────────┘ └─────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## Anwendungsfalldiagramm (Use Case)
|
||
|
||
### Elemente
|
||
|
||
```
|
||
Anwendungsfall-Diagramm
|
||
┌─────────────┐
|
||
│ Akteur │
|
||
└──────┬──────┘
|
||
│
|
||
│ (Verbindung)
|
||
▼
|
||
┌─────────────────┐
|
||
│ Anwendungsfall │
|
||
└─────────────────┘
|
||
```
|
||
|
||
### Beispiel
|
||
|
||
```
|
||
┌────────┐
|
||
│ Kunde │
|
||
└────┬───┘
|
||
│
|
||
┌────┴────┐
|
||
│ │
|
||
▼ ▼
|
||
┌─────────┐ ┌─────────────────┐
|
||
│ Suchen │ │ Bestellen │
|
||
└─────────┘ └─────────────────┘
|
||
│
|
||
┌───┴───┐
|
||
│ │
|
||
▼ ▼
|
||
┌────────┐ ┌──────────┐
|
||
│ Bezahlen│ │ Zurückgeben│
|
||
└────────┘ └──────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## Aktivitätsdiagramm
|
||
|
||
### Elemente
|
||
|
||
```
|
||
Aktivitätsdiagramm - Symbole
|
||
┌─────────┐ ◇──────►
|
||
│ Start │ (Objekt)
|
||
└─────────┘
|
||
|
||
▭ Entscheidung ▢ Parallel
|
||
|
||
┌─────────┐ ╱ ╲
|
||
│ Aktion │ ╱ Merge ╲
|
||
└─────────┘ ╲ ╱
|
||
|
||
┌─────────┐
|
||
│ Ende │
|
||
└─────────┘
|
||
```
|
||
|
||
### Beispiel
|
||
|
||
```
|
||
▭
|
||
▼
|
||
┌───────────┐
|
||
│ Bestellung │
|
||
│ starten │
|
||
└─────┬─────┘
|
||
│
|
||
▼
|
||
┌───────────┐
|
||
│ Ware │
|
||
│ verfügbar?│
|
||
└─────┬─────┘
|
||
│
|
||
╱ ╲
|
||
Ja Nein
|
||
╲ ╱
|
||
▼ ▼
|
||
┌────────┐ ┌──────────┐
|
||
│Liefern │ │Benachrich-│
|
||
│ │ │tigen │
|
||
└───┬────┘ └────┬─────┘
|
||
│ │
|
||
└─────┬─────┘
|
||
▼
|
||
┌────────┐
|
||
│ Ende │
|
||
└────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## Sequenzdiagramm
|
||
|
||
### Elemente
|
||
|
||
```
|
||
Sequenzdiagramm - Elemente
|
||
┌──────┐ ┌──────┐
|
||
│ Actor│ │ System│
|
||
└──┬───┘ └──┬───┘
|
||
│ │
|
||
│ Nachricht ──►
|
||
│ │
|
||
│ ◄─────── Rückmeldung
|
||
│ │
|
||
```
|
||
|
||
### Beispiel
|
||
|
||
```
|
||
┌────────┐ ┌────────┐ ┌────────┐
|
||
│ Client │ │ Server │ │ Daten- │
|
||
│ │ │ │ │ bank │
|
||
└───┬────┘ └───┬────┘ └───┬────┘
|
||
│ │ │
|
||
│──Login()───►│ │
|
||
│ │──Query()───►│
|
||
│ │◄─────────── │
|
||
│◄─────────── │ │
|
||
│ │ │
|
||
```
|
||
|
||
---
|
||
|
||
## Struktogramme (Nassi-Shneiderman)
|
||
|
||
### Grundelemente
|
||
|
||
```
|
||
Struktogramme
|
||
┌──────────────────┐
|
||
│ Anweisung │ ← einfache Anweisung
|
||
└──────────────────┘
|
||
|
||
┌──────────────────┐
|
||
│ Verzweigung │
|
||
│ │
|
||
│ Wenn Bedingung │
|
||
│ dann Anweisung │
|
||
│ sonst Anweisung│
|
||
└──────────────────┘
|
||
|
||
┌──────────────────┐
|
||
│ Schleife │
|
||
│ │
|
||
│ solange Bed. │
|
||
│ Anweisung │
|
||
└──────────────────┘
|
||
```
|
||
|
||
### Beispiel
|
||
|
||
```
|
||
┌──────────────────────────────────────┐
|
||
│ Eingegebene Zahl ist negativ? │
|
||
├──────────────────────────────────────┤
|
||
│ JA NEIN │
|
||
│ │ │ │
|
||
│ ┌─────┴─────┐ ┌────┴────┐ │
|
||
│ │ "Zahl ist │ │ "Zahl │ │
|
||
│ │ negativ" │ │ ist pos.│ │
|
||
│ └───────────┘ └─────────┘ │
|
||
└──────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## Flussdiagramme (Flowchart)
|
||
|
||
### Symbole
|
||
|
||
```
|
||
Flussdiagramm - Symbole
|
||
┌─────────┐
|
||
│ Oval │ → Start/Ende
|
||
└─────────┘
|
||
|
||
┌─────────┐
|
||
│ Rechteck│ → Aktion/Prozess
|
||
└─────────┘
|
||
|
||
┌────┐
|
||
│Raute│ → Entscheidung
|
||
└────┘
|
||
|
||
→ → Verbindungslinie
|
||
```
|
||
|
||
### Beispiel
|
||
|
||
```
|
||
┌───────┐
|
||
│ Start │
|
||
└───┬───┘
|
||
│
|
||
▼
|
||
┌────────┐
|
||
│ Zahl │
|
||
│ einlesen│
|
||
└───┬────┘
|
||
│
|
||
▼
|
||
┌───────────┐
|
||
│negativ? │
|
||
└─────┬─────┘
|
||
╱ ╲
|
||
Ja Nein
|
||
╲ ╱
|
||
▼ ▼
|
||
┌─────────┐ ┌─────────┐
|
||
│ negativ │ │ positiv │
|
||
└────┬────┘ └────┬────┘
|
||
│ │
|
||
└─────┬──────┘
|
||
▼
|
||
┌───────┐
|
||
│ Ende │
|
||
└───────┘
|
||
```
|
||
|
||
---
|
||
|
||
## Werkzeuge
|
||
|
||
### Modellierungs-Tools
|
||
|
||
| Tool | Typ | Plattform |
|
||
|------|-----|----------|
|
||
| PlantUML | Text-basiert | Alle |
|
||
| Mermaid | Text-basiert | Alle |
|
||
| draw.io | Visuell | Web |
|
||
| Lucidchart | Professionell | Web |
|
||
| Enterprise Architect | Professionell | Windows |
|
||
| Visual Paradigm | Professionell | Alle |
|
||
|
||
---
|
||
|
||
## Querverweise
|
||
|
||
- [[LF5-01-Anforderungsanalyse|Zurück: Anforderungsanalyse]]
|
||
- [[LF5-03-Programmierung|Nächstes Thema: Programmierung]]
|
||
|
||
---
|
||
|
||
*Stand: 2024*
|