Projekt i implementacja zintegrowanego środowiska programistycznego dla języka ROsWeL promotor: dr inż. Anna Kobusińska opiekun: mgr inż. Andrzej Stroiński Przemysław Piechowiak
Agenda Zakres pracy Język ROsWeL Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 2
Agenda Zakres pracy Język ROsWeL Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 3
Formalny zakres pracy Projekt wykonywany w ramach IT-SOA OB2-4 Rozbudowanie możliwości języka oraz silnika ROsWeL w zakresie integracji z językiem Java Rozbudowanie preprocesora języka ROsWeL w zakresie analizy poprawności składniowej Opracowanie projektu i implementacja IDE dla języka i silnika ROsWeL Przemysław Piechowiak 4
Agenda Zakres pracy Język ROsWeL Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 5
Co to jest ROsWeL? ROsWeL: Deklaratywny język opisu procesów biznesowych pozwalających na tworzenie i integrację usług zgodnych z paradygmatem REST w systemach zorientowanych na usługi Przemysław Piechowiak 6
Co to jest ROsWeL? ROsWeL: Deklaratywny język opisu procesów biznesowych pozwalających na tworzenie i integrację usług zgodnych z paradygmatem REST w systemach zorientowanych na usługi ROsWeL RESTful Oriented Workflow Language Przemysław Piechowiak 7
Co to jest ROsWeL? ROsWeL: Deklaratywny język opisu procesów biznesowych pozwalających na tworzenie i integrację usług zgodnych z paradygmatem REST w systemach zorientowanych na usługi ROsWeL RESTful Oriented Workflow Language Język programowania o składni podobnej do Prologa zaproponowany w 2010 przez A. Stroińskiego i J. Flotyńskiego w ramach pracy mgr Przemysław Piechowiak 8
Co to jest ROsWeL? ROsWeL: Deklaratywny język opisu procesów biznesowych pozwalających na tworzenie i integrację usług zgodnych z paradygmatem REST w systemach zorientowanych na usługi ROsWeL RESTful Oriented Workflow Language Język programowania o składni podobnej do Prologa zaproponowany w 2010 przez A. Stroińskiego i J. Flotyńskiego w ramach pracy mgr Język deklaratywny rozszerzony o instrukcje wspierające wywołania usług zgodnych z architekturą zorientowaną na zasoby Przemysław Piechowiak 9
Co to jest ROsWeL? ROsWeL: Deklaratywny język opisu procesów biznesowych pozwalających na tworzenie i integrację usług zgodnych z paradygmatem REST w systemach zorientowanych na usługi ROsWeL RESTful Oriented Workflow Language Język programowania o składni podobnej do Prologa zaproponowany w 2010 przez A. Stroińskiego i J. Flotyńskiego w ramach pracy mgr Język deklaratywny rozszerzony o instrukcje wspierające wywołania usług zgodnych z architekturą zorientowaną na zasoby Przemysław Piechowiak 10
System zorientowany na usługi ROsWeL: Deklaratywny język opisu procesów biznesowych pozwalających na tworzenie i integrację usług zgodnych z paradygmatem REST w systemach zorientowanych na usługi System zorientowany na usługi (SOA) Dekompozycja logiki biznesowej na mniejsze, niezależne jednostki tzw. usługi usługa jest udostępniania za pomocą określonego, ogólnie dostępnego interfejsu przez dostawcę wywoływana jest w sieci Internet przez konsumenta usług w środowisku SOA może istnieć wiele niezależnych usług implementujących tę samą funkcjonalność system taki charakteryzuje się niezawodnością i skalowalnością Przemysław Piechowiak 11
Paradygmat REST ROsWeL: Deklaratywny język opisu procesów biznesowych pozwalających na tworzenie i integrację usług zgodnych z paradygmatem REST w systemach zorientowanych na usługi Paradygmat REST jest to styl architektoniczny służący do tworzenia systemów informatycznych zaproponowany przez R. Fieldinga w 2000: Założenia, które powinien spełniać taki system: Klient-serwer (client-server) Bezstanowość serwera (stateless) Pamięć podręczna (cache) Jednolity interfejs (uniform interface) Wielowarstwowość systemu (layered system) Kod na żądanie (code-on-demand) Przemysław Piechowiak 12
Proces biznesowy ROsWeL: Deklaratywny język opisu procesów biznesowych pozwalających na tworzenie i integrację usług zgodnych z paradygmatem REST w systemach zorientowanych na usługi Termin wywodzi się z ekonomii Jest to zbiór działań prowadzących do wytworzenia produktu lub usługi Proces podstawowy wynik jest przeznaczony dla klienta Proces pomocniczy usprawnia zarządzanie procesem i modularność Przemysław Piechowiak 13
Opis procesu biznesowego ROsWeL: Deklaratywny język opisu procesów biznesowych pozwalających na tworzenie i integrację usług zgodnych z paradygmatem REST w systemach zorientowanych na usługi Ustandaryzowana i zrozumiała dla uczestników reprezentacja procesu biznesowego Reprezentacja ciągu powiązanych ze sobą czynności wykonywanych w wyznaczonym czasie przez uczestników przetwarzania Może być graficzna lub tekstowa => ROsWeL Przemysław Piechowiak 14
Wykonanie procesu biznesowego ROsWeL: Deklaratywny język opisu procesów biznesowych pozwalających na tworzenie i integrację usług zgodnych z paradygmatem REST w systemach zorientowanych na usługi Silnik przepływu (workflow engine) Wyszczególniona usługa lub aplikacja Realizuje ciąg wywołań elementów systemu zdefiniowany w opisie Jest inicjatorem i koordynatorem przetwarzania Podejście charakterystyczne dla orkiestracji usług Przemysław Piechowiak 15
Język deklaratywny ROsWeL: Deklaratywny język opisu procesów biznesowych pozwalających na tworzenie i integrację usług zgodnych z paradygmatem REST w systemach zorientowanych na usługi Język deklaratywny Język oparty o rachunek predykatów I rzędu (rachunek kwantyfikatoró) ograniczający się jedynie do klauzul Horna Możliwość definiowania predykatów wyższych rzędów Przemysław Piechowiak 16
Agenda Zakres pracy Język ROsWeL? Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 17
Motywacje powstania języka istniejące rozwiązania Istnieje wiele rozwiązań: np. Web Services, JOpera, Apache ODE, Oracle BPEL Dostępne produkty nie oferują wymaganej funkcjonalności np. WS-BPEL Brak pełnej implementacji istniejących standardów Ograniczenia licencyjne np. JOpera niemożliwość wykorzystania komercyjnego Konieczność znacznej modyfikacji/dostosowania istniejących rozwiązań język BPEL Brak dokumentacji i odpowiedniego wsparcia np. Bexee Większość języków opisu procesów biznesowych opiera się o standard XML Przemysław Piechowiak 18
Motywacje powstania języka Wsparcie dla paradygmatu REST Orkiestracja usług Implementacja całego standardu Obsługa architektury z Zarządca Stanu Możliwość odtwarzania stanu po awarii Interakcja z człowiekiem Wprowadzanie danych Ingerencja w przebieg Deklaratywny opis problemu Bardziej naturalny sposób opisu problemu Łatwa i czytelna składnia języka Lekkość i prostota Interfejs zgodny z paradygmatem REST Przemysław Piechowiak 19
Dlaczego jest to język deklaratywny? Języki deklaratywne umożliwiają skupienie się na problemie i jego ograniczeniach W językach imperatywnych skupiamy się na algorytmie i sposobie rozwiązania problemu Dla usług sieciowych najważniejsze jest uzyskanie oczekiwanego rezultatu, a nie sposób w jaki on został osiągnięty. Składnia języka deklaratywnego jest znacznie bardziej podobna do składni języka naturalnego. Zrozumiały nie tylko dla programistów Czytelny i łatwy do nauczenia Przemysław Piechowiak 20
Agenda Zakres pracy Język ROsWeL? Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 21
Specyfikacja języka ROsWeL program lista reguł reguła reguła specyfikuje cel do spełnienia ciało wyrażenie logiczne regułę czyta się: Cel/nagłówek jest spełniony jeśli ciało jest prawdziwe Reguła bez ciała jest faktem Przemysław Piechowiak 22
Specyfikacja języka ROsWeL warunki logiczne alternatywa koniukcja Przemysław Piechowiak 23
Specyfikacja języka ROsWeL struktury danych ograniczenia Przemysław Piechowiak 24
Specyfikacja języka ROsWeL ograniczenia predefiniowane wynik znany dopiero w momencie wykonania natywne wsparcie dla REST Przemysław Piechowiak 25
Agenda Zakres pracy Język ROsWeL? Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 26
Przykład w języku ROsWeL Przemysław Piechowiak 27
Przykład w języku ROsWeL Przemysław Piechowiak 28
Przykład w języku ROsWeL Przemysław Piechowiak 29
Przykład w języku ROsWeL Przemysław Piechowiak 30
Agenda Zakres pracy Język ROsWeL? Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 31
Motywacja budowy IDE Obecnie Cel pisanie kodu w notatniku brak automatycznego kompilowania/instalowania/testowania usługi brak wsparcia dla składni języka dobry edytor kodu integracja narzędzi i silnika procesów maksymalizacja produktywności programistów Przemysław Piechowiak 32
Agenda Zakres pracy Język ROsWeL? Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 33
IDE języka ROsWeL Wtyczka do środowiska Eclipse IDE Możliwość edycji/kompilacji/instalacji usługi i jej testowania Przemysław Piechowiak 34
Proponowana funkcjonalność IDE Elementy obowiązkowe: analiza składniowa (parsing) Przemysław Piechowiak 35
Proponowana funkcjonalność IDE Elementy obowiązkowe: analiza składniowa (parsing) podświetlanie składni (syntax highlighting) Przemysław Piechowiak 36
Proponowana funkcjonalność IDE Elementy obowiązkowe: analiza składniowa (parsing) podświetlanie składni (syntax highlighting) podkreślanie błędów składniowych Przemysław Piechowiak 37
Proponowana funkcjonalność IDE Elementy obowiązkowe: analiza składniowa (parsing) podświetlanie składni (syntax highlighting) podkreślanie błędów składniowych proponowanie poprawek Przemysław Piechowiak 38
Proponowana funkcjonalność IDE Elementy obowiązkowe: auto-uzupełnianie (auto completion) baza symboli, identyfikatorów (symbol database) Przemysław Piechowiak 39
Proponowana funkcjonalność IDE Elementy obowiązkowe: auto-uzupełnianie (auto completion) baza symboli, identyfikatorów (symbol database) auto-wcięcia (auto indentation) Przemysław Piechowiak 40
Proponowana funkcjonalność IDE Elementy obowiązkowe: auto-uzupełnianie (auto completion) baza symboli, identyfikatorów (symbol database) auto-wcięcia (auto indentation) parowanie nawiasów (brace matching) Przemysław Piechowiak 41
Proponowana funkcjonalność IDE Elementy obowiązkowe: auto-uzupełnianie (auto completion) baza symboli, identyfikatorów (symbol database) auto-wcięcia (auto indentation) parowanie nawiasów (brace matching) ukrywanie części kodu (code folding) Przemysław Piechowiak 42
Proponowana funkcjonalność IDE Elementy obowiązkowe: karty właściwości projektu (properties) Przemysław Piechowiak 43
Proponowana funkcjonalność IDE Elementy opcjonalne: łącza do definicji, referencje (links to definition) Przemysław Piechowiak 44
Proponowana funkcjonalność IDE Elementy opcjonalne: łącza do definicji, referencje (links to definition) sprawdzanie pisowni (spell checking) Przemysław Piechowiak 45
Proponowana funkcjonalność IDE Elementy opcjonalne: łącza do definicji, referencje (links to definition) sprawdzanie pisowni (spell checking) refaktoryzacja i optymalizacji (refactoring) Przemysław Piechowiak 46
Proponowana funkcjonalność IDE Elementy opcjonalne: łącza do definicji, referencje (links to definition) sprawdzanie pisowni (spell checking) refaktoryzacja i optymalizacji (refactoring) debugowanie, statyczne określanie wartości zmiennych Przemysław Piechowiak 47
Proponowana funkcjonalność IDE Elementy opcjonalne: łącza do definicji, referencje (links to definition) sprawdzanie pisowni (spell checking) refaktoryzacja i optymalizacji (refactoring) debugowanie, statyczne określanie wartości zmiennych budowanie programu przy pomocy graficznych bloczków i automatyczne generowanie kodu ROsWeL Przemysław Piechowiak 48
Proponowana funkcjonalność IDE Elementy opcjonalne: łącza do definicji, referencje (links to definition) sprawdzanie pisowni (spell checking) refaktoryzacja i optymalizacji (refactoring) debugowanie, statyczne określanie wartości zmiennych budowanie programu przy pomocy graficznych bloczków i automatyczne generowanie kodu ROsWeL parsowanie kodu w trakcie pisania Przemysław Piechowiak 49
Agenda Zakres pracy Język ROsWeL? Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 50
Modyfikacje języka ROsWeL i silnika procesów biznesowych Analiza składniowa rozszerzenie preprocesora języka ROsWeL w zakresie analizy poprawności składniowej czytelne i zrozumiałe zgłaszanie błędów składniowych i propozycji korekty Integracja z Java ą rozbudowanie możliwości języka oraz silnika w celu integracji z Java ą dodawanie wstawek Java y ładowanie dodatkowych bibliotek zewnętrznych Przemysław Piechowiak 51
Agenda Zakres pracy Język ROsWeL? Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 52
Wykorzystywane technologie Implementacja: Java 1.6, Eclipse SDK IDE: Eclipse Java SDK Repozytorium: Subversion i Git Dokumentacja i praca dyplomowa: LaTEX Przemysław Piechowiak 53
Agenda Zakres pracy Język ROsWeL? Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 54
Harmonogram prac 13/04 04/05 10/05 17/05 25/05 08/06 04/07 17/07 25/07 08/08 15/08 30/04 09/05 16/05 23/05 07/06 15/06 11/07 24/07 07/08 14/08 31/08 Zaznajomienie się z literaturą dotyczącą REST oraz dokumentacją języka ROsWeL Zapoznanie się ze sposobem implementacji wtyczek do Eclipse a Zapoznanie się z implementacją wtyczek IDE dla innych języków Zapoznanie się z metodologią budowy preprocesora oraz analizy składniowej języków formalnych Analiza potrzeb programistów + Zdefiniowanie wymagań funkcjonalnych i pozafunkcjonalnych IDE Projekt zmian i uzupełnień preprocesora języka ROsWeL Projekt IDE + Prototyp Implementacja wersji wstępnej IDE Testowanie IDE + Redakcja pierwszej części pracy dyplomowej (teoria) Implementacja zmian i poprawek IDE + Testowanie IDE Testowanie IDE + Redakcja drugiej części pracy Przemysław Piechowiak 55
Agenda Zakres pracy Język ROsWeL? Motywacja powstania języka Specyfikacja języka ROsWeL Przykłady w języku ROsWeL Motywacja budowy IDE Budowa IDE dla języka ROsWeL Rozszerzenia języka ROsWeL Technologie Harmonogram prac Ramowy plan pracy dyplomowej Przemysław Piechowiak 56
Ramowy plan pracy dyplomowej 1. Wstęp 2. Podstawy teoretyczne 1. Systemy rozproszone 2. Usługi sieciowe REST 3. Opis procesu biznesowego 4. Języki formalne i analiza składniowa 3. Język ROsWeL i silnik procesów biznesowych 1. Opis języka 2. Zastosowania 4. Podejścia do realizacji środowiska programistycznego 1. Funkcje edytorów programistycznych 2. Dodatkowe cechy środowisk programistycznych 3. Wizualne środowiska programowania 4. Dyskusja istniejących rozwiązań 5. Rozszerzenia języka ROsWeL 1. Analiza poprawności składniowej 2. Integracja z językiem Java 6. Zintegrowane środowisko programistyczne dla języka ROsWeL 1. Wymagania funkcjonalne i pozafunkcjonalne 2. Architektura środowiska programistycznego 3. Integracja z platformą Eclipse 4. Wykorzystane technologie i narzędzia 5. Realizacja IDE 6. Proponowane rozszerzenia 7. Zakończenie 8. Bibliografia Przemysław Piechowiak 57
Literatura: [1] A. Flotyński, A. Stroiński, Deklaratywny opis procesów biznesowych w systemach zorientowanych na usługi, tworzonych w oparciu o paradygmat REST, Master Thesis PP, 2010 [2] L. Richardson, S. Ruby, RESTful Web Services, O Reilly, 2007 [3] A. Danilecki, M. Szychowiak, J. Jezierski, Porównanie funkcjonalności usługi odtwarzania procesów biznesowych oraz silników bpel, Tech. Rep. TR-ITSOA-OB2-4-PR-09-07 [4] J.Brzeziński, A. Danilecki, J. Flotyński, A. Kobusińska, A. Stroiński; Workflow Engine supporting RESTful Web Services; The Third Asian Conference on Intelligent Information and Database Systems, Lecture Notes in Artificial Intelligence LNCS/LNAI; 2010 [5] A. Danilecki, J. Flotyński, A. Kobusińska, A. Stroiński; Deklaratywny opis procesów biznesowych w systemach zorientowanych na usługi, tworzonych w oparciu o paradygmat REST raport OB2-4 w projekcie IT-SOA; 2010 [6] J. Flotyński, M. Hołenko, A. Kobusińska, A. Stroiński, P. Zierhoffer; Architektura modułu zarządzającego przepływem procesu biznesowego raport OB2-4 w projekcie IT-SOA; 2009 Przemysław Piechowiak 58
Dziękuję za uwagę Pytania? Przemysław Piechowiak 59