Agilität Flashcards

1
Q

Test-Driven Development (TDD) für die Codeimplementierung

A

Schreiben eines Tests: Zuerst wird ein Test geschrieben, der das erwartete Verhalten einer bestimmten Funktion oder eines bestimmten Teils des Codes beschreibt. Dieser Test sollte zuerst fehlschlagen, da die Funktionalität noch nicht implementiert ist.

Implementieren des Codes: Anschließend wird der Code geschrieben, um den Test zum Bestehen zu bringen. Das Ziel ist es, den einfachsten Code zu schreiben, der den Test besteht.

Ausführen des Tests: Nachdem der Code implementiert wurde, wird der Test erneut ausgeführt. Wenn der Test erfolgreich ist, wird erneut iteriert, indem entweder ein weiterer Test geschrieben wird oder der vorhandene Code verbessert wird.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Warum werden agile Praktiken nicht als vollständige Prozessmodelle/Vorgehensmodell betrachtet?

A

sind eher Entwicklungsansätze und keine vollständigen Prozessmodell

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Continuous Integration (CI) und Continuous Deployment (CD)

A

Continuous Integration (CI) und Continuous Deployment (CD) sind Praktiken des Softwareentwicklungsprozesses, die darauf abzielen, die Entwicklung, Tests und Bereitstellung von Software effizienter und zuverlässiger zu gestalten.

Continuous Integration (CI):

CI bezieht sich auf den Prozess, bei dem Entwickler regelmäßig ihren Code in ein gemeinsames Repository integrieren. Dieser Code wird dann automatisch gebaut und getestet, um sicherzustellen, dass er gut mit dem bestehenden Code und anderen Änderungen zusammenarbeitet.
Das Ziel von CI ist es, Probleme frühzeitig zu identifizieren, indem Codeänderungen schnell und häufig in das gemeinsame Repository integriert und automatisch getestet werden. Dies reduziert das Risiko von Integrationsproblemen und trägt dazu bei, die Qualität des Codes zu verbessern.

Continuous Deployment (CD):

CD ist eine Erweiterung von CI und bezieht sich auf den Prozess, bei dem jede Änderung, die erfolgreich durch den CI-Prozess gegangen ist, automatisch in die Produktionsumgebung bereitgestellt wird, ohne manuelle Eingriffe.
Das Ziel von CD ist es, den Bereitstellungsprozess zu automatisieren und die Zeit zwischen der Entwicklung und der Bereitstellung von Software zu verkürzen. Durch die Automatisierung dieses Prozesses können Teams schneller auf Kundenfeedback reagieren und Fehler schneller beheben.
Zusammenfassend sind CI und CD zwei wichtige Praktiken im modernen Softwareentwicklungsprozess, die dazu beitragen, die Qualität der Software zu verbessern, die Entwicklungszeit zu verkürzen und die Effizienz des Bereitstellungsprozesses zu steigern.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Scrum

A

Scrum ist ein Framework und im weitesten Sinne ein
Vorgehensmodellю 2001 Schwaber unf Beedle.
▪ schafft einen Rahmen für Teams und Organisationen,
um adaptive Lösungen zu schaffen
▪ Scrum erwartet, dass hierfür ein Scrum Master eine
förderliche Umgebung schafft
▪ Nutzung von Scrum bei mehreren parallelen
Projekten des Devteams ist unwirtschaftlich / nicht rentable
▪ Anwendung von Scrum erfordert eine lange
Einarbeitung bzgl. dem Mindset der Mitwirkenden
(„Es muss trainiert und gelebt werden“)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Product Backlog

A

Dies ist eine To-Do-Liste, die das Scrum Team abarbeiten muss. Die einzelnen Elemente der Liste können Funktionsdefinitionen der Software sein, User-Storys oder Beschreibungen von zusätzliche Tätigkeiten, die erbracht werden müssen, zum Beispiel Benutzerhandbuch.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Sprint

A

