Nasz proces

Wymagania Funkcjonalne

Co to są Wymagania Funkcjonalne (Software Requirement Specification)? Zgodnie z definicją Karla Wiegersa oraz Joy Beatty, którą można przeczytać w ich książce pt. „Specyfikacja oprogramowania. Inżynieria wymagań”, Wymagania Funkcjonalne stanowią specyfikację tego, co powinno zostać zaimplementowane. 

Wymagania Funkcjonalne są zazwyczaj wyrażane w postaci zdań, w których używa się słowa „powinna”. Przykładowe Wymagania Funkcjonalne mogą brzmieć tak: „Aplikacja mobilna powinna oferować możliwość założenia konta użytkownikowi”.

Wymagania Funkcjonalne opisują, jak powinno zachowywać się oprogramowanie (np. aplikacja mobilna, aplikacja webowa). Określają także właściwości lub atrybuty danego systemu.

Nie można także zapominać o jeszcze jednej funkcji, roli Wymagań Funkcjonalnych, mianowicie, służą one do nakładania ograniczeń na proces tworzenia systemu.

Mówiąc nieco jeszcze innym językiem, Wymagania Funkcjonalne służą do zdefiniowania działań, jakie w określonych sytuacjach aplikacja będzie wykonywać. 

 

Interesują Cię Wymagania Funkcjonalne?

Czym są funkcjonalności produktu cyfrowego?

Karl Wiegersa i Joy Beatty definiują funkcjonalność jako jedną lub kilka możliwości oprogramowania, mającą/e znaczenie dla użytkownika. Przykładowo, funkcjonalnością w aplikacji mobilnej banku jest możliwość dokonania przelewu lub sprawdzenia salda konta. 

Warto także pamiętać, że pojedyncza - z punktu widzenia użytkownika - funkcjonalność może być zbiorem Wymagań Funkcjonalnych. Może przekładać na kilka osobnych funkcjonalności w systemie, umożliwiających wykonanie danego zadania.

Przy czym, listy funkcjonalności poszczególnych interesariuszy niekoniecznie muszą się pokrywać, stąd też różnorodne oczekiwania powinny być ze sobą konfrontowane i uzgadniane przez analityka biznesowego.

Rolą analityka biznesowego jest wyczerpujące zebranie różnych wymagań w specyfikacji wymagań oprogramowania SRS (Software Requirements Specification)

Z kolei rolą specyfikacji SRS jest jednoznaczny oraz wyczerpujący opis zachowań systemu. Ponadto specyfikacja jest także bardzo przydatna w czasie testowania oraz ewaluowania jakości tworzonych produktów cyfrowych.

Jakie problemy tworzy brak Wymagań Funkcjonalnych?

Zdaniem wielu autorów, a takie szacunki dominują w literaturze przedmiotu, nawet do 50% wszystkich błędów, jakie pojawiają się w trakcie tworzenia oprogramowania, ma swe źródło w braku wymagań. Wymagania Funkcjonalne systemu informatycznego pozwalają tę wartość znacząco obniżyć.

Problematyczna jest także ich jakość. Występujące w nich znaczne nieścisłości, brak konkretności, nierzetelność mają równie znaczący i negatywny wpływ na jakość przyszłego oprogramowania. 

Sposób komunikowania wymagań, stawianych przyszłej aplikacji webowej lub mobilnej, rzutuje na to, w jaki sposób wymagania są rozumiane, definiowane i koniec końców implementowane.

Niepełne, niejasne informacje przekazywane wzajemnie przez interesariuszy oraz luki w specyfikowaniu i zarządzaniu Wymaganiami Funkcjonalnymi mają bardzo znamienny wpływ na przebieg prac oraz jej efekt.

Warto przy tym pamiętać, że Wymagania Funkcjonalne aplikacji są w największym stopniu zależne od komunikacji, wzajemnego zrozumienia, uzgodnienia, pogodzenia różnych celów, interesów, oczekiwań poszczególnych interesariuszy.

Interesariuszami są jednocześnie i klienci firmy, użytkownicy aplikacji, jej właściciele, analitycy biznesowi, programiści, projektanci. 

