Erstellung von Anforderungen für die Entwicklung von Funktionen: Kurs "Erstellen eines Softwareprodukts und Verwalten seiner Entwicklung"

Hallo Habr! Wir setzen die Reihe zum Produktmanagement fort und diskutieren heute die Entwicklungsanforderungen. In diesem Beitrag werden wir darüber sprechen, wie ein Produktmanager mit F & E-Entwicklern interagiert, warum Anforderungen erforderlich sind, wie sie korrekt formuliert werden und welche Schlussfolgerungen aus den Entwicklungsanforderungen von verschiedenen Spezialisten gezogen werden sollten, einschließlich der Entwickler selbst, Manager, Qualitätssicherung usw. Auf der anderen Seite werden zukünftige und etablierte Entwickler herausfinden, was ein Produktmanager Ihnen bieten kann (und sollte). Alle Details sind unter dem Schnitt.







Inhaltsverzeichnis des Kurses



1.

2.

3.

4.

5.

6.

7. < —

8. - -

9.





Manchmal scheint es, dass die Aufgabe für den Entwickler einfach offensichtlich ist! Verlassen Sie sich bei der Lösung des Problems jedoch nicht zu sehr auf den gesunden Menschenverstand. Bei jeder, auch bei der einfachsten Aufgabe, sind Diskrepanzen möglich, weil die Menschen dazu neigen, in einer Welt ihrer eigenen Illusionen zu leben. In der Republik Kuba wird beispielsweise angenommen, dass die Wände hell und bunt sein sollten, und selbst wenn der Kunde die Wände weiß streichen möchte, können Arbeiter Farbflecken hinzufügen, weil "es auf diese Weise schöner ist". Gleiches gilt für die Entwicklung.







Ein solches Dokument wie Anforderungen hilft, die „Mauer des Missverständnisses“ zu überwinden. Das Vorhandensein von Anforderungen ermöglicht es Ihnen, die gleiche Vorstellung davon zu erstellen, was im Produkt getan werden muss und was genau die Funktion sein sollte.



Wie Anforderungen aufgebaut werden



Bei der Formulierung von Entwicklungsanforderungen müssen Sie verstehen, für welchen Benutzer wir ein Produkt entwickeln. Dies ist , wo Benutzer Persona praktisch ist (wir haben bereits darüber gesprochen hier ). User Persona ist der sogenannte Akteur im System, und für jeden Akteur definieren wir eine Reihe von Regeln und Funktionen.



Beispielsweise können die folgenden Akteure in einer Webforum-Anwendung definiert werden:



  • Der Administrator kann buchstäblich alles tun - einschließlich der Zuweisung von Rollen (Personen) an andere Benutzer.
  • Ein normaler Benutzer kann nur Nachrichten hinterlassen.
  • Der Moderator kann Nachrichten hinterlassen, Nachrichten anderer Personen löschen und reguläre Benutzer sperren.


Bei der Taxianrufanwendung, an die wir uns während unseres Kurses regelmäßig erinnern, können die Personen ein Passagier, ein Taxifahrer und ein Betreiber sein.







Um eine angemessene Anforderung zu formulieren, müssen Sie ein Dokument erstellen, das wir Funktionsbeschreibung nennen. Und dafür müssen Sie folgende Fragen beantworten:







  • Wozu? Was ist der Zweck? Was sind die geschäftlichen Vorteile?
  • Warum? Was sind die Risiken? Was werden wir verlieren, wenn wir es nicht tun? Was passiert, wenn wir es tun?
  • Was? Welches Problem wollen wir lösen? Für wen?
  • Wie? Funktionsanforderungen und Anwendungsfall (Abfolge von Aktionen).


Es ist auch notwendig, das Vorhandensein eines Vokabulars von Begriffen des Fachgebiets vorzusehen. Dies gilt insbesondere für bestimmte Akronyme. Beispielsweise kennt der Entwickler möglicherweise nicht alle Prozessnamen und -spezifikationen der Stahlindustrie oder des Kochens.



Schließlich muss das Dokument einen Abschnitt „Genehmigungen“ erstellen, in dem einerseits die Kunden des Features (Stakeholder, Kunden, Produktmanager) zustimmen, dass die Beschreibung dem entspricht, was sie vom Produkt erwarten. Auf der anderen Seite bestätigen Entwickler (Teamleiter, Architekten), dass die Aufgabenbeschreibung in den Anforderungen klar und vollständig ist. Daher müssen alle Teilnehmer am Entwicklungsprozess sagen: „Ja, wir verstehen das Dokument, jetzt kann es durchgeführt werden.“



Hilfsmetriken



Bei der Arbeit mit Anforderungen tragen Hilfsmetriken dazu bei, die Aufgabe genau auszuführen und den Zeitaufwand für die Überprüfung der Konformität zu verringern.



  • Die Definition von "Fertig" ist eine kurze Beschreibung, wie Sie feststellen können, ob eine Funktion funktioniert.
  • Nicht funktionale Anforderungen - Anforderungen an technische Parameter wie UI-Reaktionsfähigkeit, Backend-Last, CPU- und RAM-Einschränkungen. Dies ist ein sehr wichtiger Punkt, denn wenn Sie die Anforderungen nicht erfüllen, können Sie ein Monster-integriertes Photoshop erhalten, anstatt nur die Farbe des Autos zu wählen.
  • Sicherheitsanforderungen - Verschlüsselung, Speicherung personenbezogener Daten usw.
  • Eckkoffer - Testen von Randkoffern. Was passiert, wenn der Produktpreis 0 ist? Wie viele Taxis kann eine Person gleichzeitig bestellen?
  • — , . , , , , — Visa, MasterCard, , .
  • . , , , , . , , . , .
  • . , “ ”, “ ”.




Funktionale und nicht funktionale Anforderungen, Anwendungsfälle



Lassen Sie uns ein wenig auf funktionale und nicht funktionale Anforderungen eingehen.







Die funktionalen Anforderungen erklären, was zu tun ist, sie listen die Aktionen der Anwendung als Reaktion auf die Aktionen des Schauspielers auf. Diese Anforderungen werden in den aufgeführten Verwendungsszenarien implementiert.



Nichtfunktionale Anforderungen erfassen die Bedingungen, unter denen die Lösung wirksam bleiben muss, oder die Eigenschaften, die die Lösung besitzen muss. Die häufigsten Beispiele für nicht funktionale Anforderungen sind:



  • Skalierbarkeit,
  • Zuverlässigkeit, minimale Ausfallzeiten,
  • Unterstützungsmethoden.


Anwendungsfälle werden auch verwendet, um die Anforderungen zu beschreiben. Dies ist das Hauptelement unseres Dokuments, das wir beim Generieren einer Feature-Anfrage vorbereiten. Skripte sollten einen vollständigen Schritt-für-Schritt-Algorithmus enthalten, der angibt, was der Benutzer mit Ihrer Anwendung tun kann.



Benutzerdefinierte Skripte enthalten normalerweise die folgenden Abschnitte:



Abschnitt: Kontext

Beantwortet die Frage: Welche Komponente? Wie ist der Zustand?

Beispiel: Der Benutzer ist nicht autorisiert.



Abschnitt: Schauspieler

Beantwortet die Frage: Welche Person?

Beispiel: Normaler Benutzer.



Abschnitt: Voraussetzungen

Beantwortet die Frage: Was sind die Funktionen?

Beispiel: Es gibt eine Einladung, einen VIP-Status zu erhalten.



Sektion:Zweck

Beantwortet die Frage: Was beabsichtigt der Benutzer zu tun / zu bekommen?

Beispiel: Anmelden.



Abschnitt: Hauptszenario

Beantwortet die Frage: Welche Maßnahmen müssen ergriffen werden, um das Ergebnis zu erzielen?

Beispiel: Geben Sie Ihren Benutzernamen und Ihr Passwort ein und drücken Sie die Eingabetaste.



