cd Blatt 4

Funktionale und nicht Funktionale Anforderungen

Die Ziele dieses Kapitels bestehen darin, die Anforderungen an Software vorzustellen und die Prozesse zu erläutern, die sich mit dem Aufdecken und Dokumentieren dieser Anforderungen beschäftigen.

  • Zwei Arten von Anforderungen

    • Funktionale Anforderungen: Anforderungen zum Verhalten des Systems bei Nutzung
      Beispiel: Das System muss die Möglichkeit bieten, eine neue Datei zu erstellen.
    • Nichtfunktionale Anforderungen Anforderungen zum Prozess (Zuverlässigkeit, Antwortzeit, Speichernutzung)
      Beispiel: Das System muss innerhalb von 5 Sekunden auf Benutzereingaben reagieren.
  • Funktionale Anforderungen

    • Beschreibt, was das System tun soll & sollte in natürlicher Sprache formuliert werden, damit sie für alle Beteiligten verständlich sind.
    • Hängen vom Typ der zu entwickelnden Software, von den zu erwartenden Benutzern und vom allgemeinen Ansatz des Unternehmens beim Schreiben der Anforderungen ab.
    • Funktionale Systemanforderungen erweitern die Benutzeranforderungen und sind für die Systementwickler geschrieben.
    • Mehrdeutige Anforderungen können zu Missverständnissen führen, was zu unerwarteten Systemänderungen und zusätzlichen Anforderungen führt.
  • Nichtfunktionale Anforderungen

    • Betreffen Eigenschaften des Gesamtsystems wie Zuverlässigkeit, Antwortzeit und Speichernutzung, nicht nur spezifische Dienste.
    • Können Beschränkungen der Systemimplementierung definieren, wie z.B. Leistungsfähigkeit von E/A-Geräten oder Datenrepräsentationen.
    • Sind oft relevanter als einzelne funktionale Anforderungen, da ihre Nichterfüllung das gesamte Systemunbrauchbar machen kann.
    • Ihre Implementierung kann über das gesamte System verstreut sein und die Gesamtstruktur oder mehrere Komponenten betreffen.
    • Ergeben sich aus Benutzerbedürfnissen Budgetbeschränkungen, UnternehmenspolitikKompatibilitätserfordernissen und externen Faktoren.
    • Umfassen Produkt-, Unternehmens- und externe Anforderungen, wie Performanz, Sicherheit, rechtliche und ethische Vorgaben.
    • Sollten idealerweise quantitativ ausged rückt werden, um objektive Überprüfbarkeit zu ermöglichen.

Prozesse des Requirements-Engineerings

  • Drei Hauptaktivitäten

    • Hauptaktivitäten: Requirements-Engineering umfasst Erhebung, Analyse und Spezifikation.
      Beispiel: Anforderungen werden in Zusammenarbeit mit den Projektbeteiligten festgelegt.
    • Iterativer Prozess: Aktivitäten des Requirements-Engineerings sind verschachtelt und iterativ.
      Beispiel: Die Ermittlung der Anforderungen erfolgt in einer Spirale mit mehreren Iterationen.
    • Spiralmodell: Das Ergebnis ist die Gesamtsystemspezifikation und beeinflusst Zeit und Aufwand für die Wiederholung von Prozessstadien.
      Beispiel: Der Prozess beginnt mit der Ermittlung der Geschäftsanforderungen und führt durch die Spezifikation zu einem Review und der Entwicklung eines Prototypen.
    • Frühes vs. Spätes Stadium: Zu Beginn liegt der Fokus auf dem Geschäftsverständnis und den nichtfunktionalen sowie Benutzeranforderungen. Mit Fortschreiten zu äußeren Spiralen steigt der Aufwand für detaillierte Systemanforderungen.
      Beispiel: Im inneren Bereich der Spirale werden das übergeordnete Geschäft und grundlegende Anforderungen geklärt, während in den äußeren Bereichen die präzise Ausarbeitung der Systemanforderungen intensiviert wird.

