Einheit 2 / 12

Anforderungsanalyse und Softwaredesign

Gewinne:

  • Fähigkeit, vage Geschäftsanfragen mit KI-Unterstützung in klare, testbare Softwareanforderungen und User Stories umzuwandeln
  • Fähigkeit, die Vor- und Nachteile von Systemdesign, Datenmodell und Architekturentscheidungen strukturiert mit KI zu vergleichen
  • Fähigkeit, den vorgeschlagenen Entwurf der KI anhand von Anforderungen, Skalierbarkeit und Einschränkungen kritisch zu validieren

Die meisten Softwareprojekte scheitern nicht an schlechtem Code, sondern an missverstandenen Anforderungen. Eine aus einem Satz bestehende Anfrage wie „Benutzern das Herunterladen von Berichten erlauben“ hinterlässt Dutzende unbeantworteter Fragen: In welchem ​​Format? Wer ist verantwortlich? Wie viele Datensätze? Was ist, wenn es langsam ist? Die Anforderungsanalyse (Übersetzung einer Geschäftsanfrage in klare, überprüfbare technische Anforderungen) und das Softwaredesign (Aufbau der Struktur auf Papier, um diese Anforderungen zu erfüllen) sind die Phasen, in denen die teuersten Fehler vermieden werden, bevor Code geschrieben wird. In dieser Einheit lernen wir, KI in dieser Phase als „Gedankenpartner“ zu nutzen: einen Partner, der Unsicherheit entmystifiziert, Optionen klärt, aber die endgültige Entscheidung Ihnen überlässt.

KI bringt hier zwei große Werte hervor. Zunächst werden Fragen gestellt, die Sie überspringen. Es bringt verborgene Annahmen und Grenzfälle in einer Anfrage an die Oberfläche. Zweitens werden die Vor- und Nachteile einer Designentscheidung schnell tabellarisch aufgeführt. Aber das ist die Gefahr: KI gibt allgemeine Empfehlungen als „Best Practice“, ohne Ihren Kontext vollständig zu kennen (Budget, Team, bestehendes System, rechtliche Beschränkungen). Es ist Ihre Aufgabe, diesen Rat anhand Ihrer eigenen Wahrheit zu filtern.

Konzepte: User Story: Ein kurzer Satz, der ein Bedürfnis in der Form „… als, ich möchte in der Lage sein zu … weil …“ zum Ausdruck bringt. Akzeptanzkriterien: Überprüfbare Bedingungen, die erfüllt sein müssen, damit eine Arbeit als „erledigt“ gilt. Nichtfunktionale Anforderung: Anforderungen, die sich darauf beziehen, „wie es sich verhält“ und nicht darauf, „was es tun wird“, wie z. B. Geschwindigkeit, Sicherheit, Skalierbarkeit.

Von der vagen Anfrage zur überprüfbaren Anforderung

Eine gute Anforderung ist messbar und überprüfbar. Nicht „das System schnell sein lassen“, sondern „die Suchergebnisse innerhalb von 500 ms zurückgeben“. Hier ist eine Schritt-für-Schritt-Anleitung, wie Sie mithilfe von KI Unsicherheiten eingrenzen können:

  1. Geben Sie die Anfrage so ein, wie sie ist, und lassen Sie die Frage generieren. Bitten Sie die KI nicht um die Lösung, sondern zunächst darum, „alle Unklarheiten in dieser Anfrage als Frage aufzulisten“.
  2. Sie geben die Antworten. Nur Sie kennen den Kontext; Beantworten Sie die Fragen von AI mit Ihren tatsächlichen geschäftlichen Einschränkungen.
  3. Lassen Sie es in User Stories und Akzeptanzkriterien übersetzen. Übersetzen Sie den geklärten Bedarf in überprüfbare Elemente.
  4. Fügen Sie Randfälle und negative Szenarien hinzu. „Leeres Ergebnis“, „unberechtigter Benutzer“, „zu große Datei“ usw.

Eingabeaufforderung zur Mehrdeutigkeitsextraktion: „Wir werden die folgende Geschäftsanfrage in eine Softwareanforderung übersetzen. Schlagen Sie noch keine Lösung vor. Extrahieren Sie zunächst ALLE Unklarheiten und versteckten Annahmen, die in dieser Anfrage nicht beantwortet werden, als eine Liste von Fragen. Gruppieren Sie die Fragen unter den folgenden Überschriften: Umfang, Benutzer/Berechtigung, Datenvolumen, Leistung, Fehlerbedingungen, Sicherheit. Anfrage: „Benutzern erlauben, den Bestellverlauf als Bericht herunterzuladen.“

