O opisowych metodach zbierania wymagań napisano wiele, eksperymentuję czasami z “tekstami” i nabieram pewnego przekonania: jako opis wymagań, czyli “jak chce to robić” (np. przypadków użycia) raczej nie, jako opis celu działania, czyli “co chce osiągnąć/po co mi to” jak najbardziej. Tak więc opis z ręki zamawiającego jako “wsad do analizy” jak najbardziej, ale user story jako “wymagania”, raczej na pewno nie (czytaj User Story – kłopoty)…

User Story jaki “jak” z reguły niestety stwarza problemy i słusznie zauważono, że:

User Story w postaci: “Obsługa błędów i ich logowanie powinno się odbywać poprzez wspólny mechanizm” jest kiepskim pomysłem. Co prawda widzimy dość jasno, że to wymaganie jest wartościowe, ale czy użytkownik/klient będzie potrafił ocenić jego wartość? Dodatkowo taki zapis zawiera w sobie sugestię na temat implementacji sposobu obsługi błędów – czy z punktu widzenia klienta ma to znaczenie? Pamiętajmy też, że jako analitycy (lub jako product owner w Scrumie) nie chcemy sugerować rozwiązania programistom, którzy często lepiej od nas znają się na technologii, której będą używać. My powinniśmy napisać, co chce osiągnąć użytkownik i pozwolić programistom wybrać najlepszy sposób implementacji rozwiązania. (Wartościowe User Stories ? O wymaganiach).

Moim zdaniem tak zwane user story powinno być napisane: po pierwsze językiem zamawiającego, po drugie wyłącznie o tym co zamawiający rozumie. Dlaczego? Bo tylko wtedy autor tego tekstu – tego “wymagania”, zamawiający – jest w stanie sam ocenić jego “sens i prawdziwość” a także przydatność.  Gdzie tu rola analityka? Analiza to sprowadzenie tych opisów do określonej struktury wraz z określoną logiką – formalizacja. Rolą analityka jest na tym etapie usuwanie niejednoznaczności. Kolejny etap to doprowadzenie dokumentu wymagań do spójności. Jeżeli uznamy, że wymagania to testy, to rolą analityka jest wyspecyfikowanie wymagań w postaci testów (przypominam, że wymagania to warunki jakie musi spełnić coś, by było przydatne do określonego celu), wszędzie tam, że wymagana jest “jakaś logika biznesowa”, należy ją także udokumentować.

Jak słusznie powyżej zauważył autor cytatu, należy “pozwolić programistom wybrać najlepszy sposób implementacji rozwiązania”, ale tu ważna uwaga: implementacja to nie rozwiązywanie problemów biznesowych. Innymi słowy, programista nie może dostać wymagania w postaci “sprzedaż towaru to pobranie go z magazynu”, bo po pierwsze nie wie co to jest “towar” po drugie  nie zawsze jest to pobranie z magazynu. Należy mieć świadomość, że “towar” z perspektywy programisty to “strukturalny opis” i nie on ten opis powinien robić. Kto? Analityk.

Tak wiec powyższe, cytowane user story raczej powinno mieć postać: “celem administratora oprogramowania jest śledzenie zachowania systemu i wychwytywanie zaistniałych błędów w jego zachowaniu, informacje o błędach powinien otrzymywać natychmiast” oraz dodatkowo (robota analityka) powinien istnieć słownik biznesowy z definicją pojęcia “błąd oprogramowania” oraz “natychmiast”. Rolą programisty jest przełożenie tego na język użytego narzędzia (języka programowania) oraz zapewnienie by powstałe oprogramowanie było zgodne z oczekiwanymi wymaganiami jakościowymi (wymaganie poza-funkcjonalne: natychmiast).

Tak więc programista implementuje logikę biznesową, tę musi jednoznacznie udokumentować  analityk, oraz zapewnia uzgodnioną jakość (wymagania pozafunkcjonalne). Ma więc dużo pracy… ale nie powinien podejmować prób wpływu na implementowaną logikę biznesową.

miecz dwa ostrza dwustronny

Czyli np. “jako sprzedawca, dostaję od klientów zamówienia, na podstawie których muszę wystawiać faktury VAT”, do tego analityk doda, np. po analizie otrzymanej partii dokumentów, strukturę zamówienia i faktury VAT oraz “algorytm” wyliczenia podatków.

Jeżeli programista zaczyna “lepiej wiedzieć” od zamawiającego, forsując np. prostszą implementację, to znaczy, że przekroczył swoje kompetencje, sam sobie – jako developerowi – robi krzywdę psując to oprogramowanie bo klient i tak prędzej czy później na tych uproszczeniach “polegnie”. Rolą analityka są także ewentualne negocjacje z zamawiającym, uproszczeń lub  rozwinięć tego opisu. Czy analityk może być “pracownikiem” dostawcy? Jak sądzicie?

Jarosław Żeliński

Jarosław Żeliński: autor, badacz i praktyk analizy systemowej organizacji: Od roku 1991 roku, nieprzerwanie, realizuje projekty z zakresu analiz i projektowania systemów, dla urzędów, firm i organizacji. Od 1998 roku prowadzi samodzielne studia i prace badawcze z obszaru analizy systemowej i modelowania (modele jako przedmiot badań: ORCID). Od 2005 roku, jako nieetatowy wykładowca akademicki, prowadzi wykłady i laboratoria (ontologie i modelowanie systemów informacyjnych, aktualnie w Wyższej Szkole Informatyki Stosowanej i Zarządzania pod auspicjami Polskiej Akademii Nauk w Warszawie.) Oświadczenia: moje badania i publikacje nie mają finansowania z zewnątrz, jako ich autor deklaruję brak konfliktu interesów. Prawa autorskie: Zgodnie z art. 25 ust. 1 pkt. 1) lit. b) ustawy o prawie autorskim i prawach pokrewnych zastrzegam, że dalsze rozpowszechnianie artykułów publikowanych w niniejszym serwisie jest zabronione bez indywidualnej zgody autora (patrz Polityki Strony).

Ten post ma 2 komentarzy

  1. Dorzucę jeszcze 2 grosze na temat US w kontekście DDD.
    US jak nazwa wskazuje jest z poziomie użytkownika. Jeżeli dbamy o usability, to dążymy do maksymalnego uproszczenia UI.
    Zatem w złożonym systemie w US nie znajdziemy szczegółów (ani nawet wskazówek) na temat tego jaki jest model domenowy.

    Do tego potrzeba Domain Story, dla których źródłem wiedzy jest Ekspert Domenowy.

    Po prostu często nie chcemy aby model mentalny Usera był tak głęboki jak model mentalny Eksperta Domenowego.

    1. Jarek Żeliński

      Należy się z tym zgodzić. Mój błąd to pewne niezamierzone uproszczenie: skupiłem na cytacie a faktycznie jest tak, że kilka (niech będzie kilkanaście, ale raczej nie dziesiątki) stron opisu np. z ręki sponsora projektu i dyrektora handlowego na temat sprzedaży, jej strategii celu jaki ma dział sprzedaży i celu tworzenia tego nowego oprogramowania, daje mocne fundamenty dla projektu. Dużo lepsze niż zbyt szczegółowe (czasami właśnie dziesiątki stron i tabel) historyjki przyszłych użytkowników, których, z mojego doświadczenia, raczej należy na początku trzymać z daleka od projektu. Przyszli użytkownicy z natury rzeczy starają się “wyobrazić” sobie nowe oprogramowanie w szczegółach, mając za całą swoją wiedzę, dotychczas używane oprogramowanie i jego wady…i tylko to.

Dodaj komentarz

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.