Initial commit: IHK Ausbildung materials

This commit is contained in:
2026-03-13 11:46:08 +01:00
commit eb4a13ef7c
67 changed files with 11361 additions and 0 deletions

View File

@@ -0,0 +1,231 @@
# LF 10a: Benutzerschnittstellen gestalten und entwickeln
> **3. Ausbildungsjahr** | Zeitrichtwert: **80 Stunden**
## Kernkompetenz
Die Schülerinnen und Schüler verfügen über die Kompetenz, Benutzeroberflächen für softwarebasierte Arbeitsabläufe und Geschäftsprozesse zu gestalten und zu entwickeln.
---
## Lernziele
Nach diesem Lernfeld kannst du:
- [ ] Geschäftsprozesse analysieren und modellieren
- [ ] Benutzeroberflächen ergonomisch gestalten
- [ ] UI/UX-Prinzipien anwenden
- [ ] Responsive Design umsetzen
- [ ] Agile Entwicklungsmethoden anwenden
- [ ] Datenschutz und Benutzerfreundlichkeit prüfen
---
## UI/UX-Grundlagen
### UI (User Interface)
```
Gestaltungselemente:
├── Layout
│ ├── Struktur
│ ├── Hierarchie
│ └── Weißraum
├── Typografie
│ ├── Schriftart
│ ├── Schriftgröße
│ └── Lesbarkeit
├── Farben
│ ├── Farbschema
│ ├── Kontrast
│ └── Bedeutung
└── Komponenten
├── Buttons
├── Formulare
└── Navigation
```
### UX (User Experience)
```
UX-Prinzipien:
├── Benutzerzentrierung
├── Konsistenz
├── Feedback
├── Fehlertoleranz
├── Übersichtlichkeit
└── Erwartungskonformität
```
---
## Web-Entwicklung
### HTML5
```html
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Beispielseite</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<header>
<nav>
<a href="/">Start</a>
<a href="/produkte">Produkte</a>
<a href="/kontakt">Kontakt</a>
</nav>
</header>
<main>
<h1>Willkommen</h1>
<p>Dies ist eine Beispielseite.</p>
</main>
<footer>&copy; 2024</footer>
</body>
</html>
```
### CSS3
```css
/* Responsive Design */
.container {
max-width: 1200px;
margin: 0 auto;
padding: 1rem;
}
/* Mobile First */
@media (min-width: 768px) {
.grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
}
}
@media (min-width: 1024px) {
.grid {
grid-template-columns: repeat(3, 1fr);
}
}
/* Flexbox Navigation */
nav {
display: flex;
justify-content: space-between;
align-items: center;
}
```
### JavaScript
```javascript
// DOM Manipulation
document.addEventListener('DOMContentLoaded', () => {
const button = document.getElementById('submit-btn');
button.addEventListener('click', async (event) => {
event.preventDefault();
const formData = new FormData(document.querySelector('form'));
const data = Object.fromEntries(formData);
try {
const response = await fetch('/api/submit', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(data)
});
if (response.ok) {
alert('Erfolgreich gesendet!');
}
} catch (error) {
console.error('Fehler:', error);
}
});
});
```
---
## Geschäftsprozess-Modellierung
### BPMN (Business Process Model and Notation)
```
BPMN-Elemente:
├── Start/End Event
├── Task (Aufgabe)
├── Gateway (Verzweigung)
│ ├── XOR (entweder-oder)
│ ├── AND (parallel)
│ └── OR (möglicherweise)
├── Sequence Flow (Sequenzfluss)
└── Message Flow (Nachrichtenfluss)
```
### EPK (Ereignisgesteuerte Prozesskette)
```
Komponenten:
├── Funktionen (Aktivitäten)
├── Ereignisse (Auslöser)
├── Kanten (Verknüpfungen)
└── Operatoren (UND, ODER, XOR)
```
---
## Agile Methoden
### Scrum
```
Scrum-Rollen:
├── Product Owner
├── Scrum Master
└── Development Team
Scrum-Events:
├── Sprint Planning
├── Daily Standup
├── Sprint Review
└── Sprint Retrospective
Scrum-Artefakte:
├── Product Backlog
├── Sprint Backlog
└── Increment
```
### Kanban
```
Kanban-Prinzipien:
├── Visualisierung
├── Limit Work in Progress
├── Flow-Management
└── Kontinuierliche Verbesserung
```
---
## Prüfungsrelevanz
- Wichtig für LF 12a (Abschlussprojekt)
- UI-Design wird in Teil 2 geprüft
---
## Querverweise
- [[2-Ausbildungsjahr/LF9-Netzwerke-Dienste|Vorher: LF 9]]
- [[3-Ausbildungsjahr/LF11a-Funktionalität-realisiren|Nachher: LF 11a]]
---
*Stand: 2024 | Quelle: KMK Rahmenlehrplan 13.12.2019*

