Wymagania w projektach IT: Od specyfikacji do Agile

Wymagania i projekty IT: Ewolucja podejścia do specyfikacji

W wielu projektach, szczególnie w branży IT, kluczową rolę odgrywa dokument zwany „dokumentem wymagań„, często określany również jako „specyfikacja wymagań„. Jego znaczenie jest podkreślane w ofertach i umowach, gdzie zatwierdzenie tego dokumentu uznawane jest za istotny kamień milowy projektu. Specyfikacja ta ma za zadanie zawierać kompleksową listę wymagań, szacunki pracochłonności i terminy realizacji, a także precyzyjne kryteria odbioru. Jednak czy tradycyjne podejście do specyfikacji, polegające na jej kompletnym opracowaniu na wczesnym etapie projektu, jest zawsze optymalne? Artykuł analizuje to zagadnienie, porównując klasyczne metody z dynamicznym podejściem Agile, które zyskuje coraz większą popularność w zarządzaniu projektami IT.

Podstawowe pytania o wymagania w projektach informatycznych

Uwaga: Pierwsze, fundamentalne pytanie brzmi: kiedy wykonawca powinien dostarczyć dokument specyfikacji wymagań? Jeśli ma to nastąpić dopiero na zakończenie projektu, dokument staje się w praktyce zbędny. Z kolei próba stworzenia kompletnej i ostatecznej specyfikacji na samym początku projektu jest często nierealna. Wielu ekspertów słusznie argumentuje, że bez solidnej znajomości wymagań nie można precyzyjnie określić potrzeb klienta, a tym samym – osiągnąć sukcesu w projekcie. Wymagania stanowią przecież podstawę do:

Podkreślamy: Jednakże praktyka pokazuje, że umieszczenie w umowie klauzuli o odbiorze kompletnej specyfikacji wymagań na wstępnym etapie projektu może generować szereg problemów, zarówno dla wykonawcy, jak i dla zamawiającego. Doświadczenia zrealizowanych projektów informatycznych wskazują, że:

  1. Niemożliwe jest przedstawienie i zatwierdzenie kompletnej i niezmiennej listy wymagań na początkowym etapie projektu. Dynamiczne środowisko biznesowe wymusza elastyczność.
  2. Wymagania ewoluują i zmieniają się w znaczący sposób w trakcie trwania projektu, co jest naturalną konsekwencją zmieniających się potrzeb biznesowych i rynkowych. (Patrz Tabela 1)
  3. Próba spisania i „zamrożenia” wszystkich wymagań na starcie projektu jest ryzykowna i może doprowadzić do niepowodzenia, niezależnie od dostępnych zasobów czasowych i finansowych. Taka sztywność specyfikacji często okazuje się niepraktyczna. Elastyczność i adaptacja są kluczowe.
Tabela 1: Ewolucja Wymagań w Projekcie IT
Etap Projektu Charakterystyka Wymagań Ryzyko Zmian
Inicjacja Wstępne, ogólne Niskie (koszt zmian 1x)
Analiza Szczegółowe, ale wciąż ewoluujące Średnie (koszt zmian 5x)
Projektowanie Ustalane, ale możliwe korekty Wysokie (koszt zmian 10x)
Implementacja Zamrożone, zmiany kosztowne Bardzo Wysokie (koszt zmian 100x)
Testowanie Ostateczne, zmiany ekstremalnie drogie Krytyczne (koszt zmian 500x)
Źródło: Opracowanie własne na podstawie badań Barry’ego Boehma
Źródło: Opracowanie własne na podstawie badań Barry’ego Boehma