Eine Entwicklungsiteration. Sprints dauern in der Regel zwei bis vier Wochen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Produkt Owner

A

Eine Einzelperson / kleine Gruppe, dessen Aufgabe ist, Produktmerkmale oder Anforderungen zu identifizieren, zu priorisieren und ständig das Product Backlog zu überprüfen. Kann ein Kunde sein, ebenso ein Produktmanager oder Vertreter. Product Owner (PO) ordnet Arbeit für komplexes Problem in Product
Backlog an

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Scrum Master

A

Ist dafür verantwortlich sicherzustellen, dass dem Scrum Prozess gefolgt wird, und leitet das Team beim effizienten Einsatz von Scrum. Er oder sie ist die Schnittstelle zum Rest des Unternehmens und dafür verantwortlich sicherzustellen, dass das Scrum Team nicht von äußerer Beeinflussung abgelenkt wird. Die Aussage, dass der Entwickler von Scrum darauf bestehen, dass der Scrum Master nicht als Projektmanager angesehen wird, bezieht sich auf eine grundlegende Unterscheidung zwischen der Rolle des Scrum Masters und der Rolle des Projektmanagers in traditionellen Entwicklungsmethoden.

Aufgaben:
1. Moderiert Sprint-Planungsmeetings
2. Hält täglich Stand-up-Meetings ab
3. Beseitigt Hindernisse (Препятствия)
4. Führt Retrospektiven durch
5. Unterstützt beim Product Backlog

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Scrum Rollen

A

▪ Product Owner (PO) ordnet Arbeit für komplexes Problem in Product Backlog an
▪ das Scrum-Team umsetz während eines Sprints die ausgewählten Aufgaben oder User Stories in ein lauffähiges Produktinkrement
▪ Scrum Team und Stakeholder prüfen Ergebnisse im Review
▪ Iterationen werden wiederholt, wobei PO mit Kunden Priorisierung des Backlogs vornimmt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Daily Scrum

A

Scrum Event, ein 15-minütiges Timebox-Event, das jeden Tag für die Entwickler stattfindet. Das Daily Scrum findet an jedem Tag des Sprints statt. Dabei planen die Entwickler die Arbeit für die nächsten 24 Stunden.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Increment

A

Scrum-Artefakt, das die Arbeit definiert, die von den Entwicklern während eines Sprints umgesetzt wird. Die Summe aller Inkremente bildet ein Produkt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Sprint Backlog

A

Scrum-Artefakt, das einen Überblick über die Entwicklungsarbeit zur Erreichung des Sprint-Ziels gibt, typischerweise eine Vorhersage der Funktionalität und der zur Bereitstellung dieser Funktionalität erforderlichen Arbeit.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Sprint Planning

A

Scrum Event, das auf 8 Stunden oder weniger begrenzt ist, um einen Sprint zu starten. Es dient dem Scrum-Team dazu, die Arbeit aus dem Product Backlog, die als Nächstes erledigt werden sollte, in das Sprint Backlog zu intgrieren

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Sprint Retrospective

A

Scrum Event, das auf ein Zeitfenster von 3 Stunden oder weniger festgelegt ist, um einen Sprint zu beenden. Es dient dem Scrum Team zur Überprüfung der Team-Zusammenarbeit und zur Planung von Verbesserungen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Sprint Review

A

Scrum Event, das auf eine Timebox von 4 Stunden oder weniger festgelegt ist, um die Entwicklungsarbeit eines Sprints abzuschließen. Es dient dem Scrum Team und den Stakeholdern dazu, das aus dem Sprint resultierende Produktinkrement zu inspizieren, die Auswirkungen der geleisteten Arbeit auf den Gesamtfortschritt in Richtung des Produktziels zu bewerten und das Product Backlog zu aktualisieren, um den Kundennutzen der nächsten Periode zu maximieren.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Kanban

A

