Zastosowanie Metod Formalnych do Specyfikacji oraz Weryfikacji Systemów Agentowych

Podobne dokumenty
Praktyczne metody weryfikacji

Systemy Agentowe główne cechy. Mariusz.Matuszek WETI PG

Efekt kształcenia. Ma uporządkowaną, podbudowaną teoretycznie wiedzę ogólną w zakresie algorytmów i ich złożoności obliczeniowej.

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

INFORMATYKA, TECHNOLOGIA INFORMACYJNA ORAZ INFORMATYKA W LOGISTYCE

EFEKTY KSZTAŁCENIA DLA KIERUNKU STUDIÓW

Komputerowe Systemy Przemysłowe: Modelowanie - UML. Arkadiusz Banasik arkadiusz.banasik@polsl.pl

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

zna metody matematyczne w zakresie niezbędnym do formalnego i ilościowego opisu, zrozumienia i modelowania problemów z różnych

Efekty kształcenia dla kierunku studiów INFORMATYKA, Absolwent studiów I stopnia kierunku Informatyka WIEDZA

Podstawy programowania. Wykład Funkcje. Krzysztof Banaś Podstawy programowania 1

1. Tabela odniesień efektów kierunkowych do efektów obszarowych z komentarzami. Kierunkowy efekt kształcenia - opis

Odniesienie do efektów kształcenia dla obszaru nauk EFEKTY KSZTAŁCENIA Symbol

PRZEWODNIK PO PRZEDMIOCIE

Definicje. Algorytm to:

Egzamin / zaliczenie na ocenę*

miejsca przejścia, łuki i żetony

Modelowanie jako sposób opisu rzeczywistości. Katedra Mikroelektroniki i Technik Informatycznych Politechnika Łódzka

Zagadnienia egzaminacyjne INFORMATYKA. Stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Algorytm. Krótka historia algorytmów

Metoda Tablic Semantycznych

KIERUNKOWE EFEKTY KSZTAŁCENIA KIERUNEK STUDIÓW INFORMATYCZNE TECHNIKI ZARZĄDZANIA

Podsumowanie wyników ankiety

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Sieci Petriego. Sieć Petriego

UCHWAŁA NR 71/2017 SENATU UNIWERSYTETU WROCŁAWSKIEGO z dnia 31 maja 2017 r.

Programowanie komputerów

APIO. W7 SPECYFIKACJA (UŻYCIA) DOSTĘPU DO DANYCH I SPOSOBU ICH PRZETWARZANIA 1. METODA CRUD 2. LOGIKA FUNKCJI

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

Podstawy Informatyki. Algorytmy i ich poprawność

Opis efektów kształcenia dla programu kształcenia (kierunkowe efekty kształcenia) WIEDZA. rozumie cywilizacyjne znaczenie matematyki i jej zastosowań

Grupy pytań na egzamin inżynierski na kierunku Informatyka

PRZEWODNIK PO PRZEDMIOCIE

PRZEWODNIK PO PRZEDMIOCIE

Proces badawczy schemat i zasady realizacji

Jacek Skorupski pok. 251 tel konsultacje: poniedziałek , sobota zjazdowa

Podstawy metodologiczne symulacji

Wykład Ćwiczenia Laboratorium Projekt Seminarium

Zagadnienia egzaminacyjne INFORMATYKA. stacjonarne. I-go stopnia. (INT) Inżynieria internetowa STOPIEŃ STUDIÓW TYP STUDIÓW SPECJALNOŚĆ

Recenzja rozprawy doktorskiej mgr Bartosza Rymkiewicza pt. Społeczna odpowiedzialność biznesu a dokonania przedsiębiorstwa

KIERUNKOWE EFEKTY KSZTAŁCENIA

OPTYMALIZACJA HARMONOGRAMOWANIA MONTAŻU SAMOCHODÓW Z ZASTOSOWANIEM PROGRAMOWANIA W LOGICE Z OGRANICZENIAMI

Załącznik 2. Symbol efektu obszarowego. Kierunkowe efekty uczenia się (wiedza, umiejętności, kompetencje) dla całego programu kształcenia

M T E O T D O ZI Z E E A LG L O G R O Y R TM

Model referencyjny doboru narzędzi Open Source dla zarządzania wymaganiami

EFEKTY UCZENIA SIĘ DLA KIERUNKU INŻYNIERIA DANYCH W ODNIESIENIU DO EFEKTÓW UCZENIA SIĘ PRK POZIOM 6

Zastosowanie symulacji Monte Carlo do zarządzania ryzykiem przedsięwzięcia z wykorzystaniem metod sieciowych PERT i CPM

Algorytm. a programowanie -

Nazwa przedmiotu: MODELOWANIE I ANALIZA SYSTEMÓW INFORMATYCZNYCH. Modeling and analysis of computer systems Forma studiów: Stacjonarne

Metodyka projektowania komputerowych systemów sterowania

Modelowanie procesów współbieżnych

Kierunkowe efekty kształcenia (wiedza, umiejętności, kompetencje) Kierunek Informatyka

Wykład I. Wprowadzenie do baz danych

Proces badawczy schemat i zasady realizacji

Zakładane efekty kształcenia dla kierunku Wydział Telekomunikacji, Informatyki i Elektrotechniki

PAŃSTWOWA WYŻSZA SZKOŁA ZAWODOWA W NYSIE

Poprawność semantyczna

Wykład 2. Poprawność algorytmów

Efekt kształcenia. Wiedza

PROGRAM KSZTAŁCENIA NA STUDIACH III STOPNIA Informatyka (nazwa kierunku)

Państwowa Wyższa Szkoła Techniczno-Ekonomiczna w Jarosławiu

Załącznik 2. Symbol efektu obszarowego. Kierunkowe efekty uczenia się (wiedza, umiejętności, kompetencje) dla całego programu kształcenia

Tworzenie języków specyfikacji dla zagadnień numerycznych

JAKIEGO RODZAJU NAUKĄ JEST

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Pojęcie bazy danych. Funkcje i możliwości.

PROJEKT WSPÓŁFINANSOWANY ZE ŚRODKÓW UNII EUROPEJSKIEJ W RAMACH EUROPEJSKIEGO FUNDUSZU SPOŁECZNEGO OPIS PRZEDMIOTU

Obliczenia inspirowane Naturą

Maciej Oleksy Zenon Matuszyk

OGÓLNOAKADEMICKI. Kierunek studiów ASTRONOMIA o profilu ogólnoakademickim należy do obszaru kształcenia w zakresie nauk ścisłych.

Systemy zdarzeniowe - opis przedmiotu

Logika Temporalna i Automaty Czasowe

KIERUNKOWE EFEKTY KSZTAŁCENIA

Eksploracja danych. KLASYFIKACJA I REGRESJA cz. 2. Wojciech Waloszek. Teresa Zawadzka.

Informatyka, studia I stopnia (profil ogólnoakademicki) - wersja

O ISTOTNYCH OGRANICZENIACH METODY

Efekty kształcenia wymagane do podjęcia studiów 2 stopnia na kierunku Informatyka

WIEDZA T1P_W06. K_W01 ma podstawową wiedzę o zarządzaniu jako nauce, jej miejscu w systemie nauk i relacjach do innych nauk;

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

Kierunek Zarządzanie II stopnia Szczegółowe efekty kształcenia i ich odniesienie do opisu efektów kształcenia dla obszaru nauk społecznych

Problemy niezawodnego przetwarzania w systemach zorientowanych na usługi

Analiza i projektowanie oprogramowania. Analiza i projektowanie oprogramowania 1/32

SCENARIUSZ LEKCJI. Dzielenie wielomianów z wykorzystaniem schematu Hornera

[1] [2] [3] [4] [5] [6] Wiedza

KIERUNKOWE EFEKTY KSZTAŁCENIA

Matematyczne podstawy informatyki Mathematical Foundations of Computational Sciences. Matematyka Poziom kwalifikacji: II stopnia

PRZEWODNIK PO PRZEDMIOCIE

Aproksymacja funkcji a regresja symboliczna

