Funkcja czy usługa – czyli kiedy funkcja może być usługą a usługa funkcją
Sierpień 25, 2010
Często dyskutując w gronie osób z branży IT pojawia się problem posługiwania się pojęciami określającymi elementy architektury i wzajemnego jednoznacznego ich rozumienia. Chodzi mianowicie o pojęcie funkcja/funkonalność, usługa, przypadek użycia, proces, podproces, zdolność (ang. capability), operacja. Pojęcia te są stosowane nie tyle zamiennie, co przypadkowo w różnych kontekstach w bardzo różny sposób. Inżynieria oprogramowania to dziedzina ścisła i dlatego przyznam bardzo irytuje mnie ta dowolność. Dowolność ta ma jednak bardzo proste wytłumaczenie. Nie, nie chodzi o niewiedzę dyskutantów a raczej o zbyt ogólne definicje pojęć serwowanych przez literaturę oraz brak określenia w gronie współpracowników uszczegółowionej definicji i kryteriów posługiwania się tymi pojęciami. No, bo przecież to wszystko jest tak oczywiste, że nie warto o tym mówić. Otóż nie, warto dlatego, że inaczej stan chaosu nie tylko w dyskusji ale i w opisie dokumentacji będzie się pogłębiać.
W tym krótkim, wakacyjnym pomimo końca wakacji, artykule postaram się, znaleźć odpowiedź na pytanie: Czym różni się usługa od funkcji?. Innym razem postaram się rozszerzyć dyskusję o inne wymienione wcześniej pojęcia. We wpisie abstrahuję od kwestii implementacyjnych na poziomie aplikacji czy infrastruktury. Jedynie chcę zwrócić uwagę na pewne różnicę pomiędzy użyciem pojęć usługa i funkcja.
Zanim jednak przejdę do analizy problemu zacznę od usystematyzowania samego sposobu nazywania funkcji i usług.
Nazywanie funkcji i usługi
Na potrzeby tego artykułu załóżmy, że zarówno funkcje jak i usługi będą nazywane w najprostszy ze sposobów. Do stosowania jednolitego sposobu nazewnictwa zachęcam również w praktyce zawodowej. Proponuję, aby pierwszym słowem nazwy był czasownik w trybie rozkazującym (orzeczenie) a drugim dopełnienie i ewentualnie dopełnienie dalsze, np. Uruchom silnik, Chroń dzieci, Generuj dokumenty do druku. Nic nie stoi na przeszkodzie, aby zastosować inne kryteria nazewnicze. Często zwłaszcza w języku polskim popularne są formy rzeczowników odczasownikowych, tj. np. Uruchamianie silnika, Chronienie dzieci, itd. Nie ważne, którą z form nazewniczych przyjmiemy, ważne aby tych form przestrzegać ściśle.
Czym jest funkcja i usługa?
Bez względu na to, czy opisujemy świat warstwy biznesowej, aplikacji, czy infrastruktury definicje dla pojęć funkcja i usługa pozostają podobne.
Czym jest funkcja?
Funkcja to jednostka zachowania wewnątrz opisywanego zakresu (departament, wydział, komponent, moduł, węzeł, maszyna), która może grupować zachowania ze względu na, np. umiejętności, wiedzę, zasoby, podział logiczny, technologiczny, itd.
Czym jest usługa?
Usługa to widoczna na zewnątrz funkcja opisywanego zakresu (departament, wydział, komponent, moduł, węzeł, maszyna), która jest istotna dla otoczenia a realizowana przez jednostki zachowania (funkcje, proces, podprocesy,…).
Tyle definicje, ale życie daje nam jeszcze inne wskazówki pozwalające na zdefiniowanie funkcji i usług. Funkcję się pełni a usługę świadczy. Pełnienie funkcji nie zawsze ma związek z jej jakością. W przypadku usługi o jakości decyduje kontrakt (umowa nie zawsze pisemna), pomiędzy usługodawcą i usługobiorcą.
Przykłady
To, co w podanych definicjach jest istotne to: zakres oraz to czy osoba korzystająca z funkcji/usługi znajduje się w zakresie, czy poza nim. Proszę zauważyć, że usługi w pewnym wąskim zakresie, nie będą już usługami w zakresie szerszym istotnym dla usługobiorcy usługi. Przykładowo, dla klienta sklepu spożywczego zakresem jest sklep. Usługą świadczoną klientowi jest Sprzedaj towar. W tym samym sklepie, jeśli ograniczymy zakres do logicznego podziału na role pracowników usługą świadczoną przez grupę pracowników (w roli magazyniera) będzie Wydaj towar z magazynu na sklep. Proszę ponownie zauważyć Wydaj towar z magazynu na sklep jest usługą w zakresie podziału sklepu ze względu na role pracowników, ale jest też zwykłą funkcją jeśli ten zakres się zmieni na szerszy. Oczywiście Wydanie towaru na sklep nie jest funkcją dostępną ani istotną z punktu widzenia klienta, ale każdy świadomy konsument dużego sklepu zdaje sobie sprawę, że taka funkcja jest przypisana do grupy pracowników. To, co z tego przykładu ponownie da się odczytać to to, że próbując odpowiedzieć na pytanie, czym jest usługa a czym funkcja i jak je odnajdywać musimy wziąć pod uwagę przede wszystkim zakres i zainteresowanego (potencjalny usługobiorca). Jeśli zainteresowany jest spoza zakresu wówczas możemy mieć do czynienia z usługą.
Innym przykładem niech będzie usługa generowania dokumentów formalnych – umowy, aneksy. Z punktu widzenia klienta podpisującego umowę z usługodawcą Generuj dokumenty a w tym jego umowy nie jest usługą, ponieważ dla klienta usługę i gwarancję jej świadczenia opisuje umowa, którą podpisuje. Co za tym idzie usługa Generuj dokumenty może być usługą, ale tylko w obrębie firmy, której usługobiorcą (klientem) jest sprzedający lub aplikacja, która z usługi Generuj dokumenty korzysta.
Na rysunku 1 przedstawiono inny przykład, w którym zakres ograniczony jest do roli pełnionej przez pracownika sklepu – Kasjera. Proszę zwrócić uwagę, że z punktu widzenia klienta usługą jest tylko sprzedaż towaru (Sprzedaj towar). W ramach obowiązków kasjera znajduje się: pobieranie towaru z taśmy, rejestrowanie obrotu na kasie fiskalnej, czy też wydawanie towaru klientowi. Te funkcje pełnione przez kasjera służą realizacji usługi Sprzedaż towaru. Proszę zauważyć, kasjer również pełni funkcję sprzedającego towar jak i świadczy usługę sprzedaży towaru. Natomiast zwiększanie przychodu (Zwiększ przychód) wykracza poza zakres obowiązków kasjera. Ten typ usługi pewnie świadczony jest przez menedżera sklepu na rzecz jego właściciela. Tutaj wyraźnie jednak nie stanowi on zakresu prac kasjera. Na rysunku 1 można dodatkowo zauważyć dwie strzałki oznaczone, jako: „Jak?” i „Po co?”. Te proste pytania pozwalają odnajdywać funkcje / usługi w określonym zakresie poszukiwań.
Rysunek 1 Usługa i funkcje w zakresie obowiązków Kasjera
Parę słów na koniec
Mam nadzieję, że ta parominutowa lektura nie była czasem straconym i że tym krótki wpisem udało mi się rozjaśnić wątpliwości jednych a innym pokazać inny punkt widzenia na pojęcia: funkcja i usługa. To, co tu opisuję w żadnym razie nie jest odkrywcze, ale czasami warto się nad takimi oczywistymi-oczywistościami zastanowić przez moment, bo przyda się na pewno, kiedy zaczniemy poważnie myśleć o orientacji naszego przedsiębiorstwa w stronę usługową. Jak zapewne wielu już wie, a inni dopiero się o tym przekonają na własnej skórze i portfelu – nie wszystko jest usługą co usługą zostało nazwane.