Applied Software Engineering Master-Projekt - Cheatsheet
Prinzipien des Agilen Manifests
Definition:
Vier zentrale Werte und zwölf Prinzipien, die eine agile Softwareentwicklung unterstützen.
Details:
- Individuen und Interaktionen über Prozesse und Werkzeuge
- Funktionierende Software über umfassende Dokumentation
- Zusammenarbeit mit dem Kunden über Vertragsverhandlung
- Reagieren auf Veränderung über Befolgen eines Plans
- Höchste Priorität: Kundenzufriedenheit durch frühe und kontinuierliche Auslieferung wertvoller Software
- Anforderungsänderungen auch spät in der Entwicklung willkommen
- Liefern funktionierender Software in regelmäßigen, kurzen Intervallen
- Enger täglicher Austausch zwischen Fachexperten und Entwicklern
- Schaffung einer motivierenden Umgebung und Unterstützung für Entwicklerteams
- Effiziente und effektive Kommunikation: Face-to-Face-Interaktion
- Funktionierende Software als primäres Fortschrittsmaß
- Nachhaltige Entwicklung durch gleichbleibendes Tempo
- Technische Exzellenz und gutes Design fördern Agilität
- Einfachheit: Kunst des Maximierens der Arbeit, die nicht getan wird
- Selbstorganisierte Teams erzeugen die besten Architekturen, Anforderungen und Designs
- Regelmäßiges Reflektieren und Anpassen des eigenen Verhaltens zur Steigerung der Effektivität
Scrum-Framework: Rollen, Events, Artefakte
Definition:
Scrum ist ein agiles Framework zur Entwicklung und Wartung komplexer Produkte.
Details:
- Rollen:
- Product Owner: Verantwortlich für die Maximierung des Werts des Produkts.
- Scrum Master: Verantwortlich für die Einhaltung von Scrum-Praktiken.
- Entwicklungsteam: Selbstorganisiert, cross-funktional, liefert Produktinkremente.
- Events:
- Sprint: Zeitbegrenzter Entwicklungszeitraum (max. 1 Monat).
- Sprint Planning: Planung des kommenden Sprints.
- Daily Scrum: Tägliches Standup-Meeting (max. 15 Minuten).
- Sprint Review: Präsentation des Ergebnisses am Ende des Sprints.
- Sprint Retrospective: Reflexion zur Prozessverbesserung.
- Artefakte:
- Product Backlog: Liste von Aufgaben und Anforderungen.
- Sprint Backlog: Ausgewählte Items für den nächsten Sprint.
- Increment: Fertiges Produktinkrement am Ende jedes Sprints.
Testautomatisierung und Frameworks (z.B. Selenium, JUnit)
Definition:
Einsatz von Software-Tools zur automatisierten Durchführung von Tests. Genutzt in CI/CD Pipelines zur Sicherstellung der Softwarequalität.
Details:
- Selenium: Automatisierung von Webanwendungen für Tests (browserübergreifend).
- JUnit: Unit-Testing-Framework für Java, unterstützt Test-Driven Development (TDD).
- Reduzierung manueller Testaufwände.
- Verbesserung der Testabdeckung und Wiederholbarkeit.
- Integration in Continuous Integration/Continuous Deployment (CI/CD) Systeme.
Versionierungssysteme (Git, SVN)
Definition:
Versionierungssysteme ermöglichen die Verwaltung und Nachverfolgung von Änderungen an Projektdaten. Git und SVN sind häufig verwendete Systeme.
Details:
- Git: Dezentralisiertes System, erlaubt gleichzeitige Arbeit mehrerer Entwickler, Branching und Merging sind zentral.
- SVN: Zentralisiertes System, einfacher als Git, geeignet für kleinere Teams oder Projekte.
- Branch: Isolierte Arbeitsumgebung zur Entwicklung neuer Features oder Fixes.
- Commit: Speichern einer momentanen Version des Projekts in der Historie.
- Merge: Zusammenführen von Änderungen aus verschiedenen Branches.
- Repository: Speicherort der Versionierungshistorie des Projekts.
- Workflow: Zentralisierte (SVN) vs. Dezentrale Arbeitsweise (Git).
Continuous Integration/Continuous Deployment (CI/CD)
Definition:
Kontinuierliche Integration (CI) und kontinuierliche Bereitstellung/Deployment (CD) sind Praktiken der Softwareentwicklung, die häufig zusammen verwendet werden, um Entwicklungs- und Operationsprozesse zu automatisieren und zu optimieren.
Details:
- CI: Integration von Code in ein zentrales Repository häufiger & automatisiertes Testen
- CD: Automatisiertes Deployment von Code in Produktionsumgebungen nach erfolgreichem Testen
- Tools: Jenkins, GitLab CI, Travis CI
- Verkürzt Release-Zyklen
- Reduziert manuelle Fehler
- Ermöglicht kontinuierliches Feedback
Entwurfsmuster (Design Patterns)
Definition:
Entwurfsmuster sind bewährte Lösungen für wiederkehrende Entwurfsprobleme in der Softwareentwicklung.
Details:
- Teilt in drei Kategorien ein: Erzeugungsmuster, Strukturmuster, Verhaltensmuster
- Erzeugungsmuster: Umgang mit der Objekterstellung, z.B. Singleton, Factory Method
- Strukturmuster: Aufbau von Klassen und Objekten, z.B. Adapter, Composite
- Verhaltensmuster: Interaktion und Zuständigkeitsverteilung zwischen Objekten, z.B. Observer, Strategy
- Verbesserung der Wartbarkeit und Erweiterbarkeit von Software
- Verwendung in gängigen Frameworks und Bibliotheken
Ressourcenmanagement und Zuweisung
Definition:
Planung, Zuweisung und Überwachung von Ressourcen (Personen, Zeit, Budget) in Softwareprojekten.
Details:
- Effiziente Ressourcenverteilung erhöht die Projektproduktivität.
- Verwaltung von Teammitgliedern, um Überlastung zu vermeiden.
- Fähigkeiten und Verfügbarkeit der Teammitglieder berücksichtigen.
- Nutzung von Planungstools (z. B. Gantt-Diagrammen) zur Veranschaulichung.
- Kontinuierliche Überwachung und Anpassung von Ressourcenverteilungen.
- Stakeholder-Involvierung zur Sicherstellung der Ressourcenzufriedenheit.
Fehlermanagement und Bugtracking
Definition:
Fehlermanagement und Bugtracking betreffen die Identifizierung, Dokumentation und Verwaltung von Fehlern in Softwareprojekten.
Details:
- Fehlermanagement: Prozess der Handhabung und Analyse von Fehlern zur Verbesserung der Softwarequalität.
- Bugtracking: Verwendung von Tools zur Aufzeichnung, Verfolgung und Verwaltung von Fehlerberichten.
- Wichtige Bugtracking-Tools: JIRA, Bugzilla, Redmine.
- Fehlerklassifizierung: Einteilung in Kategorien basierend auf Schweregrad und Priorität.
- Fehlerlebenszyklus: Entdeckung, Berichterstattung, Zuordnung, Behebung, Testen, Abschluss.
- Beinhaltet: Fehlerbeschreibung, Reproduzierschritte, erwartetes vs. tatsächliches Verhalten.
- Ziel: Minimierung der Fehleranzahl und ihrer Auswirkungen auf das System.