Tabela odniesień efektów kierunkowych do efektów obszarowych (tabele odniesień efektów kształcenia)

Zaawansowane programowanie w języku C++

SCENARIUSZ LEKCJI. Streszczenie. Czas realizacji. Podstawa programowa

Wprowadzenie do programowania współbieżnego

Zasady organizacji projektów informatycznych

PRZEWODNIK PO PRZEDMIOCIE

ECDL Podstawy programowania Sylabus - wersja 1.0

Logika Matematyczna (1)

Metody dowodzenia twierdzeń i automatyzacja rozumowań Tabele syntetyczne: definicje i twierdzenia

Proces badawczy schemat i zasady realizacji

EFEKTY KSZTAŁCENIA DLA KIERUNKU STUDIÓW NAUCZANIE MATEMATYKI I INFORMATYKI

Metody Kompilacji Wykład 3

Transkrypt:

Zastosowanie Metod Formalnych do Specyfikacji oraz Weryfikacji Systemów Agentowych Wydział Elektrotechniki, Automatyki, Informatyki i Elektroniki Katedra Informatyki Autor: mgr inż. Sławomir Maludziński Promotor: dr hab inż. Grzegorz Dobrowolski, prof. AGH Kraków, 2011

Chciałbym złożyć wyrazy podziękowania mojemu promotorowi, prof. Grzegorzowi Dobrowolskiemu za wyrozumiałość i wiele godzin, które poświęcił na dyskusje ze mna o tej rozprawie. Szczególne podziękowania składam również mojej rodzinie, która wspierała mnie w trakcie studiów doktoranckich oraz podczas tworzenia niniejszej pracy. Dziękuję również wszystkim, którzy mi kibicowali i trzymali za mnie kciuki. Sławomir Maludziński

Fortitudine vincimus

Spis treści Spis treści Spis rysunków Spis tablic v ix xi 1 Wprowadzenie 1 1.1 Metody formalne w inżynierii oprogramowania.............. 1 1.2 Systemy agentowe.................................... 3 1.3 Teza pracy.......................................... 5 1.4 Zawartość dysertacji.................................. 7 2 Weryfikacja aspektów systemów agentowych 9 2.1 Weryfikacja przez model............................... 10 2.2 Stosowalność weryfikacji do systemów agentowych............ 12 2.3 Weryfikacja aspektów systemów agentowych................ 13 2.3.1 Aspekt środowiska.............................. 13 2.3.2 Aspekt zasobów................................ 15 2.3.3 Aspekt komunikacji............................. 16 2.3.4 Aspekt rozumowania............................ 19 2.3.5 Aspekt współpracy.............................. 20 2.3.6 Aspekt integralności funkcjonalnej.................. 21 2.3.7 Aspekt mobilności.............................. 22 2.4 Przegląd narzędzi do weryfikacji przez model................ 23 2.4.1 SPIN........................................ 23 2.4.2 NuSMV...................................... 24 2.4.3 MCK........................................ 26 2.4.4 VerICS....................................... 26 2.4.5 MCMAS...................................... 28 v

vi Spis treści 2.4.6 MABLE...................................... 29 2.4.7 MOCHA...................................... 30 2.4.8 AgentSpeak(F)................................. 32 2.5 Przegląd logik temporalnych............................ 32 2.5.1 Logika czasu liniowego LTL........................ 33 2.5.2 Logika drzew obliczeniowych CTL.................. 35 2.5.3 Logika epistemiczna CTLK........................ 37 2.5.4 Logika czasu naprzemiennego ATL.................. 38 2.5.5 Semantyka formuł języka logiki temporalnej........... 39 2.5.6 Bezstronność.................................. 41 2.6 Przegląd algorytmów weryfikacji i optymalizacji.............. 41 2.6.1 Konstrukcja modelu............................. 42 2.6.2 Algorytmy weryfikacji............................ 43 2.6.3 Optymalizacje struktury Krippkego.................. 45 2.6.4 Złożoność obliczeniowa.......................... 53 2.7 Przegląd metod specyfikacji systemów..................... 54 2.7.1 Ogólna charakterystyka metod specyfikacji............ 54 2.7.2 Specyfikacja w algebrach procesów.................. 55 2.7.3 Algebra join-calculus............................ 61 2.8 Uzasadnienie wyboru algebry join-calculus................. 68 2.9 Studium weryfikacji aspektów systemów agentowych.......... 69 2.10 Podsumowanie analizy obszaru badawczego................ 73 3 Projekt narzędzia do weryfikacji 77 3.1 Założenia konstrukcyjne narzędzia........................ 78 3.2 Tryb przetwarzania języka.............................. 79 3.3 Język specyfikacji..................................... 82 3.3.1 Białe znaki.................................... 82 3.3.2 Komentarze................................... 82 3.3.3 Stałe........................................ 82 3.3.4 Słowa kluczowe................................ 83 3.3.5 Identyfikatory................................. 83 3.3.6 Typy danych.................................. 83 3.3.7 Wyrażenia.................................... 85 3.3.8 Instrukcje.................................... 85 3.3.9 Etykiety instrukcji.............................. 88 3.3.10 Reguły reakcji................................. 88 3.3.11 Wyrażenia logiki CTL............................ 89 3.3.12 Niezmienniki.................................. 89 3.3.13 Bezstronność.................................. 89 3.4 Zakres widzialności nazw............................... 90 3.5 Semantyka wywołań reguł reakcji......................... 91 3.6 Przekazywanie wiadomości przez parametr................. 91 3.7 Kompilacja......................................... 94

Spis treści vii 3.8 Konstrukcja automatu................................. 97 3.9 Interpreter......................................... 98 3.10 Powstawanie procesów................................ 103 3.11 Konstrukcja modelu................................... 108 3.12 Wybór algorytmów weryfikacji i optymalizacji................ 110 3.13 Źródła eksplozji stanów................................ 111 3.14 Normalizacja formuł logiki CTL.......................... 112 3.15 Podsumowanie...................................... 112 4 Przykłady specyfikacji aspektów systemów agentowych 115 4.1 Przeplot instrukcji.................................... 115 4.2 Wymiana wiadomości................................. 117 4.3 Przemieszczanie nazw kanałów komunikacyjnych............ 118 4.4 Przemieszczanie kodu................................. 118 4.5 Przemieszczanie agentów.............................. 120 4.6 Przemieszczanie środowisk wykonawczych.................. 120 4.7 Specyfikacja systemów w bibliotece JADE................... 121 4.8 Podsumowanie...................................... 125 5 Przykłady weryfikacji systemów agentowych 127 5.1 Synchroniczne wysłanie komunikatu...................... 127 5.2 Asynchroniczne wysłanie komunikatu..................... 127 5.3 Przeplot instrukcji.................................... 129 5.4 Semafor........................................... 133 5.5 Rendezvous......................................... 135 5.6 Rozmiar i czas weryfikacji.............................. 138 6 Problematyka syntezy systemów agentowych 139 6.1 Problematyka syntezy oprogramownia..................... 139 6.2 Platformy i języki programowania systemów agentowych....... 140 6.2.1 Język programowania JoCAML..................... 141 6.2.2 Język programowania join-calculus.................. 141 6.2.3 Biblioteka programowa JADE...................... 144 6.2.4 Inne systemy implementacji....................... 145 7 Podsumowanie 147 A Przykłady specyfikacji metod synchronizacji i protokołów 151 A.1 Bufor............................................. 151 A.2 Semafor........................................... 152 A.3 Bariera............................................ 152 A.4 Kanał asynchroniczny................................. 154 A.5 Kanał synchroniczny.................................. 154 A.6 Rendezvous......................................... 156