Anforderungserhebung und -analyse

  • Ziele und Herausforderungen

    • Anforderungserhebung: Die Anforderungserhebung zielt darauf ab, das Arbeitsumfeld der Projektbeteiligten zu verstehen und zu bestimmen, wie ein neues System ihre Tätigkeiten unterstützen kann.
      Beispiel: Softwareentwickler arbeiten mit den Projektbeteiligten zusammen, um Anwendungsbereiche, Dienste und Leistungsfähigkeit des Systems zu ermitteln.
    • Schwierigkeiten: Das Verstehen und Ermitteln der Anforderungen ist aufgrund verschiedener Faktoren wie unklaren Erwartungen, unterschiedlichen Perspektiven der Projektbeteiligten und politischen Einflüssen komplex.
      Beispiel: Projektbeteiligte haben oft Schwierigkeiten, ihre Erwartungen in Worte zu fassen oder stellen unrealistische Forderungen.
  • Prozessaktivitäten

    • Sammeln der Anforderungen: Sammeln und Verstehen der Anforderungen durch Kommunikation mit den Stakeholdern.
      Beispiel: Fachliche Anforderungen und Dokumentationen werden während dieses Prozesses gesammelt.
    • Klassifizierung und Organisation: Gruppierung in Beziehung stehender Anforderungen in zusammenhängende Cluster.
      Beispiel: Unstrukturierte Anforderungen werden organisiert, um Übereinstimmungen und Konflikte herauszuarbeiten.
    • Priorisierung und Konfliktlösung: Priorisieren von Anforderungen und Lösen von Konflikten durch Verhandlungen.
      Beispiel: Bei vielen Projektbeteiligten müssen Anforderungskonflikte durch Treffen und Diskussionen gelöst werden.
    • Dokumentation der Anforderungen: Festhalten der Anforderungen in Dokumenten oder digitalen Plattformen für die nächste Iteration.
      Beispiel: Ein früher Entwurf der Gesamtspezifikation wird erstellt oder die Anforderungen werden in Wikis dokumentiert.
  • Kurz gesagt, die Anforderungserhebung und -analyse ist ein komplexer Prozess, der darauf abzielt, ein tiefes Verständnis der Nutzerbedürfnisse zu erlangen und diese in eine strukturierte Form für die Systementwicklung zu überführen.

Anforderungsspezifikation im Detail

  • Ausarbeitung der Anforderungen

    • Ziel der Spezifikation: Ziel ist es, eine klare und strukturierte Dokumentation von Benutzer- und Systemanforderungen zu erstellen, um Entwicklern und Stakeholdern ein einheitliches Verständnis des zu entwickelnden Systems zu vermitteln.
      Beispiel: Eine detaillierte Auflistung der Funktionalitäten und Einschränkungen, die das System bieten bzw. einhalten muss.
    • Komplexität der Spezifikation: Die Spezifikation umfasst eine Vielzahl von Informationen, von Benutzeranforderungen über Systemarchitektur bis hin zu detaillierten Systemmodellen, und dient als Basis für Design, Entwicklung und Test des Systems.
      Beispiel: Technische Beschreibungen, Architekturdiagramme und Interaktionsmodelle, die das erwartete Systemverhalten darstellen.
    • Struktur und Inhalt: Die Struktur der Spezifikation folgt einem standardisierten Muster, das es ermöglicht, Informationen effizient zu organisieren und zugänglich zu machen.
      Beispiel: Ein Vorwort, eine Einleitung, ein Glossar, Kapitel zu Benutzeranforderungen, Systemarchitektur und Systemmodellen sowie Anhänge für spezifische Informationen.
    • Anpassung an Entwicklungsmodelle: Die Spezifikation wird an das gewählte Entwicklungsmodell angepasst, sei es ein Wasserfallmodell mit einem umfassenden SRS oder ein agiles Modell, das inkrementelle und flexible Anforderungsdokumentation bevorzugt.
      Beispiel: In agilen Methoden werden oft User-Storys verwendet, während in traditionellen Methoden formale Spezifikationen üblich sind.
    • Agile Praktiken: Agilen Praktiken folgend, werden Anforderungen oft als User-Storys formuliert und fortlaufend mit dem Kunden abgestimmt, um Flexibilität und Anpassung an Veränderungen zu ermöglichen.
      Beispiel: Die kontinuierliche Kundenintegration in den Entwicklungsprozess für eine iterative Anpassung und Verfeinerung der Anforderungen.
  • Kurz gesagt: Die Anforderungsspezifikation dient als essenzielle Kommunikations- und Planungsgrundlage, die alle wesentlichen Informationen für die effektive Realisierung und Validierung des zukünftigen Systems umfasst. Sie ist der Dreh- und Angelpunkt für die Abstimmung zwischen dem, was Benutzer und Stakeholder erwarten, und dem, was Entwickler und Designer umsetzen.

