# Requirements Analysis
## Domain Diagram
- Konzeptuelles Modell um ein gemeinsames Vokabular im Projekt-Team zu etablieren
### Problem Domain
- Devs haben ein gemeinsames Verständnis von Lösungen

### Solution Domain
- Es muss ein gemeinsames Verständnis von dem Arbeitsumfeld des Klienten geschaffen werden

### Beispiel Domain Diagram
![image_410.png](image_410.png)
- Zeigt die wichtigsten Problem-Domains und ihre Verbindungen


## UML Use Case Diagram
- System Anforderungen erfassen
  - NUR [Functional Requirements](IntroductionOOAD.md#requirements-in-software-engineering)

### Notation
#### Actor
- ![image_411.png](image_411.png)
- Identifizierung:
  - ![image_412.png](image_412.png)

#### Use Case
![image_413.png](image_413.png)

#### Communication Lines
![image_414.png](image_414.png)

#### System Boundaries
![image_415.png](image_415.png)


## User Stories
### Definition
- Beschreiben funktionalen Wert für einen Nutzer des Systems / der Software
- Aspekte
  1. **Card**
     - Beschreibung der Story
       - Genutzt für Planung, Erinnerung
     - Traditionell Handschriftlich
     - Repräsentiert Kunden-Anforderungen
       - nicht Dokumentation
  2. **Conversation**
     - Gibt Details über Story
     - Wichtigster Teil der User Story
     - Werden mit dem Kunden vor der Entwicklung diskutiert
  3. **Confirmation**
     - Akzeptierungskriterien (Tests)
     - Dokumentation der Konversation
     - Können entscheidend sein, wann eine Story abgeschlossen ist

##### Beispiel UserStory: Job Posting und Search-Website
- Ein Nutzer kann nach Jobs suchen
- Eine Firma kann eine offene Stelle posten
- Ein Nutzer kann einstellen, wer seinen Lebenslauf sehen kann

![image_416.png](image_416.png)

### Good User Stories: INVEST Criteria
![image_417.png](image_417.png)

#### I - Independent
- Unabhängig von allen anderen Stories
  - Stories sollten in allen möglichen Reihenfolgen bearbeitet werden können
- Falls eine enge Kupplung besteht
  - MERGE
- **Beispiel:**
  - ![image_418.png](image_418.png)

#### N - Negotiable
- Stories sind keine festen Verträge
  - Kurze Beschreibung von Funktionalität
- Details müssen in Konversation zwischen Kunde und Team verhandelt werden
- Falls wichtige Details vorher bekannt sind
  - als Annotation inkludieren
- **Beispiel:**
  - ![image_419.png](image_419.png)

#### V - Valuable
- **Beispiel:**
  - ![image_420.png](image_420.png)

#### E - Estimable
- Devs müssen workload abschätzen können
- **Gegenbeispiel:**
  - ![image_421.png](image_421.png)

#### S - Small
![image_422.png](image_422.png)

#### T - Testable

## Gathering Stories
- **Nutzer-Interviews**
  - Standard
  - Wichtig:
    - Echte Nutzer befragen
  - Fragen sollten offen und kontextfrei sein
- **Umfragen**
  - Für weitere Details in bekannten Stories
  - Beispielfragen:
    - Wie oft nutzt du [Feature]
    - Warum nutzt du [Feature] nicht mehr
- **Beobachtungen**
  - Nutzer beobachten, während Nutzung befragen
  - Seltene Möglichkeit zur Durchführung
    - Wenn dann da: NUTZEN!
- **Story-Writing-Workshops**
  - Meeting mit Devs, Nutzer, Produkt-Kunde, andere Beteiligte
  - Schnellste Möglichkeit für neue Stories
  - Führen des Workshops benötigt Erfahrung