Zpo-8-lab: Różnice pomiędzy wersjami
Nie podano opisu zmian |
Nie podano opisu zmian |
||
(Nie pokazano 1 pośredniej wersji utworzonej przez tego samego użytkownika) | |||
Linia 1: | Linia 1: | ||
=Ćwiczenie | =Ćwiczenie 8: Identyfikacja obszarów wymagających refaktoryzacji = | ||
==Informacje wstępne== | ==Informacje wstępne== | ||
Przed przystąpieniem do realizacji ćwiczenia należy zapozanać się z wykładem. | |||
Przed przystąpieniem do realizacji ćwiczenia należy zapozanać się z wykładem. | Celem ćwiczenia jest zastosowanie metryk oraz narzędzia XSmells do identyfikacji obszarów kodu wymagających refaktoryzacji (tzw. przykrych zapachów w kodzie programu). | ||
==Instalacja== | ==Instalacja== | ||
Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0 [http://java.sun.com/javase/downloads/index.jsp] oraz środowiska Eclipse [http://www.eclipse.org/downloads] w wersji 3.2 | Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0 [http://java.sun.com/javase/downloads/index.jsp] oraz środowiska Eclipse [http://www.eclipse.org/downloads] w wersji 3.2 | ||
Dodatkowo należy zainstalować wtyczkę Metrics (opisaną w materiale do ćwiczenia nr 4) oraz wtyczkę [[media:xsmells.zip|XSmells]] autorstwa Błażeja Pietrzaka (instrukcja instalacji znajduje się w pliku) | |||
Po uruchomieniu środowiska należy zaimportować (menu File->Import->Existing projects into workspace) [[media:sudoku.zip|przykładowy projekt Sudoku]]. | |||
==Zadanie 1== | ==Zadanie 1== | ||
Zadanie polega na próbie zidentyfikowania przykrego zapachu Long Method w klasach ''com.vitting.rcpsudoku.model.SudokuDocument'' oraz ''com.vitting.rcpsudoku.rules.Rule4''. | |||
Długa metoda to nie tylko metoda o dużej liczbie linii kodu, ale przede wszystkim wykonująca zbyt wiele czynności, zatem trudna w zrozumieniu i przetestowaniu. Dlatego warto rozważyć następujące kryteria: | |||
* rozmiar kodu | |||
* złożoność cyklomatyczną metody | |||
* rozmiar komentarzy | |||
* liczba parametrów | |||
* liczba instrukcji return | |||
Typowym mechanizmem służącym do oceny tych kryteriów są oczywiście metryki. Na podstawie wyników uzyskanych za pomocą wtyczki Metrics oraz np. | |||
arkusza kalkulacyjnego oceń, które z metod są obciążone wymienionym przykrym zapachem. Które spośród metryki okazały się przydatne w wykrywaniu tego przykrego zapachu? | |||
Następnie uruchom dla tych samych klas wtyczkę XSmells, która samodzielnie ocenia obecność przykrych zapachów i porównaj otrzymane wyniki. | |||
Na tej podstawie sformułuj reguły dotyczące występowania tego przykrego zapachu | |||
==Zadanie 2== | ==Zadanie 2== | ||
Korzystając z doświadczeń uzyskanych podczas realizacji poprzedniego zadania, określ warunki występowania innego przykrego zapachu - Large Class. Dotyczy on zbyt dużej odpowiedzialności powierzonej klasie. | |||
Zwróć uwagę na jego wielokryterialność - wśród jego symptomów można wymienić m.in.: | |||
* duża liczba pól klasy | |||
* duża liczba metod | |||
* duża liczba instancji klasy | |||
* duża liczba implementowanych interfejsów | |||
* duża liczba linii kodu klasy | |||
* niska spójność klasy | |||
Jakie metryki pozwalają ocenić jego występowanie? Ponownie, spróbuj zdefiniować reguły dotyczące występowania tego przykrego zapachu. | |||
==Pytania do dyskusji== | ==Pytania do dyskusji== | ||
# | # W jaki sposób agregować wyniki różnych metryk w celu identyfikacji przykrego zapachu? | ||
# | # Jak wykorzystać wiedzę o zależnościach pomiędzy różnymi przykrymi zapachami do wykrywania przykrego zapachu Large Class? | ||
Aktualna wersja na dzień 09:38, 30 paź 2006
Ćwiczenie 8: Identyfikacja obszarów wymagających refaktoryzacji
Informacje wstępne
Przed przystąpieniem do realizacji ćwiczenia należy zapozanać się z wykładem. Celem ćwiczenia jest zastosowanie metryk oraz narzędzia XSmells do identyfikacji obszarów kodu wymagających refaktoryzacji (tzw. przykrych zapachów w kodzie programu).
Instalacja
Przygotowanie do ćwiczenia polega na zainstalowaniu JDK 5.0 [1] oraz środowiska Eclipse [2] w wersji 3.2 Dodatkowo należy zainstalować wtyczkę Metrics (opisaną w materiale do ćwiczenia nr 4) oraz wtyczkę XSmells autorstwa Błażeja Pietrzaka (instrukcja instalacji znajduje się w pliku) Po uruchomieniu środowiska należy zaimportować (menu File->Import->Existing projects into workspace) przykładowy projekt Sudoku.
Zadanie 1
Zadanie polega na próbie zidentyfikowania przykrego zapachu Long Method w klasach com.vitting.rcpsudoku.model.SudokuDocument oraz com.vitting.rcpsudoku.rules.Rule4. Długa metoda to nie tylko metoda o dużej liczbie linii kodu, ale przede wszystkim wykonująca zbyt wiele czynności, zatem trudna w zrozumieniu i przetestowaniu. Dlatego warto rozważyć następujące kryteria:
- rozmiar kodu
- złożoność cyklomatyczną metody
- rozmiar komentarzy
- liczba parametrów
- liczba instrukcji return
Typowym mechanizmem służącym do oceny tych kryteriów są oczywiście metryki. Na podstawie wyników uzyskanych za pomocą wtyczki Metrics oraz np. arkusza kalkulacyjnego oceń, które z metod są obciążone wymienionym przykrym zapachem. Które spośród metryki okazały się przydatne w wykrywaniu tego przykrego zapachu?
Następnie uruchom dla tych samych klas wtyczkę XSmells, która samodzielnie ocenia obecność przykrych zapachów i porównaj otrzymane wyniki.
Na tej podstawie sformułuj reguły dotyczące występowania tego przykrego zapachu
Zadanie 2
Korzystając z doświadczeń uzyskanych podczas realizacji poprzedniego zadania, określ warunki występowania innego przykrego zapachu - Large Class. Dotyczy on zbyt dużej odpowiedzialności powierzonej klasie. Zwróć uwagę na jego wielokryterialność - wśród jego symptomów można wymienić m.in.:
- duża liczba pól klasy
- duża liczba metod
- duża liczba instancji klasy
- duża liczba implementowanych interfejsów
- duża liczba linii kodu klasy
- niska spójność klasy
Jakie metryki pozwalają ocenić jego występowanie? Ponownie, spróbuj zdefiniować reguły dotyczące występowania tego przykrego zapachu.
Pytania do dyskusji
- W jaki sposób agregować wyniki różnych metryk w celu identyfikacji przykrego zapachu?
- Jak wykorzystać wiedzę o zależnościach pomiędzy różnymi przykrymi zapachami do wykrywania przykrego zapachu Large Class?