1. Identyfikacja tych właściwości języka Java (ściślej, programów napisanych w tym języku), których występowanie sprawia, że niektóre, nawet koncepcyjnie proste, refaktoryzacje stają się trudne w realizacji. Następnie, opis i przedstawienie na przykładach problemów powstających z powodu występowania wskazanych cech języka oraz dyskusja możliwych rozwiązań. W szczególności, w pracy omówiono:
Cechy wykonanego narzędzia to:
1. Rozszerzenie podanej w dodatku B listy refaktoryzacji posiadających
szczegółowy opis warunków wstępnych.
2. Sformalizowanie określenia warunków wstępnych.
3. Sformalizowanie opisu zmian w programie wprowadzanych przez refaktoryzacje.
4. Zbadanie refaktoryzacji w kontekście innych języków programowania.
5. Zbadanie zagadnienia refaktoryzacji programów napisanych w kilku
językach programowania. W punkcie 3.5 omówiliśmy wpływ wykorzystania metod
natywnych na refaktoryzację programów w języku Java. Ciekawe byłoby zbadanie
możliwości zbudowania narzędzia umiejącego refaktoryzować programy korzystające
z tego mechanizmu (tzn. narzędzia potrafiącego analizować i modyfikować
zarówno kod Javy, jak i kod natywny).
Język Java jest bardzo często wykorzystywany w połączeniu z językami skryptowymi, takimi jak Java Script, a także w powiązaniu z takimi mechanizmami jak Java Server Pages. Stworzenie narzędzia potrafiącego refaktoryzować tego typu systemy byłoby bardzo ciekawe i pożądane, ponieważ kombinacja wielu języków programowania w jednym systemie często prowadzi do znacznego wzrostu stopnia komplikacji kodu źródłowego.
Wsparcie refaktoryzacji w IBM WebSphere Studio Workbench jest nadal w początkowej fazie tworzenia. Do chwili obecnej (lipiec 2001, wersja R0.9 produktu) zaimplementowaliśmy jedynie część planowanych refaktoryzacji. Naszą pracę chcemy kontynuować w następujący sposób:
1. Zaimplementowanie większej liczby refaktoryzacji.
2. Wprowadzenie transakcyjności operacji.
3. Zwiększenie zasięgu możliwości wycofywania zmian. Obecnie wycofanie
refaktoryzacji jest możliwe tylko do chwili, gdy użytkownik zacznie wykonywać
inne modyfikacje kodu. Chcielibyśmy zintegrować mechanizm wycofywania zmian
używany w edytorach z mechanizmem użytym w naszym narzędziu do refaktoryzacji.
4. Ułatwienie wprowadzania zmian na wyższym poziomie abstrakcji. Jak
podano w punkcie 4.5.2, wszystkie modyfikacje są obecnie wykonywane bezpośrednio
w kodzie źródłowym refaktoryzowanego programu. Mimo, że jest to bardzo
elastyczne podejście, to wprowadzenie możliwości operowania elementami
programu, a nie fragmentami plików z kodem źródłowym ułatwi implementację
kolejnych refaktoryzacji.
5. Podczas wykonywania refaktoryzacji, aktualizowanie komentarzy dokumentujących
(JavaDoc). Jest to ważne np. przy refaktoryzacjach Zmiana Nazwy Metody,
Zmiana Położenia Typu itp.