viii Spis treści A.7 Obliczenie współbieżne................................ 156 A.8 Aplet.............................................. 156 A.9 Protokół z przemiennym bitem.......................... 157 B Elementy implementacji narzędzia 161 B.1 Generacja kodu...................................... 161 B.1.1 Skaner....................................... 161 B.1.2 Parser....................................... 162 B.1.3 Drzewo wyprowadzenia.......................... 164 B.1.4 Kontrola zakresu widzialności nazw................. 164 B.1.5 Kontrola typów................................ 165 B.1.6 Pozostałe kontrole semantyczne.................... 165 B.1.7 Generacja kodu interpretera....................... 166 B.1.8 Normalizacja formuł logiki CTL.................... 168 B.1.9 Kompilacja formuł logiki CTL...................... 168 B.2 Weryfikacja kodu..................................... 169 B.2.1 Przydział pamięci............................... 169 B.2.2 Automatyczne zarządzanie pamięcią................ 170 B.2.3 Interpreter.................................... 172 B.2.4 Zarządca procesów............................. 174 B.2.5 Światy i struktura Krippkego....................... 175 B.2.6 Budowa struktury Krippkego...................... 176 B.2.7 Weryfikacja formuł logiki CTL...................... 179 B.2.8 Poszukiwanie kontrprzykładów..................... 179 C Podręcznik narzędzia 183 C.1 Zawartość pakietu oraz instalacja......................... 183 C.2 Opis kodów błędów................................... 183 C.3 Licencja........................................... 185 D Gramatyka narzędzia do weryfikacji 187 Bibliografia 191

Spis rysunków 2.1 Spełnialność formuł LTL.................................. 34 2.2 Spełnialność formuł CTL.................................. 36 2.3 Algorytm konstrukcji struktury Krippkego..................... 43 2.4 Diagram decyzji binarnych................................ 45 2.5 Pętla w strukturze Krippkego............................... 46 2.6 Podstawowa algebra join-calculus........................... 61 2.7 Reguły chemiczne algebry join-calculus....................... 62 2.8 Gramatyka rozproszonej algebry join-calculus.................. 64 2.9 Reguły chemiczne rozproszonego RCHAM..................... 64 2.10 Rozszerzenie algebry join-calculus o środowisko i wiedzę.......... 65 2.11 Reguły chemiczne algebry join-calculus z uwzględnieniem środowiska i wiedzy............................................... 66 3.1 Tryb przetwarzania języka................................. 79 3.2 Wzorzec wiadomości, łącza, procesu oraz reguły reakcji........... 88 3.3 Struktury danych interpretera.............................. 99 3.4 Uruchomiony proces wraz z wiązaniami sterowania i dostępu do danych 99 3.5 Przykład działania interpretera, struktury danych oraz wiązania sterowania i dostępu do danych................................ 107 A.1 Protokół transmisji z naprzemiennym bitem................... 157 B.1 Moduły narzędzia do weryfikacji............................ 169 B.2 Przykład umieszczenia komunikatów w przegródkach............ 173 B.3 Budowa struktury Krippkego............................... 176 D.1 Gramatyka języka stosowanego w narzędziu do weryfikacji......... 189 ix

Spis tablic 2.1 Przykład specyfikacji w języku PROMELA (SPIN)................ 24 2.2 Przykład specyfikacji w narzędziu NuSMV..................... 25 2.3 Przykład specyfikacji w narzędziu MCK....................... 27 2.4 Przykład specyfikacji w języku ISPL (MCMAS).................. 29 2.5 Przykład specyfikacji w języku REACTIVEMODULES (MOCHA)...... 31 2.6 Weryfikacja klas własności poprawności....................... 33 2.7 Definicja zmiennej...................................... 67 2.8 Definicja rendezvous..................................... 67 2.9 Definicja aktora........................................ 67 2.10 Definicja apletu........................................ 67 2.11 Studium weryfikacji przez model aspektów systemów agentowych... 70 3.1 Priorytet i łączność operatorów............................. 85 3.2 Widzialność leksykalna................................... 90 3.3 Możliwe wywołania reguł reakcji............................ 92 3.4 Zwrócenie nazw wzorców wiadomości........................ 92 3.5 Przekazanie nazwy wzorca wiadomości jako parametru........... 93 3.6 Instrukcje stosowane przez interpreter........................ 95 3.7 Przykład działania interpretera, specyfikacja................... 106 3.8 Algorytm konstrukcji struktury Krippkego..................... 108 4.1 Konto, przeplot instrukcji................................. 116 4.2 Kod bajtowy interpretera.................................. 116 4.3 Wymiana wiadomości.................................... 117 4.4 Przemieszczanie nazw kanałów komunikacyjnych............... 118 4.5 Przemieszczanie kodu.................................... 119 4.6 Przemieszczanie agentów................................. 119 4.7 Przemieszczanie środowisk wykonawczych.................... 120 4.8 Wysłanie i odbiór wiadomości.............................. 122 xi

xii Spis tablic 4.9 Skrytka pocztowa....................................... 122 4.10 Deklaracja agenta....................................... 123 4.11 Zatrzymanie kontenera................................... 124 5.1 Synchroniczne wysłanie komunikatu......................... 128 5.2 Sekwencja tworzenia stanów struktury Krippkego (komunikat synchroniczny)............................................... 128 5.3 Asynchroniczne wysłanie komunikatu........................ 129 5.4 Sekwencja tworzenia stanów struktury Krippkego (komunikat asynchroniczny)............................................... 130 5.5 Przeplot instrukcji....................................... 131 5.6 Przeplot instrukcji. Przykład EF (i == 1000).................... 131 5.7 Przeplot instrukcji. Przykład EF (i == 2500).................... 132 5.8 Przeplot instrukcji. Przykład EF (i == 3500).................... 132 5.9 Przeplot instrukcji. Przykład 1 EF (i! = 2500).................... 132 5.10 Przeplot instrukcji. Przykład 2 EF (i! = 2500).................... 132 5.11 Sekcja krytyczna. Semafor - weryfikacja....................... 133 5.12 Semafor. Przykład EF (total == 1000)......................... 134 5.13 Semafor. Przykład EF (total == 2500)......................... 134 5.14 Semafor. Przykład EF (total == 3500)......................... 134 5.15 Rendezvous. Weryfikacja.................................. 135 5.16 Rendezvous. Przykład 1 AG (value == 156)..................... 136 5.17 Rendezvous. Przykład 2 AG (value == 156)..................... 136 5.18 Rendezvous. Kontrprzykład 1 AG (value! = 156).................. 137 5.19 Rendezvous. Kontrprzykład 2 AG (value! = 156).................. 137 5.20 Rozmiar i czas weryfikacji................................. 138 6.1 Deklaracja zmiennej w języku programowania join-calculus........ 142 6.2 Deklaracja łączy w języku programowania join-calculus........... 144 6.3 Translacja lokalizacji..................................... 144 A.1 Specyfikacja bufora dwuelementowego....................... 152 A.2 Specyfikacja semafora.................................... 153 A.3 Specyfikacja bariery..................................... 153 A.4 Specyfikacja kanału asynchronicznego........................ 154 A.5 Specyfikacja kanału synchronicznego........................ 155 A.6 Specyfikacja rendezvous.................................. 155 A.7 Przykład obliczenia współbieżnego.......................... 156 A.8 Przykład specyfikacji apletu................................ 157 A.9 Przykład specyfikacji protokołu z przemiennym bitem............ 158 B.1 Kod skanera........................................... 162 B.2 Kod parsera........................................... 163 B.3 Struktury danych listy.................................... 164 B.4 Normalizacja formuł logiki CTL............................. 167

Spis tablic xiii B.5 Kompilacja formuł logiki CTL.............................. 168 B.6 System automatycznego zarządzania pamięcią................. 170 B.7 Przykład struktury interpretera............................. 172 B.8 Interpretacja kodu bajtowego.............................. 173 B.9 Permutacje dopasowań wiadomości do łączy................... 174 B.10 Struktura Krippkego..................................... 175 B.11 Algorytm budowy struktury Krippkego........................ 177 B.12 Weryfikacja CTL - operator EU.............................. 180 B.13 Poszukiwanie kontrprzykładów............................. 181

