Softwareentwicklungspraktikum Lehramt - Cheatsheet
Scrum und Kanban Frameworks
Definition:
Scrum und Kanban sind agile Frameworks zur Prozessoptimierung und Projektmanagement, besonders in der Softwareentwicklung. Beide helfen bei der Verwaltung und Verbesserung von Arbeitsabläufen.
Details:
- Scrum: iterativer Ansatz; beinhaltet Rollen (Product Owner, Scrum Master, Entwicklungsteam), Ereignisse (Sprints, Sprint Planning, Daily Standup, Sprint Review, Sprint Retrospective) und Artefakte (Product Backlog, Sprint Backlog, Increment)
- Kanban: visualisiert Workflow auf einem Kanban Board; Prinzipien: Visualisierung der Arbeit, Begrenzung laufender Arbeiten, Management des Workflows, kontinuierliche Verbesserung
- Vergleich: Scrum hat feste Rollen und Ereignisse, Kanban ist flexibler und mehr auf kontinuierliche Verbesserung fokussiert
Testgetriebene Entwicklung (TDD) Zyklus: Red, Green, Refactor
Definition:
Testgetriebene Entwicklung (TDD) Zyklus: Red, Green, Refactor, ist ein Entwicklungsansatz, der darauf abzielt, sauberen und fehlerfreien Code zu schreiben, indem Tests vor der Implementierung erstellt werden.
Details:
- Red: Schreibe einen Test, der fehlschlägt, da die gewünschte Funktionalität noch nicht implementiert ist.
- Green: Implementiere den minimalen Code, um den Test bestehen zu lassen.
- Refactor: Überarbeite den Code, ohne die Funktionalität zu ändern, um ihn zu verbessern und zu optimieren. Stelle sicher, dass alle Tests weiterhin bestehen.
GoF (Gang of Four) Design Patterns: Singleton, Factory, und Observer Muster
Definition:
GoF Design Patterns - Muster zur Lösung wiederkehrender Softwareentwurfsprobleme.
Details:
- Singleton: Stellt sicher, dass eine Klasse nur eine Instanz hat und globalen Zugriff auf diese Instanz bietet.
- Factory: Erzeugt Objekte, ohne die Klasse der zu erstellenden Objekte explizit anzugeben. Ermöglicht Unterklassen die Entscheidung, welches Objekt instanziiert wird.
- Observer: Definiert eine 1-zu-N-Abhängigkeit zwischen Objekten, sodass bei einer Änderung eines Objekts alle abhängigen Objekte benachrichtigt und automatisch aktualisiert werden.
Sprint Planning und Retrospektiven in der agilen Entwicklung
Definition:
Sprint Planning: Planung des nächsten Sprints, Festlegung der Sprint-Ziele und der umzusetzenden Aufgaben. Retrospektiven: Analyse des vergangenen Sprints, Identifikation von Verbesserungsmöglichkeiten.
Details:
- Sprint Planning: Product Owner, Scrum Master und Team beteiligen sich
- Definition of Done (DoD) festlegen
- Tasks in kleinere, umsetzbare Einheiten aufteilen
- Tools wie Burndown Charts nutzen
- Retrospektiven: Team reflektiert über Zusammenarbeit und Prozesse
- Was lief gut? Was nicht? Was kann verbessert werden?
- Ergebnisse in Aktionspunkten festhalten
- Förderung der kontinuierlichen Verbesserung
Unittesting und Testframeworks
Definition:
Unittests überprüfen einzelne Module oder Funktionen, um sicherzustellen, dass sie korrekt funktionieren. Testframeworks helfen dabei, Unittests zu schreiben und auszuführen.
Details:
- Unittesting: Testen von kleinsten, isolierten Einheiten des Codes
- Testframeworks: Frameworks wie JUnit (Java), PyTest (Python), unittest (Python)
- Wichtig: Automatisierbarkeit und Wiederholbarkeit der Tests
- Assertions: \texttt{assertEqual(a, b)}, \texttt{assertTrue(x)}, \texttt{assertFalse(x)}, etc.
- Testabdeckung (\textit{Code Coverage}): Anteil des Codes, der durch Tests geprüft wird
- Setup/Teardown: Methoden, um Vor- und Nachbereitungen für Tests durchzuführen
Projektlebenszyklus und Zeitplanmanagement
Definition:
Lebenszyklus eines Projekts von der Initiierung bis zum Abschluss inklusive Zeitplanung
Details:
- Projektphasen: Initiierung, Planung, Ausführung, Überwachung, Abschluss
- Gantt-Diagramm zur Visualisierung des Zeitplans
- Mileposten (Meilensteine) zur Überwachung des Fortschritts
- Task-Zuordnung und Kritischen Pfad berechnen
- Zeitschätzung mit Methoden wie PERT (\text{Program Evaluation and Review Technique})
Integration von kontinuierlicher Integration (CI) in den Entwicklungsprozess
Definition:
Einbindung von kontinuierlicher Integration (CI) in den Softwareentwicklungsprozess, um automatisch Codeänderungen zu testen und zu integrieren.
Details:
- Automatisierte Tests: Nach jedem Commit werden Tests automatisch ausgeführt, um Fehler frühzeitig zu identifizieren.
- Build-Automatisierung: Der gesamte Build-Prozess wird automatisiert, um konsistente und zuverlässige Builds sicherzustellen.
- Code-Integration: Änderungen von verschiedenen Entwicklern werden kontinuierlich in ein gemeinsames Repository integriert.
- Qualitätssicherung: Reduziert Merge-Konflikte und verbessert die Softwarequalität durch regelmäßige Codeprüfungen.
- Feedback-Schleifen: Schnelles Feedback an Entwickler durch automatisierte Benachrichtigungen über Build- und Testergebnisse.
- Tools: Häufig verwendete CI-Tools sind Jenkins, Travis CI und GitLab CI.
Erstellen und Halten von Präsentationen in der Projektarbeit
Definition:
Erstellen und Halten von Präsentationen: essentielle Fähigkeiten für die Kommunikation der Projektergebnisse und den Austausch von Ideen.
Details:
- Zielgruppenanalyse: Kenne Deine Zuhörer.
- Struktur: Einleitung, Hauptteil, Schluss.
- Visualisierung: Nutze Grafiken, Diagramme, und Folienlayouts.
- Interaktion: Frage-Antwort-Runden einplanen.
- Übung: Mehrmals durchgehen, um Sicherheit zu gewinnen.
- Technikcheck: Vor Beginn alle technischen Hilfsmittel überprüfen.
- Zeiteinteilung: Auf die vorgegebene Zeit achten.