▪ Visualisierung: Kanban-Board ist Visualisierung
des Arbeitsablaufs, Gestaltung selbst bleibt aber
relativ offen
▪ Limitierung: Spalten enthalten nur eine maximale Anzahl an Aufträgen enthalten, wenn Auftragskarte weiter nach rechts wandert, darf Team neue Karte von links ziehen
▪ Management: während Arbeitsprozess entstehen Blockaden und Engpässe, Team muss diese Störungen selbst beseitigen
▪ Regulierung: Prozessregeln werden festgelegt,
um Arbeitsabläufe transparenter und klarer zu
gestalten, z.B. Festlegung Limits
▪ Feedback: Rückmeldungen als notwendiger Teil
von Arbeitsabläufen, um zukünftige Verbesserungen zu erwirken
▪ Kaizen: Prozesse im Team sollen kontinuierlich
verbessert werden, da nie Optimum erreichen kann und dauerhafte Arbeit Verbesserungen notwendig ist

17
Q

Wie kann sich das Fehlen eines WIP-Limits auf die Durchlaufzeit im Kanban auswirken?

A

Die Nutzung digitaler Lösungen für das Kanban Board kann ungünstig sein (Störung der Kanban-Praktik
„Visualisierung“)
▪ Ohne WIP-Limits erhöht sich die Durchlaufzeit bis zum Punkt, bei dem Kanban nicht mehr effizient wird (Vorteil von Kanban geht verloren)

18
Q

TDD test-driven development

A

Testgetriebene Entwicklung (TDD): Agile Praxis,
Tests vor Implementierung
▪ „Test-first“-Ansatz: Enthält TDD und BehaviorDriven Development (BDD)
▪ Ziel: Built-in Quality durch Validierung mit
vorab festgelegten Tests
▪ Testportfolio: Viele schnelle, automatisierte
Entwicklungstests
▪ Weniger langsame, manuelle End-to-End-Tests
▪ Oft Unterstützung durch geeignete
Entwicklungsumgebungen/IDEs

19
Q

Scaled Agile Framework (SAFe)

A

▪ Ausbaustufen
▪ Essential SAFe
▪ Large Solution SAFe
▪ Portfolie SAFe
▪ Full SAFe
▪ Full SAFe beinhaltet alle Stufen: für globale Player (Konzerne) mit großem Skalierungsbedarf (Beispiel CARIAD / VW-Konzern)

20
Q

Übersicht der Ausbaustufen (SAFe - Scaled Agile Framework)

A

Ausbaustufe/Ebene/(Ziele/Eignung für Organisationen):
-Essential/Team- und Programmebene/Geeignet für Unternehmen, die schnell starten wollen.

-Portfolio/Team-, Programm- und
Portfolioebene/Geeignet für Unternehmen die ihre Programme mit der
Unternehmensstrategie abgleichen wollen
-Large Solution/Team-, Programm-, Portfolioebene
und Large-Solution-Ebene/Für Unternehmen mit großem Skalierungsbedarf.
-Full/Team-, Programm-, Portfolioebene
und Large-Solution-Ebene
(zzgl. weiterer organisatorischer
Rahmen / Business-Ebene)/Für globale Player mit großem Skalierungsbedarf – sowohl für Projekte als
auch für Mitarbeiter.

21
Q

Vergleich der Vorgehensmodelle

A

Tabelle!

22
Q

Nenne die fünf Prinzipien agiler Methoden.

A

Die fünf Prinzipien agiler Methoden sind:

  1. Kundenzufriedenheit durch kontinuierliche Lieferung.
  2. Änderungswünsche willkommen heißen.
  3. Lieferung funktionsfähiger Software in kurzen Intervallen.
  4. Zusammenarbeit zwischen Kunden und Entwicklern.
  5. Einfache und direkte Kommunikation.

Diese Prinzipien bilden die Grundlage für agile Methoden und betonen die Wichtigkeit von Kundenorientierung, Anpassungsfähigkeit, kontinuierlicher Lieferung, Zusammenarbeit und Kommunikation.

23
Q

Nenne ein Beispiel für ein Software System, für das agile Methoden im Entwicklungsprozess nicht angebracht wären, und erkläre warum.