A to oznacza, że mamy do czynienia z konstelacją różnorodnych, niejednokrotnie sprzecznych:

  • potrzeb i oczekiwań
  • języków, sposobów definiowania i rozumienia
  • priorytetów
  • celów i sposobów ich osiągania
  • kompetencji
  • stylów komunikacji.

Przy tak różnorodnej konstelacji bardzo łatwo o niezrozumienie się, nieporozumienia, tarcia. Stąd też bardzo istotne jest, by zachodzące na siebie lub sprzeczne interesy były odpowiednio komunikowane, analizowane, uwzględniane, priorytetyzowanie lub mówiąc ogólnie po prostu zarządzane.

Warto również pamiętać, że Wymagania Funkcjonalne aplikacji internetowej są użyteczne od strony programistycznej, ale także pomagają zarządzać projektem, stąd też konieczne jest wypracowanie, konsekwentne stosowanie metod, które pozwalają tworzyć produkty w sposób efektywny i możliwie bezbłędny.

Bardzo istotną kwestią, o której wspominają także Karl Wiegers oraz Joy Beatty jest czasowy wymiar Wymagań Funkcjonalnych. Warto pamiętać i określać, czy dana funkcjonalność będzie implementowana w teraźniejszości, czy - najlepiej precyzyjnie określonej - przyszłości. 

Dystans czasowy, dzielący teraźniejszość od przyszłości (planowanego rozwoju aplikacji), wnosi także konieczność nadawania rangi, priorytetyzowania danej funkcjonalności. 

Wysoki priorytet powinien być nadawany funkcjonalnościom, które mają być wdrożone w niedalekiej przyszłości, niski, rozwiązaniom, co do których implementacji nie ma jeszcze jednoznacznej decyzji.

Jakie są rodzaje wymagań związanych z tworzeniem aplikacji?

Najczęściej wymagania, jakie zbierane są w procesie tworzenia oprogramowania można podzielić na trzy rodzaje:

  • wymagania biznesowe
  • wymagania funkcjonalne
  • wymagania użytkowników.

Każdemu z powyższych rodzajów towarzyszy szereg wymagań pozafunkcjonalnych, które najczęściej odnoszą się do jakości przyszłego oprogramowania. 

Wymagania funkcjonalne biznesowe, jak sama nazwa sugeruje, odnoszą się do wymagań formułowanych przez właścicieli biznesu, którzy tworzą produkt cyfrowy, by osiągnąć konkretne cele, efekty biznesowe.

Wymagania użytkowników określają zadania i cele, jakie użytkownicy aplikacji będą mogli wykonać i osiągnąć z jej pomocą. Wskazują także na oczekiwane, pożądane atrybuty aplikacji.

Odpowiednia koordynacja, orkiestracja, harmonizacja wszystkich trzech rodzajów wymagań jest niezbędna, bowiem zdecydowanie zwiększa prawdopodobieństwo terminowego i bezproblemowego „dowiezienia” projektu. Jednocześnie minimalizuje ryzyko poniesienia porażki.

W jaki sposób są tworzone Wymagania Funkcjonalne aplikacji webowej, mobilnej?

Odwołajmy się znów do Karla Wiegersa oraz Joy Beatty. W kwestii materializacji Wymagań Funkcjonalnych mają oni bardzo ciekawe podejście. Ich zdaniem Wymagania Funkcjonalne niekoniecznie muszą być zebrane w osobnym, wydrukowanym na papierze dokumencie.

Nie muszą także koniecznie przyjmować formy digitalnej, w postaci plików i folderów.

Karl Wiegers oraz Joy Beatty sugerują, myśleć o Wymaganiach Funkcjonalnych jako o pewnym rodzaju pojemnika. Metafora pojemnika dobrze ich zdaniem oddaje charakter Wymagań Funkcjonalnych, które mogą przyjmować bardzo różną formę - zarówno materialną, jak i formalną. 

Mogą być zdaniem, wykresem, zestawem danych w arkuszu kalkulacyjnym, bazą danych lub dowolnym innym rodzajem informacji, dostępnej za pomocą różnych mediów.

