Agenci programowi jako metodologia tworzenia oprogramowania
Agenci programowi jako metodologia tworzenia oprogramowania#
Spis treści
- Agenci programowi jako metodologia tworzenia oprogramowania
- 1 Wprowadzenie
- 2 Definicja agenta programowego
- 3 Zastosowania agentów programowych
- 3.1 Agenci w zarządzaniu informacją
- 3.2 Agenci w systemach rozproszonych
- 3.3 Agenci w modelowaniu systemów złożonych
- 4 Podstawowe zalety i wady systemów agentowych
- 4.1 Zalety
- 4.2 Krytyka podejścia agentowego
- 4.3 Odpowiedzi na krytykę
- 5 Agenci w tworzeniu oprogramowania
- 6 Istniejące otoczenia agentowe
- 6.1 Java
- 6.2 Tworzenie agentów na odległość
- 6.3 Przemieszczalność obiektów
- 6.4 Klonowanie agentów
- 6.5 Przemieszczalność agentów
- 6.6 Mechanizmy komunikacji
- 6.7 Współpraca agentów
- 6.8 Usuwanie śmieci (ang. garbage collection)
- 7 Uwagi końcowe
- Bibliografia
1 Wprowadzenie#
Powstaje więc pytanie, dlaczego istnieje tak niewiele systemów składających się z inteligentnych agentów programowych i co można zrobić, aby sytuacja ta uległa zmianie. Wprawdzie istnieje bardzo wiele możliwych zastosowań agentów (i niektóre z nich zostaną wymienione w sekcji 3), ale w kontekście tej pracy interesuje nas głównie wykorzystanie ich do tworzenia oprogramowania. Naszym celem jest zarysowanie tematyki i pozostawienie czytelnikowi oceny, czy technologia agentowa jest przyszłością programowania. W tym celu postępować będziemy jak następuje. Zaczniemy od przedstawienia istniejących definicji i wybranych zastosowań inteligentnych agentów programowych. Następnie przedstawimy najczęściej wymieniane zalety i wady systemów agentowych. Stąd przejdziemy do omówienia pozytywnych tez Jenningsa [JEN2001] i krytyki Nwany i Ndumu [NWA1999]. Na zakończenie porównamy istotne dla tworzenia oprogramowania cechy czterech systemów agentowych: Aglets, Concordia, Grashopper i Voyager.
2 Definicja agenta programowego#
Definicja 1. Cokolwiek, co może być uznane jako obserwujące otoczenie poprzez sensory i działające w ramach tegoż otoczenia poprzez efektory (Russell i Norvig, 1995)[1].
Definicja 2. Jednostki programowe podejmujące działania w imieniu użytkownika lub innych programów, w pewnym stopniu niezależnie lub autonomicznie, które działając stosują pewną wiedzę lub reprezentację celów lub potrzeb użytkownika (IBM, 1997)[2].
Definicja 3. Zamknięty system komputerowy znajdujący się w pewnym otoczeniu, posiadający umiejętność elastycznego działania w tymże otoczeniu, działania polegającego wypełnieniu celów dla jakich został stworzony (Wooldridge, 1997)[3].
Definicja 4. Autonomiczny system znajdujący się w dynamicznym otoczeniu działający niezależnie od narzucanych przezeń ograniczeń i wypełniający w jego ramach zbiór celów lub poleceń, dla których został stworzony (Maes, 1998)[4].
Nawet pobieżna analiza powyższych definicji pokazuje, że wprawdzie istnieje pomiędzy nimi pewne podobieństwo, to są one w sposób istotny rozbieżne. Nie jest tylko przypadek wynikający z wyboru tych a nie innych definicji. Jak można się przekonać z pracy [GAL2001], jest to niestety sytuacja typowa. W [GAL2001] autorzy podsumowali literaturę dotyczącą systemów agentowych i ustalili, że nie istnieje jeden, ogólnie przyjęty model systemu agentowego. Mamy natomiast do czynienia z szeroką gamą cech przypisywanych agentom i systemom agentowym. W tabeli 1. prezentujemy zbiór wybranych cech, pochodzących tak z pracy [GAL2001] jak i z innych źródeł. Aby uniknąć nieporozumień w tłumaczeniu terminów angielsko-języcznych, dla każdej cechy podajemy również jej nazwę oryginalną.
| Cecha | Źródło | Cecha | Źródło |
| reaktywność | reactiveness | rozumowanie oparte o zgromadzoną wiedzę | reasoning based on collected knowledge |
| ukierunkowanie na osiąganie celów | goal orientation | Umiejętność przemieszczania się | mobility |
| Autonomia | Autosomy | bycie godnym zaufania | reliability |
| Umiejętność dostosowania | Adaptivity | oddziaływanie | Interactivity |
| umiejętność uczenia | learning ability | umiejętność przewidywania | Proactivity |
| umiejętność porozumiewania się | ability to communicate | umiejętność rozumowania | capacity for reasoning |
| umiejętność współdziałania | capacity for cooperation | inteligencja | intelligence |
Podsumowując, wszystko wskazuje na to, że teoria i praktyka inteligentnych agentów programowych okazuje się nie być dziedziną okrzepłą na tyle, aby wypracować powszechnie akceptowalną terminologię. Ponadto warto dodać, że nie istnieje również ogólnie przyjęta typologia agentów i systemów agentowych (np. ze względu na ich zastosowania czy też inne cechy). Biorąc to pod uwagę, pozostawimy nasze rozumienie agentów programowych na poziomie intuicyjnym i bazowanym na powszechnie znanych przykładach agentów, takich jak agenci ubezpieczeniowi, czy też agenci turystyczni. Tak więc jako agenta będziemy rozumieli oprogramowanie, które jest w jakimś stopniu autonomiczne, reprezentuje czyjeś interesy (użytkownika lub innego oprogramowania – w tym innych agentów) i oddziałuje z otoczeniem i/lub innymi agentami.
3 Zastosowania agentów programowych#
3.1 Agenci w zarządzaniu informacją#
Zarządzanie pocztą elektroniczną. Agenci tego typu mają za zadanie kompleksowe zarządzanie nadchodzącą poczta elektroniczną. W tym, na przykład, sortowanie jej do folderów, nadawanie priorytetów, automatyczne odpowiedzi na rutynowe zapytania itp.
Zarządzanie organizacją dnia. Zadaniem tego typu agentów jest organizacja dnia użytkownika. Są one odpowiedzią na wzrastającą liczbę zadań i zebrań (zwłaszcza w przypadku managerów wszystkich szczebli). Ich celem jest m.in. negocjowanie z agentami reprezentującymi pozostałych uczestników planowanego zebrania, kiedy może się ono odbyć (kiedy wszyscy mają „wolny” czas).
Indywidualizowane dostarczanie informacji. Agenci tej grupy stanowić mają odpowiedź na wzrastającą geometrycznie ilość dostępnej w sieci informacji. Mają one filtrować informację w taki sposób, aby dostarczona została kompletna, wymagana informacja i tylko potrzebna informacja. Agenci tego typu, w celu osiągnięcia stawianych przed nimi celów, współpracować mogą z agentami poszukującymi i przeglądającymi (sekcja 3.2).
Agenci monitorujący lub zarządzający. Jest to klasa agentów, których zadaniem jest monitorowanie zjawiska i ew. podejmowanie działań w imieniu użytkownika. Prostym agentem (monitorującym) będzie agent śledzący ceny akcji i informujący użytkownika w momencie wystąpienia oczekiwanego zdarzenia (np. cena akcji BRE osiągnęła poziom 141.00 PLN). Agent zarządzający natomiast będzie nie tylko obserwował ceny akcji, ale również dokona zakupu (lub sprzedaży) akcji, kiedy osiągnięty zostanie wymagana cena.
3.2 Agenci w systemach rozproszonych#
Agenci przeszukujący Internet. Ich zadanie polega na przeszukiwaniu Internetu w celu odnalezienia informacji, która może być przydatna dla użytkownika. W oczywisty sposób są bardzo podobni do agentów poszukujących z tą różnicą, że agenci poszukujący mają zwykle za zadanie odnalezienie ściśle określonej informacji, a agenci przeszukujący mają za zadanie odkrycie różnorodnej przydatnej informacji. Podobnie jak poprzednio, jest to rodzaj agenta, który może być wywołany i wydelegowany przez agenta „osobistego”.
Agenci e-biznesu i m-biznesu. Są to agenci, których zadania związane są z różnorodnymi funkcjami systemów handlu Internetowego. Należą do tej kategorii na przykład agenci poszukujący najlepszej ceny towaru (a więc mogą do tej kategorii należeć również wybrani agenci poszukujący), agenci negocjujący cenę zakupów czy też agenci zarządzający zawartością magazynów. Choć bardzo podobne, funkcje niektórych agentów wspomagających systemy handlu Internetowego działające w środowisku składającym się z komputerów przyłączonych bezpośrednio do sieci (e-biznes) różnią się od agentów wspomagających funkcje bazowane na urządzeniach mobilnych (m-biznes). Różnice te wynikają z faktu, że urządzanie mobilne może być odłączone od sieci przez pewien nieokreślony czas. Równocześnie jakość połączenia może być bardzo zła a transmisja danych bardzo powolna.
Agenci zarządzający siecią. Jest to bardzo liczny zbiór agentów, których rola polega na wykonywaniu różnych funkcji związanych z zarządzaniem komputerami połączonymi w sieć. Może to być na przykład zarządzanie aktualizacją oprogramowania, wykrywanie ataków czy też optymalizacja przepływu informacji.
3.3 Agenci w modelowaniu systemów złożonych#
Agenci modelujący zachowania w czasie negocjacji cenowych. W tym przypadku agenci reprezentują różnorodne strategie składania zleceń i używani są jako narzędzia wspomagające modelowanie rzeczywistych zachowań uczestników licytacji. Celem jest zarówno odkrycie nowych strategii licytacji jak i opracowanie nowych klas agentów, którzy będą w stanie autonomicznie reprezentować klientów w handlu elektronicznym.
Agenci modelujący proces zarządzania produkcją. Celem badań jest opracowanie skutecznych strategii zarządzania kompleksową strukturą przedsiębiorstwa. Długoplanowym zadaniem jest stworzenie infrastruktury agentowej wspomagającej zarządzanie i/lub będącej w stanie przejąć autonomiczną kontrolę nad procesami biznesowymi mającymi miejsce w przedsiębiorstwie.
Istnieją też zastosowania agentów, które mają na celu modelowanie skomplikowanych procesów społecznych i biologicznych. Możemy więc mieć do czynienia na przykład z modelami, w których agenci wyposażeni są w przekonania i cele i muszą współpracować, aby osiągnąć wyznaczony cel.
W kontekście tego artykułu jesteśmy zainteresowani głównie zastosowaniem agentów jako metodologii tworzenia oprogramowania, a więc wybranymi agentami z sekcji 3.1 i 3.2. Przedstawimy teraz najczęściej wymieniane zalety i wady systemów agentowych tego typu.
4 Podstawowe zalety i wady systemów agentowych#
4.1 Zalety#
Inny argument przemawiający za technologiami agentowymi oparty jest na obserwacji, że systemy agentowe składać się mają z inteligentnych i posiadających zdolność uczenia się (adaptacji) elementów. W dodatku elementy te będą w stanie komunikować się ze sobą, a więc wymieniać doświadczenia i dzięki temu w dodatkowy sposób wspomagać ewolucję systemu mającą na celu dostosowanie do środowiska. Stąd to właśnie systemy agentowe stanowią najlepszą możliwą platformę do budowy inteligentnych systemów adaptacyjnych.
Zauważmy również, że użytkownicy systemów komputerowych stają się coraz bardziej mobilni i konieczne jest stworzenie oprogramowania, które będzie również mobilne. Mówi się więc, że to właśnie mobilne systemy agentowe są najlepszą platformą wspomagania mobilnych użytkowników. Fakt ten jest szczególnie widoczny w przypadku tworzenia oprogramowania wspomagającego podróżnych (np. Internetową agencję turystyczną, gdzie personalni agenci turystyczni mogą przemieszczać się wraz z podróżniczką).
Ostatni argument jest najbardziej istotny w kontekście tej pracy. Twierdzi się, że systemy agentowe mogą stać się nową metodologią tworzenia oprogramowania. Szczegóły tego rozumowania omówione zostaną w sekcji 5.
Poza argumentami bazującymi na konieczności dokonania zasadniczych zmian w różnych aspektach tworzenia oprogramowania i dowodzącymi, że to technologie agentowe są najlepszym rozwiązaniem, systemy agentowe mają wiele pomniejszych zalet. Po pierwsze, weźmy pod uwagę systemy, w których skład wchodzą agenci mobilni, czyli tacy, którzy mogą przemieszczać się pomiędzy komputerami. Łatwo wówczas zauważyć, że umożliwia to znacznie lepsze wykorzystanie dostępnych zasobów. Jeśli dany komputer nie posiada dostatecznej mocy obliczeniowej, to agent mobilny może się przemieścić na inny komputer i tam dokończyć przetwarzanie informacji. Możliwym jest też na przykład utworzenie kopii agenta (klonowanie) i rozesłanie ich do innych komputerów w sieci, w celu dokończenia podzielonych na mniejsze części obliczeń. Zwróćmy tutaj uwagę na fakt, że jest to podejście bardzo zbliżone i komplementarne do tak popularnych ostatnio obliczeń gridowych (ang. grid computing). Po drugie, systemy agentowe z minimalną choćby autonomią agentów wpasowują się naturalnie w krajobraz wypełniony urządzeniami mobilnymi, których połączenie z siecią jest krótkotrwałe, powolne lub złej jakości. W tym przypadku naturalnym jest lokalne uruchomienie agenta, który następnie migruje do sieci i podejmuje działania w czasie, gdy lokalne urządzenie zostaje odłączone (zauważmy, że agent może być niewielkich rozmiarów, co ułatwia przesłanie, natomiast zasoby konieczne do wykonania zadania dostępne będą „w sieci”). Warto również zaobserwować, że podejście to umożliwia zaoszczędzenie baterii urządzeń mobilnych i częściowo uniezależnia system od tymczasowego braku dostępu do sieci. Po trzecie, jedną z podstawowych funkcji systemów agentowych jest możliwość tworzenia kopii agentów, co ułatwia wprowadzenie redundancji do systemu, a tym samym ograniczenie jego zawodności.
Należy tutaj zaznaczyć, że w literaturze przedmiotu wymienianych jest wiele zalet podejścia agentowego i nie jest celem tego artykułu wymienienie wszystkich. Natomiast jest również znanym fakt, że systemy agentowe nie pozostają bez krytyki. Przedstawimy teraz kilka bardziej popularnych krytyk podejścia agentowego.
4.2 Krytyka podejścia agentowego#
Są również tacy, którzy zwracają uwagę na fakt, że systemy agentowe jako idea istnieją już bardzo długo, a intensywne badania nad nimi trwają przynajmniej od początku lat 90-tych. Biorąc to pod uwagę trudno jest zrozumieć fakt, że do tej pory nie ma znaczących implementacji systemów agentowych. Wskazywać to może na istnienie istotnych problemów z samym podejściem i oznaczać, że wiara w zbawienne skutki technologii agentowych jest tylko tymczasową modą, która z czasem zaniknie (jak wiele innych mód, od których świat informatyki nie jest wolny).
Jeszcze inna krytyka powraca do głównego wątku zarysowanego w sekcji 2. i ma swoje źródło głównie w kręgach badaczy reprezentujących teoretyczne podejście do informatyki. Wskazują oni na fakt, że teoria systemów agentowych przez prawie 20 lat nie była w stanie wypracować precyzyjnej definicji agenta programowego i systemów agentowych. Dla tychże badaczy stanowi to dowód na istnienie istotnych problemów z dyscypliną jako taką.
Jedną z bardziej pragmatycznych krytyk jest zwrócenie uwagi na istotne problemy z bezpieczeństwem, które mają swoje źródło w zastosowaniu technologii agentowej. Łatwo jest zauważyć, że agent to potencjalny mobilny koń trojański mogący odwiedzić wiele komputerów. Agent to też reprezentant użytkownika. Jako taki zawiera on istotne informacje o jego preferencjach (informacje, które są konieczne, aby być w stanie tegoż użytkownika reprezentować). Stąd konieczne jest stworzenie mechanizmów chroniących komputery przed agentami (a zauważmy, że agenci, będąc w stanie się powielać i odwiedzając komputery połączone mogą w bardzo prosty sposób stać się wirusami lub być ich nosicielami), agentów przed komputerami, które odwiedzają, agentów przed innymi agentami mającymi na celu uzyskanie informacji o ich zawartości, jak również komunikację pomiędzy agentami reprezentującymi danego użytkownika. Konieczność utworzenia skutecznych mechanizmów zabezpieczających wszystkie powyższe aspekty technologii agentowej czyni ją znacznie mniej atrakcyjną.
Na zakończenie warto wspomnieć o dosyć powszechnym problemie związanym z popularnością technologii agentowej. Pobieżne zapoznanie się z istniejącą literaturą jak i tekstami nadsyłanymi na konferencje wskazuje, że badacze umieszczają agentów w scenariuszach, które zupełnie takowych nie wymagają. Zwiększa to poczucie, że technologie agentowe są w rzeczywistości tylko modą, która przeminie.
4.3 Odpowiedzi na krytykę#
Oczywistym jest, że w relatywnie młodej i aktywnie rozwijającej się dziedzinie będzie wiele projektów badawczych starających się wykorzystać panującą modę. Z czasem projekty te zostaną wyeliminowane w procesie naturalnej selekcji. Stan aktualny wielu dziedzin informatyki pokazuje też, że możliwym jest prowadzenie badań, projektowanie i implementowanie systemów, bez precyzyjnych definicji. Czas na precyzyjne definicje nastąpi w sposób naturalny wraz z rozwojem dyscypliny.
Problemy związane z bezpieczeństwem różnorodnych aspektów systemów agentowych nie różnią się zasadniczo od konieczności zapewnienia bezpieczeństwa systemom opartym o inne technologie. Tak więc ten aspekt technologii agentowej, podobnie jak podobieństwo agentów do wirusów, nie powinny stanowić zasadniczej przeszkody w rozwoju systemów agentowych.
Wprawdzie rzeczywiście jest tak, że wszystko to co można zaimplementować w ramach systemu agentowego może być zaimplementowane w inny sposób, ale jest to sytuacja podobna do faktu, że wszystko to co można zaprogramować w Fortranie można też zaprogramować w asemblerze. To co jest istotne to fakt, że technologia agentowa może stanowić zunifikowane podejście do tworzenia oprogramowania. W podobny sposób jak technologia obiektowa zastępuje programowanie w językach takich jak Fortran czy C, tak programowanie agentowe może w przyszłości zastąpić programowanie obiektowe.
Na zakończenie zauważmy, że tworzenie systemów agentowych jest związane z two-rzeniem oprogramowania dla bardzo skomplikowanych systemów i wymaga zapewnienia współpracy pomiędzy technologiami, które były tworzone niezależnie od siebie i w związku z tym w chwili obecnej nie są przygotowane do współpracy. Ponadto systemy takie zawierają elementy pochodzące z bardzo wielu dziedzin. Dla przykładu weźmy pod uwagę tworzenie oprogramowania dla Internetowej agencji turystycznej [ANG2002]. W tym przypadku konieczna jest integracja teorii, narzędzi i technologii pochodzących z następujących dziedzin (poniższa lista nie jest wyczerpująca ale skutecznie reprezentuje wielostronność problemu):
- marketing i personalizacja,
- zarządzanie wiedzą,
- systemy czasu rzeczywistego,
- zarządzanie rozproszonymi zasobami,
- systemy ekspertowe,
- komunikacja człowiek-komputer,
- ontologie i ich zastosowanie,
- uczenie maszynowe,
- systemy rozproszone,
- odkrywanie wiedzy,
- zarządzanie i komunikacja w sieci
- filtrowanie informacji ze źródeł nieustrukturalizowanych.
To właśnie poziom komplikacji zadania stojącego przed twórcami oprogramowania bazowanego na systemach agentowych jest, być może, jedną z głównych przyczyn tego, że w chwili obecnej istnieje tylko niewiele zaimplementowanych systemów testowych.
5 Agenci w tworzeniu oprogramowania #
Zakładając prawdziwość argumentu przedstawionego przez Jenningsa, powraca pytanie: dlaczego istnieje tak niewiele systemów opartych o technologie agentowe? Wydaje się, że jedna z możliwych odpowiedzi znajduje się w pracy Nwany i Ndumu [NWA1999]. Zanim przedstawimy ich krytykę podejścia do tworzenia oprogramowania przy pomocy agentów programowych warto zwrócić uwagę na kilka faktów. (1) Po opublikowaniu w 2001 r. pracy [JEN2001], Jennings zajął się badaniami nad teorią i praktyką oprogramowania dla agentów prowadzących negocjacje cenowe (sekcja 3.3) i nie powrócił już do teorii systemów agentowych jako metodologii tworzenia oprogramowania. (2) Pisząc artykuł w roku 2000, Jennings powinien był znać tekst Nwany i Ndumu, ale całkowicie go pomija (co może być związane z wysoce krytycznym i czasami wręcz obraźliwym tonem tejże publikacji). (3) Nwana i Ndumu, jako badacze zatrudnieni przez British Telecom, pracowali nad implementacją systemów agentowych (m.in. Internetowej agencji turystycznej), są więc praktykami zastosowań technologii agentowych i stąd różnice w doświadczeniach jak i podejściu do tematu. Naszkicujmy więc najważniejsze problemy wymienione w ich artykule.
- Problem odkrywania informacji – jaka informacja jest konieczna dla funkcjonowania systemu, gdzie się ona znajduje i jak umożliwić nieprzerwany dostęp do danych, których reprezentacja ciągle się zmienia (np. strony WWW są modyfikowane i w związku z tym informacja, która była dostępna w pewnym miejscu może być już w nim niedostępna, a dostępna na „sąsiedniej stronie”).
- Problem komunikacji – jak sprawić, aby systemy były w stanie komunikować się ze sobą; na przykład w jaki sposób agenci mają komunikować się z dostawcami informacji, gdy każda z tych informacji może być w innej formie i nie istnieje ściśle określony standard komunikacji.
- Problem ontologii – jak sprawić, aby różne systemy: agenci komunikujący się z agentami jak i agenci oddziałujący z różnorodnymi źródłami informacji, rozumiały się nawzajem na poziomie semantycznym.
- Problem długowiecznego oprogramowania (ang. legacy software) – jak sprawić, aby agenci programowi byli w stanie komunikować się z systemami, które powstały jako samoistne jednostki i nie mają wbudowanych mechanizmów współpracy z innym oprogramowaniem (poza narzędziami współpracy ze ściśle określonymi partnerami; np. system rezerwacji SABRE, który w celu maksymalizacji przepustowości jest w dużej części oprogramowany w asemblerze).
- Problem rozumowania – w jaki sposób agenci mają przetwarzać uzyskane z Internetu dane, aby wykorzystać je w celu, dla którego zostały pozyskane.
- Problem monitorowania – jest to problem specyficzny dla systemów wspomagania podróżnych i jako taki ma najmniejszą wagę. Jeśli podróżny ma udać się za miesiąc do Chin, system powinien śledzić wydarzenia na świecie i na przykład poinformować klienta o strajku kontrolerów lotniczych w Paryżu, który to strajk może uniemożliwić podróż.
Zauważmy, po pierwsze, że problemy przedstawione powyżej są znacznie bardziej praktyczne niż problemy omówione w sekcji 4.2. Po drugie, gdy Nwana i Ndumu opublikowali tekst w roku 1999 ich argumenty były oparte o analizę problemów związanych z budową Internetowych agencji turystycznych opartych o technologię agentową. Agencje takie nie tylko nie istniały wówczas, ale nadal nie powstały. Gdy w roku 2001 przeszukaliśmy Internet, to znaleźliśmy 8 niedokończonych projektów i 3 systemy testowe o minimalnej użyteczności. Co więcej, do dzisiaj nie natrafiliśmy na projekt, który byłby sukcesem, pomimo istnienia wieloletnich projektów badawczych fundowanych z grantów Unii Europejskiej. Wskazywać to może na fakt, że problemy przez nich wymienione nie są wcale trywialne.
Można więc powiedzieć, że nawet jeśli problemy postawione przez Nwane i Ndumu wydawać się mogą proste do rozwiązania (większość z nich jest w chwili obecnej w centrum intensywnych badań prowadzonych w wielu ośrodkach naukowych), to jednak ich główna teza, że jest jeszcze bardzo daleko do momentu kiedy będziemy w stanie tworzyć oprogramowanie przy pomocy technologii agentowych, pozostaje w mocy. Być może problem, na który oni wskazują jest inną wersją problemu, który został zarysowany w sekcji 4.3. Nie jest rzeczą skomplikowaną znalezienie pewnego rozwiązania wybranej części jednego z problemów postawionych przez Nwanę i Ndumu. To co jest potrzebne, to całościowe i skuteczne rozwiązanie najważniejszych aspektów wszystkich powyższych problemów. To z kolei oznacza konieczność stworzenia oprogramowania, którego źródła znajdą się w wielu dyscyplinach będących częścią informatyki, zarządzania i marketingu. I to właśnie owa niezbędna multidyscyplinarność rozwiązania stanowi najtrudniejszy do rozwiązania problem.
6 Istniejące otoczenia agentowe #
Zakładając, że podejście sugerowane przez Nwanę i Ndumu jest słuszne i istotnym jest implementacja oprogramowania opartego o technologię agentową, powstaje pytanie: jakie narzędzia dostępne są dla tworzenia takowego oprogramowania. W chwili obecnej istnieje ponad 80 systemów tworzenia oprogramowania agentowego [ALT2001] a kolejne są nieustannie tworzone. Tak więc, zamiast koncentrować się na najnowszych systemach, porównamy cztery popularne systemy agentowe z punktu widzenia aspektów istotnych dla inżynierii oprogramowania. Te cztery systemy to: Aglets (IBM), Concordia (Mitsubishi), Grasshopper (IKV), Voyager (Object Space). Porównanie to pozwoli nam na zaobserwowanie różnic pomiędzy systemami agentowymi. Materiał przedstawiony poniżej oparty jest o dokumentację i bardzo ograniczoną liczbę eksperymentów i nie powinien być traktowany jako ostateczny wyznacznik zachowania danego systemu. Równocześnie możliwym jest, że w najnowszych wersjach oprogramowania nastąpiły zmiany powodujące, że część z poniższych stwierdzeń jest już nieprawdziwa. Wydaje się, że nawet jeśli tak się stało, nie obniża to wartości poznawczej poniższego porównania.
6.1 Java#
6.2 Tworzenie agentów na odległość #
6.3 Przemieszczalność obiektów#
6.4 Klonowanie agentów#
6.5 Przemieszczalność agentów#
6.6 Mechanizmy komunikacji#
6.7 Współpraca agentów#
6.8 Usuwanie śmieci (ang. garbage collection)#
7 Uwagi końcowe#
Bibliografia#
| [ALT2001] | J. Altmann, F. Gruber, L. Klug, W. Stockner i E. Weippl, Using Mobile Agents in real World: A Survey and Evaluation of Agent Platforms, Proceedings of the Second International Workshop on “Infrastructure for MAS, and Scalable MAS,”, Montreal, Canada , May 28 – June 01 2001. |
| [ANG2002] | R. Angryk, V. Galant i M. Paprzycki, Travel Support System – an Agent-Based Framework, Proceedings of the International Conference on Internet Computing (IC’02), CSREA Press, Las Vegas , 2002, 719-725. |
| [TBL2001] | T. Berners-Lee, J. Hendler i O. Lassila, The Semantic Web Scientific American, May 2001, http://www.sciam.com/article.cfm?articleID=00048144-10D2-1C70-84A9809EC588EF21. |
| [BOO1994] | G. Booth, Object--oriented Analysis and Design with Applications, Addison Wesley, 1994. |
| [BRE1998] | W. Brenner, R. Zarnekow, H. Wittig i C. Schulbert, Intelligent Software Agents, Springer-Verlag, 1998. |
| [GAL2001] | V. Galant i J. Tubyrcy, Inteligentny Agent Programowy, Prace Naukowe AE Wrocław, 2001, 45-57. |
| [GRI1999] | M.L. Griss, My Agent Will Call Your Agent … But Will It Respond?, Hewlett Packard, 1999, http://www.hpl.hp.com/techreports/1999/HPL-1999-159.pdf. |
| [JEN2001] | N.R. Jennings, An agent-based approach for building complex software systems, Communications of the ACM, 44(4), 2001, 35-41. |
| [HEN1999] | J. Hendler, Is There an Intelligent Agent in Your Future?, Nature, 11, March 1999. |
| [LIU2001] | J. Liu, Autonomous Agents and Multi-agent Systems, World Scientific, 2001. |
| [MAE1994] | P. Maes, that Reduce Work and Information Overload, Communications of the ACM, 37(7), 1994, 31-40. |
| [NWA1999] | H. Nwana i D. Ndumu, A Perspective on Software Agents Research, The Knowledge Engineering Review, 14(0), 1999, 1-18. |
[#1] Anything that can be viewed as perceiving its environment through sensors and acting upon that environment through effectors (Russell and Norvig, 1995)
[#2] Software entities that carry out some set of operations on behalf of a user or another program with some degree of independence or autonomy, and in so doing, employ some knowledge or representation of the user’s goals or desires (IBM, 1997)
[#3] An encapsulated computer system that is situated in some environment and that is capable of flexible action in that environment in order to meet its design objectives (Wooldridge, 1997)
[#4] Autonomous system situated in a dynamical environment acting independently of its restrictions and fulfilling in it a set of goals or directives for which it was created (Maes, 1998)

