Środowisko prototypowania systemów regułowych.
Jakub Turoboś jakub.turobos@gmail.com
Przegląd istniejących rozwiązań
HJEd (Java)
potencjalnie dobre rozwiązanie, jednak na chwilę obecną niestabilne
konieczność zastąpienia użytej biblioteki do graficznej reprezentacji grafów (JGraph) inną
pomimo poszukiwań wybór jest mocno okrojony, jedyną sensowną opcją wydaje się być
JUNG
ciężko ocenić czas potrzebny na wprowadzenie zmian, nie ma też gwarancji na to czy będzie to koniec problemów
duża ilość klas, niejednokrotnie bardzo obszernych, jednak w większości dobrze okomentowanych
Varda/GVarda (Prolog)
rozwiązanie gotowe do rozbudowy
stosunkowo mniejsza ilość kodu, jednak momentami nie tak łatwa w odbiorze jak kod języka Java
Podsumowując, preferowanym rożwiązaniem na chwilę obecną jest Varda. W zależności od postępu prac, rozwijane być może będą oba rozwiązania.
BUGS
Scenariusze refaktoring'u
Finalizacja
Zmiana nazwy atrybutu
Niezależnie od diagramu (ARD, TPH) oraz poziomu szczegółowości istnieją dwa przypadki, w zależności od edytowanej własności:
Complex Property (PC) - należy z niej wybrać jedną z zawartych w niej własności, po czym postępujemy jak w następnym przypadku
Simple Property (
PS) - niezależnie od tego czy własność jest conceptual czy phisical następuje algorytm zmiany nazwy atrybutu opisany
poniżej
Usuwanie atrybutu
Podobnie jak w poprzednim przypadku, istnieją tylko dwa przypadki, w zależności od usuwanej własności, niezależne od diagramu ani poziomu szczegółowości:
usuwanie jednego z atrybutów należących do własności (w przypadku PC)
usuwanie całej własności
niezależnie od przypadku następuje algorytm usuwania atrybutu opisany poniżej
Dodawanie atrybutu
Przy dodawaniu nowego atrybutu na poziomie niższym niż aktualny poziom szczegółowości istnieje tylko jedno rozwiązanie - użytkownik musi wybrać (na diagramie TPH) jedną z istniejących transformacji finalizacji i tam dodać nowy atrybut, a następnie tworzyć kolejne transformacje do momentu kiedy:
osiągnięty zostanie najwyższy poziom szczegółowości
dodany atrybut w wyniku kolejnych transformacji rozwinięty zostanie w atrybuty fizyczne należące do PS, czyli niemożliwe będzie zastosowanie kolejnych transformacji
Wersja minimalna - użytkownik musi wybrać (na diagramie TPH) jedną z istniejących transformacji finalizacji i tam dodać nowy atrybut, a następnie zdefiniować zależności funkcyjne związane z dodanym atrybutem na najbardziej szczegółowym poziomie. Tak dodany atrybut może być dalej rozwijany, jeżeli nie jest on atrybutem fizycznym.
Podział
Modyfikacja zależności funkcyjnych
Zależności funkcyjne dowolnego niższego od aktualnego poziomu szczegółowości wygenerować można wykorzystując diagram TPH oraz zależności funkcyjne zdefiniowane na aktualnym poziomie szczegółowości. Proces odwrotny natomiast, czyli wygenerowanie zależności funkcyjnych przy przejściu na wyższy poziom szczegółowości wymaga w przeważającej ilości przypadków ingerencji użytkownika. Dlatego też optymalnym rozwiązaniem wydaje się pozostawienie użytkownikowi swobody modyfikacji zależności funkcyjnych jedynie na najwyższym poziomie szczegółowości diagramu ARD.
Modyfikacja przydziału atrybutu do własności
Przy modyfikacji przydziału atrybutu do własności w ramach podziału danego PC mogą zajść następujące warianty:
opisy algorytmów powyższych modyfikacji znajdują się poniżej.
Modyfikacja bieżącego poziomu
Modyfikacja zależności funkcyjnej
Modyfikacja zależności funkcyjnej może polegać na jej:
usunięciu
dodaniu
„przepięciu”
opisy algorytmów powyższych modyfikacji znajdują się poniżej.
Modyfikacja atrybutów
dodanie/usunięcie/zmiana nazwy - pokryte przez
finalizację
Algorytmy refactoring'u
Finalizacja
Zmiana nazwy atrybutu
rekurencyjne przeszukanie zbiorów P, D, V dla zadanej nazwy atrybutu
zmiana nazwy każdego ze znalezionych atrybutów; przerwanie w przeciwnym przypadku
Usuwanie atrybutu
utworzenie kolejki/listy lub kilku list własności/atrybutów, zależności oraz pochodnych do usunięcia lub akcji do wykonania (FILO)
znalezienie takiej pochodnej V = [P1, P2] w zbiorze V, gdzie usuwany atrybut X należy do P2 i nie należy do P1, czyli szukana jest finalizacja, z której pochodzi usuwany atrybut; przerwanie w przeciwnym przypadku
dopisanie atrybutu X z własności P2 do listy
znalezienie takiej pochodnej VX = [P2, PX] w zbiorze V, gdzie PX jest PS, czyli szukana jest transformacja podziału dla własności P2 i atrybutu X; przerwanie w przeciwnym przypadku
dopisanie własności PX oraz pochodnej VX do listy
znalezienie pochodnych VN = [PX, PN] w zbiorze V
jeżeli w poprzednim kroku znaleziono pochodne, to dla każdej z nich:
dopisać PN oraz VN do listy
zastąpić własność PX własnością PN
wrócić do kroku 6.
czy jeżeli istnieją zależności funkcyjne DN,X oraz DX,M, to czy można przy usuwaniu własności X stworzyć zależność DN,M?
dla każdej z własności/atrybutu X znajdującego się na liście do usunięcia znaleźć w zbiorze D zależności fukcyjne
DN,X = [PN, PX] oraz DX,M = [PX, PM], gdzie PX zawiera X
Dodawanie atrybutu
Analiza istniejących rozwiązań - ewentualne ich wykorzystanie/modyfikacja
Podział
Modyfikacja przydziału atrybutu do własności
żadna z modyfikowanych własności pochodzących z podziału nie posiada pochodnych - prosta edycja transformacji podziału, może być wykonana poprzez usunięcie edytowanej transformacji z zachowaniem atrybutów, a następnie dodanie nowej transformacji podziału z nowym przydziałem atrybutów, po czym może nastąpić ewentualna modyfikacja zależności funkcyjnych
modyfikowane własności pochodzące z podziału posiadają pochodne
Modyfikacja bieżącego poziomu
Modyfikacja zależności funkcyjnej
usunięcie zależności funkcyjnej:
przeszukanie zbioru D
usunięcie znalezionej zależności; przerwanie w przeciwnym przypadku
dodanie zależności funkcyjnej - wykorzystanie istniejącego rozwiązania
„przepięcie” zależności funkcyjnej:
przeszukanie zbioru D
zastąpienie pierwszego lub drugiego atrybutu znalezionej zależności; przerwanie w przeciwnym przypadku
alternatywnie :
usunięcie modyfikowanej zależności
dodanie nowej, już zmodyfikowanej zależności
Todo
HJED - czy przydatny? na 2.12.2009, decyzja ktore oprogramowanie rozwijac (gvarda/varda, czy hjed), JUNG – krotki raport, docelowo rozdzial/podrozdzial pracy, opis na 9/12/2009
-
bardziej szczegolowo scenariusze, przemyslec algorytmy modyfikacji bazy wiedzy odnosnie rafaktoringu 20.01.2010, on hold
wstep i podst. teoretyczne: 10.02.2010
Spis treści
-
Podstawy teoretyczne
atrybutowe systemy regułowe (prof.Ligeza, Logical Foundations for Rule-Based Systems)
projektowanie syst. reg. (Mulawka, Systemy Ekspertowe)
-
Projekt
specyfikacja wymagań:
głóny cel,
porównanie technlogii (hjed, varda, gvarda),
przypadki użycia (scenariusze do każdego rodzaju refaktoringu)
Projekt
Implementacja
Użycie/Testy
realizacja przypadkow użycia, zastosowanie predykatow,
GUI w akcji, diagramy.
Podsumowanie
Termin obrony: czerwiec.