W procesie tworzenia wymagań bardzo istotne jest ich zidentyfikowanie, zebranie, analizowanie, ocenianie, udokumentowanie oraz zatwierdzenie.

Analiza, walidacja, iteracja Wymagań Funkcjonalnych

Celem analizy Wymagań Funkcjonalnych jest przede wszystkim potrzeba zrozumienia, zdefiniowania wymagań stawianych oprogramowaniu przez poszczególnych interesariuszy. 

Warto pamiętać, że Wymagania Funkcjonalne nie są autonomiczne i są współzależne z oczekiwaniami jakościowymi, celami i regułami biznesowymi.

Ponadto, w wyniku analizy Wymagań Funkcjonalnych powinniśmy dokonać rangowania poszczególnych funkcjonalności, określić ich ważność oraz powiązać je z konkretnymi elementami oprogramowania. 

Walidacja wymagań ma na celu sprawdzenie, czy zebrane wymagania są kompletne i nie zawierają błędów. Powinna także dawać odpowiedź na pytanie, czy zebrane informacje pozwalają na rozpoczęcie prac oraz stworzenie produktu cyfrowego, który będzie pozwalał osiągać założone cele biznesowe oraz będzie zgodny z oczekiwaniami jego użytkowników.

Kolejnym istotnym sposobem uzyskiwania jak najpełniejszych, najbardziej użytecznych Wymagań Funkcjonalnych jest ich iteracja, czyli podejmowanie regularnego, cyklicznie powtarzanego procesu ich zbierania, analizowania oraz walidowania. 

Iteracyjne podejście do Wymagań Funkcjonalnych pozwala gruntowniej i precyzyjnie je poznać. Pozwala także sukcesywnie doprecyzowywać, ukonkretniać oraz potwierdzać wymagania.

W jaki sposób zarządzać Wymaganiami Funkcjonalnymi?

O Wymaganiach Funkcjonalnych można także myśleć w kategoriach procesualnych. W takim ujęciu możliwe jest zarządzanie nimi, w szczególności dotyczy to:

  • zdefiniowania bazy danych Wymagań Funkcjonalnych
  • oceny wpływu zmian
  • utrzymywania zgodności między etapami projektu a poszczególnymi wymaganiami
  • określania zależności, warunków zachodzących między poszczególnymi wymaganiami (także między Wymaganiami Funkcjonalnymi i pozafunkcjonalnymi)
  • ustalania zadań.

Generalnie rzecz ujmując, celem zarządzania wymaganiami (w szczególności Wymaganiami Funkcjonalnymi) jest predykcja wpływu, jaki spowoduje wprowadzenie danych zmian. 

Chodzi także oczywiście o usprawnienie komunikacji, przepływu pracy i zadań.

Zalety tworzenia Wymagań Funkcjonalnych

Choć tworzenie Wymagań Funkcjonalnych jest zadaniem czasochłonnym i pracochłonnym, to zdecydowanie jest także czynnością wartą wykonywania. Nie tylko ze względu na minimalizację ryzyka błędów.

Tworzenie Wymagań Funkcjonalnych:

  • obniża koszt stworzenie produktu cyfrowego
  • pozwala uzyskać jedno źródło prawdy (Single Source of Truth)
  • pozwala zmniejszyć ilość spotkań interesariuszy
  • racjonalizuje pracę i pozwala nadać jej ramy czasowe, także związane z rolami, kompetencjami i odpowiedzialnością
  • zmniejsza liczbę poprawek
  • pozwala lepiej zarządzać czasem oraz terminami 
  • zmniejsza liczbę niepotrzebnych i/lub nieużywanych funkcjonalności
  • obniża koszty rozwoju produktu cyfrowego
  • obniża ilość błędów pojawiających się w trakcie komunikacji  
  • pozwala zapanować nad chaosem i uporządkować przebieg projektu
  • poprawia atmosferę pracy oraz zwiększa satysfakcję interesariuszy
  • last but not least - pozwala tworzyć produkty cyfrowe zgodne z oczekiwaniami.