Zpo-8-lab: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
Bwalter (dyskusja | edycje)
Nie podano opisu zmian
 
(Nie pokazano 2 pośrednich wersji utworzonych przez tego samego użytkownika)
Linia 1: Linia 1:
=Ć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 [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 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?

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

  1. W jaki sposób agregować wyniki różnych metryk w celu identyfikacji przykrego zapachu?
  2. Jak wykorzystać wiedzę o zależnościach pomiędzy różnymi przykrymi zapachami do wykrywania przykrego zapachu Large Class?