Phasen des Softwareentwicklungslebenszyklus
Definition:
Phasen des Softwareentwicklungslebenszyklus umfassen die Schritte, die zur Entwicklung einer Software notwendig sind.
Details:
- Anforderungsanalyse: Sammlung und Analyse der Anforderungen.
- Entwurf: Design der Softwarearchitektur und Komponenten.
- Implementierung: Programmierung und Umsetzung des Entwurfs.
- Testen: Überprüfung und Validierung der Software.
- Deployment: Bereitstellung der Software im Einsatzumfeld.
- Wartung: Fehlerbehebung, Updates und Verbesserungen nach der Bereitstellung.
Scrum Framework: Rollen, Artefakte, und Zeremonien
Definition:
Scrum Framework: Ein agiles Projektmanagement-Framework, das iterative Entwicklungsprozesse betont.
Details:
- Rollen:
- Product Owner: Verantwortlich für das Produkt-Backlog und Produktvision.
- Scrum Master: Sicherstellt, dass Scrum verstanden und umgesetzt wird; beseitigt Hindernisse.
- Entwicklungsteam: Selbstorganisierende Fachleute, die das Produkt inkrementell erstellen.
- Artefakte:
- Produkt-Backlog: Priorisierte Liste aller gewünschten Arbeiten/Features.
- Sprint-Backlog: Vom Team ausgewählte Elemente aus dem Produkt-Backlog für den aktuellen Sprint.
- Inkrement: Fertiges Produktresultat am Ende eines Sprints.
- Zeremonien:
- Sprint Planning: Planung der Aufgaben und Ziele für den kommenden Sprint.
- Daily Scrum: Tägliches 15-minütiges Teammeeting zur Synchronisation.
- Sprint Review: Präsentation des Sprint-Inkrements und Feedback-Sammlung.
- Sprint Retrospective: Rückblick auf den vergangenen Sprint zur Prozessverbesserung.
Teststufen: Unit-Tests, Integrationstests, Systemtests und Abnahmetests
Definition:
Testarten in der Softwareentwicklung zur Überprüfung der Funktionalität auf verschiedenen Ebenen
Details:
- Unit-Tests: Testen einzelner Module/Funktionen. Fokus auf kleinste Testeinheit.
- Integrationstests: Überprüfung des Zusammenspiels mehrerer Module. Erkennung von Schnittstellenproblemen.
- Systemtests: Gesamtsystem wird auf Erfüllung der Anforderungen getestet. Umfassende End-to-End-Tests.
- Abnahmetests: Endbenutzer prüft, ob die Software alle Anforderungen erfüllt. Grundlage für die Abnahme des Produkts.
Microservices Architekturmuster
Definition:
Architekturstil, der Anwendungen als Sammlung lose gekoppelter, kleinster Dienste strukturiert, die unabhängig voneinander entwickelt, bereitgestellt und skaliert werden können. Jeder Dienst erfüllt eine spezifische Geschäftsaufgabe und kommuniziert über Netzwerkschnittstellen.
Details:
- Lose Kopplung und Unabhängigkeit der Dienste
- Skalierbarkeit und Flexibilität
- Jeder Dienst hat seine eigene Datenbank
- Kommunikation oft über HTTP/REST oder Messaging-Protokolle
- Verantwortungsbereich kleiner, selbstständiger Teams
- Herausforderungen: Netzwerklatenzen, Datenkonsistenz
Black-Box-Testing und White-Box-Testing
Definition:
Black-Box-Testing: Testen der Software ohne Kenntnis der internen Implementierung.White-Box-Testing: Testen basierend auf Kenntnis der internen Implementierung.
Details:
- Black-Box-Testing:
- Fokus auf funktionale Anforderungen.
- Testfälle basieren auf Spezifikationen, nicht auf Code.
- Nützlich für Akzeptanztests.
- White-Box-Testing:
- Fokus auf interne Struktur und Logik.
- Testfälle basieren auf Code-Struktur (z.B. Zweigüberdeckung).
- Nützlich für Unit Tests und Code-Überprüfungen.
Extreme Programming (XP) Praktiken
Definition:
XP ist eine agile Methodik für Softwareentwicklung, die auf Einfachheit, Feedback und stetiger Verbesserung basiert.
Details:
- Pair Programming: Zwei Entwickler arbeiten gemeinsam am selben Code.
- Test-Driven Development (TDD): Tests werden vor dem eigentlichen Code geschrieben.
- Continuous Integration: Häufiges Integrieren von Code in das Haupt-Repository.
- Refactoring: Regelmäßige Verbesserung des Codes ohne Änderung seines Verhaltens.
- Small Releases: Häufige, kleine Veröffentlichungen von Software.
- Simple Design: Design so einfach wie möglich halten.
- Collective Code Ownership: Jeder im Team kann jeden Teil des Codes ändern.
- Customer On-Site: Ein Kunde ist ständig vor Ort für Rückfragen und Feedback.
Designentscheidungen und ihre Auswirkungen
Definition:
Einfluss von Entscheidungen im Designprozess auf das Endprodukt und den Entwicklungsprozess.
Details:
- Architekturentscheidungen: beeinflussen Systemperformance, Wartbarkeit, Skalierbarkeit.
- Technologieauswahl: beeinflusst Entwicklungszeit, Kosten, Teamkompetenz.
- Entwurfsmuster: beeinflussen Flexibilität, Verständlichkeit von Code.
- Refactoring: verbessert Codequalität ohne Verhaltensänderung.
- Trade-offs: Balance zwischen kurzfristigen Nutzen und langfristigen Zielen.
Werkzeuge zur Unterstützung des Entwicklungsprozesses
Definition:
Werkzeuge und Softwarelösungen, die den gesamten Softwareentwicklungsprozess unterstützen.
Details:
- Versionskontrollsysteme (z.B. Git)
- Continuous Integration/Continuous Deployment (CI/CD) Systeme (z.B. Jenkins, GitLab CI)
- Projektmanagement-Tools (z.B. Jira, Trello)
- Code Review und Kollaboration (z.B. GitHub, Bitbucket)
- Build-Automatisierung (z.B. Maven, Gradle)
- Testautomatisierung (z.B. JUnit, Selenium)
- Containerisierung und Virtualisierung (z.B. Docker, Kubernetes)