Article

wymagania-niefunkcjonalne-emagine

Category: Expertise strategy

Wymagania niefunkcjonalne w procesie tworzenia aplikacji

Kamil Naja, Programista Front-end emagine, 10/08/2023

Podczas rozwijania aplikacji webowej zwykle odkrywamy szereg specyficznych funkcjonalności, wedle których ma ona działać. Niektóre z nich mogą wydawać się oczywiste dla części członków zespołu IT pracującego nad rozwiązaniem, jednak inni wolą mieć je spisane w szczegółowej formie, aby móc je wszystkie zaimplementować lub testować. Wymagania niefunkcjonalne mogą być np. informacją zwrotną od klienta, jego uwagami dotyczącymi działania aplikacji, jak i ustaleniami wewnętrznymi między programistami.

Aby zachować spójne działanie i dostarczać jak najlepszy produkt, dobrym rozwiązaniem jest spisanie wymagań niefunkcjonalnych we współdzielonym dokumencie.

W jaki sposób zbierać wymagania niefunkcjonalne:

Wymagania powinny być spisane w udostępnionym szerszemu gronu dokumencie, który następnie może być edytowany i uzupełniany przez interesariuszy - osoby bezpośrednio zaangażowane w budowę i rozwój aplikacji.
Dokument może być podzielony na sekcje dotyczące poszczególnych elementów GUI. Dobrze, jeśli używamy w nim języka zrozumiałego dla wszystkich członków zespołu. Dodatkowo można dodać też przykłady implementacji poszczególnych rozwiązań i funkcji.

Wiele wymagań funkcjonalnych będzie dotyczyło kilku warstw aplikacji. Przykładowo wymagania dotyczące tabeli, muszą być zaimplementowane jednocześnie we front, jak i w back-endzie.

Plusem może być też dodanie do każdej funkcjonalności opisu, dlaczego jest ona implementowana właśnie w taki sposób i jakie korzyści daje wybrane rozwiązanie.
Chciałbym podkreślić, że wymagania powinny być bardzo konkretnym zbiorem informacji o tym, w jaki sposób mają działać poszczególne elementy interface'u użytkownika. Unikajmy w nim stwierdzeń typu 'system powinien mieć profesjonalny wygląd i szybko reagować na działania użytkownika.' To zbyt ogólne podejście do wybranego problemu. Im więcej szczegółów i wytycznych, tym szybszy i efektywniejszy proces wdrożenia.

Należy pamiętać także o tym, że wymagania niefunkcjonalne nie są ustalone raz na zawsze. Powinny ewoluować i być uzupełniane o nowe informacje, choćby te pochodzące z fazy testów. Dobrą okazją do edycji jest pojawienie się odpowiedzi na pytanie - w jaki sposób dokładnie powinna działać jakaś funkcjonalność? Za pomocą wymagań niefunkcjonalnych można rozwiać te wątpliwości.

 


 

Należy pamiętać także o tym, że wymagania niefunkcjonalne nie są ustalone raz na zawsze. Powinny ewoluować i być uzupełniane o nowe informacje, choćby te pochodzące z fazy testów.

Kamil Naja

snapshot-testing

Przykładowe wymagania niefunkcjonalne dotyczące GUI:

Tabela.

Tabela wyświetla paginowane dane , pobierając z back-endu jednorazowo tylko jedną stronę.

Po zmianie paginacji na dowolną stronę większą od 1 i zmianie filtrów, tabela i paginacja powinna znowu pokazywać stronę 1.

Inicjalną wartością strony paginacji jest 20 rekordów. Użytkownik może ustawić wielkość strony na 20, 50 lub 100 rekordów. Decyzja została podjęta po ustaleniach z użytkownikami.

Po usunięciu rekordu z tabeli, pokazujemy ekran ładowania i następnie pokazujemy dane ponownie pobrane z back-endu.

Dzięki takim ustaleniom, unikniemy niedomówień i błędów dotyczących paginacji.

przykladowa-tabela-frontend

Jakie są korzyści wymagań niefunkcjonalnych?

Przede wszystkim, dzięki nim, informacje dotyczące działania interface'u użytkownika są dostępne dla wszystkich uczestników projektu. Wymagania niefunkcjonalne mogą być też używane jako checklista, która pomoże w weryfikacji kolejnych powstających funkcjonalności. Dzięki temu aplikacja działa spójnie, a użytkownicy tracą mniej czasu na nauczenie się nowych funkcjonalności. Testowanie także staje się prostsze.
Zespół może skupić się na rozwiązywaniu trudniejszych problemów, bez konieczności odkrywania za każdym razem, jak ma działać aplikacja. Niwelujemy konieczność domyślania się i uwidaczniamy pożądane zachowania interface'a.