View File

@@ -0,0 +1,261 @@
# LF 11a: Funktionalität in Anwendungen realisieren
> **3. Ausbildungsjahr** | Zeitrichtwert: **80 Stunden**
## Kernkompetenz
Die Schülerinnen und Schüler verfügen über die Kompetenz, modulare Komponenten zur informationstechnischen Verarbeitung von Arbeitsabläufen und Geschäftsprozessen zu entwickeln und deren Qualität zu sichern.
---
## Lernziele
Nach diesem Lernfeld kannst du:
- [ ] Datenstrukturen und Funktionalitäten aus Anforderungen ableiten
- [ ] Modulare Softwarekomponenten planen
- [ ] Objektorientierte Programmierung anwenden
- [ ] Schnittstellen dokumentieren
- [ ] Testfälle formulieren und automatisierte Tests durchführen
- [ ] Qualitätskriterien anwenden
---
## Objektorientierte Programmierung (OOP)
### Grundkonzepte
```
OOP-Prinzipien:
├── Kapselung (Encapsulation)
│ └── Daten und Methoden zusammenfassen
├── Vererbung (Inheritance)
│ └── Gemeinsame Eigenschaften vererben
├── Polymorphismus
│ └── Gleiches Verhalten, unterschiedliche Formen
└── Abstraktion
└── Komplexität reduzieren
```
### Klassen-Beispiel (Python)
```python
from abc import ABC, abstractmethod
from datetime import datetime
class Kunde(ABC):
"""Abstrakte Basisklasse für Kunden"""
def __init__(self, kundennummer: int, name: str):
self._kundennummer = kundennummer
self._name = name
self._erstellt_am = datetime.now()
@property
def kundennummer(self) -> int:
return self._kundennummer
@abstractmethod
def berechne_rabatt(self, betrag: float) -> float:
"""Berechnet den Rabatt für den Kunden"""
pass
def __str__(self) -> str:
return f"Kunde {self._kundennummer}: {self._name}"
class Privatkunde(Kunde):
"""Privatkunde mit Standard-Rabatt"""
def __init__(self, kundennummer: int, name: str):
super().__init__(kundennummer, name)
self._rabatt_stufe = 1
def berechne_rabatt(self, betrag: float) -> float:
return betrag * 0.05 * self._rabatt_stufe
class Firmenkunde(Kunde):
"""Firmenkunde mit erhöhtem Rabatt"""
def __init__(self, kundennummer: int, name: str, firmenname: str):
super().__init__(kundennummer, name)
self._firmenname = firmenname
self._rabatt_stufe = 2
def berechne_rabatt(self, betrag: float) -> float:
return betrag * 0.10 * self._rabatt_stufe
```
---
## Entwurfsmuster (Design Patterns)
### Singleton
```python
class DatabaseConnection:
"""Singleton für Datenbankverbindung"""
_instance = None
def __new__(cls):
if cls._instance is None:
cls._instance = super().__new__(cls)
cls._instance.connection = None
return cls._instance
def connect(self, connection_string: str):
if self.connection is None:
print(f"Verbinde mit: {connection_string}")
self.connection = "Datenbankverbindung hergestellt"
def disconnect(self):
if self.connection:
print("Trenne Verbindung")
self.connection = None
```
### Factory Method
```python
class KundeFactory:
"""Factory für Kunden-Erstellung"""
@staticmethod
def create_kunde(kundentyp: str, **kwargs) -> Kunde:
if kundentyp == "privat":
return Privatkunde(**kwargs)
elif kundentyp == "firma":
return Firmenkunde(**kwargs)
else:
raise ValueError(f"Unbekannter Kundentyp: {kundentyp}")
```
---
## Schnittstellen
### API-Design
```python
from typing import List, Optional
from pydantic import BaseModel
class BestellPosition(BaseModel):
"""Datenmodell für Bestellposition"""
artikel_id: int
menge: int
einzelpreis: float
class Bestellung(BaseModel):
"""Datenmodell für Bestellung"""
bestell_id: Optional[int] = None
kundennummer: int
positionen: List[BestellPosition]
gesamtpreis: float
def berechne_gesamtsumme(self) -> float:
return sum(p.menge * p.einzelpreis for p in self.positionen)
```
### REST-API mit FastAPI
```python
from fastapi import FastAPI, HTTPException
from typing import List
app = FastAPI(title="Bestell-API")
bestellungen: List[Bestellung] = []
@app.post("/bestellungen", response_model=Bestellung)
async def create_bestellung(bestellung: Bestellung):
"""Neue Bestellung erstellen"""
bestellung.gesamtpreis = bestellung.berechne_gesamtsumme()
bestellung.bestell_id = len(bestellungen) + 1
bestellungen.append(bestellung)
return bestellung
@app.get("/bestellungen/{bestell_id}")
async def get_bestellung(bestell_id: int):
"""Bestellung abrufen"""
for b in bestellungen:
if b.bestell_id == bestell_id:
return b
raise HTTPException(status_code=404, detail="Nicht gefunden")
```
---
## Qualitätssicherung
### Testmethoden
```
Test-Pyramide:
╱╲
╲ E2E Tests
╱────╲
╲ Integrationstests
╱────────╲
╲ Unit-Tests
╱────────────╲
```
### Unit-Tests (pytest)
```python
import pytest
from bestellung import Bestellung, BestellPosition
class TestBestellung:
@pytest.fixture
def beispiel_bestellung(self):
positionen = [
BestellPosition(artikel_id=1, menge=2, einzelpreis=10.00),
BestellPosition(artikel_id=2, menge=1, einzelpreis=25.00)
]
return Bestellung(kundennummer=100, positionen=positionen)
def test_gesamtsumme_berechnung(self, beispiel_bestellung):
"""Test der Gesamtsummen-Berechnung"""
ergebnis = beispiel_bestellung.berechne_gesamtsumme()
# 2 × 10 + 1 × 25 = 45
assert ergebnis == 45.00
def test_leere_bestellung(self):
"""Test mit leerer Positionen-Liste"""
bestellung = Bestellung(kundennummer=100, positionen=[])
ergebnis = bestellung.berechne_gesamtsumme()
assert ergebnis == 0.00
```
---
## Handlungsphasen
1. **Analysieren**: Anforderungen verstehen, Datenmodelle ableiten
2. **Planen**: Module und Schnittstellen entwerfen
3. **Implementieren**: Komponenten entwickeln
4. **Testen**: Tests durchführen, Qualität sichern
5. **Optimieren**: Verbesserungen einarbeiten
---
## Prüfungsrelevanz
- Programmierkenntnisse für Teil 2
- Wichtig für Abschlussprojekt
---
## Querverweise
- [[3-Ausbildungsjahr/LF10a-Benutzeroberflächen|Vorher: LF 10a]]
- [[3-Ausbildungsjahr/LF12a-Kundenspezifische-Entwicklung|Nachher: LF 12a]]
- [[Programmiersprachen/Python|OOP mit Python]]
---
*Stand: 2024 | Quelle: KMK Rahmenlehrplan 13.12.2019*

