Zaawansowane projektowanie obiektowe
Wprowadzenie do refaktoryzacji
Prowadzący:
Bartosz Walter
Wprowadzenie do refaktoryzacji
1
Bartosz Walter
Zaawansowane projektowanie obiektowe
Motto
„Nawetidiotapotrafinapisaćkodzrozumiałydlakomputera.
Prawdziwiprogramiścitworząkodzrozumiałydlaludzi.”
MartinFowler
Wprowadzenie do refaktoryzacji (2)
Mottem wykładu są słowa autora popularnej ksiąŜki dotyczącej
refaktoryzacji, M. Fowlera. Słowa te są szczególnie waŜne w kontekście
tzw. metodyk zwinnych (ang.
agile methodologies
), promujących
wyŜszość zrozumiałego kodu nad dokumentacją (szczegóły dotyczące
wartości głoszonych przez metodyki zwinne moŜna znaleźć pod adresem
http://agilemanifesto.org). Kładą one nacisk na okresową restrukturyzację
kodu w celu poprawienia jego czytelności. Refaktoryzacja jest jedną z
podstawowych praktyk Programowania Ekstremalnego, najpopularniejszej
spośród tych metodyk.
Wprowadzenie do refaktoryzacji
2
Bartosz Walter
Zaawansowane projektowanie obiektowe
Plan wykładu
•
Wprowadzenie
•
Koszt refaktoryzacji
•
Poprawność i jej weryfikacja
•
Przykre zapachy w kodzie programu
•
Metody identyfikacji przykrych zapachów
Wprowadzenie do refaktoryzacji (3)
Wykład ten jest wprowadzeniem i stanowi pierwszy z czterech
poświęconych refaktoryzacji. Omówione będą rozmaite definicje
refaktoryzacji, czynniki wypływające na koszt jej stosowania oraz problem
poprawności przekształceń i jej weryfikacji. Większą część wykładu zajmie
omówienie zagadnienia tzw. przykrych zapachów w kodzie programu, ich
rodzajów oraz metod identyfikacji.
Wprowadzenie do refaktoryzacji
3
Bartosz Walter
Zaawansowane projektowanie obiektowe
Plan wykładu
Wprowadzenie
Wprowadzenie do refaktoryzacji (4)
Wykład rozpoczniemy od wprowadzenia, które przybliŜy motywację
stosowania refaktoryzacji, jej ekonomikę oraz ogólne załoŜenia.
Wprowadzenie do refaktoryzacji
4
Bartosz Walter
Zaawansowane projektowanie obiektowe
Motywacja
•
Wysoki koszt pielęgnacji oprogramowania
–
Yourdon: do 80% kosztu uŜytkowania
–
Boehm: wytworzenie linii kodu: $30, pielęgnacja:
$4000
•
Naturalny wzrost złoŜoności i entropii
oprogramowania
•
Prawa Lehmana: konieczna ciągła restrukturyzacja
Wprowadzenie do refaktoryzacji (5)
Refaktoryzacja jest jedną z technik pielęgnacji oprogramowania.
Jak wskazują badania, pielęgnacja pochłania nawet do 80% całkowitych
kosztów związanych z oprogramowaniem. Znamienny jest teŜ przykład
podany przez Boehma: stworzenie linii kodu w oprogramowaniu dla
Boeinga kosztowało ponad stukrotnie mniej niŜ jej pielęgnacja do końca
Ŝycia produktu.
Ta i podobna obserwacje posłuŜyły M. Lehmanowi do sformułowania praw
dotyczących ewolucji oprogramowania. Mówią one, Ŝe oprogramowanie w
trakcie ewolucji staje się coraz bardziej złoŜone, a jego struktura w coraz
mniejszym stopniu odpowiada wymaganiom. Jedynym sposobem
przeciwdziałania temu zjawisku jest ciągła restrukturyzacja, która
przywraca pierwotną prostotę projektu.
Wprowadzenie do refaktoryzacji
5