220 likes | 364 Views
Standardy w zakresie systemów rozproszonych i baz danych. Wykład 8: Wprowadzenie do systemu VIDE. Piotr Habela Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik Komputerowych, Warszawa. Materiały. Strony internetowe projektu VIDE http://www.vide-ist.eu/ VIDE e-learning system
E N D
Standardy w zakresie systemów rozproszonych i baz danych Wykład 8: Wprowadzenie do systemu VIDE Piotr Habela Kazimierz Subieta Polsko-Japońska Wyższa Szkoła Technik Komputerowych, Warszawa
Materiały • Strony internetowe projektu VIDE • http://www.vide-ist.eu/ • VIDE e-learning system • http://www.vide-ist.eu/reflib/elearning/index.html • VIDE Cookbook • http://www.vide-ist.eu/reflib/cookbook.html • Prace opublikowane nt. projektu VIDE http://www.si.pjwstk.edu.pl/publications/pl/index.html • G.Falda, P.Habela, K.Kaczmarski, K.Stencel, K.Subieta: Object Oriented Database Prototype as a Model Execution Engine for Executable UML. Proceedings of the 1st International Conference on Object Databases, ICOODB 2008, Berlin 13-14 March 2008, pp.167-178 • P.Habela, K.Kaczmarski, K.Stencel, K.Subieta: OCL as the Query Language for UML Model Execution. Computational Science - ICCS 2008, 8th International Conference, Kraków, Poland, June 23-25, 2008, Proceedings, Part III. Lecture Notes in Computer Science 5103 Springer 2008, pp.311-320 • G.Falda, P.Habela, K.Kaczmarski, K.Stencel, K.Subieta: Executable Platform Independent Models for Data Intensive Applications. Computational Science - ICCS 2008, 8th International Conference, Kraków, Poland, June 23-25, 2008, Proceedings, Part III. LNCS 5103 Springer 2008, pp. 301-310 • R.Adamus, G.Fałda, P.Habela,K.Kaczmarski, K.Stencel, K.Subieta: Project VIDE – Challenges of Executable Modelling of Business Applications. Proc. of NEPTUNE’2008 Conf. on Model-Driven Engineering, Paris 8-9 April 2008, Genie Logiciel 85, 2008, pp.53-56 • P.Habela, K.Kaczmarski, K.Stencel, K.Subieta: Implementing OCL as a Database Query Language. On the Move to Meaningful Internet Systems 2007: OTM 2007 Workshops, OTM Confederated International Workshops and Posters,Vilamoura, Portugal, November 25-30, 2007, Proceedings, Part I., LNCS 4805, Springer, 2007, pp. 17-18 • G.Fałda, P.Habela, K.Kaczmarski, K.Stencel, K.Subieta. Platform-independent programming of data-intensive applications using UML 2nd IFIP Central and East European Conference on Software Engineering Techniques CEE-SET 2007, Poznań 2007
Geneza projektu VIDE (1) • Projekt europejski (VIsualize all moDel drivEn programming) • 6-ty Program Ramowy Unii Europejskiej • Autor pomysłu i wniosku grantowego: Grzegorz Fałda • Czas trwania projektu: lipiec 2006 – grudzień 2008 • Dofinansowanie: UE ~ 2 300 000 €, rządy ~1 700 000 € • 9-ciu partnerów: • PJWSTK (Polska), koordynacja projektu • Bournemouth University (Wielka Brytania) • Fraunhofer Instititute (Niemcy) • DFKI - German Research Center for Artificial Intelligence (Niemcy) • Rodan Systems (Polska) • Softeam (Francja) • TNM Software GmbH (Niemcy) • SAP AG (Niemcy) • ALTEC (Grecja) • Zakończony sukcesem, bardzo pochlebne opinie recenzentów
Geneza projektu VIDE (2) • Dotyczy podejścia Model Driven Architecture (MDA) • VIDE realizuje postulaty wykonywalnego UML (Executable UML) • Język akcji o nazwie VIDE, zgodny z UML 2.1 – standard OMG • Kodowanie tekstowe i graficzne. • Szeroki zakres potencjalnych zastosowań (biznesowych) opartych o bazy danych. • Implementacja OCL 2.0 – standard OMG - jako języka zapytań do obiektowej bazy danych • Programowanie aspektowe • Mechanizmy kontroli jakości oprogramowania • Specyfikacji procesów biznesowych (workflow) • Kompilatory z VIDE do zewnętrznych platform (Java i ODRA) • Integracja zewnętrznych zasobów i oprogramowania (relacyjne bazy danych, XML, OfficeObjectsWorkflow, …) • Prototyp zrealizowany dla platformy ODRA (PJWSTK)
Prototyp VIDE – najważniejsze informacje (1) • VIDE jest językiem programowania opartym na standardzie UML 2.1 i zgodnie z postulatami podejścia MDA • Ma służyć do specyfikowania w UML oprogramowania (włączając w to pełną logikę aplikacji) na poziomie modelu niezależnego od platformy • Model taki pozwala na jego transformowanie na wybraną platformę docelową, poprzez wygenerowanie z odpowiednich konstrukcji modelu kodu źródłowego lub maszynowego dla tejże platformy • Specyfikowanie szczegółów zachowania w języku UML służą niedawno wprowadzone do jego specyfikacji części Structured Activities oraz Actions • W edytorze wizualnym - pojęcia bezpośrednio występujące w ww. częściach metamodelu UML • W edytorze tekstowym –instrukcje języka programowania • W UML nie zestandaryzowano dotychczas składni dla tych konstrukcji - ani wizualnej ani tekstowej • Obie składnie natomiast są odwzorowywane odpowiednio na te same, zestandaryzowane elementy metamodelu UML
Prototyp VIDE – najważniejsze informacje (2) • Specyfikowane zachowanie jest odwzorowywane na model stanowiący instancję metamodelu UML. • Zachowanie aplikacji specyfikujemy w VIDE poprzez budowę ciał metod, związanych z operacjami w klasach znajdujących się w modelu klas UML. • Strukturalna warstwa modelu jest realizowana przez pojęcia pakietów oraz klas, połączonych w kompozycje i asocjacje oraz mogących wykorzystywać relację generalizacji. • Szczególną rolę odgrywać może klasa modułowa - specjalna klasa, której instancji nie powołujemy w normalny sposób. • Zakłada się, że w momencie uruchomienia aplikacji istnieje dokładnie jedna instancja takiej klasy, która pełni rolę punktu wejścia dla uruchamiania funkcjonalności aplikacji. • Klasę modułową, która musi mieć nazwę identyczną z nazwą zawierającego ją pakietu, definiujemy przypisując jej stereotyp «module».
Prototyp VIDE – najważniejsze informacje (3) • Funkcjonalność aplikacji można wywołać: • wołając jedną z operacji klasy modułowej • wydobywając z atrybutów klasy modułowej obiekty i wywołując operacje • UML 2.1 wprowadza akcje do odczytu pojedynczych wartości • Jest to niewystarczające dla aplikacji z bazą danych • Konieczny jest język zapytań a la SQL • W tej roli OCL (Object Constraint Language), stworzony do formułowania ograniczeń w modelu • Rola OCL jest zmieniona, w VIDE występuje jako język zapytań • Specyfikacje UML 2.1 i OCL 2.0 są mocno niedojrzałe • Toczą się prace nad precyzyjną, „wykonywalną” semantyką UML • UML Actions oraz Structured Activities nie posiadają określonej w standardzie składni konkretnej • Stąd na potrzeby VIDE trzeba było zaprojektować konkretną składnię i semantykę • Jest to przedmiot wniosku do OMG
VIDE a MDA • VIDE wspiera podejście MDA. W tym celu wyróżnia 4 warstwy modeli i artefaktów: • Computation Independent Model (CIM) – przykrywający wiedzę dziedzinową i opisujący logikę biznesową w sposób abstrahujący od konkretnych rozwiązań programistycznych • Platform Independent Model (PIM) – opisujący struktury i zachowanie (behaviour) wytwarzanego oprogramowania bez określania detali docelowej platformy implementacyjnej • Platform Specific Model (PSM) –model precyzujący decyzje projektowe w terminach pewnej technologii programistycznej • Kod – kod źródłowy oprogramowania, automatycznie wygenerowany z PSM • VIDE idzie nieco dalej niż typowe założenia MDA, mianowicie oferuje kodowanie, uruchamianie i testowanie programów już na poziomie PIM • Inne rozwiązanie zmuszałoby do uruchamiania i testowania oprogramowania dopiero na poziomie PSM lub na poziomie kodu, co oznaczałoby niższy poziom abstrakcji w programowaniu, niższy potencjał ponownego użycia, większą pracochłonność, gorszą jakość,… • Na poziomie PSM tylko drobne poprawki, jeżeli w ogóle ktoś będzie chciał wprowadzać PSM • Generowanie kodu bezpośrednio z poziomu PIM • Odpowiednie adnotacje do modelu PIM, specyficzne dla danej platformy
MDA w architekturze narzędzi VIDE Modelowanie niezależne od obliczeń Analiza dziedzinowa CIM Prototypowanie na poziomie PIM Modelowanie procesów Kompozycja aspektowa Modelowanie aplikacji Zapewnienie jakości PIM Wykonanie/testowanie modelu PIM PIM z adnotacjami PSM? Kod Generowanie kodu
VIDE jako nowy język programowania • Poprzez to, że można programować już na poziomie PIM, powstaje pewna sprzeczność z założeniami MDA • Jeżeli programujemy na poziomie PIM, to po co PSM i kod? • PIM staje się w ten sposób PSM, który jest jednocześnie kodem • po co generować kod w Java, C#, itd. jeżeli wszystko, co można zrobić z tym kodem, to go skompilować? • przykryć jakimś makefile i zapomnieć o tych językach i ich kompilatorach • VIDE jest nowym obiektowym językiem programowania • z bazą danych/obiektów • ze schematem obiektów zapisanym w UML • złożone obiekty, kolekcje, typy, klasy, metody, asocjacje, dziedziczenie,… • Można także uważać, że w VIDE piszemy tylko prototyp, który wprawdzie jest wykonywalny, ale ze słabą wydajnością, uproszczonymi interfejsami, itd. • Ale wtedy powstaje zadanie optymalizacyjne: jak zrobić VIDE w pełni wydajnym językiem, z właściwymi interfejsami, itd. • Aby nie tracić istniejących bibliotek – pomosty do Java, .Net, C++, …
Unikalne cechy systemu VIDE (1) • Zuniformizowany język programowania bazujący na UML pozwalający na precyzyjną specyfikację zachowania • Większa elastyczność dla procesów rozwoju oprogramowania • Mniejsze problemy komunikacyjne pomiędzy społecznościami analizy, projektowania i programowania • Język OCL jako język zapytań pozwala na zapis wymaganej funkcjonalności w sposób krótki, koncepcyjny i deklaracyjny • Zapytania oraz zdania imperatywne są bezszwowo zintegrowane w jeden język • Zestandaryzowany metamodel • Brak niezgodności impedancji • Podejście aspektowe oraz wykrywanie defektów podniesione na poziom PIM • Sprzyja ponownemu użyciu • Sprzyja walce ze złożonością aplikacji
Unikalne cechy systemu VIDE (2) • Pełne pokrycie procesu przejścia z modelu biznesowego do wykonywalnego kodu • Wykonywalny model PIM posiada pomosty do istniejących usług (np.WS), silnika workflow, itd. • Prototypowanie i testowanie pry pomocy GUI • Narzędzie do modelowania “pre-CIM” dla użytkowników biznesowych • Pozwala im na efektywne włączenie się w rozwój aplikacji • Rozszerzony język na poziomie CIM bazujący na notacji BPMN • Przejście z CIM do PIM w terminach odwzorowania pomiędzy modelami jako punkt wyjściowy do specyfikacji aplikacji oraz jako wzorzec dla projektowania wykonywalnych procesów workflow
Standardy wspomagane lub używane przez VIDE • BPMN - Business Process Modeling Notation • XPDL - XML Process Definition Language • UML - Unified Modeling Language • OCL - Object Constraint Language • XML - Extensible Markup Language • XMI - XML Metadata Interchange • SOAP – Simple Object Access Protocol • WS - Web Services • WSDL - Web Service Definition Language • UDDI - Universal Description, Discovery and Integration • JDBC – Java Data Base Connectivity • SQL – Structured Query Language
Proces generacji aplikacji w ODRA Behavior PIM VIDE Textual SBQL AST SBQL CODE ODRA Server VIDE Visual ODRA DDL UML Structures
Eclipse SDK • Dla systemu VIDE wybrano Eclipse jako zintegrowane środowisko deweloperskie (IDE) dla edytowania programów tekstowych • Jest to popularne i uniwersalne środowisko open-source, jakkolwiek nie wolne od wad takich jak złożoność, trudności w nauczeniu się i błędy w oprogramowaniu • Bazujące na Eclipse implementacje MDT metamodeli dla UML i OCL tworzą mechanizm odwzorowania pomiędzy modelami • Programy zapisane w PIM odwzorowuje się na graf abstrakcyjnej składni określony w/w metamodelami • Abstrakcyjna składnia może być dalej przedmiotem przetwarzania, np. w związku z aspektowością i wykrywaniem defektów • Po zakończeniu przetwarzania, abstrakcyjna składnia może być odwzorowana na kod. Obecnie dwa kompilatory kodu są dostępne: Java + Hibernate oraz ODRA • openArchiectureware framework dla kompilatora modelu dla Java • Dla edytorów wizyjnych wykorzystano framework GMF • Wybór Eclipse i popularnych frameworków do zapisu i odwzorowania modeli znacznie ułatwia projektowanie funkcjonalności aplikacji.