200 likes | 282 Views
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.
E N D
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
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
Przyjęte założenia • Śledzone i modyfikowane programy napisane w języku Java • Językiem programowania aspektowego jest AspectJ
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
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
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
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
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
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
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”
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
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
Wprowadzenie modyfikacji • Dodanie aspektu modyfikującego działanie programu • Oparcie się o wiedzę zdobytą podczas śledzenia
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
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