Okiem JellyTech -> Analiza wymagań - wprowadzenie
Wymagania w projektach IT. Tutaj się wszystko zaczyna 🙂 Tzn. zaczyna się w głowie pomysłodawcy zmiany, ale w wymaganiach jest to wszystko spisane. A przynajmniej być powinno. Pracując w innych branżach zazdrościłam zawsze IT, że tam jest wszystko tak dobrze opisane i zaplanowane. Pracując w tej branży już kilka lat, rozumiem, dlaczego musi takie być. Oczywiście w praktyce, nie wszystko jest takie różowe 😉 I nie zawsze przystępuje się do projektu z gotową analizą wymagań. Ale jest duży poziom zrozumienia potrzeby ich spisania.
Chyba każdy w IT zna ten rysunek. Osobiście uwielbiam go 🙂 Mało co pokazuje jak złożone jest tworzenie projektów i rozumienie perspektywy innych.
Czym jest zatem analiza wymagań? Dziś mamy dla Was mały skrypcik z tego tematu.
Trochę teorii.
Analiza wymagań, to mówiąc najprościej, uzgodnienie wymagań klienta i ich analiza. Celem jest określenie przede wszystkim zakresu prac, czasu wykonania, kosztów danego projektu.
Wyróżniamy 3 rodzaje wymagań. Przywołując definicję BABOK mamy:
1) Wymagania biznesowe
2) Wymagania interesariuszy
3) Wymagania rozwiązania
Przyjrzyjmy się im zatem po kolei.
1) Wymagania biznesowe (Business requirements) – stanowią podstawę i wypadkową zainicjowanej zmiany.
Są związane z potrzebami i celami organizacji. Zatem dowiemy się z nich co firma chce osiągnąć za pomocą nowego systemu lub produktu, jakie są oczekiwane korzyści i jakie problemy są do naprawienia. Wymagania biznesowe mogą obejmować:
- zwiększenie efektywności operacyjnej,
- poprawę obsługi klienta,
- redukcję kosztów, zwiększenie zysków,
- zautomatyzowanie procesów biznesowych,
- i wiele, wiele innych.
2) Wymagania interesariuszy (Stakeholder requirements) – są to wymagania stakeholderów, które muszą zostać spełnione, aby osiągnąć wymagania biznesowe.
Są czymś na kanwę pomostu pomiędzy wymaganiami biznesowymi, a wymaganiami rozwiązania (opis poniżej). Muszą wspierać wymagania biznesowe. Co istotne, często ich spisanie odbywa się razem ze spisaniem wymagań biznesowych. Wszystko zależy bowiem od złożoności struktury i liczby interesariuszy.
Kto może być interesariuszem? Klienci, zarząd czy zespół projektowy.
3) Wymagania rozwiązania (Solution requirements) – to dużo bardziej szczegółowo opisane wymagania pozwalające opowiedzieć o możliwościach i cechach rozwiązania. Dzielą się one na:
- Wymagania funkcjonalne
- Wymagania niefunkcjonalne
Wymagania funkcjonalne (Functional Requirements) – odpowiadają na pytanie co w efekcie działania danego systemu/aplikacji dostaniesz? Czyli jak funkcjonalność będzie się zachowywać? Jakie procesy będzie realizować? Jakimi informacjami będzie zarządzać? Wymagania funkcjonalne opisują, co system powinien umożliwiać użytkownikom.
Ważna uwaga
Dobra dokumentacja wymagań nie powinna narzucać konkretnego rozwiązania architektonicznego. Analityk powinien w taki sposób opowiedzieć o systemie i go opisywać, by zaprezentować dostępne funkcje i możliwości aplikacji bez zbędnego wnikania w technikalia.
Wymagania niefunkcjonalne (Non – Functional Requirements) – te wymagania nie opisują, co będzie robił system, ale jak będzie robił. Pod jakimi warunkami będzie działał efektywnie? Jakie standardy ma spełniać?
Przykłady wymagań niefunkcjonalnych obejmują np. czas odpowiedzi systemu, skalowalność, łatwość obsługi, bezpieczeństwo danych, kompatybilność z innymi systemami, dostępność na różnych platformach itp.
Dodatkowo...
Oprócz wymagań funkcjonalnych i niefunkcyjnych możemy też trafić np. na wymagania:
- technologiczne - są to wymagania związane z wykorzystywanymi technologiami, platformami, językami programowania, bazami danych itp. Wymagania technologiczne określają, jakie technologie należy użyć do budowy rozwiązania. Podając przykład wymaganie technologiczne może wskazywać dyrektywnie wykorzystanie języka programowania Java, frameworka Spring i bazy danych MySQL.
- integracyjne - są to wymagania dotyczące integracji z innymi systemami, usługami lub zasobami. Wymagania integracyjne opisują, jak system powinien komunikować się i współpracować z innymi systemami. Mogą obejmować integrację z systemami zewnętrznymi za pomocą interfejsów API, wymianę danych w określonym formacie, synchronizację danych itp.
- wydajności - są to wymagania dotyczące wydajności systemu, takie jak czas odpowiedzi, przepustowość, obsługa dużej liczby użytkowników itp. Wymagania dotyczące wydajności określają zatem oczekiwane parametry wydajnościowe, które system powinien spełniać.
Jak widać, przed przystąpieniem do prac developerskich dłuuuuuuuuuuuuuuuga droga 🙃 Zderzenie oczekiwań i weryfikacja możliwości następuje prawie na każdym etapie projektu, niemniej to co zbierzemy na początku jest naszą bazą, punktem wyjścia.
I obiecana praktyka 🙂
Tak prezentuje się teoria. A co mówią praktycy? Co naprawde jest ważne przy zbieraniu wymagań biznesowych? Oto kilka wskazówek:
- Komunikacja.
Wypracuj atrakcyjny i zrozumiały dla wszystkich proces komunikacji i przekazywania informacji. Mowa tu zarówno o narzędziach (możesz używać Murali, Miro i innych), czyli układzie przekazywanych informacji, sekcjach dla odbiorców, ale też kanałach komunikacji. Ważne jest aby dostęp do wymagań był szeroki, by interesariusze mogli je przeglądać,, “odbić swoje myśli”.
- Mapy procesów
Wypadkową tego pierwszego mogą być mapy procesów. Wiadomo, że ludzie są wzrokowcami. Pokazanie czegoś na grafie, mapie myśli, często pozwala lepiej zrozumieć potrzeby, kontekst, zależności i wpływy.
- Model.
A jak szczegółowo pisać? To oczywiście zależy nad jaką funkcją/systemem mamy pracować. Czasem wystarczy, że napiszemy/rozrysujemy coś na mapie na poziomie danego systemu, czasem trzeba będzie spojrzeć na problem szerzej, patrząc na system jakby z zewnątrz.
- Wiedzieć dokąd się zmierza.
Warto zbudować poczucie, że to co teraz spisujemy i o czym rozmawiamy wpłynie na powodzenie całego przedsięwzięcia. Celem tworzenia systemów i aplikacji jest zbudowanie działającego oprogramowania, które odpowie na wymagania Klienta (czyt. osób, które będą z tego korzystać). Nie znasz potrzeb, nie stworzysz dobrego dla klienta produktu.
- Jeszcze nie czas na technikalia, ale…
Wymagania mogą być niezależne od wskazówek technologicznych. Niemniej trzeba pamiętać, iż każda sytuacja jest inna. Może zdarzyć się tak, że system lub jego część funkcjonuje już w jakimś ekosystemie. Wtedy założenie, że wymagania mogą być zebrane bez benchmarku technologicznego jest błędem. Niemniej co do zasady wymagania mają odpowiadać na pytanie jakie funkcje ma dostarczyć nowy system, zatem w zupełności wystarczy by było to opisane zrozumiałym dla biznesu językiem.
- Słuchanie.
Brzmi jak banał? Niekoniecznie. Nowy system, aplikacja ma być wypadkową potrzeb wielu osób i grup. Stąd jeśli ma spełniać wielorakie oczekiwania, trzeba wsłuchać się w potrzeby interesariuszy. Co to znaczy? Należy upewnić się to co usłyszeliśmy, jest tożsame z wyobrażeniem drugiej strony. Możemy w tym celu zadawać pytania pomocnicze lub sparafrazować wypowiedzi drugiej strony. Bo rzecz nie jest w spisaniu dokumentacji, ale w zrozumieniu problemu przed którym stoi Klient.
- Im prościej tym lepiej.
No właśnie. Spisane wymagania nie muszą otrzymać literackiej nagrody Nobla. Ale mają być proste, spójne, dawać odpowiedź na najważniejsze pytania. Ważny jest ich układ i ciąg logiczny. Zbyt duża szczegółowość może zakłócić uchwycenie priorytetów.
- Jedyna stała to zmiana.
Niestety. Jak wiemy - wszystko płynie. Niemniej nie ma co się na to obrażać. Będą pewne ustalenia, które trzeba ustalić jako relatywnie niezmienne, by proces szedł do przodu, osadzić go w czasie, niemniej czasem retrospekcja, czy takie przysłowiowe przespanie sie z tematem, może dać naprawde dobre nowe spojrzenie. Poza tym świat, zewnętrzny ciągle się zmienia, konkurencja nie śpi. Czasem trzeba po prostu podjąć decyzje o zmianie kursu - warto być na to gotowy.
Tyle tytułem wstępu. W kolejnych artykułach pochylimy się nad szczegółami opisanego procesu. Śledźcie naszego bloga koniecznie...
I mamy nadzieje, że przedostatni obrazek, nie będzie się wydarzał 😆