Validierung der Anforderungen

  • Validierungsprozess

    • Zweck der Validierung: Sicherstellung, dass die dokumentierten Anforderungen den Erwartungen und Bedürfnissen der Kunden entsprechen und systematisch auf Fehler und Inkonsistenzen geprüft werden.
      Beispiel: Prüfung, ob das System tatsächlich das leistet, was der Kunde benötigt und ob es sich realistisch umsetzen lässt.
    • Prüfarten: Die Anforderungen werden auf Gültigkeit, Konsistenz, Vollständigkeit, Realisierbarkeit und Verifizierbarkeit geprüft.
      Beispiel: Überprüfung der Anforderungen auf Widerspruchsfreiheit und darauf, ob sie das vollständige gewünschte Systemverhalten abbilden.
    • Techniken: Einsatz von Anforderungsreviews, Prototyping und Testfallerzeugung, um frühzeitig Anforderungsdefekte zu identifizieren.
      Beispiel: Durchführung von Reviews durch ein Team von Gutachtern oder Entwicklung eines Prototyps zur Demonstration des erwarteten Systemverhaltens.
    • Herausforderungen: Schwierigkeit für die Benutzer, die Anforderungen zu validieren, da es eine abstrakte Vorstellung des Systems im Betrieb erfordert.
      Beispiel: Benutzer müssen abstrakt analysieren, wie das System ihre Arbeit unterstützt, was oft selbst für Experten nicht trivial ist.
  • Kurz gesagt: Anforderungsvalidierung ist ein kritischer Schritt im Requirements-Engineering, der sicherstellt, dass die entwickelten Spezifikationen den tatsächlichen Bedürfnissen entsprechen und im weiteren Entwicklungsprozess umsetzbar sind. Es ist eine Präventivmaßnahme gegen teure Nachbesserungen und trägt dazu bei, das Risiko von Missverständnissen zwischen Entwicklern und Kunden zu minimieren.

Anforderungsänderung

  • Dynamik der Anforderungen

    • Ständige Änderung: Softwaresysteme, die komplexe Probleme lösen, erfahren während der Entwicklung und nach der Implementierung stetige Anforderungsänderungen.
      Beispiel: Änderungen treten aufgrund von Problemen, die nicht vollständig definiert werden können, sowie Veränderungen im Geschäftsumfeld auf.
    • Ursachen für Änderungen: Änderungen ergeben sich aus Korrekturen ursprünglicher Anforderungen, Veränderungen im wirtschaftlichen und technischen Umfeld sowie unterschiedlichen Benutzergruppen.
      Beispiel: Neue Hardware-Einführungen oder Gesetzesänderungen können Anforderungsänderungen erfordern.
    • Anforderungsmanagement: Ein formaler Prozess für das Management von Änderungen ist essentiell, um deren Auswirkungen zu bewerten und mit den Systemanforderungen zu verknüpfen.
      Beispiel: Überwachung individueller Anforderungen und Beibehaltung von Verbindungen zu abhängigen Anforderungen.
  • Planung und Durchführung

    • Planung des Anforderungsmanagements: Entscheidungen über Anforderungsidentifikation, Änderungsmanagementablauf, Nachvollziehbarkeitsrichtlinien und Werkzeugunterstützung.
      Beispiel: Festlegung, wie sich entwickelnde Anforderungen zu verwalten sind, einschließlich der Verwendung von Werkzeugen wie DOORS.
    • Änderungsmanagementprozess: Umfasst Problemanalyse, Änderungsanalyse, Aufwandsschätzung und Implementierung der Änderung.
      Beispiel: Bewertung von Änderungen hinsichtlich ihrer Auswirkungen, Kosten und der Notwendigkeit einer Anpassung der Gesamtsystemspezifikation.
  • Kurz gesagt: Anforderungsänderung ist ein kontinuierlicher Prozess, der auf die Anpassungsfähigkeit und Reaktionsfähigkeit von Softwaresystemen auf sich ändernde Geschäftsumfelder, Benutzerbedürfnisse und technologische Entwicklungen abzielt. Ein effektives Anforderungsmanagement ist entscheidend, um diese Änderungen zu steuern und sicherzustellen, dass das System weiterhin den Benutzeranforderungen entspricht.