View File

@@ -0,0 +1,273 @@
# LF 12a: Kundenspezifische Anwendungsentwicklung durchführen
> **3. Ausbildungsjahr** | Zeitrichtwert: **120 Stunden**
## Kernkompetenz
Die Schülerinnen und Schüler verfügen über die Kompetenz, einen Kundenauftrag zur Anwendungsentwicklung vollständig durchzuführen und zu bewerten.
---
## Lernziele
Nach diesem Lernfeld kannst du:
- [ ] Eine Anforderungsanalyse durchführen
- [ ] Ein Projekt planen und kalkulieren
- [ ] Lösungsvarianten entwickeln und vergleichen
- [ ] Ein Angebot erstellen
- [ ] Die Lösung implementieren
- [ ] Qualitätssicherung durchführen
- [ ] Das Projekt präsentieren und dokumentieren
---
## Projektphasen
```
PROJEKTLEBENSZYKLUS
┌─────────────┐
│ 1. Start │ Kick-off, Projektziele definieren
└──────┬──────┘
┌─────────────┐
│ 2. Analyse │ Anforderungen erheben, Lastenheft
└──────┬──────┘
┌─────────────┐
│ 3. Planung │ Pflichtenheft, Aufwandsschätzung
└──────┬──────┘
┌─────────────┐
│ 4. Design │ Architektur, Datenmodell, UI
└──────┬──────┘
┌─────────────┐
│ 5. Implem. │ Programmierung, Tests
└──────┬──────┘
┌─────────────┐
│ 6. Test │ Qualitätssicherung, Abnahme
└──────┬──────┘
┌─────────────┐
│ 7. Abschluss│ Übergabe, Schulung, Dokumentation
└─────────────┘
```
---
## Anforderungsanalyse
### Lastenheft (vom Kunden)
```markdown
# Lastenheft - Projekt [Name]
## 1. Ausgangslage
[Beschreibung der aktuellen Situation]
## 2. Zielsetzung
[Was soll erreicht werden?]
## 3. Funktionale Anforderungen
- [ ] Anforderung 1
- [ ] Anforderung 2
## 4. Nicht-funktionale Anforderungen
- Performance: < 2s Ladezeit
- Verfügbarkeit: 99%
- Sicherheit: TLS-Verschlüsselung
## 5. Randbedingungen
- Budget: [Betrag]
- Zeitrahmen: [Datum]
- Technologien: [Liste]
```
### Pflichtenheft (vom Auftragnehmer)
```markdown
# Pflichtenheft - Projekt [Name]
## 1. Zielbestimmung
[Festlegung der zu erreichenden Ziele]
## 2. Produkteinsatz
[Für wen/was wird das Produkt eingesetzt?]
## 3. Produktfunktionen
### F001: [Funktionsname]
- Beschreibung: [Was macht die Funktion?]
- Priorität: [Must/Should/Could]
## 4. Produktdaten
[List der zu verwaltenden Daten]
## 5. Produktleistungen
- Antwortzeit: < 500ms
- Verfügbarkeit: 99,9%
## 6. Abnahmekriterien
[Wie wird die Abnahme durchgeführt?]
```
---
## Projektkalkulation
### Aufwandsschätzung
**Funktionspunktmethode:**
```
FP = Σ (Komplexität × Gewichtung)
Beispiel:
- Bildschirmmasken: 5 × 5 = 25 FP
- Datenbanktabellen: 8 × 10 = 80 FP
- Schnittstellen: 3 × 7 = 21 FP
- Berichte: 4 × 5 = 20 FP
────────────────────────────
Gesamt-FP: 146
Aufwand (Stunden) = 146 × 4h = 584h
```
### Kostenberechnung
```
PERSONALKOSTEN:
Entwickler 500€/Tag × 60 Tage = 30.000€
Projektleiter 600€/Tag × 20 Tage = 12.000€
────────────────────────────────────────────
Summe Personal: = 42.000€
SACHKOSTEN:
Software-Lizenzen = 5.000€
Hardware = 3.000€
Reisekosten = 2.000€
────────────────────────────────────────────
Summe Sachkosten: = 10.000€
GESAMTKOSTEN: = 52.000€
+ Gewinn (15%): = 7.800€
+ MwSt (19%): = 11.382€
─────────────────────────────────────────────────────
ANGEBOTSPREIS: = 71.182€
```
---
## Qualitätssicherung
### Testverfahren
```
TESTMETHODEN
├── Statische Tests
│ ├── Code-Review
│ └── Statische Analyse
├── Dynamische Tests
│ ├── Unit-Tests
│ ├── Integrationstests
│ ├── Systemtests
│ └── Abnahmetests
└── Weitere
├── Performance-Tests
├── Security-Tests
└── Usability-Tests
```
### Testdokumentation
```markdown
# Testprotokoll
## Testobjekt: [Komponente/Funktion]
## Testfall TC-001
| Schritt | Beschreibung | Erwartetes Ergebnis | Ergebnis |
|--------|--------------|---------------------|---------|
| 1 | Start Button klicken | Anwendung startet | ✓ OK |
| 2 | Login eingeben | Feld zeigt Eingabe | ✓ OK |
| 3 | Falsches Passwort | Fehlermeldung | ✓ OK |
## Tester: [Name]
## Datum: [Datum]
## Ergebnis: BESTANDEN / NICHT BESTANDEN
```
---
## Präsentation und Übergabe
### Präsentationsstruktur
```
PRÄSENTATION (15-20 Minuten)
1. Einleitung (2 min)
- Projektvorstellung
- Ausgangslage
2. Lösung (5 min)
- Vorgehensweise
- Architektur
- Kernfunktionen
3. Demonstration (5 min)
- Live-Vorführung
- Highlight-Features
4. Projektmanagement (3 min)
- Zeitplan
- Herausforderungen
5. Fazit (2 min)
- Erreichte Ziele
- Ausblick
```
### Übergabedokumentation
- Installationsanleitung
- Benutzerhandbuch
- Administratorhandbuch
- Technische Dokumentation
- Abnahmeprotokoll
---
## Prüfungsrelevanz
- **Gewichtung Teil 2: 50%**
- Betriebliche Projektarbeit (40h + Dokumentation)
- Präsentation + Fachgespräch (30 min)
---
## Tipps für die Prüfung
1. **Projektplanung**: Realistische Zeitplanung
2. **Dokumentation**: Vollständig und nachvollziehbar
3. **Präsentation**: Übung, Übung, Übung!
4. **Fachgespräch**: Fachbegriffe sicher beherrschen
---
## Querverweise
- [[3-Ausbildungsjahr/LF11a-Funktionalität-realisiren|Vorher: LF 11a]]
- [[Prüfungsvorbereitung/Teil2-Projekt|Teil 2 Projekt]]
---
*Stand: 2024 | Quelle: KMK Rahmenlehrplan 13.12.2019*