Implementacja schematów i statycznej kontroli typów w...

72
Paweł Mantur Implementacja schematów i statycznej kontroli typów w systemie JLoXiM projekt rozwiązania 2009-11-12

Transcript of Implementacja schematów i statycznej kontroli typów w...

Paweł Mantur

Implementacja schematów i

statycznej kontroli typów w systemie JLoXiM

projekt rozwiązania

2009-11-12

2

Schematy w bazach danych● Relacyjne bazy danych:

tabele, kolumny, typy danych, klucze itp.

3

Schematy w bazach danych● Relacyjne bazy danych:

tabele, kolumny, typy danych, klucze itp.● XML:

DTD, XMLSchema

4

Schematy w bazach danych● Relacyjne bazy danych:

tabele, kolumny, typy danych, klucze itp.● XML:

DTD, XMLSchema● Obiektowe bazy danych:

OMG IDL, ODMG ODL

5

Rola schematów● Definiowanie zawartości bazy danych

6

Rola schematów● Definiowanie zawartości bazy danych● Opisywanie zawartości

7

Rola schematów● Definiowanie zawartości bazy danych● Opisywanie zawartości● Więzy integralności

8

Rola schematów● Definiowanie zawartości bazy danych● Opisywanie zawartości● Więzy integralności● Użyteczne przy optymalizacji

9

Rola schematów● Definiowanie zawartości bazy danych● Opisywanie zawartości● Więzy integralności● Użyteczne przy optymalizacji● Umożliwiają kontrolę typów

10

● System typów

Komponenty

11

● System typów● Schemat zewnętrzny:

język do definiowania schematów

Komponenty

12

● System typów● Schemat zewnętrzny:

język do definiowania schematów● Reprezentacja wewnętrzna:

metabaza

Komponenty

13

● System typów● Schemat zewnętrzny:

język do definiowania schematów● Reprezentacja wewnętrzna:

metabaza● Store + schema

Komponenty

14

● System typów● Schemat zewnętrzny:

język do definiowania schematów● Reprezentacja wewnętrzna:

metabaza● Store + schema● Sygnatury

Komponenty

15

● System typów● Schemat zewnętrzny:

język do definiowania schematów● Reprezentacja wewnętrzna:

metabaza● Store + schema● Sygnatury● Aparat statycznej kontroli typów

Komponenty

16

● System typów● Schemat zewnętrzny:

język do definiowania schematów● Reprezentacja wewnętrzna:

metabaza● Store + schema● Sygnatury● Aparat statycznej kontroli typów● Schema code writer

Komponenty

17

Typy proste atomowe:● string● boolean● int, decimal, real● date, time, datetime● binary● object

System typów

18

Restrykcje typów prostychcreate constraint PositiveInteger restricts int { minValue: 0; defaultValue: 1;}

System typów

19

Restrykcje typów prostychcreate constraint PositiveInteger restricts int { minValue: 0; defaultValue: 1;}

System typów

● restrykcje tworzą nowe typy atomowe

20

Restrykcje typów prostychcreate constraint PositiveInteger restricts int { minValue: 0; defaultValue: 1;}

System typów

● restrykcje tworzą nowe typy atomowe

● opcje zależą od typu bazowego, który ograniczamy

21

Restrykcje typów prostychcreate constraint PositiveInteger restricts int { minValue: 0; defaultValue: 1;}

System typów

● restrykcje tworzą nowe typy atomowe

● opcje zależą od typu bazowego, który ograniczamy

● np. dla typu string: length, regex, maxLength...

22

Klasy● pola

System typów

23

Klasy● pola● metody

System typów

24

Klasy● pola● metody● wielodziedziczenie

System typów

25

Klasy● pola● metody● wielodziedziczenie● role

System typów

26

Klasy● pola● metody● wielodziedziczenie● role● nazwa obiektów będących instancj

System typów

27

Klasy● pola● metody● wielodziedziczenie● role● nazwa obiektów będących instancją● lista eksportowa

System typów

28

Klasy● pola● metody● wielodziedziczenie● role● nazwa obiektów będących instancją● lista eksportowa● więzy integralności

System typów

29

Liczebności● [0..1] albo ? - wartość opcjonalna

System typów

30

Liczebności● [0..1] albo ? - wartość opcjonalna● [1..1] - wartość wymagana (domyślne)

System typów

31