A

Ein Beispiel für ein Software-System, für das agile Methoden möglicherweise nicht geeignet wären, ist eine sicherheitskritische Anwendung wie die Steuerungssoftware für Flugzeugsysteme. In solchen Fällen ist eine strenge Dokumentation, formale Validierung und ein gründliches Testen erforderlich, was besser mit traditionellen Wasserfallmethoden oder V-Modell-Ansätzen umgesetzt werden kann, um Sicherheit und Zuverlässigkeit zu gewährleisten.

24
Q

Was ist inkrementelle Entwicklung, für welche Arten von Software ist dieser Ansatz geeignet, für welche nicht

A

Inkrementelle Entwicklung ist ein Ansatz im Software Engineering, bei dem ein Softwareprodukt schrittweise und in aufeinander aufbauenden Teilen entwickelt wird. Statt die gesamte Software auf einmal zu erstellen, werden Funktionalitäten in aufeinanderfolgenden Iterationen oder Inkrementen
hinzugefügt. Dies ermöglicht eine schnellere Bereitstellung von Teillösungen und eine frühe Rückmeldung der Benutzer.
Dieser Ansatz eignet sich besonders gut für Projekte, bei denen sich Anforderungen leicht ändern können oder wenn es wichtig ist, rasch Ergebnisse zu liefern. Inkrementelle Entwicklung fördert
Flexibilität und die Möglichkeit, auf Feedback zu reagieren. Allerdings könnte sie für Projekte mit streng festgelegten, unveränderlichen Anforderungen weniger geeignet sein, da häufige Änderungen zu zusätzlichem Aufwand führen können. Projekte, bei denen die Gesamtkomplexität von Anfang an vollständig verstanden werden kann, könnten ebenfalls von anderen Vorgehensmodellen stärker profitieren.

25
Q

Erklären Sie, wie den agilen Praktiken zugrundeliegenden Prinzipien zu einer beschleunigten Entwicklung und Bereitstellung von Software führen kann

A

Die agilen Praktiken, die auf den zugrundeliegenden Prinzipien basieren, zielen darauf ab, die Entwicklung und Bereitstellung von Software zu beschleunigen, indem sie auf Flexibilität, ständiges
Feedback und iterative Verbesserungen setzen:
1. Kundenzentrierung und frühzeitige Lieferung: Der Fokus auf die Zufriedenstellung des Kunden durch frühzeitige und kontinuierliche Lieferung wertvoller Software ermöglicht es, schnell auf Kundenbedürfnisse zu reagieren und ihre Anforderungen in den Entwicklungsprozess zu integrieren.
2. Anpassungsfähigkeit durch Änderungen in Anforderungen: Die Bereitschaft, sich auch spät im Entwicklungsprozess an sich ändernde Anforderungen anzupassen, ermöglicht es, flexibel auf neue
Erkenntnisse oder Marktanforderungen zu reagieren, was die Gesamtentwicklungszeit verkürzen kann.
3. Inkrementelle Entwicklung und regelmäßige Lieferung: Durch inkrementelle Entwicklung und regelmäßige Lieferungen von funktionsfähiger Software wird der Gesamtprozess beschleunigt.
Benutzer können frühzeitig von Teillösungen profitieren, während gleichzeitig kontinuierlich an neuen Funktionen gearbeitet wird.
4. Kontinuierliches Feedback und Zusammenarbeit: Die tägliche Zusammenarbeit und der Austausch von Feedback zwischen Teammitgliedern fördern schnelle Entscheidungsfindung und ermöglichen es, Probleme sofort anzugehen, was den Entwicklungsprozess beschleunigen kann.
5. Technische Exzellenz und nachhaltige Entwicklung: Die Fokussierung auf technische Exzellenz und nachhaltige Entwicklung führt zu einer höheren Codequalität und Wartbarkeit. Dies reduziert die Wahrscheinlichkeit von Fehlern und beschleunigt den gesamten Entwicklungszyklus.
6. Selbstorganisierte Teams und kurze Kommunikationswege: Selbstorganisierte Teams können effizienter arbeiten, da sie Entscheidungen autonom treffen können. Kurze Kommunikationswege
fördern eine effektive Zusammenarbeit und erleichtern die schnelle Lösung von Problemen.
7. Kontinuierliche Verbesserung durch Reflexion: Die regelmäßige Reflexion über den Entwicklungsprozess und die Bereitschaft, das Verhalten entsprechend anzupassen, ermöglichen eine kontinuierliche Verbesserung und Optimierung der Arbeitsabläufe.
8. Frühes Erkennen von Fehlern: Durch die Betonung von regelmäßigen, kleinen Lieferungen können Fehler frühzeitig erkannt und behoben werden, was den Zeitaufwand für spätere Fehlerkorrekturen minimiert.
9. Motivierte Individuen und effektive Kommunikation: Motivierte Teammitglieder, die in einer unterstützenden Umgebung arbeiten, fördern eine höhere Produktivität und beschleunigen den Entwicklungsprozess. Effektive Kommunikation minimiert Missverständnisse und Verzögerungen.
Die Kombination dieser Prinzipien und Praktiken schafft eine agile Umgebung, die die Geschwindigkeit, Flexibilität und Effizienz des Softwareentwicklungsprozesses steigert.