1. Nichtfunktionale Anforderungen

  1. Der Fernsehsender SWT-TV möchte eine online Mediathek bereitstellen. Hier soll es möglich sein Live-TV zu sehen, aber auch Serien, Filme und Podcasts On-Demand zu konsumieren. SWT-TV bietet dabei einen Gratisbereich mit limitiertem Umfang des On-Demand Angebots. Eingeloggte Premium Kunden haben zugriff auf das volle Angebot. Auf die Frage: “Nenne mir 5 Nichtfunktionale Anforderungen die das beschriebene System haben könnte.” antwortet ChatGPT wie folgt:

    • NF1 Leistung: Die Plattform muss schnell und responsiv sein, um eine optimale Benutzererfahrung zu gewährleisten, auch bei hoher Last und Bandbreitenauslastung.

    • NF2 Sicherheit: Es müssen strenge Sicherheitsmaßnahmen implementiert werden, um Benutzerdaten, Zahlungsinformationen und Inhalte vor unbefugtem Zugriff oder Diebstahl zu schützen.

    • NF3 Skalierbarkeit: Das System sollte skalierbar sein, um eine wachsende Anzahl von Benutzern und Inhalten ohne Beeinträchtigung der Leistung zu unterstützen.

    • NF4 Kompatibilität: Die Plattform muss auf verschiedenen Geräten und Betriebssystemen reibungslos funktionieren , einschließlich PCs, Smartphones, Tablets und Smart-TVs.

    • NF5 Benutzerfreundlichkeit: Die Benutzeroberfläche sollte intuitiv und benutzerfreundlich gestaltet sein, um eine einfache Navigation und Interaktion mit dem Inhalt zu ermöglichen, selbst für technisch weniger versierte Benutzer.

  2. a) Kritisieren Sie die Liste von ChatGPT. Warum sind die Anforderungen nicht gut?

    • NF1: Nicht quantifiziert, was “schnell” bedeutet.

    • NF2: Unklar, was “strenge Sicherheitsmaßnahmen” sind.

    • NF3: Nicht quantifiziert, was “skalierbar” bedeutet.

    • NF4: Unklar, was “reibungslos funktionieren” bedeutet.

    • NF5: Unklar, was “intuitiv und benutzerfreundlich” bedeutet.

  3. b) Formulieren Sie die Anforderungen so um, dass sie den Qualitätskriterien aus dem Buch entsprechen.

    • NF1: Die Plattform muss innerhalb von 2 Sekunden auf Benutzereingaben reagieren

    • NF2: Die Plattform muss die Daten der Benutzer:innen verschlüsselt speichern.

    • NF3: Die Plattform muss bis zu 1000 gleichzeitige Benutzer:innen unterstützen.

    • NF4: Die Plattform muss auf Windows, MacOS, Android und iOS laufen.

    • NF5: Nach 5 Minuten Benutzung muss die Plattform für Benutzer:innen intuitiv bedienbar sein.

