class: center, middle, first # Software-Entwicklung 3 ## Anforderungsanalyse --- # Agenda 1. Was ist Anforderungsanalyse? 2. Funktionale und Nicht-Funktionale Anforderungen 3. Technische und fachliche Anforderungen 4. Einbettung in (agile) Software-Entwicklung 5. Methoden und Werkzeuge zur Anforderungsanalyse 6. MVP --- # Zu erst ## Beispielszenario für dieses Semester: > Medienverwaltung --- # Was ist Anforderungsanalyse? Klärung z.B. von: * Was muss das System können? Was muss es nicht können? * Wer bedient das System? Wer macht was? * Was sind die technischen Rahmenbedingungen? * Handelt es sich um eine Neuentwicklung oder Weiterentwicklung? --- # Ziele für Anforderungen
_(nach "Mit Scrum zum gewünschten System", J. Goll & D. Hommel, Springer, 2015)_ --- # Methoden und Werkzeuge zur Anforderungsanalyse > **Ziel**: Von (unterschiedlichen) Vorstellungen zu konkret umsetzbaren Funktionen kommen * _Vorstellungen_: Bei allen Beteiligten (z.B. Auftraggeber:innen, Entwickler:innen, Architekt:innen) existieren unterschiedliche Bilder * _konkret umsetzbare Funktionen_: Eindeutige und überprüfbare Definition wie eine Anforderung im System abgebildet werden soll. * Kommunikationsthema: Personen mit unterschiedlichen (technischen/fachlichen) Wissenshintergründen müssen sich einigen, wie Funktionen umgesetzt werden sollen. * Näherungsprozess mit unterschiedlichen Methoden und Sichtweisen --- # Fachliche Anforderungen * Definition üblicherweise von Auftraggeber:innen, Fach-Teams * Beispiel: "Bei der Registrierung sollen nur gültige E-Mail-Adressen eingegeben werden können." --- # Technische Anforderungen * Definition durch Entwickler:innen, Architekt:innen * Entweder: Umsetzung einer fachlichen Anforderung in den technischen Kontext. Bezug herstellen! * Oder: Rein technische Anforderung * Beispiel I: "E-Mail-Adressen sollen per client- und server-site validation per RegEx auf ihre formale Korrektheit geprüft werden... Über ein double opt-in wird bestätigt, dass die Registrierung tatsächlich von der jeweiligen Person ausgelöst wurde..." * Beispiel II: "Die Anwendung soll in einem Container deployt werden" --- # Nicht-Funktionale Anforderungen > Anforderungen, die sich im Betrieb einer Anwendung niederschlagen. Dazu gehören: * Usability * User experience * Performance * Wartbarkeit * ... --- # Funktionale Anforderungen > Anforderungen, die die Aufgabe einer Anwendung beschreiben. Dazu gehören: * Berechnungsvorgaben * Algorithmen zum Umgang mit Daten --- # Funktionale und Nicht-Funktionale Anforderungen - Beispiele ### Funktionale oder Nicht-Funktionale Anforderung? * "Jedes Produkt muss mit dem passenden Mehrwertsteuersatz versehen werden" * "Das System muss innerhalb einer Sekunde das Ergebnis liefern" * "Die Anwendung soll barrierefrei sein" * "Die Daten sollen über eine REST-API abgerufen werden" --- # Anforderungsanalyse: User Stories * Beschreibt eine Anforderung aus Sicht eines Users * Fokus: (Mehr-)Wert einer Anforderung * Häufiges Muster: **Rolle + Anforderung + Zweck** * Alternative zu einer schwergewichtigen Spezifikation * Technische Umsetzungsmöglichkeiten/Fachsprache sollten keine Rolle spielen. > Ich, als eingeloggter User, möchte einen Song aus meinen Favoriten auswählen und abspielen können, damit ich meine Lieblingssongs ohne Suchumwege anhören kann. ### Wie könnten weitere User Stories für das Demo-Projekt aussehen? --- # Anforderungsanalyse: Scribbles * Skizzenhafte Darstellung der Oberfläche * Abbildung des Userflows * Muss nicht der tatsächlichen Umsetzung entsprechen * Diskussionsgrundlage ### Wie könnte ein Scribble für das Demo-Projekt aussehen? --- # Anforderungsanalyse: Use Case Diagrams * UML Standard * Beschreibt, wer was in der Anwendung tun kann * Auch Systeme können als "Actor" berücksichtigt werden * [UML-Spickzettel](https://www.oose.de/wp-content/uploads/2012/05/UML-Notationsübersicht-2.5.pdf) ### Wie könnte ein Use-Case-Diagram für das Demo-Projekt aussehen? --- # Organisation und Priorisierung von Anforderungen * Anforderungen müssen dokumentiert werden * Ticketing-System * Verlinkung der Anforderungen * Anforderungen müssen messbar sein * Definition von Akzeptanzkriterien * Status der Bearbeitung festhalten (z.B. "In Klärung", "Bereit zur Umsetzung", "Im Test", "Fertig") * Zeitliche Einplanung * Bis wann wird die Anforderung umgesetzt sein? * Einplanung in Sprint oder Meilenstein --- # MVP **Minimum Viable Product** * Enthält nur die Kernfunktionen: Reduktion auf das Wesentliche * Grundlage für Feedback * Grundlage für Weiterentwicklungen ### Abgrenzung: Proof of Concept * Prototyp * Überprüfung (technischer) Machbarkeit --- # Projektarbeit Fragen und Beispiele verteilt über die zugehörigen Folien * Was sind funktionale Anforderungen? * Was sind nicht-funktionale Anforderungen? * Was sind die zugehörigen User Stories? * Wie könnte ein Use Case Diagram aussehen? * Wie sieht ein erstes Scribble der Anwendung aus? * Was könnte ein MVP enthalten? * Was sind die Akzeptanzkriterien? --- # Weitere Informationen * "Mit Scrum zum gewünschten System", J. Goll & D. Hommel, Springer, 2015 * "Issues" (Issue Tracking mit GitLab), https://docs.gitlab.com/ee/user/project/issues/ * "Agile software development", TechTarget, https://www.techtarget.com/searchsoftwarequality/definition/agile-software-development * "Was ist Scrum?", Attlasian, https://www.atlassian.com/de/agile/scrum * "Kanban", Ionos, https://www.ionos.de/digitalguide/websites/web-entwicklung/kanban/ * "How to Build An MVP | Startup School", Y Combinator YouTube Channel, https://www.youtube.com/watch?v=QRZ_l7cVzzU