R O Z D Z I A Ł Wprowadzenie 1 Szczególnie istotnym zagadnieniem podczas wytwarzania oprogramowania jest zapewnienie jego poprawności. Nawet najmniejsze błędy, które pojawią się w systemach komputerowych, mogą prowadzić do poważnych awarii i znaczących strat. Jednym z głównych celów inżynierii oprogramowania jest zatem dostarczenie metod oraz narzędzi pozwalających na konstruowanie systemów komputerowych pozbawionych wad. Koncepcją rozwijaną przez ośrodki naukowe, która ma umożliwić realizację tego postulatu, jest zastosowanie metod formalnych. Użycie metod formalnych nie gwarantuje wprost zupełnej poprawności, jednak zwiększa rozumienie funkcjonowania systemu poprzez odkrywanie niespójności, niejednoznaczności i niekompletności, które w innym przypadku mogłyby pozostać przeoczone. Bardzo interesującą metodologią wytwarzania systemów informatycznych jest ich budowa z wykorzystaniem paradygmatu agentowego. Współcześnie nabiera ona coraz większego znaczenia, albowiem znaczna ilość systemów informatycznych posiada cechy systemów agentowych, takich jak osadzenie w środowisku, autonomiczność, zdolność do współpracy czy mobilność. Traktując systemy agentowe jako szczególny rodzaj systemów informatycznych, w niniejszej pracy podjęto próbę wykazania, w jaki sposób stosować metody formalne do zapewnienia ich prawidłowego działania. W konsekwencji zaś, w opinii autora, przyczynić się do zwiększenia niezawodności takich systemów. 1.1 Metody formalne w inżynierii oprogramowania Metody formalne oparte są o dyscypliny matematyczne, takie jak teoria zbiorów, algebra, logika matematyczna, teoria automatów i języków formalnych. Można stosować je na każdym z etapów procesu wytwarzania oprogramowania, począwszy 1

2 1. Wprowadzenie od specyfikacji wymagań, poprzez ich analizę, projekt systemu, implementację lub syntezę czy weryfikację. Do metod formalnych należą: Specyfikacja. Specyfikacja jest procesem mającym na celu opis budowanego systemu wraz z jego pożądanymi własnościami. Zazwyczaj używa do tego celu języka z formalnie zdefiniowaną syntaktyką oraz semantyką. Specyfikacji może podlegać działanie, wydajność, ograniczenia czasowe, bezpieczeństwo czy architektura. Obszarem największego zainteresowania jest specyfikacja działania. Rezultatem specyfikacji jest dostarczenie opisu systemu, który może służyć w dalszych etapach produkcji oprogramowania. Sam może być również analizowany czy weryfikowany. Specyfikacja jest także użyteczna jako środek komunikacji pomiędzy osobami zaangażowanymi w procesie wytwarzania oprogramowania, takimi jak klient, analityk, architekt, programista czy tester. Przykładami metod umożliwiających specyfikację programów sekwencyjnych są Specyfikacja Z [96], VDM [17] czy Larch [47], definiowane przy pomocy struktur matematycznych, takich jak zbiory, relacje bądź funkcje. Przejścia pomiędzy stanami opisywane są przy pomocy pre- i post- warunków (ang. pre-, postconditions). Inne metody, takie jak CSP [50], CCS [73], Lotos [52, 53], logiki temporalne [60] umożliwiają specyfikację systemów współbieżnych. Weryfikacja. Celem weryfikacji jest wykazanie poprawności systemów informatycznych. Weryfikacja odbywa się poprzez sprawdzenie poprawności specyfikacji mogącej obejmować między innymi wymagania, projekt czy implementację. Zarówno ich wewnętrznej spójności, jak też niesprzeczności wobec pozostałych dokumentów. Na przykład projektu wobec wymagań, czy implementacji wobec projektu. Dwiema dobrze określonymi metodami formalnymi weryfikacji są weryfikacja przez model oraz automatyczne dowodzenie twierdzeń. Weryfikacja przez model. Weryfikacja przez model [34] bazuje na budowie skończonego modelu systemu i sprawdzeniu, czy reguła poprawności jest w nim spełniona. Sprawdzenie to odbywa się w przestrzeni stanów i kończy się, gdyż założona ilość stanów podlegających weryfikacji jest skończona. Po dostarczeniu odpowiedniego opisu działania systemu oraz reguł poprawności, które mają być przezeń spełnione, weryfikacja taka jest procesem całkowicie automatycznym i nie wymaga udziału inżyniera. Metoda ta znajduje zastosowanie głównie do weryfikacji protokołów, układów elektronicznych, a ostatnio programów komputerowych [5, 51]. Prowadzone są również badania nad jej zastosowaniem do weryfikacji systemów agentowych. Dowodzenie twierdzeń. W metodzie tej logiki matematyczne są wykorzystywane zarówno w celu specyfikacji systemu, jak i jego reguł poprawności. Dowód

Systemy agentowe 3 poprawności odbywa się z wykorzystaniem aksjomatów oraz reguł wnioskowania w odpowiedniej logice. Proces ten ma na celu wykazanie spełnialności formuły, świadczącej o poprawności systemu. W przeciwieństwie do weryfikacji przez model, dowodzenie twierdzeń pozwala na rozważanie systemów, których przestrzeń stanów jest nieskończona. W ogólności automatyczne dowodzenie twierdzeń jest niemożliwe, gdyż dla wielu logik pytanie czy dana formuła posiada dowód, jest nierozstrzygalne. Do konstrukcji dowodu stosuje się narzędzia, które umożliwiają automatyczne lub wspomagane przez inżyniera dowodzenie danej formuły. Proces ten jest więc wolniejszy, a poprzez zaangażowanie w nim człowieka może prowadzić do niepoprawnych rezultatów. Przykładami takich rozwiązań są: PVS [78], Prover9 [70], E [92] czy rozwijany w Polsce system Mizar [98]. Synteza. Synteza oprogramowania polega na wygenerowaniu kodu lub jego fragmentów na podstawie specyfikacji [11, 69]. Dzięki takiemu podejściu unika się konieczności sprawdzania poprawności implementacji względem przedstawionych wymagań, gdyż przekształcenie takie jest zawsze poprawne. Rozważania teoretyczne dotyczą możliwości generowania kodu systemów informatycznych z ich specyfikacji wyrażonych za pomocą logik temporalnych. Współcześnie istniejące rozwiązania umożliwiają utworzenie szkieletu oprogramowania odpowiedzialnego za synchronizację procesów w systemach współbieżnych. W ten sposób uzyskuje się kod, który jest trudny do wytworzenia przez człowieka, jednocześnie mając pewność, iż jest poprawny względem specyfikacji. Wadą tej metody jest duża złożoność obliczeniowa. Co więcej, w przypadku niepoprawności lub niekompletności specyfikacji, wygenerowany kod będzie nieodpowiedni. 1.2 Systemy agentowe Historia badań nad systemami agentowymi liczy ponad 30 lat [101]. W trakcie tego okresu powstało wiele publikacji, które rozszerzały uniwersalną definicję agenta oraz systemów agentowych. Prace te czerpią między innymi z dziedzin takich jak filozofia, nauki przyrodnicze, logika matematyczna, ekonomia. Rozszerzenie spektrum zagadnień spowodowało znaczny rozwój tej dziedziny nauki. Z drugiej zaś strony, pojęcie agenta oraz systemów agentowych uległo rozmyciu. Dlatego też konieczne jest określenie podstawowych cech, jakie musi spełniać system agentowy. Pomimo różnych istniejących propozycji definicji agenta, istnieje kilka cech, które niewątpliwie wyróżniają i charakteryzują zarówno samych agentów, jak i tworzone przez nie systemy agentowe. Ich dokładny opis został ujęty między innymi w pracach [20, 101, 104], tutaj zostały przytoczone najważniejsze stwierdzenia. Osadzenie w środowisku. Agenci są w stanie obserwować otaczające ich środowisko przy pomocy sensorów. Dzięki możliwości wykonywania akcji mają na

4 1. Wprowadzenie nie również wpływ. Zmiany te są realizowane przy pomocy efektorów. Pomiędzy obserwacją środowiska, a wpływem na nie zachodzi proces decyzyjny specyficzny dla danego agenta. W zależności od sposobu jego realizacji wyróżnia się typy agentów. Autonomia. Możliwe jest wiele poziomów autonomii, od bardzo małej do zupełnej swobody w podejmowaniu decyzji. W przypadku agentów postuluje się, aby mogły one samodzielnie decydować o wyborze akcji, tak aby osiągnąć zamierzony cel. Proaktywność. Zakłada się, iż agenci będą samorzutnie podejmować akcje, aby osiągnąć zamierzony cel. Założenie to rozróżnia pojęcie agenta od pojęcia obiektu w modelach obiektowych, którego metody są wykonywane po otrzymaniu żądania ich realizacji (wiadomości). Reaktywność. Reaktywność oznacza umiejętność odpowiedzi na zmiany w środowisku. W przypadku zaistnienia takich zmian, na przykład na skutek działań innych agentów, musi istnieć możliwość podjęcia innych, odpowiedniejszych akcji, tak aby osiągnąć zamierzony cel. W szczególnym przypadku może zostać podjęta decyzja o porzuceniu realizacji danego celu i wyborze innego. Zdolności społeczne. Agenci przebywający w środowisku wykonują zobowiązania, które odpowiadają możliwościom określonym przez ich algorytm działania. Dodatkowo, poprzez umiejętność wymiany komunikatów, mogą wchodzić w interakcję z innymi agentami i realizować bardziej skomplikowane przedsięwzięcia, których samodzielnie nie mogliby zrealizować. Umiejętność ta określana jest jako zdolności społeczne. Jej rozwinięcie doprowadziło do zdefiniowania metod, które umożliwiają wypełnienie zobowiązań przy współudziale innych agentów. Wśród najważniejszych wymieniane są możliwość planowania oraz kontroli wykonania podzadań. Ze względu na konieczność zachowania autonomii agentów mogą oni prowadzić negocjacje, takie jak licytacje czy aukcje dotyczące wyboru agentów mających wykonać zadania. Mobilność. Poza wymienionymi cechami, w teorii systemów agentowych rozważa się również zagadnienia związane z mobilnością. Może być ona definiowana jako wymiana wiadomości, przemieszczanie nazw kanałów, które mogą być użyte do komunikacji, przemieszczanie kodu lub agentów względem środowisk wykonawczych, w których agenci operują [42, 62].

Teza pracy 5 1.3 Teza pracy W przedstawionej dysertacji postanowiono wykazać, w jaki sposób możliwym jest stosowanie metod formalnych do zapewnienia poprawności systemów agentowych. Współcześnie, dzięki nasilonemu rozwojowi metod specyfikacji oraz weryfikacji, wykonalnym staje się badanie coraz bardziej złożonych systemów informatycznych. Prace w tym zakresie pozwalają nie tylko na weryfikowanie poprawności protokołów komunikacyjnych czy układów elektronicznych, ale również programów komputerowych. Wśród nich, jako szczególnej klasy, systemów agentowych. Aktualnie prowadzone prace koncentrują się na badaniu ich szczególnych aspektów. Powstające rozwiązania zezwalają na formalną specyfikację i weryfikację aspektów, takich jak środowisko, zasoby, komunikacja, działanie, integralność w ujęciu zasobowym i funkcjonalnym, mobilność. Praca ta podejmuje próbę określenia, które z wymienionych aspektów podlegają weryfikacji, a które wymagają dodatkowych narzędzi które pozwolą na badanie ich poprawności. Interesujące są zarówno te aspekty systemów agentowych, które są najczęściej weryfikowane, jak i te, które obecnie nie podlegają weryfikacji. Ze względu na rozległość dziedzin metod formalnych, w pracy tej największy nacisk położono na metody specyfikacji oraz weryfikacji przez model. Wyróżnienie metody weryfikacji przez model wynika ze znacznego jej rozwoju w ostatnim czasie. Jej w pełni automatyczne działanie pozwala na znajdowanie nietrywialnych błędów w oprogramowaniu, a przez to jest bardzo interesujące z praktycznego punktu widzenia. Stosowanie weryfikacji wiąże się z koniecznością opisu systemu, a więc specyfikacji jego działania oraz własności poprawności, które mają być spełnione. Synteza została uwzględniona w niniejszej pracy w celu zapewnienia kompletności przeglądu metod formalnych oraz przedstawienia możliwości jej zastosowania przy wytwarzaniu systemów agentowych. Jej użycie ma przyczynić się do zmniejszenia całkowitych nakładów pracy, związanych ze stosowaniem metod formalnych poprzez generowanie kodu. Tym samym również do zwiększenia możliwości stosowania metod formalnych. Systemy agentowe mogą być traktowane jako szczególna klasa systemów informatycznych. Wyniki badań dotyczących systemów informatycznych mogą być stosowane do badań systemów agentowych. Wzajemnie, wyniki uzyskane przy zapewnianiu poprawnego działania systemów agentowych - przy badaniu poprawności systemów informatycznych. Ta wzajemność jest dodatkowym czynnikiem, który miał wpływ na podjęcie badań opisanych w niniejszej pracy. Przedstawione powyżej przesłanki doprowadziły do sformułowania tezy niniejszej pracy: Objęcie metodami specyfikacji i weryfikacji szczególnych aspektów systemów agentowych wspomaga wytwarzanie poprawnych systemów tej klasy. Wykazanie tezy będzie polegało na przeprowadzeniu szeregu zadań badawczych i wykonawczych.

6 1. Wprowadzenie Pierwszym zadaniem badawczym będzie określenie, w jaki sposób możliwa jest weryfikacja przez model specyficznych aspektów systemów agentowych za pomocą narzędzi, które zbudowano dotychczas. Zadanie to zmierza ku wykazaniu, iż możliwym jest stosowanie weryfikacji przez model do badania poprawności systemów agentowych. W następnym kroku ku wyróżnieniu specyficznych aspektów systemów agentowych, takich jak środowisko, zasoby, komunikacja, współpraca, integralność w ujęciu zasobowym i funkcjonalnym oraz mobilność. Są to aspekty najczęściej wymieniane przy definiowaniu systemów agentowych. Zadanie to ma na celu określenie dziedziny badań i wyszczególnienie, które z aspektów mogą być weryfikowane, a które nie są nią objęte. Następnym zadaniem badawczym będzie przegląd istniejących rozwiązań w zakresie metod formalnych, w tym metod specyfikacji, algorytmów weryfikacji oraz logik temporalnych w celu wyboru najodpowiedniejszych do budowy autorskiego narzędzia umożliwiającego weryfikację aspektów wybranych w poprzednim zadaniu badawczym. Wydaje się, iż narzędzie powinno dostarczać metody specyfikacji oraz weryfikacji współbieżnych algorytmów działania agentów. Szczególnie niewystarczająco objęte weryfikacją są przejawy mobilności w systemach agentowych, dla których współczesne narzędzia proponują badanie jedynie niektórych cech. Badania w tym zakresie wydają się istotne, gdyż współcześnie tworzy się coraz więcej systemów wykorzystujących wymianę wiadomości, mobilność kodu lub środowisk wykonania. Kolejne zadanie badawcze stanowić będzie projekt autorskiego narzędzia pozwalającego weryfikować poprawność wybranych aspektów systemów agentowych. Jego budowa wymaga realizacji kilku zadań pomocniczych: określenia metody specyfikacji, wybrania odpowiednich algorytmów weryfikacji i przedstawienia innych rozwiązań technicznych. W rozprawie tej postuluje się, aby metoda specyfikacji wywodziła się z metod formalnych, tak aby jej semantyka operacyjna była formalnie zdefiniowana. Pozwoli to poprawną analizę własności w ten sposób specyfikowanego systemu. Praktyczna realizacja narzędzia do weryfikacji przez model wymaga implementacji kilku jego modułów. W pierwszej kolejności zostaną opracowane gramatyka języka specyfikacji, metoda weryfikacji syntaktyki oraz poprawności semantycznej systemu. W następnym kroku zostanie opisane, jak interpretować wykonanie systemu oraz reprezentować jego stan. Przedstawienia wymaga również algorytm konstrukcji podlegającej weryfikacji struktury Krippkego. Kolejnym poruszonym zagadnieniem są algorytmy weryfikacji oraz optymalizacji, które pozwalają na zmniejszenie przestrzeni stanów. Praca wskazuje, jakie algorytmy weryfikacji mogą być stosowane dla wybranej metody specyfikacji oraz metody reprezentacji struktury Krippkego. W celu pokazania możliwości specyfikacji systemów agentowych w proponowanym narzędziu, następnym zadaniem badawczym będzie przedstawienie przykładów specyfikacji metod synchronizacji procesów, działania, mobilności, protokołów komunikacyjnych oraz możliwości weryfikacji systemów agentowych zrealizowanych w oparciu o bibliotekę JADE. Ponadto, w celu demonstracji

Zawartość dysertacji 7 przydatności proponowanego narzędzia, zostaną zaprezentowane przykłady weryfikacji wybranych systemów. Aby zapewnić kompletność spojrzenia na systemy agentowe z perspektywy metod formalnych, w pracy tej zostanie wskazana możliwość zastosowania do systemów agentowych metody syntezy oprogramowania. Wyniki uzyskane w tym zadaniu badawczym mogą być przydatne w dalszej przyszłości przy inicjowaniu prac w tym zakresie. Ostatnim zadaniem badawczym będzie wyciągnięcie wniosków i podsumowanie przeprowadzonych prac badawczych. 1.4 Zawartość dysertacji Praca składa się z siedmiu rozdziałów oraz czterech dodatków. Rozpoczyna się niniejszym wprowadzeniem, które przedstawia ogólnie jej zakres, tezę wraz z komentarzem a także niniejszy przewodnik. Kolejną część stanowi studium możliwości weryfikacji aspektów systemów agentowych przy pomocy istniejących narzędzi do weryfikacji przez model. Rozdział ten zawiera również krótką prezentację opisywanych w pracy narzędzi. Dodatkowo w rozdziale umieszczono przegląd współczesnych osiągnięć teoretycznych, których opracowanie jest niezbędne przy projekcie narzędzia do weryfikacji przez model. Są to opisy metod specyfikacji własności poprawności, ze szczególnym uwzględnieniem logik temporalnych, oraz przegląd współczesnych struktur danych i algorytmów używanych przy weryfikacji, optymalizacji oraz generowaniu kontrprzykładu. Został również umieszczony opis metod specyfikacji systemów. Celem tego rozdziału jest wyszczególnienie obszarów obecnie badanych oraz tych, które wymagają dalszych prac. Rozdział kończy się przedstawieniem uzasadnienia wyboru algebry join-calculus w proponowanym w dysertacji narzędziu. Rozdział 3 prezentuje autorski projekt narzędzia do weryfikacji, które ma umożliwić badania działania systemów agentowych wraz z aspektem mobilności. W ramach pracy doktorskiej zostały zaimplementowane moduły opisywanego rozwiązania. Następna część (rozdział 4) opisuje przykłady specyfikacji systemów, które mogą podlegać weryfikacji przy pomocy proponowanego narzędzia. Przykłady i rezultaty działania zaprojektowanego i zaimplementowanego narzędzia zostały ujęte w rozdziale 5. Wstępne wyniki badań dotyczące syntezy oprogramowania ze specyfikacji są umieszczone w rozdziale 6. Ostatnią częścią pracy jest podsumowanie, w którym przedstawiono osiągnięte wyniki oraz zakreślono dalsze kierunki badań. W pracy zamieszczono również cztery dodatki. Dodatek A przedstawia przykłady specyfikacji metod synchronizacji oraz protokołów w środowisku rozproszonym.

8 1. Wprowadzenie Jest on rozszerzeniem rozdziału 4. Kolejny (dodatek B) opisuje elementy implementacji zrealizowanych modułów narzędzia. Stanowi on opis technicznej implementacji projektu przedstawionego w rozdziale 3. Dodatek C jest krótkim przewodnikiem po instalacji oraz zawartości dostarczonego wraz z pracą oprogramowania. Wreszcie dodatek D prezentuje gramatykę języka specyfikacji opisywanego w pracy narzędzia.

R O Z D Z I A Ł 2 Weryfikacja aspektów systemów agentowych Czynnością, która musi poprzedzić realizację narzędzia do weryfikacji systemów agentowych, jest analiza osiągniętych rezultatów teoretycznych oraz istniejących rozwiązań praktycznych. Zestawienie to ma na celu określenie tych aspektów systemów agentowych, które można obecnie weryfikować jak i tych, które obecnie nie są objęte weryfikacją przez model. Interesującym jest wyszczególnienie zarówno najczęściej, jak i najrzadziej weryfikowanych aspektów. Zaproponowanie rozwiązania umożliwiającego weryfikację powszechnie badanych aspektów stanowi o jego potencjalnym szerokim zastosowaniu. Z kolei weryfikacja aspektów dotychczas nie podlegających weryfikacji, umożliwia badanie poprawności nowej klasy systemów agentowych i zarazem świadczy o jego innowacyjności. Niezbędnym jest również przegląd algorytmów i struktur danych pozwalający na wybranie tych najbardziej odpowiednich do realizacji praktycznej narzędzia. Pozwala on również na określenie spodziewanych rezultatów i potencjalnych możliwości narzędzia. W celu usystematyzowania przeglądu wyszczególniono kilka zagadnień dotyczących metod specyfikacji i weryfikacji systemów agentowych, które są zawarte w kolejnych sekcjach poniższego rozdziału. Pierwszym poruszanym zagadnieniem jest przedstawienie samej metody weryfikacji przez model wraz z umotywowaniem, iż metoda ta może być stosowana do weryfikacji systemów agentowych. Kolejnym rozpatrywanym zagadnieniem jest przedstawienie aspektów systemów agentowych, które mogą być weryfikowane przy pomocy dostępnych narzędzi. W sekcji zawierającej opis wymienianych aspektów systemów agentowych znajdują się odnośniki do nazw narzędzi oraz logik temporalnych, których dokładniejsze przedstawienie jest zamieszczone w kolejnych podrozdziałach. Oprócz rozwiązań praktycznych przedstawiono przegląd logik temporalnych, które służą do formułowania reguł poprawności. Kolejnym zagadnieniem jest opracowanie współcześnie stosowanych algorytmów i struktur danych służących do reprezentacji oraz optymalizacji struktury Krippkego. Informacje te służą 9

10 2. Weryfikacja aspektów systemów agentowych jako podwalina przy projekcie oraz implementacji rozwijanego w niniejszej pracy narzędzia do weryfikacji. Poruszanym w następnej części zagadnieniem jest przegląd formalnych metod specyfikacji, które mają służyć do opisu systemów agentowych, jakie proponuje się w tej dysertacji. Ostatnia część tego rozdziału syntetyzuje informacje o możliwości weryfikacji aspektów systemów agentowych. Ponadto uzasadniono wybór algebry join-calculus do specyfikacji aspektów systemów agentowych, których nie da się badać przy pomocy istniejących narzędzi. 2.1 Weryfikacja przez model Weryfikacja przez model [34,57,85,100] jest jedną z metod formalnych służących do sprawdzania poprawności skończonych systemów współbieżnych. W porównaniu z tradycyjnymi technikami, takimi jak testowanie rezultatu działania algorytmu dla zadanych parametrów początkowych, umożliwia rozpatrzenie wszystkich możliwych przypadków wykonania procesów składowych. W ten sposób metoda ta analizuje możliwe wykonania systemu współbieżnego, a nie tylko te arbitralnie wybrane do testów. Co więcej, w przypadku algorytmów współbieżnych wynik ich działania może zależeć od kolejności wykonania instrukcji, która nie jest bezpośrednio określona. W przypadku systemów reaktywnych, a więc takich, których wykonanie nigdy się nie kończy, tradycyjne metody testowania mają dodatkowo ograniczone użycie. Z oczywistych względów niemożliwe jest proste sprawdzenie odpowiedzi systemu na zadane parametry początkowe. Weryfikacja poprzez model nie posiada takiego ograniczenia. Dana reguła poprawności jest sprawdzana dla wszystkich możliwych wykonań, pomimo iż działanie systemu nigdy się nie kończy. Jest to niewątpliwą zaletą opisywanej tu metody. Z chwilą, gdy reguła poprawności nie jest spełniona dla danej sekwencji wykonań procesów, podawany jest kontrprzykład pokazujący kolejne instrukcje procesów prowadzące do tego niepoprawnego stanu. Rozpatrywanie wszystkich wykonań systemu współbieżnego, będące zaletą tej metody, jest również jej największym mankamentem. Prowadzi do wykładniczego wzrostu możliwych stanów systemu, które muszą być rozpatrzone wraz ze zwiększającą się liczbą procesów. Przyrost ten zwany jest eksplozją stanów. W celu jej ograniczenia stosuje się optymalizacje dotyczące reprezentacji stanów [57, 71], jak i pomijania pewnych stanów nieistotnych ze względu na rozpatrywaną regułę poprawności przypadków [39, 45, 72]. Inne techniki wprowadzają ograniczenie co do głębokości przeszukiwań. Przykładem takiej techniki może być weryfikacja przez model z ograniczeniem [29] lub wprowadzenie założeń co do kolejności wykonywania procesów. Zastosowanie weryfikacji poprzez model składa się z trzech etapów. Pierwszym z nich jest specyfikacja modelu. W celu ograniczenia przestrzeni stanów pomija się pewne nieistotne ze względu na weryfikowaną własność szczegóły, prowadząc do rozpatrzenia pewnego uproszczenia systemu. Kolejnym krokiem jest specyfikacja

Weryfikacja przez model 11 reguł poprawności. Ważnym jej elementem jest kompletność specyfikacji, która powinna obejmować wszystkie własności, jakie powinny zostać sprawdzone. Ostatnim krokiem jest sprawdzenie modelu ze względu na reguły poprawności za pomocą narzędzia do automatycznej weryfikacji. W wyniku uruchomienia narzędzia może zostać wygenerowany kontrprzykład. W takim razie należy poprawić model systemu w celu usunięcia błędu. Działanie narzędzia może zakończyć się niepoprawnie w wyniku wyczerpania dostępnej pamięci wynikającej ze zbyt dużej ilości stanów. W takim przypadku należy dokonać zmniejszenia modelu poprzez pominięcie pewnych nieistotnych szczegółów lub spróbować zastosować inne parametry narzędzia do weryfikacji, takie jak dotyczące stosowanych optymalizacji przestrzeni stanów. Specyfikacja modelu oraz reguł poprawności mogą zostać dokonane za pomocą automatów stanowych lub logik temporalnych. Najczęściej stosowanym rozwiązaniem jest przedstawienie modelu przy pomocy automatów skończonych wyrażonych w pseudojęzykach programowania [25, 51] czy sieciach Petriego [76]. Reguły poprawności są wyrażane przy pomocy logik temporalnych. Rozwiązanie to zwane jest temporalną weryfikacją przez model (ang. temporal model checking). Drugą możliwością jest specyfikowanie modelu oraz jego własności za pomocą automatów stanowych skończonych lub nieskończonych. Rozwiązanie to jest stosowane przy implementacji narzędzi do weryfikacji, gdzie formuły logiki temporalnej zamieniane są na automaty nieskończone (automaty Büciego) [34]. Cykl akceptujący automatu świadczy o spełnieniu formuły. Kolejną grupą są narzędzia pozwalające na specyfikację zarówno modelu systemu, jak i jego własności przy pomocy logik temporalnych [19]. Wreszcie ostatnią z możliwości jest specyfikacja systemu przy pomocy logik temporalnych, a jego własności przy użyciu automatów stanowych. Rozwiązanie to nosi nazwę odwróconej weryfikacji przez model (ang. reversed model checking). Chociaż teoretycznie możliwe, ze względów praktycznych, takich jak łatwość specyfikacji badanego systemu, nie jest spotykane w literaturze. Weryfikacja względem reguł poprawności jest przeprowadzana dla wszystkich stanów systemu, w jakich może się on znajdować. Stan systemu jest odzwierciedleniem wartości zmiennych modelu w pewnym momencie czasu. Ulega on zmianie wraz z wykonaniem pewnych akcji (instruckji), prowadząc do kolejnych stanów systemu. Przejście pomiędzy stanami definiuje relację, która również charakteryzuje wykonanie systemu. Graf składający się ze stanów systemu utrwalonych w momencie czasu oraz przejść pomiędzy nimi zwany jest strukturą Krippkego. Dodatkowo wprowadza się funkcję, która dla każdego stanu przypisuje zbiór formuł spełnialnych w danym stanie. Ścieżki grafu odpowiadają możliwym obliczeniom systemu. Pomimo swojej prostoty, sposób ten jest wystarczający do przedstawienia najważniejszych aspektów wykonania systemu i do weryfikacji jego własności.

12 2. Weryfikacja aspektów systemów agentowych 2.2 Stosowalność weryfikacji do systemów agentowych Przedstawiony w sekcji 1.2 paradygmat agentowy w bezpośredni sposób nie określa możliwości stosowania weryfikacji przez model do badania poprawności. Można przypuszczać, iż systemy agentowe, podobnie jak inne systemy informatyczne, mogą podlegać weryfikacji, jednak w celu wykazania tej tezy należy przytoczyć definicję agenta oraz systemu agentowego. Praca [31] formalizuje definicję agenta jako następującą n-tkę uporządkowaną. Definicja 2.2.1 Agentem Λ nazywamy trójkę: Λ = {A,S, F S A S} A skończony zbiór akcji (działań elementarnych) agenta, S skończony zbiór stanów wewnętrznych agenta, F trójczłonowa relacja określajaca możliwe następstwa stanów i akcji agenta, interpretowana w następujacy sposób: w określonym stanie agent może wykonać akcję (drugi człon relacji), która odpowiednio zaprowadzi go do nowego stanu (trzeci człon relacji). Zachowanie zwiazków przyczynowo-skutkowych wymaga, aby F była taka, że zachodzi (s, a, s 1 ) F (s, a, s 2 ) F s 1 = s 2 Relacja F opisuje możliwe akcje i przejścia do kolejnych stanów. Stan agenta implikuje podzbiór akcji (niepodzielnych) możliwych do wykonania. Wybór i wykonanie którejkolwiek z dopuszczalnych akcji ze zbioru A następuje w wyniku realizacji algorytmu wyboru, w który agent jest wyposażony. Akcja może być wykonywana wielokrotnie. Definicja ta dopuszcza wykonanie kilku akcji w danym stanie s. Działanie agenta jest ciągiem realizowanych akcji, które wynikają z mechanizmu wyboru i odpowiednich stanów wewnętrznych agenta, na które poprzez percepcję mają wpływ inni agenci oraz środowisko. System agentowy jest skończonym zbiorem agentów oraz relacją współdziałania określającą potencjalne możliwości współdziałania agentów w obrębie systemu. Definicja ta określa, iż działanie agenta może zostać określone jako dyskretne. Poszczególne jego stany zmieniają się w wyniku wykonania przez niego akcji. Również działanie systemu agentowego, będącego zbiorem agentów, bedzie dyskretne, gdyż stanem systemu agentowego jest zbiór stanów poszczególnych agentów. Definicja ta umożliwia więc budowę struktury Krippkego odpowiadającej możliwym stanom agentów i zarazem systemu agentowego. Zatem stan struktury Krippkego będzie odpowiadał stanowi systemu agentowego w danej chwili czasu. Przejścia pomiędzy stanami struktury Krippkego będą powstawały w wyniku