2. Anforderungserhebung bei SWT-TV

  1. Damit eine Produktion in der Mediathek für die Zuschauer:innen sichtbar wird, muss sie von einer vorgesetzen Person freigegeben werden. Das SWT-TV Mediathek soll dafür um interne Prozesse erweitert werden. So soll es z.B. möglich sein, dass Mitarbeiter:innen des Schnitt-Teams Videos mit anderen Mitarbeiter:innen und Vorgesetzten teilen können. Dabei soll der Zugriff über interne Zugriffsrechte geregelt sein, genauer soll limitiert sein, welche Mitarbeiter:innen auf den rohen Schnitt einsehen können und welche Mitarbeiter:innen den finalen Schnitt bearbeiten können.

    Sie sind als Requirements Engineer beauftragt die Anforderungen für dieses Feature zu erheben, jedoch sind sie kein Spezialist für die Filmindustrie.


    a) Bewertung von Erhebungsmethoden für das SWT-TV Mediathek Feature:

    • i) Interviews: Bietet Einblick in das Arbeitsumfeld, aber kann zu unvollständigen Daten führen, wenn triviale Abläufe übergangen werden. Hierarchische Bias möglich.

    • ii) Ethnographische Analyse: Unvoreingenommene Beobachtung der Arbeitsabläufe, jedoch besteht das Risiko, dass keine innovativen Prozesse entdeckt werden.

  2. b) Identifizierung relevanter Stakeholder:

    • Stakeholder: Schnitt-Team, Vorgesetzte, IT-Abteilung, Personalabteilung.

  3. c) User Story für eine Mitarbeiter:in des Schnitt-Teams:

    • User Story: "Als Mitarbeiter:in im Schnitt-Team möchte ich das System nutzen, um meine Schnittversionen sicher mit Vorgesetzten zu teilen und deren Freigabe zu erhalten. Dabei soll der Zugriff auf den rohen und finalen Schnitt entsprechend der internen Zugriffsrechte geregelt sein, um die Sicherheit und Integrität des Projekts zu gewährleisten."

K Anwendungsfalldiagramm

  1. Systembeschreibung: Die Paketstation ermöglicht Kunden und Kuriere, Pakete abzuholen oder einzustellen, mit Authentifizierung und Belegdruckoptionen.

    Es gibt zwei Arten von Benutzern: Kunden und Kuriere. Bei der Benutzung kann sich jeder die Hilfe anzeigen lassen. Kunden können Pakete abholen, welche direkt an die Paketstation adressiert wurden und dort von einem Kurier hinterlegt wurden. Zudem können Kunden auch Pakete einstellen, welche dann von einem Kurier abgeholt werden. Damit eine Abholung, egal ob von Kurier oder Kunde, oder ein einstellen eines Pakets gelingt, muss man sich an der Paketstation authentifizieren. Dies geschieht entweder durch Einscannen der passenden Bescheinigung oder mittels Magnetstreifenkarte mit zugehörigem Passwort. Nach der Einstellung eines Paketes kann man sich dafür an der Paketstation einen Einlieferungsbeleg ausdrucken lassen. Ein Kurier kann sowohl Pakete vom Lieferfahrzeug in die Paketstation umladen als auch von Benutzern eingestellte Pakete abholen, um diese ins Lieferfahrzeug zu laden.

  2. Identifizierung der Aktoren:

    • Kunden: Nutzer, die Pakete abholen oder einstellen.

    • Kuriere: Verantwortlich für das Einlegen und Abholen von Paketen von/zu der Paketstation.

    • System: Paketstation mit Authentifizierungsfunktion und Belegdrucker.

  3. Anwendungsfälle:

    • Authentifizierung: Benutzer authentifizieren sich, um Pakete abzuholen oder einzustellen.

    • Paketabholung: Kunden und Kuriere holen Pakete ab.

    • Paketeinstellung: Kunden stellen Pakete ein; Kuriere laden Pakete aus dem Lieferfahrzeug um.

    • Belegdruck: Nutzer können sich nach der Einstellung eines Paketes einen Einlieferungsbeleg ausdrucken.

  4. b) Fügen Sie fehlende Beziehungen und Anwendungsfälle in das Anwendungsfalldiagramm ein.