Ważne: Wprowadzenie do umowy klauzuli o odbiorze kompletnej specyfikacji wymagań często prowadzi do nieporozumień i sporów prawnych, angażując dodatkowe koszty związane z obsługą prawną. Zmienność wymagań (punkt b) jest fundamentalnym wyzwaniem. Od czasu, gdy profesor Barry Boehm opublikował swoje przełomowe badania, ilustrujące gwałtowny wzrost kosztów wprowadzania zmian w późniejszych fazach projektu, zwolennicy rygorystycznego zamykania fazy wymagań na początku projektu zyskali silne argumenty. Niektórzy eksperci wierzyli, że doświadczenie analityków w projektach o podobnej tematyce oraz zastosowanie zaawansowanych metodyk projektowych pozwolą na zidentyfikowanie zdecydowanej większości wymagań już w fazie analizy.

Doświadczenie analityków w projektach o podobnej tematyce oraz zastosowanie zaawansowanych metodyk projektowych powinny minimalizować ryzyko niedoszacowania wymagań już w fazie analizy.”

Eksperci ds. zarządzania projektami IT, Raport Rynkowy 2024

Niemniej jednak: Takie podejście leżało u podstaw wielu tradycyjnych metodologii modelowania danych i modelowania obiektowego. Niemniej jednak, rzeczywistość projektów informatycznych często odbiega od idealnych założeń, co manifestuje się poprzez:

  1. Nieproporcjonalne wydłużenie faz wymagań i projektowania, co opóźnia rozpoczęcie właściwych prac programistycznych. (Skutek: opóźnienia w harmonogramie)
  2. Znaczący wzrost kosztów budowy systemu, który w skrajnych przypadkach może wymknąć się spod kontroli i przekroczyć założony budżet. (Ryzyko: przekroczenie budżetu)
  3. Otrzymanie systemu, który finalnie nie spełnia aktualnych potrzeb i oczekiwań zamawiającego, szczególnie w sytuacjach, gdy informatyzacja jest wdrażana po raz pierwszy w danej organizacji lub gdy projekt wykorzystuje nowatorskie, dynamicznie rozwijające się technologie. (Konsekwencja: niezadowolenie klienta)

Dodatkowo: W polskich realiach, dodatkowym czynnikiem potęgującym opisane problemy (i oraz ii) jest wciąż relatywnie niska efektywność zespołów projektowych w stosowaniu zaawansowanych technik i metodyk projektowych. Niestety, wciąż obserwuje się niedostatek wiedzy teoretycznej i doświadczenia praktycznego w tej dziedzinie. Problem ten jest dodatkowo pogłębiany przez niechęć wielu firm do inwestowania w specjalistyczne narzędzia wspomagające proces projektowy oraz w kompleksowe szkolenia dla personelu IT.

Agile Development jako odpowiedź na wyzwanie zmienności wymagań

W ostatnich latach: W ostatnich latach, coraz częściej wskazuje się na metodyki Agile jako skuteczne rozwiązanie problemu zmienności wymagań w projektach IT. Różnorodne techniki i metodologie, przynależące do nurtu Agile Development, efektywnie radzą sobie z dynamicznie zmieniającymi się wymaganiami, wykorzystując koncepcję „minimalistycznej strategii wymagań” (Minimalist Requirements Strategy), której autorem jest Ken Orr, ceniony konsultant i członek rady technologii biznesu Cuttera (Fellow of Cutter Business Technology Council).

Kluczowe założenie podejścia Agile jest przekonanie, że nie ma konieczności precyzyjnego planowania wszystkich detali systemu na podstawie obszernej i z góry ustalonej specyfikacji wymagań. Deweloperzy Agile argumentują, że bardziej efektywne jest szybkie rozpoczęcie budowy oprogramowania, bazując na aktualnie dostępnej wiedzy i informacjach. Czyli, w praktyce, chodzi o budowanie oprogramowania na podstawie minimalnego, ale wystarczającego zbioru wymagań.

Następnie: Następnie, po uzyskaniu informacji zwrotnej od realnych użytkowników systemu i zidentyfikowaniu nowych lub zmodyfikowanych wymagań, następuje proces przeprojektowania systemu, modyfikacji kodu, ponownych testów i udostępnienia użytkownikom kolejnej, ulepszonej wersji prototypu. W ten sposób, poprzez serię iteracji, użytkownicy i deweloperzy wspólnie odkrywają i doprecyzowują zarówno wymagania, jak i ostateczny kształt systemu. Co istotne, proces ten, jak pokazują doświadczenia, często przebiega w czasie krótszym niż w przypadku tradycyjnych, „ciężkich” metodyk projektowych.

Charakterystyka Agile: Najbardziej charakterystyczne w podejściu Agile jest jawne przyznanie, że proces budowy każdego systemu informatycznego jest w istocie procesem ciągłego uczenia się. Rozpoczynając projekt, zawsze wkraczamy na nieznany teren! To fundamentalnie odmienne podejście w porównaniu do tradycyjnego paradygmatu tworzenia systemów informatycznych, wzorowanego na modelu idealnej inżynierii budowlanej. Stary paradygmat opierał się na założeniu istnienia „niewzruszonych” faz inżynierskich, takich jak: analiza, planowanie, projektowanie, budowanie i testowanie, gdzie po etapie planowania zasadniczo nic nie powinno ulec zmianie. Niepewność była traktowana w tym paradygmacie jako oznaka braku profesjonalizmu i dlatego była zazwyczaj ukrywana lub marginalizowana.

W nowym paradygmacie – paradygmacie Agile – proces ciągłego uczenia się jest realizowany dzięki nieustannej, intensywnej komunikacji. Komunikacja ta zachodzi między deweloperami, między deweloperami a użytkownikami (klientami) oraz pomiędzy samymi użytkownikami. Komunikacja jest kluczem w Agile.

Alistair Cockburn, uznawany za jednego z guru nowoczesnych metod wytwarzania systemów informatycznych, celnie charakteryzuje ten proces, stwierdzając: „Robienie softwaru składa się tylko z ,ukonkretniania idei w ekonomicznym kontekście” (making software consists only of making ideas concrete in an economic context). Cockburn podkreśla, że:

  • Ludzie, wymyślając i komunikując się, rozwiązują problem, którego na początku w pełni nie rozumieją (przy czym sam problem może ewoluować i zmieniać się w czasie trwania projektu). Problem ewoluuje.
  • Ludzie ci wspólnie tworzą rozwiązanie, którego również nie rozumieją w pełni na starcie projektu (i które nieustannie podlega modyfikacjom). Rozwiązanie jest iteracyjne.
  • Do wyrażania swoich pomysłów używają bardzo formalnego i restrykcyjnego języka programowania, którego niuanse nie zawsze w pełni pojmują (i który, co istotne, również podlega ciągłym zmianom). Język programowania jest narzędziem, ale i wyzwaniem.
  • Następnie, efekty ich pracy są przedstawiane bezlitosnemu „interpreterowi” – komputerowi, który nigdy nie wybacza błędów. Komputer jest bezlitosny.
  • Co więcej, cały proces odbywa się w ramach ograniczonych zasobów, a każdy podjęty wybór ma bezpośrednie konsekwencje ekonomiczne. Ekonomia projektu ma znaczenie.
  • I to jest właśnie esencja kooperacyjnej gry inwencji i komunikacji! Kooperacja i inwencja napędzają projekt.

W kontekście specyfikacji: Powstaje jednak kluczowe pytanie: czy minimalistyczna strategia wymagań rzeczywiście rozwiązuje problem specyfikacji wymagań? Czy eliminuje dylematy związane z dokumentowaniem wymagań, zatwierdzaniem specyfikacji przez zamawiającego oraz precyzyjnym szacowaniem zakresu projektu, jego pracochłonności, kosztów i czasu trwania? Aby znaleźć odpowiedzi na pytania o zmienność wymagań, konieczność ich dokumentowania, optymalny moment na to działanie oraz efektywne metody zatwierdzania, musimy wnikliwie zrozumieć, czym tak naprawdę są wymagania w kontekście projektów IT.

Istota wymagań: Cztery typy według Karla Wiegersa

W poszukiwaniu definicji i klasyfikacji wymagań, warto odwołać się do koncepcji Karla Wiegersa (K. Wiegers, „Software Requirements”, Microsoft Press 2003), który wyróżnia cztery podstawowe typy wymagań:

  1. Wymagania biznesowe (Business Requirements): Są to mierzalne cele, które uzasadniają powstanie projektu i są formułowane na jego najwcześniejszym etapie. Często przybierają formę dokumentu Business Case. Wymagania biznesowe charakteryzują się względną stabilnością – rzadko ulegają istotnym zmianom w trakcie projektu. Ewentualna zmiana wymagań biznesowych może skutkować nawet likwidacją dotychczasowego projektu i powołaniem nowego. Wymagania biznesowe stanowią punkt wyjścia dla identyfikacji i definiowania pozostałych typów wymagań. Stabilne fundamenty projektu.
  2. Wymagania użytkownika (User Requirements): Opisują cele użytkowników systemu lub zadania, które użytkownicy będą realizować przy jego pomocy. Wymagania te są formułowane z perspektywy użytkownika, dlatego ich identyfikacja i precyzyjne opisanie wymaga aktywnego udziału przyszłych użytkowników systemu. Proces odkrywania i doprecyzowania wymagań użytkownika jest iteracyjny i opiera się na ciągłym feedbacku. Dokumentacja tych wymagań powstaje stopniowo, w miarę postępu projektu. Z tego powodu, niemożliwe jest ich pełne i jednorazowe wyspecyfikowanie na początku projektu. Stopniowe poznawanie wymagań użytkownika i ustalanie ich priorytetów stanowi kluczową bazę do planowania iteracji w metodykach Agile oraz do opracowywania testów akceptacyjnych. Iteracyjny charakter wymagań użytkownika.
  3. Wymagania funkcjonalne (Functional Requirements): Są pochodnymi wymagań użytkownika, ale różnią się od nich zasadniczo perspektywą. Wymagania funkcjonalne opisują akcje, które system musi umieć wykonywać, aby być użytecznym dla użytkowników. Jak trafnie ujmują to brytyjscy konsultanci Suzanne i James Robertsonowie w książce „Mastering Requirements Process„: „Wymagania funkcjonalne to te rzeczy, które system musi umieć robić – akcje, które system musi podejmować, jeśli ma być użyteczny dla użytkowników”. W procesie definiowania wymagań funkcjonalnych inicjatywa leży po stronie projektantów, analityków, architektów i programistów. Część z tych wymagań może być znana z góry, bazując na doświadczeniu wykonawców lub możliwości reużycia komponentów z poprzednich projektów. Jednakże, wiele wymagań funkcjonalnych może wyłaniać się w trakcie projektu, w odpowiedzi na nowo odkryte lub zmodyfikowane wymagania użytkowników. Zatem, dokumentacja wymagań funkcjonalnych również powstaje stopniowo i ewoluuje w czasie. Akcje systemu dla użytkowników.
  4. Wymagania niefunkcjonalne (Non-Functional Requirements): Robertsonowie definiują je jako „(…) własności lub cechy, które system musi posiadać. (…) Są one w pewnym stopniu powiązane z funkcjonalnością systemu. Stąd, gdy już wiemy, co system ma robić, możemy określić, jak będzie się zachowywał, kiedy będzie to robił”. Wymagania niefunkcjonalne obejmują aspekty technologiczne, bezpieczeństwa, wydajnościowe, zgodności ze standardami lub paradygmatami technologicznymi i architektonicznymi, wymagania prawne i regulacyjne itp. W większości przypadków, inicjatywa w definiowaniu tych wymagań leży po stronie wykonawców. Część wymagań niefunkcjonalnych może być znana na początku projektu, ale wiele z nich wymaga akceptacji zamawiającego, zwłaszcza ze względu na potencjalny wpływ na koszty wdrożenia i eksploatacji systemu. Cechy i własności systemu.

