Files
ihk-ausbildung/1-Ausbildungsjahr/LF5-Analyse-Design/LF5-02-Softwaremodellierung.md

8.8 KiB
Raw Permalink Blame History

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


Stand: 2024