Wiedza nie jest rozproszona pomiędzy członkami zespołu, dostęp do niej ma każdy w jednym miejscu. Będzie to szczególnie ważne podczas wprowadzania do projektu nowych osób.

Spisanie wymagań niefunkcjonalnych upraszcza także tworzenie kolejnych zadań. Programista wie, że zaimplementowanie funkcjonalności wiąże się także z koniecznością spełnienia wymagań niefunkcjonalnych. W ten sposób unikamy powielania ciągle tych samych błędów.

Jeśli rozwijamy jednocześnie kilka aplikacji, które muszą być spójne, wymagania niefunkcjonalne dadzą dodatkową korzyść. Można się do nich odwoływać jako do zbioru najlepszych praktyk przy tworzeniu GUI. Oczywiście część wiedzy dotyczącej wymagań niefunkcjonalnych można brać z doświadczenia członków zespołu przy poprzednich projektach.

Wymagania niefunkcjonalne dotyczące jakiegoś obszaru aplikacji mogą wskazywać na to, że być może warto go zaimplementować w formie współdzielonego komponentu. Dzięki temu nie będziemy musieli go konfigurować wielokrotnie.

Moim zdaniem, spisanie wymagań powinno mieć miejsce od samego początku projektu. Ilość pracy przy tworzeniu i utrzymywaniu dokumentu jest niewielka, a korzyści, które otrzymujemy dzięki niemu, są znaczące.

Kamil

Kamil Naja

Programista front-end
Specjalista realizujący projekty dla klientów emagine. Programista Front-end od początków kariery w IT, którą rozpoczynał w 2016 r. Blogger i propagator wiedzy w swojej dziedzinie.

Przeczytaj także:
Kluczowe kompetencje pracownika Help Desk

Chcesz wiedzieć więcej?

Pomożemy Ci odnieść sukces w roli niezależnego konsultanta IT.

Blog

Więcej wpisów na blogu

Expert stories

Microsoft Dev Box – nowoczesna maszyna robocza

Microsoft Dev Box to zwirtualizowane rozwiązanie, które umożliwia inżynierom IT szybkie uruchamianie samoobsługowych stacji roboczych wstępnie skonfigurowanych do ich zadań, przy jednoczesnym zachowaniu scentralizowanego zarządzania w celu maksymalizacji bezpieczeństwa i zgodności ze standardami w organizacji. Czy już je znasz?

Expert stories

Wymagania niefunkcjonalne w procesie tworzenia aplikacji

Podczas rozwijania aplikacji webowej zwykle odkrywamy szereg specyficznych funkcjonalności, wedle których ma ona działać. Niektóre z nich mogą wydawać się oczywiste dla części członków zespołu IT pracującego nad rozwiązaniem, jednak inni wolą mieć je spisane w szczegółowej formie, aby móc je wszystkie zaimplementować lub testować.

Expert stories

Najlepsze praktyki w zakresie bezpieczeństwa łańcucha dostaw oprogramowania

Łańcuch dostaw oprogramowania to „proces dostarczania produktu do klienta” w domenie IT, odnosi się do procesu projektowania, budowania, dostarczania i utrzymania. Jego bezpieczeństwo jest nie tylko ważnym, ale wręcz kluczowym aspektem współczesnego świata IT.

Expert stories
Webinar

Obejrzyj zapis webinaru “AI: Nowa fala przyszłości”

Szansa cywilizacyjna, czy też zagrożenie? Algorytmy sztucznej inteligencji od wielu lat stanowią jeden z centralnych punktów dyskusji o przyszłości technologii. Rozwiązania oparte na AI, niezależnie od poziomu organizacji na którym zostaną wykorzystane, pomogą stworzyć nowatorskie modele biznesowe. Sprawdźcie zatem, czy Wasza organizacja jest do tego dobrze przygotowana. Czego się spodziewać? Jak wykorzystać AI, aby tworzyć przewagę konkurencyjną na rynku?

Expert stories

Snapshot testing w aplikacjach front-endowych – czy wiesz już wszystko?

Jednym z największych wyzwań podczas tworzenia aplikacji front-endowych jest unikanie wprowadzania niechcianych zmian. Testowanie logiki biznesowej jest możliwe za pomocą testów jednostkowych, jednak nie sprawdzają one zwykle całej struktury HTML. Rozwiązaniem problemu regresji w plikach HTML może być snapshot testing.

Expert stories

Przyszłość sztucznej inteligencji – jakie wyzwania i możliwości stoją przed światem IT?