Problem rozrostu: Problem niekontrolowanego rozrostu wymagań (tzw. scope creep), sygnalizowany w punkcie c) na początku artykułu, dotyczy przede wszystkim wymagań użytkownika i powiązanych z nimi wymagań funkcjonalnych. Badania przeprowadzone przez Standish Group (prezentowane m.in. przez Johna Favaro na konferencji XP2001 w Villasimius na Sardynii) oraz DuPont ujawniają zaskakujący fakt: znaczna część funkcjonalności systemów informatycznych jest rzadko używana lub całkowicie nieużywana. Według Standish Group:

Wykorzystanie Funkcji Systemu IT
Częstotliwość Użycia Procent Funkcji
Zawsze 7%
Często 13%
Czasami 16%
Rzadko 19%
Nigdy 45%
Źródło: Standish Group
Źródło: Dane Standish Group

Potwierdzenie: Studium DuPonta potwierdza te obserwacje, wskazując, że jedynie około 25% cech funkcjonalnych systemów jest rzeczywiście potrzebnych użytkownikom. Te dane sugerują, że większość oprogramowania jest „przerośnięta” – implementuje zbyt wiele zbędnych wymagań. Jak trafnie zauważył Chet Hendrickson, jeden z guru Extreme Programmingu: „Wewnątrz każdego systemu siedzi taki mały systemik, który próbuje się wydostać”. Z tego wynika paradoksalny wniosek: zbiór wymagań może być zbyt obszerny, a w trakcie projektu konieczne jest nie tylko jego rozwijanie, ale również aktywne redukowanie zbędnych funkcjonalności! Mniej znaczy więcej w wymaganiach.

Podsumowując: Podsumowując, analiza problematyki wymagań w projektach IT prowadzi do wniosku, że w ofertach i umowach projektowych znacznie istotniejsze jest precyzyjne zdefiniowanie elastycznego procesu zarządzania wymaganiami, który będzie efektywnie funkcjonował w trakcie całego projektu. Kluczowe staje się skupienie na iteracyjnym i adaptacyjnym podejściu do wymagań, a nie na sztywnym dokumencie specyfikacji, którego aktualność szybko staje się wątpliwa w dynamicznym środowisku projektów IT.

„Elastyczność procesu zarządzania wymaganiami jest kluczem do sukcesu w dynamicznych projektach IT.”

Grzegorz R. Prochowski, Ekspert ds. zarządzania projektami IT

Autor: Grzegorz R. Prochowski, doradca ds. badań i rozwoju w firmie konsultingowej Infovide SA – Architekci Strategii Informacyjnych oraz ekspert Infovide Cutter Innovation Council.

Czym są wymagania w projektach IT?

Wymagania w projektach IT to szczegółowy opis tego, co system informatyczny ma robić i jakie cechy posiadać. Określają one funkcjonalność, wydajność i inne charakterystyki systemu, stanowiąc podstawę do projektowania, budowy i testowania oprogramowania.

Czym jest dokument specyfikacji wymagań?

Dokument specyfikacji wymagań, często nazywany specyfikacją, to dokument opisujący kompleksową listę wymagań dla projektu IT. W tradycyjnym podejściu ma on zawierać zakres projektu, szacunki pracochłonności, terminy realizacji i kryteria odbioru. Zatwierdzenie tego dokumentu jest często ważnym kamieniem milowym projektu.

Jakie są ograniczenia tradycyjnego podejścia do specyfikacji wymagań?

Tradycyjne podejście, polegające na stworzeniu kompletnej specyfikacji na początku projektu, często napotyka trudności. Wymagania w projektach IT zazwyczaj ewoluują i zmieniają się w trakcie realizacji. Próba „zamrożenia” wszystkich wymagań na początku może prowadzić do niepraktycznej i sztywnej specyfikacji, która nie odzwierciedla zmieniających się potrzeb biznesowych.

