Aufgaben
Aufgabe 1: Theoretische Fragen
- Erkläre die Bedeutung der Fehlerbehebung in der Softwareentwicklung. Warum ist sie für die Qualität und Zuverlässigkeit von Software entscheidend?
- Nenne und beschreibe die drei Hauptarten von Fehlern in der Softwareentwicklung.
- Was versteht man unter Root Cause Analysis (RCA) und welche Techniken werden dabei eingesetzt?
Aufgabe 2: Debugging-Werkzeuge und Techniken
- Debugging-Werkzeuge verwenden:
- Installiere und konfiguriere einen Debugger (z.B. GDB für C/C++, Visual Studio Debugger für C# oder Eclipse Debugger für Java).
- Schreibe ein einfaches Programm mit mindestens einem absichtlichen Fehler und nutze den Debugger, um den Fehler zu finden und zu beheben.
- Dokumentiere die Schritte, die du unternommen hast, um den Fehler zu identifizieren und zu beheben.
- Logging verwenden:
- Erstelle ein Programm, das Logging verwendet, um Informationen über seine Ausführung zu protokollieren (z.B. Log4j für Java oder das Logging-Modul in Python).
- Füge verschiedene Log-Meldungen auf unterschiedlichen Ebenen (INFO, DEBUG, ERROR) hinzu.
- Simuliere einen Fehler und zeige, wie die Log-Meldungen helfen, den Fehler zu diagnostizieren.
Aufgabe 3: Fehleranalyse und Diagnose
- Analyse eines Stack Traces:
- Schreibe ein Programm, das einen Laufzeitfehler (z.B. eine Division durch Null) erzeugt.
- Führe das Programm aus und dokumentiere den Stack Trace.
- Erkläre, wie der Stack Trace dir hilft, die Ursache des Fehlers zu identifizieren.
- Logdateien analysieren:
- Erstelle eine Anwendung, die umfangreiche Logdateien generiert.
- Schreibe ein Skript oder benutze ein Tool (z.B.
grep, ELK Stack), um spezifische Fehlermeldungen aus den Logdateien zu extrahieren und zu analysieren. - Dokumentiere die gefundenen Fehler und erkläre, wie du sie beheben würdest.
Aufgabe 4: Korrekturmaßnahmen und Verifikation
- Fehlerbehebung und Regressionstests:
- Erstelle ein Programm mit mehreren Unit-Tests, die mindestens einen fehlerhaften Test enthalten.
- Behebe den Fehler im Code und führe die Unit-Tests erneut aus.
- Dokumentiere die Änderungen und zeige die Ergebnisse der Regressionstests.
- Code Reviews:
- Führe eine Code-Review-Sitzung mit einem Partner durch. Tauscht euren Code aus und überprüft ihn gegenseitig.
- Notiere mindestens drei Verbesserungsvorschläge oder gefundene Fehler und besprecht diese.
- Implementiere die Vorschläge und dokumentiere den Prozess.
Aufgabe 5: Präventive Maßnahmen
- Test Driven Development (TDD):
- Wähle eine einfache Funktion oder ein Feature (z.B. eine Funktion zur Berechnung der Fakultät einer Zahl).
- Schreibe zuerst die Tests für die Funktion.
- Implementiere die Funktion, bis alle Tests bestehen.
- Dokumentiere den TDD-Prozess und die Ergebnisse.
- Einsatz von Code-Qualitätswerkzeugen:
- Wähle ein Code-Qualitätswerkzeug (z.B. SonarQube, ESLint).
- Analysiere ein bestehendes Projekt mit dem Werkzeug und dokumentiere die gefundenen Probleme.
- Behebe die gefundenen Probleme und führe die Analyse erneut durch, um sicherzustellen, dass die Probleme behoben sind.
- Automatisierte Tests:
- Implementiere ein Set automatisierter Tests für eine kleine Anwendung (z.B. eine Webanwendung mit Selenium für End-to-End-Tests).
- Integriere die Tests in eine CI/CD-Pipeline (z.B. mit Jenkins).
- Dokumentiere den Aufbau der Pipeline und die Ergebnisse der automatisierten Tests.
