REALIZACJA AGENTÓW OPROGRAMOWANIA Z WYKORZYSTANIEM ŚRODOWISKA JAVA Stanisław Stanek Małgorzata Pańkowska Mariusz śytniewski Technologia agentowa dla wspomagania procesów zarządzania Technologia agentów rozpoczęła nowy rozwój sztucznej inteligencji. Jej efektywne zastosowania obserwowane są w sferze zarządzania organizacjami społeczno-gospodarczymi. Systemy agentowe nadają się do rozwiązywania tych problemów, dla których charakterystyczna jest mnogość niezaleŝnych rozproszonych podmiotów decyzyjnych funkcjonujących w zdecentralizowanych strukturach zarządzania oraz róŝnorodność stosowanych jednocześnie podejść i metod podejmowania decyzji. Obecnie większość programów agentowych dla zastosowań w przedsiębiorstwa to agenci Internetu; przedsiębiorstwo dodaje agenta do swej strony internetowej odpowiednio nasyconej wiedzą gospodarczą i odzwierciedlającej specyfikę przedsiębiorstwa. Przedsiębiorstwa, odnoszące korzyści dzięki technologii agentowej to przykładowo: Brokerzy informacji społeczno-gospodarczej i dystrybutorzy usług dostępnych online w Internecie. Technologia agentowa wspomaga procesy filtracji i dystrybucji informacji skierowanej odpowiednio do jednorazowych odbiorców jak i do subskrybentów zgodnie z ich profilem i wzorcami informacji. Przedsiębiorstwa wdraŝające systemy intranetu celem informowania pracowników na temat: konkurentów, nowości branŝowych, rozwoju produktów, zmian w wewnętrznych regulacjach organizacyjno-prawnych. Osoby fizyczne i przedsiębiorstwa zaangaŝowane w procesy rozproszonego grupowego podejmowania decyzji (aukcje, negocjacje, giełdy, konkursy, przetargi).
TECHNOLOGIE INTERNETOWE I SYSTEMY E-BIZNESU Sprzedawcy produktów kreujący trwałe relacje z klientami przez informowanie o nowych produktach, aktualizacjach, uzupełnieniach i dystrybuowanej dokumentacji przygotowanej według profilu uŝytkownika. Przedsiębiorstwo to organizacja jednostek z załoŝenia pracujących razem dla osiągnięcia pewnych wspólnych celów. Oprogramowanie dla przedsiębiorstw podlega ciągłej ewolucji w pogoni za zapewnieniem coraz efektywniejszego działania przedsiębiorstwa. W literaturze występuje wiele definicji architektury oprogramowania przedsiębiorstwa. Zgodnie z definicją Zamana architektura oprogramowania to struktura lub struktury systemu, obejmujące komponenty oprogramowania, zewnętrznie widoczne własności tych komponentów, oraz relacje między nimi [ZAMA01]. Współcześnie kluczowe koncepcje Architektury Oprogramowania Przedsiębiorstwa (Enterprise Application Architecture) dotyczą stosowania dekompozycji systemu oprogramowania, komponentów, zrębów (frameworks), wzorców (patterns), warstw (tiers). Patrząc z historycznej perspektywy rozwoju oprogramowania naleŝy zwrócić uwagę na dominację przez wiele lat jednowarstwowej architektury oprogramowania, potem pojawiła się dwuwarstwowa, a obecnie proponowana jest architektura wielowarstwowa. Zastosowanie n-warstwowej architektury oprogramowania pozwala osiągnąć lepszą równowagę ogólną przez rozdzielenie logiki prezentacji od logiki biznesowej i logiki biznesowej od danych podstawowych. Termin n-warstwowa ( w przeciwieństwie do trzy-warstwowej) jest reprezentatywny wobec faktu, iŝ oprogramowanie nie jest ograniczone tylko do trzech warstw, moŝe być i rzeczywiście jest zorganizowane na wiele warstw dla zaspokojenia specyficznych potrzeb. Java 2 Platform, Enterprise Edition firmy Sun Microsystem czyli platforma J2EE zbudowana w języku programowania Java jest architekturą aplikacji, która dobrze pasuje do rozproszonego środowiska przedsiębiorstwa. J2EE wykorzystuje wyŝej wymienione kluczowe koncepcje nowoczesnej Architektury Oprogramowania Przedsiębiorstwa. Warstwy + komponenty + usługi to kluczowe elementy istotne dla zrozumienia architektury J2EE [ZAMA01, DEEP00]. Architektura J2EE jest architekturą wielowarstwową (por. rys 1). 249
ROZDZIAŁ II Warstwa kliencka Warstwa pośrednia KLIENT KLIENT Kontener EJB EIS SZBD, ERP, Aplikacje KLIENT KLIENT KontenerWE B (Servlety, JSP,HTML, XML) JNDI, JMS, JavaMail Warstwa EIS Rys. 1. Otoczenie J2EE Źródło: Opracowane własne na podstawie [KASS00] J2EE ułatwia komponentyzację na wiele sposobów tzn.: Obowiązuje zasada Zapisz Raz, Uruchom Gdziekolwiek stosowana dla rozwoju komponentów dla zróŝnicowanego zbioru systemów sprzętowych i systemów operacyjnych. J2EE oferuje dobrze zdefiniowane podejście celem rozdzielenia rozwoju komponentów od ich składania w całości i wdraŝania. Komponenty rozwijane niezaleŝnie mogą być rzeczywiście zintegrowane w nowe środowisko i w aplikacje. J2EE oferuje szeroki zakres interfejsów Application Programming Interfaces (APIs), które mogą być stosowane dla udostępniania i integrowania produktów dostarczonych przez dostawców. J2EE oferuje specjalizowane komponenty, które są optymalizowane dla szczególnych typów ról w aplikacji przedsiębiorstwa (por [ZAMA01]). Charakterystyki systemu agentowego Aby dany program moŝna było określać mianem agenta lub systemu wieloagentowego spełnione muszą zostać podstawowe postulaty związane z jego własnościami jako autonomicznej jednostki. Własności te obejmują: zdolność percepcji zmian w otoczeniu i reakcja na nie, autonomię i skłonność do kooperacji, moŝliwość wnioskowania, nieustanne uczenia się, manifestowanie emocji, adaptowalność, mobilność [LMWM00, BRAD97]. 250
TECHNOLOGIE INTERNETOWE I SYSTEMY E-BIZNESU W praktycznych zastosowaniach agent dysponuje ograniczonym zestawem własności, gdyŝ duŝa ilość cech nastręczałaby wiele problemów i z punktu widzenia samego systemu byłaby skomplikowana i częstokroć nie potrzebna. Dlatego teŝ zamiast budować jednego agenta o duŝym zakresie funkcjonalnym, w praktyce tworzy się wiele wyspecjalizowanych jednostek współpracujących ze sobą. Systemy, w których istnieje moŝliwość współdziałania wielu agentów nazywane są systemami wieloagentowymi. W systemach tych na podstawie zaimplementowanych standardów wymiany informacji agenci porozumiewając się sobą, mogą rozwiązywać skomplikowane zadania.. Aby to zapewnić niezbędne jest określenie standardów komunikacji miedzy nimi. Przykładem takiego standardu jest model FIPA (Foundation for Intelligent Physical Agents). Celem budowy modelu FIPA jest definiowanie sposobu tworzenia, rejestracji, lokalizacji, komunikacji, migracji oraz usuwania agentów (por rys 2).NaleŜy tutaj zaznaczyć, iŝ FIPA nie określa rozwiązań technologicznych. Zadaniem implementacji przygotowanych przez nią standardów zajmują się twórcy oprogramowania. 251
ROZDZIAŁ II Nazwa komponentu Agent Katalog Usług (Directory Facilitator) System Zarzadzania Agentami (Agent Management System) System Transportu Wiadomosci (Message Transport Service) Platforma Agentowa (Agent Platform) Opis komponentu Posiadający cechy przedstawione w poprzednim rozdziale, komunikujący się z innymi za pomocą języka ACL (Agent Communication Language). KaŜdy agent powinien być jednoznacznie identyfikowalny poprzez jego identyfikator AID według specyfikacji FIPA. Opcjonalny komponent, którego zadaniem jest zapewnienie agentom moŝliwości sprawdzania, jakie usługi są oferowane przez innych agentów. Agenci mają moŝliwość rejestrować swoje usługi, które stają się dostępne dla innych agentów. Stosuje administracyjną kontrolę nad dostępem i uŝytkowaniem AP. Pozwala on na tworzenie agentów, ich usuwanie oraz migracje do innych platform. Podstawowa metoda komunikacji między agentami. Platforma budowy agentów. Określa elementy tj. maszyny, systemy operacyjne, oprogramowanie wspierające agentów, komponenty FIPA przedstawione poprzednio oraz samych agentów Rys. 2. Model referencyjny FIPA NaleŜy pamiętać, iŝ głównym zadaniem FIPA jest zapewnienie standardu komunikacji między agentami znajdującymi się na Platformie Agendowej, jak i poza nią. 252
TECHNOLOGIE INTERNETOWE I SYSTEMY E-BIZNESU Implementacja metod podejmowania decyzji w systemach agentowych moŝe być zrealizowane przez samego twórcę systemu lub wykorzystywać gotowe rozwiązania. W przypadku systemów agentowych procesy decyzyjne agentów realizowane mogą być poprzez róŝnorodne mechanizmy wnioskowania jak np. wnioskowanie regułowe, wnioskowanie na podstawie zbiorów rozmytych, sieci neuronowych. Systemy takie stosować mogą takŝe modele hybrydowe. W przypadku języka JAVA na rynku odnaleźć wiele systemów wykorzystujących róŝnorodne mechanizmy wnioskowania. Zaliczymy do niech Protege 2000 który opracowany został przez Stanford University i będący platformą do budowy i edycji ontologii oraz zarządzania wiedzą (http://protege.stanford.edu/). JESS (Java Expert System Shell), który został napisany przez Ernesta Friedmana- Hilla w Sandina National Laboratories w Kanadzie [JESS04] i opiera się o język JAVA. Zaletą JESS jest moŝliwość jego rozszerzania jak i zastosowania razem z innymi systemami.. JESS jest systemem opierającym się o metody wnioskowania regułowego jednakŝe, jeŝeli funkcjonalność JESS jest nie wystarczająca moŝna w jego ramach zastosować logiki rozmyte za pomocą FuzzyJESS. Fuzzy- JESS a pozwala takŝe na zastosowanie innych metod wnioskowania jak ANN (Artificial Neural Network), BBN (Bayesian Belief Network), CBR (Case- Based-Reasoning) oraz GA (Genetic Algorithm). (http://herzberg.ca.sandia.gov/ jess/) Syntaktyka składni JESS oparta została o język CLIPS. Wiedza w systemie moŝe być przedstawiana na trzy sposoby. Za pomocą reguł, funkcji lub języka obiektowego. W systemie JESS wyróŝnimy kilka podstawowych elementów, które mogą zostać wykorzystane przy budowaniu systemu ekspertowego wspomagającego pracę systemu agentowego. Zalicza się do nich fakty i reguły, zmienne, szablony, funkcje i moduły. Zastosowanie JESS oraz języka JAVA dla budowy systemów sztucznej inteligencji moŝe być dwojakie. Po pierwsze moŝna w ramach samego systemu ekspertowego odwoływać się do kodu JAVA. Takie zastosowanie pozwala w łatwy sposób budować interfejsy graficzne wspomagające pracę z systemem. Drugim sposobem implementacji systemu ekspertowego jest wykorzystanie dołączonych bibliotek bezpośrednio w kodzie JAVA. W przypadku tworzenia agentów interfejsu, moŝe to wspomagać dobór odpowiednich mimik lub wynikających z ograniczeń w otoczeniu zmian funkcjonalności. Rozwój koncepcji agentów oprogramowania idący wraz z rozwojem nowych technologii jak przedstawiona powyŝej koncepcja języka JAVA i platformy J2EE spowodowały, iŝ oprócz dedykowanych systemów wieloagentowych powstały róŝne rozwiązania platform pozwalających na budowę tychŝe systemów. Zaliczymy do niech JADEX będącą osnową, zrębem agenta (agent framework) który wspomaga moŝliwości wnioskowania przez wykorzystanie modelu BDI (Belief-Desire-Intention) łącząc to z językami oprogramowania takimi jak XML 253
ROZDZIAŁ II i Java [BrPL04]. (http://vsis-www.informatik.uni-hamburg.de/projects/jadex/) Drugą, opisywaną platformą jest JADE. JADE oprogramowanie wspomagające tworzenie systemów agentowych JADE (Java Agent Development Framework) stanowi platformę rozwoju systemów agentowych [JADE04]. JADE wykorzystuje model klienckich połączeń bezpośrednich (Peer-to-Peer Model P2P). Systemy agentowe są systemami P2P, kaŝdy agent jest węzłem, który potrzebuje komunikacji z innymi agentami jak teŝ jest w stanie dostarczyć informacji innym agentom. Rola komunikacji jest bardzo waŝna w systemach agentowych, model systemu agentowego jest oparty na trzech głównych cechach: Agenci są aktywnymi encjami luźno komunikującymi się ze sobą. Agenci realizują akcje i komunikacja jest właśnie pewnego rodzaju akcją. Komunikacja przenosi znaczenia semantyki, kiedy agent jest obiektem akcji komunikowania się (tzn. kiedy otrzymuje wiadomość). Agent musi umieć właściwie zrozumieć znaczenie akcji a w szczególności powinien wiedzieć, dlaczego ta akcja jest wykonana (tzn. jaka jest intencja komunikacji nadawcy wiadomości). JADE jest oprogramowaniem typu middleware rozwijanym przez TILAB w trybie open source dla rozwoju rozproszonych aplikacji wieloagentowych opartych na architekturze komunikacji P2P. Zarówno inteligencja, inicjatywa, informacja, zasoby i kontrola mogą być w pełni rozproszone na mobilne terminale, jak teŝ na komputery w stałej sieci. Komunikacja między węzłami, niezaleŝnie od tego czy są one uruchamiane na bezprzewodowej lub przewodowej sieci jest kompletnie symetryczna, przy czym kaŝdy węzeł moŝe odgrywać role inicjatora jak i odpowiadającego. JADE jest w pełni zbudowane w Java i jest oparte na zasadach tj. interoperatywność (interoperability), jednolitość (uniformity), przenośność (portability), łatwość uŝycia, filozofia pay-as-you-go. JADE obejmuje zarówno biblioteki (klasy Java) wymagane dla rozwoju agentów i środowisko uruchomieniowe (run-time environment), które zapewnia podstawowe usługi i które musi być aktywne na urządzeniu zanim agenci mogą być uruchomieni. Wnioski Przedstawione w opracowaniu koncepcje architektury języka JAVA wskazują na duŝe zalety, jakie niesie ze sobą zastosowanie obiektowości oraz koncepcje wielowarstwowości oprogramowania. Ich zastosowanie widoczne jest w tworzeniu oprogramowania dla przedsiębiorstw, jak i w budowie systemów wielo- 254
TECHNOLOGIE INTERNETOWE I SYSTEMY E-BIZNESU agentowych. Studia literatury i źródła internetowe wskazują, Ŝe istnieją uniwersalne platformy wieloagentowe pozwalające na budowę takich systemów. Dzięki ich zastosowaniu projektanci mogą skupić się na samej architekturze powiązań między agentami, definiować ich zachowania, zasady komunikacji bez potrzeby implementowania dostępnych standardów np. FIPA. Zastosowanie przedstawionych w referacie rozwiązań w działaniach przedsiębiorstw moŝe być róŝnorakie. Agenci mogą wykonywać zadania związane ze zbieraniem, filtrowaniem i przetwarzaniem informacji z róŝnych źródeł. Przykładem takiego właśnie agenta jest projekt ASSISO wspomagający obsługę mieszkańców przez Wydział Geodezji Urzędu Gminy [StPś05]. Literatura [BRAD97] Jeffrey M. Bradshaw.: An Introduction to Software Agents, Software agents. MIT Press, Cambridge, MA, 1997. [BrPL04] Braubach L., Pokahr A., Lamersdorf W.: Jadex: A Short Overview http://www.fipa.org, 2004. [DEEP00] Deepak A.: Core J2EE Patterns Best Practices and Design Strategies, Prentice Hall, Upper Saddle River, 2000. [JADE04] JADE: A JAVA-Based and FIPA Compliant Agent Platform http://jade.tilab.com/ 2004. [JESS04] JESSTM the Rule Engine for the JavaTM http://herzber.ca.sandia.gov/jess/index.shtml 2004 [LBWM00] Li Y., Benwell G., Whigham P., Mulgan N.: Agent-oriented software engineering paradigm and the design of a new generation of spatial information system, resented at SIRC 2000 The 12th Annual Colloquium of the Spatial Information. Research Centre University of Otago, Dunedin, New Zealand Dec. 10-13th 2000. [KASS00] Nicholas Kassem et al.: Designing Enterprise Applications with the JAVA 2 Platform. Enterprise Edition, 2000. [StPś05] Stanek S., Pańkowska M., śytniewski M.: Agent Technology for Adding Value in Public Administration, Proceedings of 8th International Conference on Technology Policy and Innovation Value added partnering in a changing world Łódź, 2005. [ZAMA01] Zaman A.K. : Developing Enterprise Java Applications with J2EE and UML. Addison Wesley. Indianapolis, 2001. 255