Liczebności● [0..1] albo ? - wartość opcjonalna● [1..1] - wartość wymagana (domyślne)● [0..*] - kolekcja

System typów

32

Liczebności● [0..1] albo ? - wartość opcjonalna● [1..1] - wartość wymagana (domyślne)● [0..*] - kolekcja● [1..*] - niepusta kolekcja

System typów

33

Predefiniowane typy złożone

xml ● wymuszanie struktury XML● wsparcie dla DOM, XSLT, Xquery

System typów

34

Predefiniowane typy złożone

xml ● wymuszanie struktury XML● wsparcie dla DOM, XSLT, Xquery

any – luźna struktuta● brak narzyconej struktury● schemat dynamiczny

System typów

35

Enumeratory

create enum AtomicType { int, string, bool, datetime, binary = 7 }

● wewnętrznie jest to int● domyślna numeracja od 0

System typów

36

Constraints (więzy integralności)● Wewnątrz definicji klasy

System typów

constraint cardinalityConstraint "minOccurences <= maxOccurences" on maxOccurences, minOccurences;

37

Constraints (więzy integralności)● Wewnątrz definicji klasy

System typów

constraint cardinalityConstraint "minOccurences <= maxOccurences" on maxOccurences, minOccurences;

● Poza definicją klasyconstraint cardinalityConstraint restricts FieldType"minOccurences <= maxOccurences" on maxOccurences, minOccurences;

38

● Nieoficjalana nazwa JLoXiM ODL

Schemat zewnętrzny

39

● Nieoficjalna nazwa JLoXiM ODL● Rozszerzenie istniejącej gramatyki

Schemat zewnętrzny

40

● Nieoficjalna nazwa JLoXiM ODL● Rozszerzenie istniejącej gramatyki● Tworzenie/usuwanie klas, enumeratorów,

restrykcji, więzów

Schemat zewnętrzny

41

● Nieoficjalna nazwa JLoXiM ODL● Rozszerzenie istniejącej gramatyki● Tworzenie/usuwanie klas, enumeratorów,

restrykcji, więzów● Gtramatyka dostępna na wiki:

http://jloxim.mimuw.edu.pl/redmine/wiki/jloxim/SchemaGrammar

Schemat zewnętrzny

42

● Część składu obiektów, gdzie pamiętamy definicje wprowadzone za pomocą schematu zewnętrznego

Metabaza

43

● Część składu obiektów, gdzie pamiętamy definicje wprowadzone za pomocą schematu zewnętrznego

● Zdefiniowanie schematu dla składu obiektów poprzez określenie typu (zazwyczaj klasy) dla korzenia

Metabaza

44

● Część składu obiektów, gdzie pamiętamy definicje wprowadzone za pomocą schematu zewnętrznego

● Zdefiniowanie schematu dla składu obiektów poprzez określenie typu (zazwyczaj klasy) dla korzenia

● Możliwość automatycznego dodania przestrzeni systemowej (metabazy) do schematu zewnętrznego

Metabaza

45

● Odpytywanie metabazy:sys.classes where name = „MojaKlasa”sys.schemaInfo.rootClass.name

Organizacja metabazy

46

● Odpytywanie metabazy:sys.classes where name = „MojaKlasa”sys.schemaInfo.rootClass.name

● Schemat metabazy w postaci diagramu UML...

Organizacja metabazy

47

48

● Odpytywanie metabazy:sys.classes where name = „MojaKlasa”sys.schemaInfo.rootClass.name

● Schemat metabazy w postaci diagramu UML

● Schemat metabazy zapisany w JLoXiM ODL na wiki

Organizacja metabazy

49

● Skład obiektów ze świadomością posiadania schematu

Store + schema

50

● Skład obiektów ze świadomością posiadania schematu

● Kontrola operacji modyfikujących dane

Store + schema

51

● Skład obiektów ze świadomością posiadania schematu

● Kontrola operacji modyfikujących dane● Odczytywanie informacji o typach z

metabazy

Store + schema

52

● Podczas kontroli statycznej nie znamy wartości obiektów, ale znamy ich sygnatury

Sygnatury

53

● Podczas kontroli statycznej nie znamy wartości obiektów, ale znamy ich sygnatury

● Sygnatury opisują wartości przetwarzane w czasie wykonania

Sygnatury

54

● Podczas kontroli statycznej nie znamy wartości obiektów, ale znamy ich sygnatury

