Inżynieria wymagań

Inżynieria wymagań

„Najtrudniejszym etapem tworzenia systemu komputerowego jest podjęcie precyzyjnej decyzji dotyczącej tego, co należy zbudować. Żadna inna część pracy koncepcyjnej nie jest tak trudna, jak zdefiniowanie szczegółowych wymagań technicznych, w tym określenie interfejsów umożliwiających komunikację z ludźmi, urządzeniami oraz innymi systemami oprogramowania. Żadna inna część pracy aż tak bardzo nie zaszkodzi systemowi, jeśli zostanie wykonana źle. Żadna inna część nie będzie trudniejsza do późniejszego wyprostowania.” Frederic Brook w opracowaniu „ Bez srebrnej kuli.Istota i wypadki inżynierii oprogramowania” z 1987.

Inżynieria oprogramowania jest dziedziną informatyki, której początki sięgają lat sześćdziesiątych ubiegłego stulecia. Andrzej Jaszkiewicz w książce „Inżynieria oprogramowania” definiuje ją jako wiedzę techniczną a nie naukę teoretyczną, dotyczącą cyklu życia oprogramowania, której celem jest uzyskanie wysokiej jakości produktu – oprogramowania.

Według tej definicji najistotniejsza jest: zgodność z wymaganiami użytkownika, niezawodność, efektywność, łatwość w konserwacji i ergonomia. Jej metody, techniki i narzędzia powstają i są rozwijane w oparciu o praktyczne doświadczenie i weryfikowane są podczas ich praktycznego stosowania. Z drugiej strony, dziedzina ta wykorzystuje oczywiście dorobek wielu nauk np. teorii programowania, sztucznej inteligencji, badań operacyjnych, psychologii i nauki o zarządzaniu. Obecnie zespół pracujący nad nowym oprogramowaniem złożony jest z analityków biznesowych, programistów, wdrożeniowców, kierowników projektu a nawet kadry zarządczej. W ramach tej dziedziny można wyróżnić dwa nurty: nurt formalny wymagający stosowania metod formalnych oraz nurt praktyczny opierający się na wiedzy i doświadczeniu ludzkim. To dzięki doświadczeniu można lepiej, skuteczniej czy szybciej realizować projekt, jednak brak formalnego zapisu realizowanego przedsięwzięcia może okazać się bardzo zawodny w osiągnięciu celu. Informacje zebrane od klienta mogą okazać się niewystarczające lub niepełne. Również zmieniające się wymagania jak i brak zrozumienia celów biznesowych często prowadzi do niepowodzenia przedsięwzięcia informatycznego.

W inżynierii oprogramowania pomija się często inżynierię wymagań w skład której wchodzi opracowywanie wymagań jak również zarządzanie nimi.  Współczesna literatura fachowa, kładzie duży nacisk właśnie na sformalizowany zapis prowadzonych działań, zbieranie wymagań i zarządzanie nimi.

Uczymy się na własnych błędach. Świadomość niepowodzenia i popełnionego błędu powinna skłonić nas do poszukiwania nowego, może lepszego rozwiązania by nie powtarzać ponownie tego samego błędnego działania.