Weryfikacja aspektów systemów agentowych 13 rozważenia wszystkich akcji, jakie mogą zostać podjęte przez agentów w danych stanie systemu agentowego. Weryfikacja przez model może być stosowana jedynie do struktur Krippkego o skończonych rozmiarach. Definicja agenta oraz systemu agentowego niestety nie rozstrzyga, czy odpowiadająca mu struktura Krippkego będzie miała skończony rozmiar. Skończone działanie systemu agentowego prowadzi do skończonego rozmiaru omawianej struktury. Z kolei nieskończone działanie może powodować zarówno skończony, jak i nieskończony jej rozmiar. Pierwsza ewentualność sprawia, iż możliwa jest weryfikacja systemów, których wykonanie nigdy się nie kończy. Niestety w przypadku nieskończonej struktury Krippkego, nie jest możliwe jej zastosowanie. Dyskretne przedstawienie systemu agentowego, widzianego jako naprzemienny ciąg stanów agentów oraz wykonywanych przez nich akcji, umożliwia zatem stosowanie weryfikacji przez model. Na założeniu tym opierają się wszystkie metody opisane w dalszej części tego rozdziału. Podobne rozumowanie oraz postulaty, aby weryfikacją objąć jedynie systemy agentowe, dla których możliwa jest konstrukcja struktury Krippkego, znajduje się w pracy [103]. 2.3 Weryfikacja aspektów systemów agentowych W niniejszej sekcji przedstawiono aspekty systemów agentowych, które mogą być specyfikowane oraz weryfikowane przy użyciu znanych autorowi narzędzi. Kolejne sekcje przedstawiają możliwe ujęcia zastosowania weryfikacji dla systemów agentowych. 2.3.1 Aspekt środowiska Agent jest osadzony wewnątrz środowiska, na które ma wpływ. Również środowisko oddziałuje na agenta. Rusell oraz Norvig w publikacji [86] klasyfikują wymienione poniżej własności środowiska. Dostępność. Środowisko dostępne to takie, o którego stanie agenci mogą uzyskać kompletną i dokładną informację. Autorzy [86] wyróżniają również środowisko efektywnie dostępne, o którego stanie agent może pozyskać wystarczająco dokładną informację w celu podjęcia właściwych działań. Przeciwieństwem środowiska dostępnego jest środowisko niedostępne. Dostępność środowiska ma wpływa na stopień skomplikowania implementacji agentów. Im dostępność jest większa, tym łatwiejsza jest konstrukcja agentów, którzy w nim przebywają.

14 2. Weryfikacja aspektów systemów agentowych Determinizm. Determinizm środowiska jest rozpatrywany przez skutki, jakie powodują działania agenta. W przypadku, gdy kolejny stan środowiska jest jedynie wynikiem jego poprzedniego stanu oraz akcji podjętych przez agenta, mamy do czynienia ze środowiskiem deterministycznym. Przy określaniu aktualnego stanu takiego środowiska nie występuje niepewność. Jeśli zaś działania agenta niekoniecznie prowadzą do zamierzonej zmiany stanu środowiska, jest ono określane jako niedeterministyczne. Epizodyczność. Epizodem w działaniu agenta jest ustalenie przez niego stanu środowiska oraz podjęcie pewnych akcji. Zmiany, które zachodzą w środowisku, mogą być zatem rozpatrywane jako efekt działań podjętych przez agenta w ramach danego epizodu. W przypadku, gdy aktualny stan środowiska nie zależy od działań podjętych przez agenta w poprzednich epizodach, środowisko takie określane jest jako epizodyczne. W przeciwnym zaś przypadku, gdy działania agentów w ramach kolejnych epizodów mają na siebie wpływ, środowisko takie klasyfikowane jest jako nieepizodyczne. Rozróżnienie to pozwala na stwierdzenie, iż w przypadku środowisk epizodycznych przebywający w nich agenci nie muszą prowadzić rozumowania w celu określenia stanów środowiska w kolejnych epizodach. Dynamiczność. Środowisko może zmieniać swój stan podczas procesu podejmowania akcji przez agenta. W zależności czy w tym czasie zachodzą jego zmiany, wyróżniane jest środowisko statyczne lub dynamiczne. Skończoność. W zależności od ilości stanów oraz działań, jakie mogą być podejmowane w środowisku, można je sklasyfikować jako skończone lub nieskończone. Środowisko jest skończone, jeśli istnieje skończona liczba akcji jakie mogą być wykonane na środowisku oraz stanów, w jakich może się ono znaleźć. W przeciwnym przypadku środowisko jest określane jako nieskończone. W zależności od kombinacji wyżej wymienionych cech, środowisko będzie mniej lub bardziej skomplikowane. Najbardziej skomplikowanymi będą środowiska niedostępne, niedeterministyczne, nieepizodyczne, dynamiczne oraz nieskończone. Ze względów praktycznych weryfikacja bardziej skomplikowanych środowisk prowadzi do zwiększenia liczby stanów, które muszą zostać zweryfikowane. W rezultacie powoduje to zmniejszenie rozmiarów systemów, jakie mogą być weryfikowane w praktyce. Narzędzia do weryfikacji oferują możliwość zdefiniowania środowiska. Narzędzie MCK (2.4.3) definiuje środowisko jako zbiór zmiennych, które mogą być modyfikowane przez agentów. Agenci mają dostęp do wybranego podzbioru zmiennych, których wartość mogą odczytywać lub zapisywać. W ten sposób określa się ograniczoną do niego dostępność. Przypisanie wartości do zmiennych jest deterministyczne i określone poprzez protokół, jakim posługują się agenci.

Weryfikacja aspektów systemów agentowych 15 Narzędzie MABLE (2.4.6) poprzez instrukcję do umożliwia wykonanie akcji, która modyfikuje zmienne zewnętrzne. Pozostałe narzędzia umożliwiają zdefiniowanie środowiska jako specjalnego agenta. W tym przypadku osadzenie w środowisku jest specyfikowane jako wymiana komunikatów z takim agentem. Rozwiązanie to jest stosowane w narzędziu MCMAS (2.4.5). W ten sposób możliwe jest wyspecyfikowanie środowisk o innych cechach niż dostępność i determinizm. Na przykład możliwe jest przedstawienie niedeterminizmu czy dynamiczności. Ujęcie problemu specyfikacji środowiska w ten sposób sprawia, iż możliwe jest jego przedstawienie we wszystkich narzędziach służących do weryfikacji. 2.3.2 Aspekt zasobów Jednym z możliwych rozszerzeń modelu systemów agentowych jest wprowadzenie pojęcia zasobów. Dzięki takiej modyfikacji staje się możliwym rozważanie systemów, w których następuje produkcja oraz konsumpcja pewnych dóbr. Dobra te mogą pochodzić spoza systemu, być produkowane lub konsumowane przez agentów. Dodatkowo zasoby te mogą być wymieniane pomiędzy agentami, być koniecznymi do wykonania pewnych akcji, bądź umieszczane lub usuwane ze środowiska. Spektrum możliwości oraz podejść zależy od przyjętego konkretnego modelu. W najogólniejszym ujęciu zasoby mogą być wprowadzone dla agentów, systemu agentowego oraz otaczającego ich środowiska. Celem takiego rozszerzenia jest ujęcie zjawisk, jakie mogą się pojawić w systemie agentowym w odniesieniu do istnienia lub braku pewnych zasobów. Możliwe jest formalne rozszerzenie definicji agenta oraz systemu agentowego o pojęcie zasobów. Praca [31] wprowadza taką definicję (definicja 2.3.1). Definicja 2.3.1 Agentem z zasobami Λ R, nazywamy rozszerzenie agenta Λ, majace postać: Λ R = {Λ, R Λ, T Λ A R Λ R} R Λ skończony zbiór zasobów, zwiazanych z akcjami agenta T Λ trójczłonowa relacja, określajaca dla akcji agenta, które zasoby (drugi człon relacji) i jakiej ilości (R - zbiór liczb rzeczywistych) sa konsumowane (wartości ujemne) lub produkowane (wartości dodatnie) w wyniku jej realizacji W przypadku programowych systemów agentowych, zasoby są reprezentowane przy pomocy zmiennych binarnych, całkowitych lub rzeczywistych. Dzięki takiemu ujęciu możliwe jest wyprowadzenie równań obrazujących bilans zasobów dla działania agenta oraz systemów agentowych. Wzory te określają produkcję oraz