Planen eines Softwareproduktes
Dieser Teil der Prüfung dauert 90 Minuten und umfasst 100 Punkte (10% der Gesamtprüfung).
Hier geht es um die komplette Planung eines Software-Projekts - von der ersten Idee bis zur technischen Umsetzungsplanung.
Projektmanagement
Projektmanagement ist wie ein Bauplan für dein Software-Projekt - ohne Plan läuft alles durcheinander.
Scrum - Agiles Arbeiten
Scrum ist ein agiles Vorgehensmodell, bei dem du in kleinen Schritten (Sprints) arbeitest.
Die wichtigsten Scrum-Rollen:
- Product Owner - entscheidet was gebaut wird
- Scrum Master - sorgt dafür dass Scrum funktioniert
- Development Team - baut die Software
Scrum-Events:
- Sprint - Arbeitsphase von 1-4 Wochen
- Sprint Planning - Was machen wir im nächsten Sprint?
- Daily Standup - 15 Minuten Update jeden Tag
- Sprint Review - Was haben wir geschafft?
- Sprint Retrospektive - Was können wir besser machen?
Scrum ist seit 2025 NEU explizit im Prüfungskatalog! 🆕
Lastenheft und Pflichtenheft
Das Lastenheft beschreibt WAS der Kunde will, das Pflichtenheft beschreibt WIE du es umsetzt.
| Lastenheft | Pflichtenheft |
|---|---|
| Vom Kunden geschrieben | Vom Entwickler geschrieben |
| "Was soll das System können?" | "Wie setzen wir das um?" |
| Grobe Anforderungen | Detaillierte technische Spezifikation |
| Grundlage für Angebote | Grundlage für Entwicklung |
Ablaufplanung
Die zeitliche Planung deines Projekts - wer macht wann was?
Wichtige Planungswerkzeuge:
- Gantt-Diagramm - zeigt Aufgaben auf Zeitachse
- Netzplan - zeigt Abhängigkeiten zwischen Aufgaben
- Meilensteine - wichtige Zwischenziele
Softwarearchitektur
Die Architektur ist das Grundgerüst deiner Software - wie Räume in einem Haus verteilt sind.
MVC - Model View Controller
MVC trennt Daten, Darstellung und Logik - so bleibt alles übersichtlich.
- Model - Daten und Datenbank-Zugriff
- View - User Interface, was der Nutzer sieht
- Controller - Logik, verbindet Model und View
Layered Architecture
Schichten-Architektur wie Stockwerke - jede Schicht hat ihre Aufgabe.
- Presentation Layer - UI für den Nutzer
- Business Logic Layer - Geschäftslogik und Regeln
- Data Access Layer - Datenbank-Zugriff
- Database Layer - Daten speichern
Microservices
Statt eine große Software baust du viele kleine Services - jeder macht eine Sache.
Vorteile:
- Einzelne Services können unabhängig entwickelt werden
- Verschiedene Technologien für verschiedene Services
- Skalierung nur wo nötig
Nachteile:
- Komplexere Kommunikation zwischen Services
- Mehr Aufwand für Deployment
- Verteilte Systeme sind schwerer zu debuggen
Design Patterns
Design Patterns sind bewährte Lösungen für typische Programmier-Probleme - wie Rezepte zum Kochen.
Singleton
Sorgt dafür dass es von einer Klasse nur ein einziges Objekt gibt.
Verwendung:
- Datenbank-Verbindung
- Logger
- Konfigurations-Manager
Factory Pattern
Erstellt Objekte ohne die genaue Klasse zu kennen - wie eine Fabrik die Produkte herstellt.
Observer Pattern
Ein Objekt beobachtet andere und wird benachrichtigt bei Änderungen.
Beispiel: Newsletter-System - Abonnenten werden informiert bei neuen Artikeln
Strategy Pattern
Verschiedene Algorithmen austauschbar machen - wähle zur Laufzeit welcher verwendet wird.
UML - Unified Modeling Language
UML ist die Planungssprache für Software - damit zeichnest du deine Ideen auf bevor du programmierst.
UML-Klassendiagramm
Zeigt Klassen mit ihren Attributen, Methoden und Beziehungen.
Aufbau:
┌─────────────────┐
│ Klassenname │
├─────────────────┤
│ + attribut1 │ ← Attribute
│ - attribut2 │
├─────────────────┤
│ + methode1() │ ← Methoden
│ - methode2() │
└─────────────────┘
Sichtbarkeiten:
- + public - jeder kann zugreifen
- - private - nur die Klasse selbst
- # protected - Klasse und Unterklassen
UML-Anwendungsfalldiagramm
Zeigt WAS das System für WEN tun soll - die Funktionen aus Nutzersicht.
Elemente:
- Akteur - Strichmännchen (Benutzer, System)
- Anwendungsfall - Ovale mit Verben ("Geld abheben")
- System-Grenze - Rechteck um alle Anwendungsfälle
UML-Sequenzdiagramm
Zeigt zeitliche Abläufe - wie Objekte miteinander kommunizieren.
Elemente:
- Lebenslinien - senkrechte gestrichelte Linien
- Nachrichten - Pfeile zwischen Objekten
- Zeit - läuft von oben nach unten
UML-Aktivitätsdiagramm
Zeigt Ablauf und Entscheidungen - wie ein Flussdiagramm.
Notation:
- Startknoten - schwarzer Punkt ●
- Endknoten - Punkt im Kreis ⦿
- Aktivität - abgerundetes Rechteck
- Entscheidung - Raute ◇
Softwarequalität
Qualität bedeutet: Die Software tut was sie soll - zuverlässig, sicher und benutzerfreundlich.
ISO 25010 Qualitätskriterien
Wartbarkeit
Wie einfach lässt sich die Software ändern und erweitern?
🆕 Neu verstärkt im Katalog 2025!
- Code ist gut strukturiert und dokumentiert
- Neue Funktionen sind einfach zu ergänzen
- Fehler sind schnell zu finden
Änderbarkeit und Erweiterbarkeit
Kann die Software an neue Anforderungen angepasst werden?
- Modularer Aufbau ermöglicht Änderungen
- Klare Schnittstellen zwischen Komponenten
- Änderungen haben minimale Auswirkungen
Weitere Qualitätskriterien:
- Funktionale Vollständigkeit - Sind alle Funktionen da?
- Funktionale Korrektheit - Funktioniert alles richtig?
- Gebrauchstauglichkeit - Ist es einfach zu bedienen?
- Sicherheit - Sind Daten geschützt?
- Zuverlässigkeit - Läuft es stabil?
- Performanz - Ist es schnell genug?
Anforderungsanalyse
Was soll die Software eigentlich können? Hier sammelst du alle Anforderungen.
Funktionale Anforderungen
Beschreiben WAS das System können muss.
Beispiele:
- "Der Nutzer kann sich einloggen"
- "Das System kann PDFs erstellen"
- "Daten werden in der Datenbank gespeichert"
Nicht-funktionale Anforderungen
Beschreiben WIE gut das System funktionieren muss.
Beispiele:
- Performance: "Login in unter 2 Sekunden"
- Sicherheit: "Passwörter verschlüsselt speichern"
- Usability: "Bedienung ohne Schulung möglich"
- Verfügbarkeit: "99,9% Uptime"
Testing-Konzepte
Tests finden Fehler bevor der Kunde sie findet - je früher desto besser!
Test Driven Development (TDD)
Erst den Test schreiben, dann den Code - so bist du sicher dass alles getestet ist.
🆕 Neu im Katalog 2025!
TDD-Zyklus:
- Red - Test schreiben der fehlschlägt
- Green - Minimalen Code schreiben damit Test läuft
- Refactor - Code verbessern ohne Funktionalität zu ändern
Test-Pyramide
Viele kleine Tests, wenige große Tests.
/\
/E2E\ ← Wenige End-to-End Tests
/──────\
/Integr.\ ← Mittlere Anzahl Integrationstests
/──────────\
/Unit Tests \ ← Viele Unit Tests
/──────────────\
Last- und Performancetest
Wie verhält sich die Software unter Last?
🆕 Neu im Katalog 2025!
Was wird getestet:
- Wie viele gleichzeitige Nutzer verkraftet das System?
- Wie schnell reagiert es unter Last?
- Wo sind die Engpässe?
Datenbankentwurf
Eine gute Datenbank-Struktur ist das Fundament - schlecht geplant wird es später teuer.
ER-Modell
Entity-Relationship-Modell zeigt Entitäten und ihre Beziehungen.
Elemente:
- Entitäten - Dinge über die du Daten speicherst (Kunde, Bestellung)
- Attribute - Eigenschaften (Name, Preis, Datum)
- Beziehungen - Wie hängen Entitäten zusammen?
Kardinalität
Beschreibt wie viele Entitäten zueinander in Beziehung stehen.
- 1:1 - Ein Kunde hat eine Kundennummer
- 1:n - Ein Kunde hat viele Bestellungen
- n:m - Viele Produkte in vielen Bestellungen
Normalisierung
Daten so organisieren dass keine Redundanzen entstehen.
1. Normalform
- Jede Tabellenzelle enthält nur einen Wert
- Keine Listen in Zellen
2. Normalform
- Erfüllt 1. Normalform
- Alle Attribute hängen vom kompletten Primärschlüssel ab
3. Normalform
- Erfüllt 2. Normalform
- Keine Abhängigkeiten zwischen Nicht-Schlüssel-Attributen
Anomalien und Redundanzen
Probleme die entstehen wenn die Datenbank schlecht strukturiert ist.
🆕 Verstärkt im Katalog 2025!
Arten von Anomalien:
- Einfüge-Anomalie - Du kannst Daten nicht speichern ohne andere Daten
- Update-Anomalie - Daten müssen an mehreren Stellen geändert werden
- Lösch-Anomalie - Beim Löschen gehen ungewollt andere Daten verloren
- Gleiche Daten mehrfach gespeichert
- Verschwendet Speicher
- Führt zu Inkonsistenzen
Schnittstellen
Schnittstellen verbinden verschiedene Systeme - wie Steckdosen für Daten.
REST API
Standard-Weg für Software um über HTTP zu kommunizieren.
HTTP-Methoden:
- GET - Daten abrufen
- POST - Neue Daten erstellen
- PUT - Daten aktualisieren
- DELETE - Daten löschen
ODBC
Open Database Connectivity - Standard-Schnittstelle für Datenbank-Zugriff.
🆕 Neu im Katalog 2025!
- Ermöglicht einheitlichen Zugriff auf verschiedene Datenbanken
- Anwendung muss nicht wissen welche Datenbank dahinter steckt
Datenaustauschformate
JSON
JavaScript Object Notation - leichtgewichtig und lesbar.
{
"name": "Max Mustermann",
"alter": 25,
"skills": ["Java", "Python"]
}
XML
Extensible Markup Language - strukturiert und erweiterbar.
<person>
<name>Max Mustermann</name>
<alter>25</alter>
</person>
CSV
Comma-Separated Values - einfachstes Format für Tabellen.
Name,Alter,Stadt
Max,25,Berlin
Anna,30,Hamburg
Security-Konzepte
Sicherheit muss von Anfang an mitgedacht werden - nachträglich wird es teuer.
SQL Injection
Angreifer schmuggeln SQL-Code in Eingabefelder ein.
🆕 Neu im Katalog 2025!
Beispiel Angriff:
' OR '1'='1
Schutz:
- Prepared Statements verwenden
- Eingaben validieren
- Niemals SQL aus Nutzereingaben bauen
DDoS Attack
Distributed Denial of Service - System mit Anfragen überlasten.
🆕 Neu im Katalog 2025!
Wie funktioniert es:
- Viele Computer greifen gleichzeitig an
- Server ist überlastet und fällt aus
- Legitime Nutzer kommen nicht mehr rein
Schutz:
- Rate Limiting
- CDN verwenden
- Traffic-Filterung
Man-in-the-Middle Attack
Angreifer sitzt zwischen Kommunikationspartnern und hört mit.
🆕 Neu im Katalog 2025!
Schutz:
- HTTPS verwenden
- Zertifikate prüfen
- Keine öffentlichen WLANs für sensible Daten
Kerberos
Authentifizierungs-Protokoll für sichere Zugriffskontrolle.
🆕 Neu im Katalog 2025!
- Nutzt Tickets für Authentifizierung
- Keine Passwörter über Netzwerk
- Standard in Windows Active Directory
Dokumentation
Gute Dokumentation spart Zeit - für dich und andere Entwickler.
Programm- und Konfigurationsdokumentation
Beschreibt wie die Software funktioniert und konfiguriert wird.
🆕 Neu explizit im Katalog 2025!
Programmdokumentation:
- Code-Kommentare
- API-Dokumentation
- Architektur-Übersicht
Konfigurationsdokumentation:
- Welche Einstellungen gibt es?
- Was bedeuten die Parameter?
- Wie wird das System aufgesetzt?
System-Architektur
Wie sind die verschiedenen Teile des Systems verteilt?
Client-Server
Server stellt Dienste bereit, Clients nutzen diese.
Vorteile:
- Zentrale Datenhaltung
- Einfache Wartung
- Zentrale Sicherheit
NAS und SAN
Spezialisierte Speicherlösungen für Netzwerke.
🆕 Explizit neu im Katalog 2025!
| NAS | SAN |
|---|---|
| Network Attached Storage | Storage Area Network |
| Datei-basiert | Block-basiert |
| Über Netzwerk wie ein Ordner | Wie eine lokale Festplatte |
| Einfacher einzurichten | Schneller und professioneller |
Cloud vs On-Premises
Hosting in der Cloud oder auf eigenen Servern?
| Cloud | On-Premises |
|---|---|
| Server bei Anbieter | Eigene Server im Betrieb |
| Flexibel skalierbar | Fixe Kapazität |
| Monatliche Kosten | Hohe Anfangsinvestition |
| Schnell verfügbar | Längere Setupzeit |
Cloud-Modelle: