TL; DR
Historie użytkowników służą do dokumentowania, jaką wartość należy dodać do produktu i dlaczego. Szczegóły implementacji (np. Sposób dodawania, testowania, mierzenia lub walidacji wartości) są ograniczone historią, ale nie są w nich zawarte. Zostały celowo pozostawione jako osobne artefakty, aby zachować elastyczność i zwinność w ramach.
Specyfikacje i szczegóły implementacji są najczęściej przechwytywane w innych artefaktach, takich jak skrypty i scenariusze rozwoju opartego na testach akceptacyjnych (ATDD), rozwoju opartego na testach (TDD) oraz rozwoju opartego na zachowaniu (BDD). Te konkretne artefakty nie są wymagane przez środowisko Scrum, ale z pewnością dadzą ci dobry punkt wyjścia, jeśli nie masz jeszcze innych skutecznych kontroli procesu.
Historie użytkowników nie są specyfikacjami
Oryginalny plakat (OP) zadał następujące pytanie :
[A] klient chce innego przetwarzania dla różnych kart kredytowych, istnieją rygorystyczne wymagania, które muszą zostać wdrożone i znane, aby można było napisać przypadki testowe ... GDZIE POWINIENEM ZOSTAĆ, JEŚLI NIE W HISTORII?
Historia użytkownika to funkcja zapewniająca wartość , zapewniająca kontekst do prowadzenia rozmów na temat implementacji oraz punkt widzenia związany z konsumentem wartości, który skorzysta z wartości dostarczonej przez tę funkcję.
Cały sens historii użytkownika polega na tym, że szczegóły implementacji nie są nakazowe. Zespół może zaimplementować tę funkcję w dowolny sposób, który dostarczy zidentyfikowaną wartość konsumentowi wartości we właściwym kontekście.
Sprawdzony przykład
Przykładowa historia użytkownika
Łatwiej to wyjaśnić, jeśli zaczniesz od mniej dwuznacznego zestawu historii użytkowników. Ponieważ OP nie dostarczył użytecznej historii użytkownika, która jest zgodna z mnemonikiem INVEST , wymyślę ją dla przykładu. Rozważ następującą historię:
Jako użytkownik, który woli płacić kartą Discover,
chciałbym mieć możliwość dokonywania zakupów przy użyciu karty Discover,
aby nie ograniczać się do kart Visa, Mastercard lub American Express.
Zapewnia to konkretną funkcję, zapewnia kontekst, który może pomóc w podejmowaniu decyzji dotyczących wdrożenia, które zespół musi podjąć, i identyfikuje konsumenta wartości jako klienta będącego właścicielem karty Discover. To nie jest zestaw specyfikacji, ale to jest to, czego potrzebujesz, aby mieć właściwe rozmowy z klientem i zespołem o tym, jak najlepiej wdrożyć historię podczas iteracji rozwoju.
Analiza i wdrożenie
Rzeczywiste wdrożenie zależy od zespołu. Zespół będzie musiał przeprowadzić analizę w celu ustalenia:
- Najłatwiejszy sposób na wdrożenie nowej funkcji.
- Którą z różnych opcji wdrażania najłatwiej będzie wesprzeć w przyszłości, bez narastania zadłużenia technicznego.
- W jaki sposób zastosować zasady otwartego zamknięcia i YAGNI, aby upewnić się, że nowa funkcja jest niezawodna bez nadmiernej inżynierii.
Jedną z podstawowych zasad Manifestu Agile jest współpraca z klientem. Oczekuje się, że wielofunkcyjny, samoorganizujący się zespół będzie w stanie współpracować z klientem w celu wypracowania szczegółów wdrożenia w ramach wytycznych dostarczonych przez historię użytkownika.
Jeśli twoje historie użytkowników nie są dobrze napisane lub jeśli zespół nie ma umiejętności lub dojrzałości procesowej, aby wykonać wystarczającą analizę wymaganą przez zwinną strukturę, to oczywiście będzie to o wiele trudniejsze niż to konieczne. Całe książki zostały napisane na temat tworzenia dobrych historii użytkowników na odpowiednio wysokim poziomie szczegółowości; nie ma niestety srebrnej kuli, ale jest to umiejętność do nauczenia się dla zwinnych drużyn.
Projektowanie oparte na testach i zachowaniach
Najlepszym sposobem na zapewnienie rzetelności analizy oraz prawidłowego i możliwego do wdrożenia wdrożenia jest zastosowanie praktyk TDD i BDD. Na przykład, biorąc pod uwagę powyższą historię, zespół powinien uchwycić planowaną implementację za pomocą artefaktów, takich jak:
Funkcje ogórka z testowalnymi scenariuszami.
Jest to najbardziej przydatne do napędzania rozwoju testów akceptacyjnych oraz do dokumentowania oczekiwań użytkowników dotyczących zachowania aplikacji. Na przykład historia użytkownika powinna mieć jedną lub więcej powiązanych funkcji Ogórek, które opisują, w jaki sposób użytkownik może sprawdzić kartę Discover i jak wygląda ten proces dla użytkownika.
Testy RSpec, które sprawdzają zachowanie (nie wewnętrzne szczegóły implementacji) nowych funkcji kodu.
Jest to najbardziej przydatne do dokumentowania i sprawdzania zamierzonego zachowania funkcji w aplikacji. Na przykład historia użytkownika będzie kierować tworzeniem testów jednostkowych i integracyjnych, które zapewnią, że użycie karty Discover wywołuje zachowanie właściwe dla karty, wymagane przez aplikację do autoryzacji sprzedaży za pośrednictwem bramki płatniczej.
Konkretne narzędzia nie mają znaczenia. Jeśli nie lubisz Cucumber lub RSpec, użyj narzędzi lub metod, które najlepiej pasują do Twojego zespołu. Chodzi jednak o to, że szczegóły implementacji są oparte na historii użytkownika , ale nie są przez nią przepisywane . Zamiast tego implementacja (lub specyfikacje, jeśli wolisz) to szczegóły, które należy opracować podczas opracowywania funkcji we współpracy.