Eingabeaufforderung für User Story + Akzeptanzkriterien: „Teilen Sie den folgenden geklärten Bedarf in User Stories auf, die den INVEST-Prinzipien entsprechen. Schreiben Sie 3–5 überprüfbare Akzeptanzkriterien für jede Story (im Format „Gegeben-Wann-Dann“). Fügen Sie mindestens 2 negative Szenarien hinzu (unberechtigter Zugriff, leere Daten). Bedarf: [Klaren Bedarf hier schreiben]“

Vergleich von Designentscheidungen mit KI

Design ist ein ständiger Kompromiss: Geschwindigkeit versus Flexibilität, Einfachheit versus Skalierbarkeit? KI bringt diese Kompromisse in eine schnelle Tabelle. Beispielsweise können Sie für eine Funktion zum Senden von Benachrichtigungen darüber diskutieren, ob Sie einen synchronen (auf Anfrage senden) oder asynchronen (Warteschlange, im Hintergrund senden) Ansatz verwenden möchten.

Design-Vergleichsaufforderung: „Ich entwerfe eine Funktion zum Senden einer E-Mail-Benachrichtigung an den Benutzer. Vergleichen Sie die beiden Ansätze: (A) synchrone Zustellung während der HTTP-Anfrage, (B) asynchrone Zustellung im Hintergrund durch Einfügen in die Nachrichtenwarteschlange. Erstellen Sie eine Tabelle zu den folgenden Achsen: Benutzerwartezeit, Fehlertoleranz, Komplexität, Infrastrukturkosten, Schwierigkeit beim Debuggen. Fassen Sie in zwei Sätzen zusammen, welche ich am Ende in diesem Fall wählen würde. Treffen Sie die Entscheidung nicht für mich.“

Achse

synchrone Übertragung

Asynchron (Warteschlange)

Wartezeit des Benutzers

Lange (warten auf Versand)

Kurz (sofortige Rückgabe)

Fehlertoleranz

Niedrig (Anfrage explodiert, wenn Senden explodiert)

Hoch (Wiederholung möglich)

Komplexität

niedrig

Mittelhoch (Warteschlangeninfrastruktur)

Infrastrukturkosten

niedrig

Zusätzliche Komponenten erforderlich

Wo es passt

Geringes Volumen, einfache Anwendung

Hohes Volumen, kritische Lieferung

Tipp: Wenn Sie der KI sagen: „Treffen Sie die Entscheidung nicht für mich, zeigen Sie mir nur die Optionen und Bedingungen“, werden Sie zum Nachdenken gezwungen und verringern das Risiko, einen Vorschlag blind anzunehmen. Die beste Designentscheidung wird von der Person getroffen, die Ihren Kontext kennt (Sie).

Schwache Eingabeaufforderung / Starke Eingabeaufforderung

SCHWACH: „Entwerfen Sie eine Datenbank für das Bestellsystem.“ (Ergebnis: Welcher Maßstab, welche Beziehungen, welche Einschränkungen sind nicht klar; ein allgemeines, unrealistisches Schema.) STARK: „Schlagen Sie einen Entwurf eines Datenmodells für einen kleinen E-Commerce vor. Entitäten: Kunde, Bestellung, Produkt, Bestellartikel. Einschränkungen: Eine Bestellung kann viele Produkte enthalten. Der Produktpreis kann sich im Laufe der Zeit ändern, aber der aktuelle Preis sollte in der vergangenen Bestellung beibehalten werden. Es werden etwa 500 Bestellungen pro Tag erwartet. Beziehungen und warum das „Erklären Sie, dass Sie die Entscheidung getroffen haben. Geben Sie an, wie Sie das Preisverlaufsproblem gelöst haben. Geben Sie es als Liste von Entitäten und Feldern an, nicht als Code.“

Der Unterschied einer kraftvollen Aufforderung; Staffelung (500 Bestellungen pro Tag), Geschäftsregel (Vergangenheitspreis muss beibehalten werden) und das gewünschte Ausgabeformat. Ein einziger Satz wie „Der bisherige Preis muss beibehalten werden“ verändert das Design völlig; Wenn Sie dies nicht angeben, wird die KI ein ungenaues, aber plausibel aussehendes Diagramm erstellen.

Mini-Hüllen

Fall 1 – Versteckte Annahme. Ein Team codiert direkt die Anfrage „Benutzer kann Profilfoto hochladen“. Ein anderes Team befragte die KI zur Unsicherheit: „Maximale Größe? Erlaubte Formate? Unangemessene Inhaltskontrolle? Altes Foto löschen?“ Es entstehen 8 Fragen wie. Das erste Team erfährt von dem Problem in der Produktion, als 20 MB Dateien den Server füllen; Das zweite Team löst es im Design.

Fall 2 – Falsche Skalenannahme. AI schlägt eine komplexe Caching-Ebene für eine Berichtsfunktion vor. Als der Ingenieur darauf hinweist, dass es sich bei den realen Daten nur um 30 Berichte pro Tag handelt, vereinfacht die KI den Vorschlag. Die Nichtangabe des Maßstabs führt zu Kosten unnötiger Komplexität; Durch die Angabe werden zwei Wochen unnötiger Arbeit eingespart.

Fall 3 – Lücke bei den Akzeptanzkriterien. „Was passiert, wenn die Zahlung fehlschlägt?“ Da die Frage nie gestellt wurde, markiert ein Bestellsystem die Bestellung dennoch als „bestätigt“, wenn die Zahlung fehlschlägt. Die Liste der durch KI generierten Negativszenarien deckt diese Lücke ab; 1-Zeilen-Akzeptanzkriterien verhindern den Verlust von echtem Geld.

Häufige Fehler

  • Übergeben der Anfrage direkt an den Code. Code, der geschrieben wird, bevor die Mehrdeutigkeit behoben ist, löst schnell das falsche Problem.
  • Blindes Übernehmen der allgemeinen „Best Practice“ der KI. Wenn Sie Ihren Kontext (Umfang, Budget, Team) nicht angeben, wird die Empfehlung für Sie nicht funktionieren.
  • Überspringen nichtfunktionaler Anforderungen. Wenn Geschwindigkeit, Sicherheit und Umfang nicht angegeben werden, ist das Design unvollständig.
  • Ich denke nur an das glückliche Szenario. Negative Szenarien wie leere Daten, unbefugter Benutzer, Fehlerstatus sollten in das Design einbezogen werden.
  • Die Entscheidung an die KI delegieren. KI generiert Optionen; Sie entscheiden, welcher Kompromiss zu Ihrem Unternehmen passt.

Zusammenfassend

Die Anforderungsanalyse und das Design sind die Phase, in der die häufigsten Fehler entdeckt werden. Hier generiert KI Fragen, die Unsicherheit aufdecken, entwirft User Stories und Akzeptanzkriterien und stellt Diagramme zu Design-Kompromissen dar. Aber nur Sie kennen den Kontext; Es ist Ihre Aufgabe, die Empfehlungen der KI basierend auf Ihrer Größe, Ihrem Budget, Ihrem Team und rechtlichen Einschränkungen zu filtern und die endgültige Entscheidung zu treffen. Die Disziplin „Treffen Sie nicht die Entscheidung für mich, sondern zeigen Sie mir die Optionen“ führt sowohl zu besserem Design als auch zu tieferem Lernen.

Anwendungsaufgabe

Wählen Sie eine aus einem Satz bestehende Stellenanfrage aus Ihrem Kontext. Wenden Sie zunächst die Mehrdeutigkeitsaufforderung auf die KI an und beantworten Sie die Fragen mit Ihren tatsächlichen Einschränkungen. Anschließend übersetzen Sie den geklärten Bedarf in mindestens 2 User Stories und jeweils 3 Akzeptanzkriterien; Berücksichtigen Sie mindestens ein negatives Szenario. Erstellen Sie abschließend eine Vergleichstabelle für eine Designentscheidung (synchron/asynchron, Tabellenstruktur usw.) und schreiben Sie Ihre eigene Entscheidung in 2 Sätzen.

Checkliste

  • [ ] Ich habe die Unklarheiten als Fragen entfernt, bevor ich die Anfrage an den Code übergeben habe.
  • [ ] Ich habe der KI den Kontext (Umfang, Autorität, Leistung, rechtliche Einschränkung) gegeben.
  • [ ] Ich habe die User Stories in überprüfbare Akzeptanzkriterien unterteilt.
  • [ ] Ich habe mindestens ein Abwärts-/Eckszenario hinzugefügt.
  • [ ] Ich habe die Designentscheidung anhand der Kompromisstabelle bewertet.
  • [ ] Ich habe die endgültige Entscheidung basierend auf meinem Kontext getroffen und sie nicht der KI überlassen.