Przyszłość sztucznej inteligencji (SI) niesie ze sobą zarówno wyzwania, jak i ogromne możliwości rewolucji technologicznej. Zewsząd słyszymy, że SI przejmie we wszystkim kontrolę i my jako ludzie będziemy już mniej potrzebni lub wręcz zbędni – czy aby na pewno?

Expert stories

Efektywne sposoby na pracę z back-endem

Aby tworzyć rozwiązania front-endowe, zwykle pobieramy dane z aplikacji back-endowej. W tym artykule chciałbym przedstawić, w jaki sposób możemy udoskonalić i przyspieszyć tę pracę. Podstawowe czynniki, które wziąłem pod uwagę podczas analizy, to elastyczność pracy oraz to, czy programista używający API, może edytować dane zwracane przez back-end.

Expert stories

Neo4j: Grafowa baza danych rewolucjonizuje zarządzanie informacjami

Wraz z gwałtownym wzrostem ilości danych na znaczeniu zyskują nowoczesne rozwiązania bazodanowe. Jednym z najciekawszych i najbardziej innowacyjnych rozwiązań jest neo4j – grafowa baza danych, która rewolucjonizuje sposób przechowywania i analizy informacji. W tym artykule przyjrzymy się bliżej temu fascynującemu narzędziu, poznamy jego zalety, funkcje oraz praktyczne zastosowanie.

Expert stories

Jak AI wspiera pracę Front-end developerów – praktyczny poradnik

Z perspektywy front-endowca w ostatnim roku zauważyłem jak bardzo zastosowanie nowoczesnych narzędzi pomaga w szybszym tworzeniu aplikacji i sprawia, że pozbawione są one błędów. W artykule opisuję zastosowanie ChatGPT, Github Copilot oraz Github Copilot Chat, określając je skrótowo mianem AI.

Expert stories

Wypalenie zawodowe specjalistów IT – jak je przewidzieć i jak mu zapobiec?

Na pewno każdy z nas chociaż raz czuł, że w jego pracy coś idzie inaczej, niż by chciał. Dochodzi to tego zmęczenie, stres, spadek motywacji i nagle cały zawodowy świat się wali – zaczynamy myśleć, czy to, co robimy ma sens, czemu dotychczasowe działania nie przynoszą pożądanych efektów. Innymi słowy, wpadamy w rozmyślania nad tym, jak jest ciężko. Najczęściej to tylko zmęczenie, brak odpoczynku, stres, natomiast kiedy warto zadbać o siebie bardziej i przekonać się, czy to nie jest wypalenie zawodowe?

Expert stories

Jak skutecznie zbudować i utrzymać relację z kandydatem podczas procesu rekrutacyjnego w IT

Branża IT od dawna  jest  jedną z najbardziej dynamicznie rozwijających się dziedzin rynku, niezależnie od szerokości geograficznej. Tym bardziej, znalezienie odpowiedniego kandydata do realizacji projektów IT, który spełniałby wszystkie wymagania zarówno pod względem wiedzy i umiejętności technicznych, jak i kompetencji miękkich nigdy nie było czymś prostym.

Expert stories

Poznaj kompetencje miękkie przyszłości w obszarze sprzedaży

Inwestycja w kompetencje miękkie może szczególnie opłacić się w zawodach przyszłości. W przeciwieństwie do twardych, kapitałem nie jest wykształcenie czy fachowa wiedza. Soft skills pozwolą tym, którzy je wdrożą i oswoją, z lekkością adaptować się do zmian jakie czekają rynek pracy.

Paweł Pancerz
Expert stories

Rozwój Chmury – co czeka nas w najbliższej przyszłości?

W ciągu ostatnich lat rozwój technologii chmurowych zmienił się bardzo dynamicznie. Wymogi rynkowe oraz coraz większa świadomość w zakresie potencjału technologii chmurowych sprawiają, że obawy przed tą technologią IT są coraz mniejsze.

Marcin Kosiński
Expert stories

Efektywna praca zdalna w innej strefie czasowej

Zdalna praca w innej strefie czasowej  jest możliwa, gdy w zespole panuje odpowiednia dyscyplina.

ichał Mrozowski, Starszy Analityk Biznesowy, Scrum Master
Expert stories

10 cech dobrego Scrum Mastera

Czy każdy nadaje się na Scrum Mastera? Jeśli zespół poszukuje Scrum Mastera, który wniesie wartość dodaną i będzie dla niego wsparciem – a nie tylko prowadzącym ceremonie – powinien szukać osoby posiadającej konkretne cechy.