Wykorzystanie języka naturalnego jest najbardziej popularnym sposobem dokumentowania wymagań. Jego największą zaletą jest brak potrzeby poświęcenia czasu przez interesariuszy na poznanie nowych notacji wykorzystywanych w przypadku modelów konceptualnych (np. UML) oraz możliwość opisu rzeczywistości, która może być trudna do przedstawienia za pomocą innych notacji.
Stosowanie języka naturalnego ma niestety także wiele wad. Wymagania są definiowane i analizowane przez ludzi, którzy posiadają zróżnicowany poziom wiedzy, różne uwarunkowania społecznościowe oraz doświadczenie. Te czynniki wpływają na częste niezrozumienie lub różną interpretację wymagań tworzonych przy użyciu języka naturalnego.
Różna percepcja oraz reprezentacja informacji przez ludzi zaangażowanych w projekt wynika z tak zwanego „efektu transformacji”.
Pięć procesów transformacyjnych, które są najbardziej istotne dla inżynierii wymagań:
- Nominalizacja
- Rzeczowniki bez indeksu referencyjnego
- Uniwersalne kwantyfikatory
- Niekompletnie określone warunki
- Niekompletnie określone czasowniki
Nominalizacja
Nominalizacja ma miejsce, gdy czasownik opisujący jakiś proces zostaje przekształcony w rzeczownik. Nie ma powodu do niestosowania nominalizacji w opisie złożonych procesów, przy czym proces ten powinien być wyraźnie określony przez używany termin. Używany termin nie może pozwolić na jego swobodną interpretację, a opisywany przez niego proces musi być wyraźnie określony wraz z uwzględnieniem wejść i wyjść dla tego procesu oraz możliwych błędów i wyjątków.
Przykład
Dla wymagania „W przypadku awarii systemu należy wykonać jego restart” terminy „awaria systemu” i „restart”, które opisują proces powinny być przeanalizowane bardziej precyzyjnie.
Rzeczowniki bez indeksu referencyjnego
Określanie rzeczowników bez indeksu referencyjnego odnosi się do niekompletnego opisu rzeczowników. Przykładami rzeczowników bez indeksu referencyjnego mogą być: dane, komunikat, funkcja. Takie użycie rzeczownika nie wyczerpuje informacji o nim i może być różnie zinterpretowane.
Przykład
Wymaganie „Dane powinny zostać wyświetlone użytkownikowi na terminalu” nie określa jakie dane powinny zostać wyświetlone, jakiemu użytkownikowi i na którym terminalu. Aby uniknąć nieporozumień wymaganie może zostać sformułowane jako „Dane faktury powinny zostać wyświetlone zalogowanemu użytkownikowi na terminalu, na którym został zalogowany”.
Uniwersalne kwantyfikatory
Kwantyfikatory określają ilość oraz częstotliwość. Podczas użycia uniwersalnych kwantyfikatorów istnieje ryzyko, że określone zachowanie lub właściwość nie będzie miała zastosowania do wszystkich obiektów zgrupowanych za pomocą kwantyfikatora. Przykładami kwantyfikatorów są: nigdy, zawsze, wszystkie, niektóre.
Przykład
Wymaganie „System wyświetla wszystkie zbiory danych dla każdego podmenu” powinno zostać przeanalizowane pod kątem określenia, czy na pewno każde podmenu powinno je uwzględniać oraz czy na pewno istnieje potrzeba prezentacji wszystkich zbiorów danych dla danego podmenu.
Niekompletnie określone warunki
Wymagania zawierające warunek określają zachowanie systemu, które występuje jeżeli dany warunek zostanie spełniony. Niekompletne określenie warunku może spowodować utratę ważnych informacji.
Przykład
Wymaganie „System restauracji powinien pozwalać na sprzedaż napojów alkoholowych zarejestrowanym użytkownikom, którzy ukończyli 18 lat” nie określa jakie napoje mogą być sprzedawane użytkownikom którzy nie ukończyli 18 lat. Wymaganie może zostać sprecyzowane przez określenie „System restauracji powinien pozwalać na sprzedaż tylko napoi bezalkoholowych zarejestrowanym użytkownikom, którzy nie ukończyli 18 lat oraz wszystkich napoi zarejestrowanym użytkownikom, którzy ukończyli 18 lat”.
Niekompletnie określone czasowniki
Niektóre czasowniki opisujące jakiś proces wymagają więcej niż jednego rzeczownika, aby mogły zostać prawidłowo zinterpretowane. Na przykład czasownik przekazać powinien zostać określony przez trzy rzeczowniki określające co będzie przekazane, skąd i gdzie. Niekompletne określenie czasownika może spowodować utratę ważnych informacji.
Przykład
Wymaganie „Zalogowanie użytkownika wymaga wprowadzenia danych logowania” nie określa jednoznacznie kto, gdzie i jakie dane wprowadza. Wymaganie może zostać doprecyzowane przez sformułowanie „System musi pozwolić na wprowadzenie przez użytkownika jego loginu i hasła wykorzystując klawiaturę terminalna, aby mógł się zalogować w systemie”.
Tekst zainspirowany książką: Klaus Pohl, Chris Rupp „Requirements engineering fundamentals : a study guide for the Certified Professional for Requirements Engineering exam : foundation level”, IREB compliant Wydawnictwo: Rocky Nook Inc, 2011