Abschnitt: Schlechte Skripte

Beantwortet die Frage: Was kann schief gehen, eine Liste von Fehlern, einschließlich des Textes von Fehlermeldungen für den Benutzer.

Beispiel: Die Schaltfläche wird nicht gedrückt, die Sprache ändert sich nicht, die Verbindung kann nicht über das https-Protokoll hergestellt werden usw.



Abschnitt: Layouts

Beantwortet die Frage: Mögliche Layouts oder Prototypen des UI-Designs.

Beispiel: Zeichnen Sie in Figma oder Sketch.



In einer vereinfachten Form könnten benutzerdefinierte Skripte folgendermaßen aussehen:

Aufdecken
. ( e-mail) ( ). , , : « » « . »





Wie wird die Funktionsbeschreibung gelesen?







Jede Benutzerkategorie kann aus den Anforderungen nützliche Informationen für sich selbst sammeln. Daher ist es sehr wichtig zu bedenken, dass die Anforderungen von verschiedenen Personen gelesen werden:



  • Entwickler - Für sie ist es wichtig zu wissen, warum die Funktion benötigt wird und welches Problem sie löst. Um später keine Zeit mit Korrekturen zu verschwenden, müssen Entwickler eine vollständige Liste aller Szenarien bereitstellen und auf Corner-Fälle achten. Wenn Sie den Entwickler rechtzeitig darüber informieren, was wir später hinzufügen werden, z. B. Zahlungen mit einer MIR-Karte, kann er diese Möglichkeit auf Architekturebene vorhersehen. Somit können die Kosten erheblich reduziert werden, indem Nacharbeiten vermieden werden.
  • , QA — , . Corner Cases. , — , .. ( , , ) . , . .
  • DevOps Datacenter Operations— , , , . DevOps , , , .
  • — , , . , , .


Wenn Sie Entwicklungsanforderungen schreiben, stellen Sie unbedingt die Frage: Wer ist Ihr Benutzer, was er tut (oder kann), unter welchen Bedingungen er ist. Erstellen Sie ein Diagramm seines Verhaltens, um alle Aspekte der Anforderungen zu beschreiben.



Wenn Sie ein Dokument erstellen, müssen Sie so kurz wie möglich sein und dürfen keine unverständlichen Stellen verlassen. Die Anforderungen umfassen ohnehin mehrere Seiten. Es muss von vielen Menschen gelesen werden und lesbar sein.



Befolgen Sie eine einfache Regel: Beginnen Sie mit der Hauptsache und fügen Sie erst dann Details hinzu. Darüber hinaus müssen Sie Feedback von QS, Entwicklern, DevOps und anderen Stakeholdern erhalten. Höchstwahrscheinlich erhält die Funktionsbeschreibung nach der Kommunikation mit den Stakeholdern neue Details.



Versuchen Sie, an nicht offensichtliche Szenarien zu denken. Es ist ratsam, sofort festzulegen, was Ihre Anwendung in Notfallsituationen tun soll. Überlegen Sie, welche externen Komponenten Ihre Funktion beeinflussen. Und wenn alles fertig ist, stellen Sie noch einmal die Frage: "Was können Sie außer den in den benutzerdefinierten Skripten beschriebenen Schritten noch testen?"



Fazit



Im nächsten Artikel werden wir über den Geschäftsplan und die Preise für das neue Produkt sprechen.



Teilen Sie in der Zwischenzeit in den Kommentaren Ihre Erfahrungen mit den Anforderungen mit, sowohl von Seiten des Managers als auch des Ausführenden. Sagen Sie uns, gab es in Ihrer Praxis ein Beispiel, in dem ein funktionierender Kunde eines wollte, das sich jedoch aufgrund von Missverständnissen als völlig anders herausstellte?



→ Die Videoaufzeichnung aller Vorlesungen des Kurses ist auf YouTube verfügbar.



Vorlesung über die Roadmap und die Anforderungen für die Entwicklung:






All Articles