1 / 20

Aspekty w śledzeniu i modyfikowaniu skompilowanych programów

Aspekty w śledzeniu i modyfikowaniu skompilowanych programów. Plan prezentacji. Motywacja Przyjęte założenia Metody śledzenia i modyfikacji programów Aspektowe śledzenie i modyfikacja programów Platforma Crusader Przeprowadzone badania Przykład aspektowej modyfikacji programu Wnioski.

kaz
Download Presentation

Aspekty w śledzeniu i modyfikowaniu skompilowanych programów

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Aspekty w śledzeniu i modyfikowaniu skompilowanych programów

  2. Plan prezentacji • Motywacja • Przyjęte założenia • Metody śledzenia i modyfikacji programów • Aspektowe śledzenie i modyfikacja programów • Platforma Crusader • Przeprowadzone badania • Przykład aspektowej modyfikacji programu • Wnioski

  3. Motywacja • Powstaje dużo źle udokumentowanego oprogramowania • Z czasem oprogramowanie to trzeba zmodyfikować lub zastąpić nowszym • Zadania te wymagają śledzenia lub modyfikacji istniejących programów • Dodatkowym utrudnieniem może być brak kodu źródłowego programów

  4. Przyjęte założenia • Śledzone i modyfikowane programy napisane w języku Java • Językiem programowania aspektowego jest AspectJ

  5. Metody śledzenia programów • Znane metody: • Analiza logów programu (ewentualnie ich dodanie) • Przegląd kodu źródłowego (lub zdekompilowanego) programu • Debugowanie programu • Wady metod przy śledzeniu programów: • Mało wiarygodne • Pracochłonne • Trudne do wykorzystania • Konieczny kod źródłowy lub dekompilacja

  6. Metody modyfikacji programów • Znane metody: • Modyfikacja kodu źródłowego • Modyfikacja kodu zdekompilowanego • Wady metod przy modyfikacji programów: • Pracochłonne • Wymagają znajomości programu • Trudne do wykorzystania • Konieczny kod źródłowy lub dekompilacja

  7. Programowanie aspektowe • Metoda składania programu z niezależnych „klocków” (aspektów), z których każdy odpowiada za inne zagadnienie przecinające • Zagadnienia przecinające to niezależne problemy, które muszą zostać rozwiązane w programie • Programowanie aspektowe pozwala na wygodną aplikację nowych „klocków”, odpowiedzialnych za śledzenie i wprowadzanie modyfikacji do skompilowanego programu

  8. Aspektowe śledzenie programów • Śledzenie programów za pomocą wplecionych aspektów • Zalety: nieduża pracochłonność, duża wiarygodność, możliwe do zastosowania w szerokim spektrum przypadków • Wady: problemy wydajnościowe, ograniczenia programowania aspektowego, niezbadane • Realizacja: za pomocą zrealizowanego w II PW narzędzia Crusader

  9. Aspektowa modyfikacja programów • Wprowadzanie kodu do programów za pomocą wplecionych aspektów • Zalety: nie wymaga znajomości programu, możliwa do wykorzystania w szerokim spektrum przypadków • Wady: nadal bardzo pracochłonna, ograniczenia programowania aspektowego, słabo zbadana • Realizacja: za pomocą dostępnych powszechnie narzędzi

  10. Platforma Crusader • Narzędzie realizujące aspektowe śledzenie programów oraz wspomagające ich aspektową modyfikację • Mechanizm filtrowania minimalizujący problemy wydajnościowe • Automatyzacja procesu wplatania aspektów śledzących w programy i samego śledzenia • Graficzna konsola – program Crusader Console

  11. Program Crusader Console

  12. Przeprowadzone badania • Grupy programów • Programy z konsolowym interfejsem użytkownika • Programy z graficznym interfejsem użytkownika • Aplikacje J2EE typu „WAR” • Aplikacje J2EE typu „EAR”

  13. Przykład aspektowej modyfikacji programu • Program z interfejsem konsolowym JMathLib • JMathLib ma funkcję logarytmu dziesiętnego • Modyfikacja – wprowadzenie funkcji logarytmu dwu-argumentowej (podstawa i argument) • Modyfikacja nie może wpływać na działanie innych funkcji programu

  14. Wyśledzenie miejsca wprowadzenia modyfikacji • Śledzenie programu z wywołaniem funkcji logarytmu z jednym argumentem • Śledzenie programu z wywołaniem funkcji logarytmu z dwu-argumentowego (nie zaimplementowanej w JMathLib) • Porównanie wyników i identyfikacja miejsca wprowadzenia zmiany

  15. Wprowadzenie modyfikacji • Dodanie aspektu modyfikującego działanie programu • Oparcie się o wiedzę zdobytą podczas śledzenia

  16. Kod aspektu modyfikującego

  17. JMathLib po wprowadzeniu modyfikacji

  18. Podsumowanie przykładu • Znacząca zmiana w programie JMathLib wykonana bez znajomości logiki programu i bez dostępu do kodu źródłowego • Konieczność filtrowania rezultatów śledzenia np. klasy z pakietu java.* • Porównanie 2 przebiegów programów w celu odnalezienia miejsca wprowadzenia zmiany

  19. Wnioski • Programowanie aspektowe może być wykorzystywane w obszarach śledzenia i modyfikacji skompilowanych programów • Podstawowe problemy udaje się przezwyciężyć, choć pojawiają się nowe • Zaproponowane metody pokrywają niepokryte dotychczas obszary w śledzeniu i modyfikacji programów

  20. Dziękujemy za uwagę

More Related