4@KIOP'2012 Refaktoryzacja kodu Javy do AspectJ

typ projektu: klasyczny

edycja: 2012

liczba studentów w projekcie 3 - 5

kierownik: -


AspectJ to rozszerzenie Javy o konstrukcje programowania aspektowego. Programowanie aspektowe powstało z myślą o lepszej separacji tzw. zagadnień przecinających, czyli takich których implementacja w języku obiektowym jest rozproszona po systemie i przeplata się z implementacją innych zagadnień z powodu braku odpowiednich abstrakcji programistycznych. Dobrym przykładem zagadnienia przecinającego jest zadanie zmierzenia czasu wykonywania każdej metody w danym programie i wyświetlenie tej informacji na ekran. Implementacja tego zagadnienia w AspectJ wygląda następująco:

public aspect TimeLogging { //1
Object around(): execution(* *.*(..)) { //2
long start = System.currentTimeMillis(); //3
Object tmp = proceed(); //4
long end = System.currentTimeMillis(); //5
Signature sig = thisJoinPointStaticPart.getSignature();//6
System.out.println(sig +" - "+ (end-start)); //7
return tmp; //8
}
}

Wiersz drugi powoduje przechwycenie próby wykonania dowolnej metody z dowolnej klasy i zamiast niej wykonanie kodu around(). Z kolei wiersz czwarty powoduje wykonanie oryginalnego kodu przechwyconej metody. Aby zrealizować to samo zadanie w języku obiektowym, wiersze 3, 5 i 7 należałoby umieścić w każdej metodzie (lub zastosować refleksję, co również nie jest eleganckim rozwiązaniem). Inne klasyczne zagadnienia przecinające to obsługa wyjątków, synchronizacja kodu współbieżnego, autoryzacja, tworzenie logów systemowych.

Cel projektu:

Porównanie możliwości paradygmatu obiektowego i aspektowego pod względem modularyzacji i ewolucji oprogramowania.

Zadania do wykonania:
1. Zapoznać się z dokumentacją AspectJ (udostępnię materiały).
2. Zapoznać się z technikami/wzorcami/przykładami refaktoryzacji z Javy do AspectJ (udostępnię materiały).
3. Wybrać program (rozmiar około 1KLOC lub więcej) zaimplementowany w Javie, zawierający zagadnienia przecinające.
4. Przenieść implementację zagadnień przecinających do aspektów.
5. Zaproponować dwa lub więcej scenariusze rozszerzenia/modyfikacji programu.
6. Dla obu wersji (obiektowej i aspektowej) zaimplementować rozszerzenia.
7. Ocenić mocne i słabe strony obu wersji.

Członkowie zespołu

Plakat

Semestr 1 : Brak plakatu

Prezentacja / Dokumentacja

Semestr 1 : Brak prezentcji