● Sygnatury opisują wartości przetwarzane w czasie wykonania

● Niosą informację o typie lub możliwych typach obiektów

Sygnatury

55

● Podczas kontroli statycznej nie znamy wartości obiektów, ale znamy ich sygnatury

● Sygnatury opisują wartości przetwarzane w czasie wykonania

● Niosą informację o typie lub możliwych typach obiektów

● Można symulować wykonanie zapytania wykonując je na metabazie

Sygnatury

56

● Podczas kontroli statycznej nie znamy wartości obiektów, ale znamy ich sygnatury

● Sygnatury opisują wartości przetwarzane w czasie wykonania

● Niosą informację o typie lub możliwych typach obiektów

● Można symulować wykonanie zapytania wykonując je na metabazie

● Zamiast na rzeczywistych wartościach operujemy na sygnaturach

Sygnatury

57

● Symulowanie wykonania: statyczny stos środowisk i statyczny stos rezultatów

Statyczna kontrola typów

58

● Symulowanie wykonania: statyczny stos środowisk i statyczny stos rezultatów

● Zamiast wartości – sygnatury

Statyczna kontrola typów

59

● Symulowanie wykonania: statyczny stos środowisk i statyczny stos rezultatów

● Zamiast wartości – sygnatury● Wnioskowanie o typie wyniku na podstawie

tabel decyzyjnych

Statyczna kontrola typów

60

● Symulowanie wykonania: statyczny stos środowisk i statyczny stos rezultatów

● Zamiast wartości – sygnatury● Wnioskowanie o typie wyniku na podstawie

tabel decyzyjnych● Nie o wszystkim da się zdecydować

podczas kontroli statycznej

Statyczna kontrola typów

61

● Symulowanie wykonania: statyczny stos środowisk i statyczny stos rezultatów

● Zamiast wartości – sygnatury● Wnioskowanie o typie wyniku na podstawie

tabel decyzyjnych● Nie o wszystkim da się zdecydować

podczas kontroli statycznej● Pół-mocna kontrola typów

Statyczna kontrola typów

62

● Tablica decyzyjna dla każdego operatora

Tablice decyzyjne

63

● Tablica decyzyjna dla każdego operatora● Wnioskowanie o typie wyniku na podstawie

typu argumentów

Tablice decyzyjne

64

● Tablica decyzyjna dla każdego operatora● Wnioskowanie o typie wyniku na podstawie

typu argumentów● Czasami zbiór możliwych typów (wariant)

Tablice decyzyjne

65

● Tablica decyzyjna dla każdego operatora● Wnioskowanie o typie wyniku na podstawie

typu argumentów● Czasami zbiór możliwych typów (wariant)● Czasami odłożenie sprawdzenia

poprawności typologicznej do czasu wykonania

Tablice decyzyjne

66

● Tablica decyzyjna dla każdego operatora● Wnioskowanie o typie wyniku na podstawie

typu argumentów● Czasami zbiór możliwych typów (wariant)● Czasami odłożenie sprawdzenia

poprawności typologicznej do czasu wykonania

● Łatwa zmiana zachowania aparatu kontroli, poprzez zmianę tabel decyzyjnych

Tablice decyzyjne

67

● Tablica decyzyjna dla każdego operatora● Wnioskowanie o typie wyniku na podstawie

typu argumentów● Czasami zbiór możliwych typów (wariant)● Czasami odłożenie sprawdzenia

poprawności typologicznej do czasu wykonania

● Łatwa zmiana zachowania aparatu kontroli, poprzez zmianę tabel decyzyjnych

● Wiele decyzji to kwestia upodobań

Tablice decyzyjne

68

● Eksport metabazy do postaci zewnętrznej

Schema code writer

69

● Eksport metabazy do postaci zewnętrznej● Generowanie bibliotek klienckich

Schema code writer

70

● Eksport metabazy do postaci zewnętrznej● Generowanie bibliotek klienckich● Dostarczenie API umożliwiającego pisanie

plug-in'ów generujących różne formaty (XML, Java, C#, UML, ...)

Schema code writer

71

● Eksport metabazy do postaci zewnętrznej● Generowanie bibliotek klienckich● Dostarczenie API umożliwiającego pisanie

plug-in'ów generujących różne formaty (XML, Java, C#, UML, ...)

● Implementacja eksportu do JLoXiM ODL

Schema code writer

72

Dziękuję.