Dlaczego trudno jest stworzyć kompletną specyfikację na początku projektu?

Stworzenie kompletnej specyfikacji na starcie projektu jest trudne, ponieważ wymagania często stają się jaśniejsze dopiero w trakcie realizacji projektu i interakcji z użytkownikami. Dynamiczne środowisko biznesowe, nowe technologie i zmieniające się potrzeby klienta sprawiają, że wymagania ewoluują, co utrudnia ich pełne przewidzenie na początku.

Jakie są typy wymagań w projektach IT?

Według Karla Wiegersa, wyróżnia się cztery typy wymagań: biznesowe (cele projektu), użytkownika (cele użytkowników systemu), funkcjonalne (akcje, które system musi wykonywać) i niefunkcjonalne (cechy i właściwości systemu, np. wydajność, bezpieczeństwo).

Na czym polega podejście Agile w zarządzaniu wymaganiami?

Podejście Agile zakłada elastyczne i iteracyjne zarządzanie wymaganiami. Zamiast tworzyć obszerną specyfikację na początku, Agile skupia się na budowaniu oprogramowania na podstawie minimalnego zbioru wymagań, a następnie iteracyjnie doprecyzowuje i modyfikuje je w oparciu o feedback użytkowników i zmieniające się okoliczności.

Jak Agile radzi sobie ze zmieniającymi się wymaganiami?

Agile akceptuje zmienność wymagań jako naturalną cechę projektów IT. Poprzez iteracyjne cykle rozwoju, regularną komunikację z klientem i użytkownikami, oraz elastyczne planowanie, Agile jest w stanie efektywnie adaptować się do zmian i dostarczać system, który lepiej odpowiada aktualnym potrzebom.

Czym jest 'scope creep’ w projektach IT?

’Scope creep’, czyli niekontrolowany rozrost zakresu projektu, odnosi się do sytuacji, gdy w trakcie projektu dodawane są nowe wymagania i funkcjonalności, które nie były planowane na początku. Może to prowadzić do przekroczenia budżetu, opóźnień i problemów z jakością systemu.

Dlaczego elastyczne zarządzanie wymaganiami jest ważne?

Elastyczne zarządzanie wymaganiami jest kluczowe w dynamicznych projektach IT, ponieważ pozwala na adaptację do zmieniających się potrzeb, minimalizację ryzyka dostarczenia nieaktualnego systemu i zwiększenie szans na sukces projektu. Skupienie się na procesie zarządzania wymaganiami, a nie na sztywnej specyfikacji, umożliwia lepsze dostosowanie do rzeczywistości projektowej.

Czy szczegółowa specyfikacja jest zawsze konieczna na początku projektu?

Szczegółowa specyfikacja na początku projektu nie zawsze jest konieczna i może być nawet niepożądana w projektach o dużej zmienności wymagań. Podejścia Agile pokazują, że często bardziej efektywne jest rozpoczęcie prac z minimalną specyfikacją i iteracyjne doprecyzowywanie wymagań w trakcie projektu.

Jak zmieniają się wymagania w trakcie projektu IT?

Wymagania w projektach IT zazwyczaj ewoluują. Na etapie inicjacji są ogólne i wstępne, w fazie analizy stają się szczegółowe, ale nadal ewoluują. W fazie projektowania są ustalane, ale możliwe są korekty, a w implementacji stają się zamrożone, a zmiany są bardzo kosztowne. Najdroższe zmiany są na etapie testowania.

Jakie są ryzyka związane ze sztywną specyfikacją wymagań?

Sztywna specyfikacja wymagań, która nie uwzględnia zmienności i ewolucji potrzeb, może prowadzić do nieproporcjonalnego wydłużenia faz wymagań i projektowania, wzrostu kosztów, opóźnień w harmonogramie oraz dostarczenia systemu, który finalnie nie spełnia aktualnych oczekiwań klienta.

Comments

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *