Agile_Programowanie_zwinne_zasady_wzorce_i_praktyki_zwinnego_wytwarzania_oprogramowania_w_C_agile.pdf

(337 KB) Pobierz
Agile. Programowanie zwinne:
zasady, wzorce i praktyki
zwinnego wytwarzania
oprogramowania w C#
Autor: Robert C. Martin, Micah Martin
T³umaczenie: Miko³aj Szczepaniak
ISBN: 978-83-246-1177-5
Tytu³ orygina³u:
Agile Principles, Patterns,
and Practices in C#
Format: B5, stron: 848
Poznaj nowoczesn¹ metodykê wytwarzania oprogramowania w C#
Jak stosowaæ w praktyce zasady zwinnego wytwarzania oprogramowania?
W jaki sposób wykorzystywaæ w projekcie diagramy UML?
Jak korzystaæ z wzorców projektowych?
W zwi¹zku ze stale rosn¹cymi oczekiwaniami u¿ytkowników oprogramowania
produkcja systemów informatycznych wymaga dziœ korzystania
z usystematyzowanych metod zarz¹dzania. Projekt informatyczny, przy którym
nie u¿ywa siê sensownej metodologii wytwarzania, jest skazany na pora¿kê
– przekroczenie terminu, bud¿etu i niespe³nienie wymagañ funkcjonalnych. Kierowanie
projektem zgodnie z okreœlonymi zasadami równie¿ nie gwarantuje sukcesu, lecz
znacznie u³atwia jego osi¹gniêcie. Na pocz¹tku roku 2001 grupa ekspertów zawi¹za³a
zespó³ o nazwie Agile Alliance. Efektem prac tego zespo³u jest metodologia zwinnego
wytwarzania oprogramowania – Agile.
Ksi¹¿ka
„Agile.
Programowanie zwinne: zasady, wzorce i praktyki zwinnego
wytwarzania oprogramowania w C#” to podrêcznik metodologii Agile przeznaczony
dla twórców oprogramowania korzystaj¹cych z technologii .NET. Dziêki niemu poznasz
podstawowe za³o¿enia i postulaty twórców Agile i nauczysz siê stosowaæ je w praktyce.
Dowiesz siê, jak szacowaæ terminy i koszty, dzieliæ proces wytwarzania na iteracje
i testowaæ produkt. Zdobêdziesz wiedzê na temat refaktoryzacji, diagramów UML,
testów jednostkowych i wzorców projektowych. Przeczytasz tak¿e o publikowaniu
kolejnych wersji oprogramowania.
Techniki programowania ekstremalnego
Planowanie projektu
Testowanie i refaktoryzacja
Zasady zwinnego programowania
Modelowanie oprogramowania za pomoc¹ diagramów UML
Stosowanie wzorców projektowych
Projektowanie pakietów i komponentów
Wydawnictwo Helion
ul. Koœciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Przekonaj siê, ile czasu i pracy zaoszczêdzisz,
stosuj¹c w projektach metodologiê Agile
Spis treści
Słowo wstępne
............................................................................................. 17
Przedmowa
.................................................................................................... 21
Podziękowania
............................................................................................. 31
O autorach
..................................................................................................... 33
................................................... 35
...................... 37
Część I Wytwarzanie zwinne
Rozdział 1. Praktyki programowania zwinnego
Agile Alliance
............................................................................................. 38
Programiści i ich harmonijna współpraca jest ważniejsza
od procesów i narzędzi ......................................................................... 39
Działające oprogramowanie jest ważniejsze
od wyczerpującej dokumentacji ........................................................... 40
Faktyczna współpraca z klientem jest ważniejsza
od negocjacji zasad kontraktu ............................................................... 41
Reagowanie na zmiany jest ważniejsze
od konsekwentnego realizowania planu .............................................. 42
Podstawowe zasady
................................................................................... 43
Konkluzja
.................................................................................................... 46
Bibliografia
................................................................................................. 47
Rozdział 2. Przegląd technik programowania
ekstremalnego
................................................................... 49
Praktyki programowania ekstremalnego
............................................ 50
Cały zespół ............................................................................................... 50
Opowieści użytkownika ........................................................................... 50
3
4
Spis treści
Krótkie cykle ............................................................................................ 51
Testy akceptacyjne ................................................................................... 52
Programowanie w parach ........................................................................ 53
Wytwarzanie sterowane testami (TDD) ................................................. 54
Wspólna własność .................................................................................... 54
Ciągła integracja ...................................................................................... 55
Równe tempo ........................................................................................... 56
Otwarta przestrzeń pracy ........................................................................ 56
Gra planistyczna ....................................................................................... 57
Prosty projekt ........................................................................................... 57
Refaktoryzacja .......................................................................................... 59
Metafora ................................................................................................... 59
Konkluzja
.................................................................................................... 61
Bibliografia
................................................................................................. 61
Rozdział 3. Planowanie
.......................................................................... 63
Wstępne poznawanie wymagań
............................................................ 64
Dzielenie i scalanie opowieści użytkownika .......................................... 65
Planowanie wydań
.................................................................................... 66
Planowanie iteracji
................................................................................... 66
Definiowanie warunków zakończenia projektu
................................ 67
Planowanie zadań
..................................................................................... 67
Iteracje
......................................................................................................... 69
Śledzenie
postępu
..................................................................................... 69
Konkluzja
.................................................................................................... 70
Bibliografia
................................................................................................. 71
Rozdział 4. Testowanie
.......................................................................... 73
Wytwarzanie sterowane testami
........................................................... 74
Przykład projektu poprzedzonego testami ............................................. 75
Izolacja testów .......................................................................................... 76
Eliminowanie powiązań .......................................................................... 78
Testy akceptacyjne
................................................................................... 79
Wpływ testów akceptacyjnych
na architekturę oprogramowania
...................................................... 81
Spis treści
5
Konkluzja
.................................................................................................... 82
Bibliografia
................................................................................................. 82
Rozdział 5. Refaktoryzacja
.................................................................. 83
Prosty przykład refaktoryzacji
— generowanie liczb pierwszych
....................................................... 84
Testy jednostkowe ................................................................................... 86
Refaktoryzacja .......................................................................................... 87
Ostatnie udoskonalenia ........................................................................... 93
Konkluzja
.................................................................................................... 97
Bibliografia
................................................................................................. 98
Rozdział 6. Epizod z
życia
programistów
................................... 99
Gra w kręgle
............................................................................................. 100
Konkluzja
.................................................................................................. 146
Przegląd reguł gry w kręgle
................................................................. 147
Część II Projektowanie zwinne
............................................ 149
....................... 153
Rozdział 7. Czym jest projektowanie zwinne?
Symptomy złego projektu
..................................................................... 154
Symptomy złego projektu, czyli potencjalne
źródła
porażek ............. 154
Sztywność ............................................................................................... 155
Wrażliwość ............................................................................................. 155
Nieelastyczność ...................................................................................... 156
Niedostosowanie do rzeczywistości ...................................................... 156
Nadmierna złożoność ............................................................................ 156
Niepotrzebne powtórzenia .................................................................... 157
Nieprzejrzystość .................................................................................... 157
Dlaczego oprogramowanie ulega degradacji
.................................. 158
Program Copy
.......................................................................................... 159
Przykład typowego scenariusza ............................................................ 159
Przykład budowy programu Copy w ramach projektu zwinnego ...... 163
Konkluzja
.................................................................................................. 166
Bibliografia
............................................................................................... 166
6
Spis treści
Rozdział 8. Zasada pojedynczej odpowiedzialności
............ 167
Definiowanie odpowiedzialności
........................................................ 170
Oddzielanie wzajemnie powiązanych odpowiedzialności
............ 171
Trwałość
.................................................................................................... 171
Konkluzja
.................................................................................................. 172
Bibliografia
............................................................................................... 172
Rozdział 9. Zasada otwarte-zamknięte
....................................... 173
Omówienie zasady otwarte-zamknięte
.............................................. 174
Aplikacja Shape
....................................................................................... 177
Przykład naruszenia zasady OCP ......................................................... 177
Przykład pełnej zgodności z zasadą otwarte-zamknięte ...................... 180
Przewidywanie zmian i „naturalna” struktura ..................................... 181
Przygotowywanie punktów zaczepienia ............................................... 182
Stosowanie abstrakcji do jawnego zamykania oprogramowania
dla zmian .............................................................................................. 184
Zapewnianie zamknięcia z wykorzystaniem techniki sterowania
przez dane ............................................................................................ 185
Konkluzja
.................................................................................................. 187
Bibliografia
............................................................................................... 187
Rozdział 10. Zasada podstawiania Liskov
................................. 189
Naruszenia zasady podstawiania Liskov
........................................... 190
Prosty przykład ...................................................................................... 190
Przykład mniej jaskrawego naruszenia zasady LSP ............................ 192
Przykład zaczerpnięty z rzeczywistości ................................................ 199
Wyodrębnianie zamiast dziedziczenia
.............................................. 205
Heurystyki i konwencje
......................................................................... 208
Konkluzja
.................................................................................................. 209
Bibliografia
............................................................................................... 209
Rozdział 11. Zasada odwracania zależności
............................ 211
Podział na warstwy
................................................................................. 212
Odwracanie relacji własności ................................................................ 213
Zależność od abstrakcji .......................................................................... 215
Zgłoś jeśli naruszono regulamin