26
Q

Beschreiben Sie in eigenen Worten den Prozessablauf, d.h. Ablauf der Entwicklungsarbeit, bei Scrum und nutzen Sie hierfür auch die vorgesehenen Fachbegriffe (Daily Scrum, Sprint Planning etc.). Falls nötig, nutzen Sie weitere Informationen aus weiteren Quellen/Literatur

A

Scrum ist ein agiles Rahmenwerk für die Softwareentwicklung, das auf wiederkehrenden, zeitlich begrenzten Zyklen, sogenannten Sprints, basiert. Der Prozess beginnt mit der Erstellung eines Produktbacklogs, das alle erforderlichen Aufgaben und Funktionen enthält. Vor jedem Sprint findet
ein Sprint Planning statt, bei dem das Entwicklungsteam aus dem Backlog auswählt, welche Aufgaben im kommenden Sprint erledigt werden sollen. Dies wird in Zusammenarbeit mit dem Product Owner, der die Anforderungen priorisiert, und dem Scrum Master, der den Prozess
unterstützt, durchgeführt.
Während des Sprints selbst arbeitet das Entwicklungsteam an den ausgewählten Aufgaben. Tägliche Kurzbesprechungen, als Daily Scrum bekannt, dienen dazu, den Fortschritt zu überprüfen, Hindernisse zu besprechen und die nächsten Schritte zu planen. Am Ende jedes Sprints gibt es eine Sprint Review, bei der das Team die abgeschlossenen Arbeiten präsentiert, Feedback sammelt und
mögliche Anpassungen für das nächste Sprint Planning bespricht. Parallel dazu findet eine Sprint Retrospektive statt, in der das Team den vergangenen Sprint reflektiert und Maßnahmen zur
kontinuierlichen Verbesserung identifiziert.
Im Gegensatz dazu basiert Kanban auf einem visuellen Modell, das den Workflow visualisiert und die
kontinuierliche Lieferung von Software betont. Auf einem Kanban-Board werden Aufgaben in
Spalten dargestellt, die den verschiedenen Phasen des Entwicklungsprozesses entsprechen. Das Ziel
ist es, den Fluss der Arbeit zu optimieren, Engpässe zu identifizieren und den Fokus auf die effiziente
Bearbeitung von Aufgaben zu legen. Es gibt keine festen Sprintzyklen wie bei Scrum, und Aufgaben
können kontinuierlich hinzugefügt und abgeschlossen werden. Kanban ermöglicht eine flexible
Anpassung an sich ändernde Prioritäten und erfordert eine kontinuierliche Überwachung des
Arbeitsflusses.