Adam Kieżun

Nr albumu:159146


Refaktoryzacja programów w języku Java

Praza magisterska

na kierunku INFORMATYKA


Praca wykonana po kierunkiem

dr Janiny Mincer-Daszkiewicz

Instytut Informatyki

Lipiec 2001


Streszczenie

Dostosowanie istniejących programów komputerowych do nowych lub zmieniających się wymagań jest trudne i czasochłonne. Jednym ze sposobów radzenia sobie z tym zadaniem jest refaktoryzacja - proces przekształcania kodu źródłowego niezmieniający działania programu. Ułatwia on budowę i pielęgnację oprogramowania, umożliwiając utrzymanie systemu komputerowego w stanie pozwalającym na łatwą rozbudowę. Refaktoryzacja jest jednak procesem czasochłonnym i podatnym na błędy, wobec czego pożądana jest jej automatyzacja. Stworzenie niezawodnych i wydajnych narzędzi wspierających programistów w tym zadaniu jest niezbędnym warunkiem do tego, by refaktoryzacja mogła stać się powszechnie przyjętą techniką tworzenia i pielęgnacji programów. W niniejszej pracy przedstawiamy refaktoryzację w kontekście języka Java. Opisujemy trudności związane ze stworzeniem niezawodnego narzędzia uwzględniającego wszystkie konstrukcje języka. Pokazujemy w jaki sposób komplikują one to zadanie, a następnie omawiamy możliwe sposoby rozwiązania problemów z tym związanych. Dokonujemy także szczegółowej analizy warunków wstępnych kilku refaktoryzacji, biorącej pod uwagę wszystkie aspekty języka. Jednym z wyników tej pracy jest stworzenie narzędzia do refaktoryzacji, będącego obecnie składnikiem środowiska programistycznego IBM WebSphere Studio Workbench. Niniejsza praca zawiera opis projektu i implementacji tego narzędzia.
 

Słowa kluczowe

refaktoryzacja, Java, inżynieria oprogramowania, pielęgnacja programów
 

Klasyfikacja tematyczna

D. Software
D.2 Software Engineering
D.2.7 Distribution, Maintenance, Enhancement

Spis Treści


1.Wstęp

2. Refaktoryzacja
    2.1. Definicja refaktoryzacji
    2.2. Przykłady
    2.3. Refaktoryzacja a projektowanie i pielęgnacja oprogramowania
    2.4. Sposób opisu refaktoryzacji
    2.5. Klasyfikacja refaktoryzacji
        2.5.1. Podział według budowy
        2.5.2. Podział według obszaru działania
        2.5.3. Podział według stopnia automatyzacji
    2.6. Uzasadnianie poprawności refaktoryzacji
    2.7. Refaktoryzacja wspomagana automatycznie
    2.8. Istniejące narzędzia do wspomagania refaktoryzacji
        2.8.1. The Smalltalk Refactoring Browser
        2.8.2. jFactor
        2.8.3. JREB
        2.8.4. XRef Speller
        2.8.5. IntelliJ Renamer
        2.8.6 Transmogrify
        2.8.7 Podsumowanie przeglądu narzędzi

3. Refaktoryzacja programów w języku Java
    3.1. Wielokrotne dziedziczenie interfejsów oraz efekt fali
    3.2. Przestrzenie nazw typów
    3.3. Przesłanianie, ukrywanie i zaciemnianie nazw
    3.4. Przeciążanie nazw metod
    3.5. Metody natywne
    3.6. Przypadki specjalne
    3.7. Podsumowanie

4. Wsparcie refaktoryzacji w IBM WebSphere Studio Workbench
    4.1. Opis architektury środowiska programistycznego
    4.2. Przyjęte założenia projektowe
    4.3. Przepływ sterowania
    4.4. Wspomagane refaktoryzacje
        4.4.1. Wydzielenie Metody
        4.4.2. Zmiana Nazwy Pakietu
        4.4.3. Zmiana Nazwy Typu
        4.4.4. Zmiana Nazwy Metody
        4.4.5. Zmiana Nazwy Pola Obiektu
        4.4.6. Zmiana Nazw Parametrów Metody
        4.4.7. Przemieszczenie Jednostki Kompilacji do Innego Pakietu
    4.5. Główne części programu
        4.5.1. Klasa Refactoring
        4.5.2. Klasa Change
        4.5.3. Analizator drzew składni
        4.5.4. Interfejs użytkownika
    4.6. Wydajność i niezawodność narzędzia

5. Podsumowanie

Dodatek A - Refaktoryzacje proste

Dostatek B - Przykładowe refaktoryzacje
    B.1. Zmiana Nazwy Typu
    B.2. Zmiana Nazwy Parametrów metody
    B.3. Zmiana Nazwy Pakietu
    B.4. Zmiana Nazwy Pola
    B.5. Przemieszczenie Jednostki Kompilacji do Innego Pakietu

Bibliografia

Przykładowy zrzut ekranu podczas wykonywania refaktoryzacji Zmiana Nazwy Typu.