Narzędzia użytkownika

Narzędzia witryny


pl:student:msc2010_ardref

Środowisko prototypowania systemów regułowych.

Jakub Turoboś jakub.turobos@gmail.com

  • implementacja refactoring dla varda/gvarda/interactive_shell
  • ocena przydatności: przyklady

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

  • GVARDA - błąd parsowania przy próbie finalizacji - stworzenia atrybutu o podobnej nazwie, np. dla atrybutu 'Dat' występuje błąd parsowania, gdy próbujemy stworzyć atrybut 'Data'

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:

  1. 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
  2. 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:

  1. usuwanie jednego z atrybutów należących do własności (w przypadku PC)
  2. 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:

  • żadna z modyfikowanych własności pochodzących z podziału nie posiada pochodnych
  • modyfikowane własności pochodzące z podziału posiadają pochodne
    • połączenie dwóch lub własności w pojedynczy PC
    • rozbicie PC na szereg PS

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

  1. rekurencyjne przeszukanie zbiorów P, D, V dla zadanej nazwy atrybutu
  2. zmiana nazwy każdego ze znalezionych atrybutów; przerwanie w przeciwnym przypadku

Usuwanie atrybutu

  1. utworzenie kolejki/listy lub kilku list własności/atrybutów, zależności oraz pochodnych do usunięcia lub akcji do wykonania (FILO)
  2. 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
  3. dopisanie atrybutu X z własności P2 do listy
  4. 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
  5. dopisanie własności PX oraz pochodnej VX do listy
  6. znalezienie pochodnych VN = [PX, PN] w zbiorze V
  7. jeżeli w poprzednim kroku znaleziono pochodne, to dla każdej z nich:
    1. dopisać PN oraz VN do listy
    2. zastąpić własność PX własnością PN
    3. 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?
  8. 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
    • połączenie dwóch lub własności w pojedynczy PC (z wyłączeniem możliwości połączenia wszystkich) - wygenerowanie nowego PC, będącego sumą atrybutów własności łączonych, oraz transformacji podziału

Modyfikacja bieżącego poziomu

Modyfikacja zależności funkcyjnej

  • usunięcie zależności funkcyjnej:
    1. przeszukanie zbioru D
    2. 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:
    1. przeszukanie zbioru D
    2. zastąpienie pierwszego lub drugiego atrybutu znalezionej zależności; przerwanie w przeciwnym przypadku
      alternatywnie :
    3. usunięcie modyfikowanej zależności
    4. 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

  1. wstep (zgodnie z Howto jak_pisac_prace_dyplomowa
  2. Podstawy teoretyczne
    1. atrybutowe systemy regułowe (prof.Ligeza, Logical Foundations for Rule-Based Systems)
    2. projektowanie syst. reg. (Mulawka, Systemy Ekspertowe)
  3. Projekt
    1. specyfikacja wymagań:
      • głóny cel,
      • porównanie technlogii (hjed, varda, gvarda),
      • przypadki użycia (scenariusze do każdego rodzaju refaktoringu)
    2. Projekt
      • Jakie technologie i dla czego (uzasadnienie wyboru, na podstawie analizay varda/gvarda/hjed)
      • predykaty
      • GUI
  4. Implementacja
    • co zostało zaimplementowane: predykaty, GUI
    • Szczegóły implementacyjne
    • Problemy z implementacją
    • jak zostały spełnione wymagania.
  5. Użycie/Testy
    • realizacja przypadkow użycia, zastosowanie predykatow, GUI w akcji, diagramy.
  6. Podsumowanie

Termin obrony: czerwiec.

pl/student/msc2010_ardref.txt · ostatnio zmienione: 2021/01/08 14:09 (edycja zewnętrzna)