Agile Development.
Filozofia programowania
zwinnego
Autor: James Shore, Shane Warden
ISBN: 978-83-246-1614-5
Tytuł oryginału: The Art of Agile Development
Format: 168x237, stron: 480
Zbiór praktycznych wskazówek dla producentów oprogramowania
" Jak wdrożyć metodologię programowania zwinnego?
" W jaki sposób zaangażować klientów w projekt?
" Jak kontrolować jakoSć produktów?
Programowanie zwinne (Agile Development) to obecnie jedna z najpopularniejszych
metodologii zarządzania projektami programistycznymi. Metodyka Agile jest szczególnie
użyteczna w małych zespołach programistycznych, w których z racji ułatwionej
komunikacji nie ma potrzeby tworzenia rozbudowanej dokumentacji. Programowanie
zwinne opiera się na iteracyjnej realizacji kolejnych etapów projektu. Kluczem do sukcesu
w tej metodzie jest efektywna współpraca między członkami zespołu projektowego.
Książka Agile Development. Filozofia programowania zwinnego to przewodnik
po programowaniu ekstremalnym, oznaczanym zwykle skrótem XP, które jest jedną
z technik wchodzących w skład tej metodyki. Czytając ją, dowiesz się, jak wdrażać
metodologię Agile w firmie, na czym polega programowanie ekstremalne i jaką rolę
w procesie pełnią poszczególni członkowie grupy projektowej. Nauczysz się budować
zespół i okreSlać zakresy zadań osób biorących udział w pracach, planować
harmogram udostępniania kolejnych wersji produktu oraz kierować procesem jego
tworzenia. Poznasz metody testowania programu i usuwania z niego błędów, zasady
pisania dokumentacji oraz reguły prowadzenia spotkań roboczych z klientami.
" Wdrażanie programowania zwinnego
" Techniki programowania ekstremalnego
" Członkowie zespołu XP
" Zarządzanie zespołem
" Angażowanie klienta w proces wytwórczy
" Tworzenie raportów
Wydawnictwo Helion
" Udostępnianie kolejnych wersji systemu
ul. KoSciuszki 1c
" Standardy pisania kodu
44-100 Gliwice
tel. 032 230 98 63 " Testowanie i usuwanie błędów
e-mail: helion@helion.pl
" Optymalizacja wydajnoSci programu
Od filozofii do mistrzostwa w zwinnym programowaniu!
Spis tre ci
Wprowadzenie ..............................................................................................................9
Cz I Zaczynamy
1. Dlaczego zwinne programowanie? ............................................................................ 19
Czym jest sukces? 20
Poza harmonogram 21
Znaczenie sukcesów na poziomie organizacji 22
Wkraczanie w wiat zwinnego programowania 23
2. Jak by zwinnym? ........................................................................................................25
Zwinne metody 26
Czy warto wymy la w asne metody? 27
Droga do mistrzostwa 27
Szukanie mentora 28
3. Zrozumie XP ...............................................................................................................29
Cykl ycia w XP 32
Zespó w XP 42
Poj cia zwi zane z XP 55
4. Wprowadzanie XP ....................................................................................................... 61
Czy XP to co dla nas? 61
Naprzód! 71
Ocena zwinno ci zespo u 83
5
Cz II Stosowanie XP
5. My lenie ....................................................................................................................... 91
Programowanie w parach 93
Energiczna praca 102
Informacyjne miejsce pracy 107
Analizy przyczynowo-skutkowe 112
Retrospekcje 115
6. Wspó praca ................................................................................................................ 123
Zaufanie 126
Wspólna praca 137
Zaanga owanie prawdziwego klienta 147
Wspólny j zyk 152
Krótkie spotkania robocze 157
Standardy pisania kodu 161
Demonstracje iteracji 167
Raporty 174
7. Udost pnianie ............................................................................................................ 183
W pe ni gotowe 186
Brak b dów 191
Kontrola wersji 202
Dziesi ciominutowa kompilacja 211
Ci g a integracja 219
Wspó w asno kodu 229
Dokumentacja 234
8. Planowanie ................................................................................................................239
Wizja 241
Planowanie wydania 247
Gra planistyczna 262
Zarz dzanie ryzykiem 268
Planowanie iteracji 278
Zapas 293
Opowie ci 301
Szacowanie 309
9. Wytwarzanie .............................................................................................................323
Stopniowe zbieranie wymaga 325
Testy klienta 331
Wytwarzanie sterowane testami 339
6 SPI S TRE CI
Refaktoryzacja 360
Prosty projekt 372
Stopniowy rozwój projektu i architektury 380
Rozwi zania punktowe 391
Optymalizacja wydajno ci 395
Testy eksploracyjne 402
Cz III Mistrzostwo w dziedzinie programowania zwinnego
10. Warto ci i zasady ....................................................................................................... 415
Wspólne elementy 415
O warto ciach, zasadach i praktykach 416
Dalsza lektura 417
11. Usprawnianie procesu ............................................................................................... 419
Zrozumienie projektu 419
Dopracowywanie i adaptacja 420
amanie regu 421
12. Poleganie na ludziach ...............................................................................................425
Budowanie efektywnych zwi zków 425
Odpowiednie osoby do odpowiednich zada 427
Budowanie procesu dla ludzi 429
13. Eliminowanie marnotrawstwa ................................................................................. 431
Praca w ma ych, odwracalnych etapach 431
Szybkie wykrywanie niepowodze 433
Maksymalizacja liczby zada , których nie trzeba wykonywa 435
D enie do wysokiej przepustowo ci 436
14. Zapewnianie warto ci ...............................................................................................439
Wykorzystanie zwinno ci 439
Warto ma tylko kod gotowy do udost pnienia 441
Zapewnianie wyników biznesowych 442
Cz ste udost pnianie 444
15. D enie do doskona o ci technicznej .......................................................................447
Oprogramowanie nie istnieje 447
Projekt to narz dzie u atwiaj ce zrozumienie 448
Równowaga w projektach 449
Nienazwana cecha 449
SPI S TRE CI 7
Doskona y projekt 450
Ogólne zasady projektowania 451
Zasady w praktyce 454
D enie do mistrzostwa 456
Literatura cytowana ..................................................................................................457
Skorowidz ..................................................................................................................463
8 SPI S TRE CI
ROZDZIA 1
Dlaczego zwinne programowanie?
Zwinne wytwarzanie oprogramowania (ang. agile development) jest popularne. Wszystkie fajne
firmy korzystaj z tego podej cia: Google, Yahoo, Symantec, Microsoft i tak dalej1. Znam firm ,
która zmieni a nazw na Agili-co tam, aby przy czy si do trendu. Organizacja ta zadzwoni a
do mnie z pro b , abym usprawni ich zwinne procesy , które po dok adniejszej analizie
okaza y si niczym wi cej jak zlecaniem programowania firmom zewn trznym w innym kraju
ni zwykle. Oczekuj , e w bardzo niedalekiej przysz o ci w ofercie du ych firm konsultingowych
pojawi si Certyfikowane zwinne procesy i Certyfikowani konsultanci do spraw zwinnego
programowania.
Prosz , nie dajcie si wci gn w ten ba agan.
W 1986 roku Brooks zapowiedzia , e uniwersalne rozwi zania nie powstan , e do roku 1996
adna pojedyncza technologia ani technika zarz dzania nie doprowadzi do dziesi ciokrotnego
wzrostu produktywno ci, niezawodno ci lub prostoty [Brooks]. I rzeczywi cie, nikomu si
to nie uda o.
Równie zwinne wytwarzanie oprogramowania nie jest uniwersalnym rozwi zaniem.
Co wi cej, nie zalecam stosowania zwinnego programowania, je li ma s u y wy cznie
zwi kszeniu produktywno ci. Zalety tego podej cia tak e mo liwo cz stszego udost pniania
oprogramowania wynikaj z odmiennego trybu pracy, a nie z szybszego wykonywania zada .
Cho wed ug anegdotycznych wzmianek zespo y stosuj ce zwinne programowanie wykazuj si
ponadprzeci tn wydajno ci 2, efekt ten nie powinien by g ówn przyczyn wprowadzania
tego podej cia. Zespó potrzebuje czasu na opanowanie zwinnego wytwarzania oprogramowania.
W trakcie nauki a mo e to zaj kwarta lub dwa cz onkowie grupy b d pracowa wolniej,
a nie szybciej. Ponadto nacisk na produktywno czasem zach ca zespó do stosowania
uproszcze i mniejszego rygoru w pracy, co mo e doprowadzi do spadku wydajno ci.
1
ród o: ró ne raporty u ytkowników na konferencjach po wi conych programowaniu ekstremalnemu
i zwinnemu programowaniu.
2
Zobacz na przyk ad [Van Schooenderwoert], [Mah] i [Anderson 2006].
1 9
Zwinne wytwarzanie oprogramowania jest obecnie modne, ale to nie powód, aby stosowa
to podej cie. W trakcie podejmowania decyzji dotycz cej jego wprowadzenia wa na jest
odpowied na tylko jedno pytanie.
Czy zwinne wytwarzanie oprogramowania pomo e w osi ganiu wi kszych sukcesów?
Kiedy zespó odpowie na to pytanie, b dzie wiedzia , czy powinien stosowa zwinne
programowanie.
Czym jest sukces?
Tradycyjnie sukces uto samiany jest z dostarczeniem produktu na czas, w oczekiwanej cenie
i zgodnie ze specyfikacj . Standish prezentuje kilka klasycznych definicji [Standish]:
Udane
Oprogramowanie uko czono na czas,
Mimo popularno ci tych
po oczekiwanych kosztach, z mechanizmami
definicji, czego w nich brakuje.
i funkcjami zgodnymi z wyj ciow specyfikacj .
Z problemami
Oprogramowanie jest gotowe i dzia a, ale przekroczono bud et oraz harmonogram,
a mechanizmy i funkcje s ubo sze ni w wyj ciowej specyfikacji .
Nieudane
W pewnym miejscu cyklu rozwoju rozwój oprogramowania anulowano .
Mimo popularno ci tych definicji, nie s one w pe ni poprawne. Projekt mo e by udany, nawet
je li producent nie zarobi na nim ani grosza. Z kolei nawet je li przyniesie milionowe zyski,
mo na go uzna za problematyczny.
W magazynie CIO znajduje si komentarz do tej osobliwo ci:
Nawet te projekty, które spe niaj wszystkie tradycyjne kryteria powodzenia w zakresie
czasu, bud etu i specyfikacji mog okaza si nieudane, poniewa produkty nie s
atrakcyjne dla u ytkowników lub w ostatecznym rozrachunku nie zapewniaj firmie
korzy ci.
[& ] Podobnie, projekty uznawane za nieudane wed ug tradycyjnych miar z bran y IT
mog okaza si sukcesem, kiedy mimo problemów w obszarze kosztów, czasu lub
specyfikacji system jest uwielbiany przez odbiorców i zapewnia nieoczekiwane korzy ci.
Na przyk ad w firmie wiadcz cej us ugi finansowe nowy system [& ] zosta dostarczony
z sze ciomiesi cznym opó nieniem i kosztowa ponad dwa razy wi cej, ni zak adano
(ostateczny koszt wyniós 5,7 miliona dolarów). Jednak projekt zwi kszy elastyczno
organizacji (po 13 miesi cach) i oceniono go jako wielki sukces. Wysoko umarzanych
kredytów spad a o 33 miliony dolarów, a krótszy czas potrzebny na zapewnienie korzy ci
i wy sza wydajno doprowadzi y do 50-procentowego wzrostu w liczbie jednocze nie
prowadzonych testów strategii ci gania wierzytelno ci3.
3
Nelson R. Ryan, Applied Insight Tracks in the Snow, CIO Magazine . http://www.cio.com/archive/090106/
applied.html.
20 ROZDZI A 1 . DL ACZEGO ZWI NNE PROGRAMOWANI E?
Poza harmonogram
Sukces musi zale e od czego innego ni mieszczenie si w terminie, ale od czego?
Kiedy by em dzieckiem, cieszy a mnie sama zabawa. Uwielbia em wyzwania zwi zane
z programowaniem. Ka de uruchomienie aplikacji traktowa em jak wielkie zwyci stwo.
Wtedy nawet program, który nie dzia a , traktowa em jak pewnego rodzaju sukces, je li
tylko tworzenie go sprawia o mi rado . Powodzenie postrzega em g ównie w kategoriach
osobistych nagród.
Kiedy nabra em do wiadczenia, zacz em pisa bardziej skomplikowane programy i cz sto
gubi em si w ich dzia aniu. Musia em porzuci niektóre projekty przed ich uko czeniem.
Zacz em wierzy , e kluczem do sukcesu jest atwo konserwacji. Spostrze enie to potwierdzi o
si , kiedy podj em prac i zacz em wspó pracowa z zespo ami innych programistów. By em
z siebie dumny, kiedy napisa em kod, który by elegancki i atwy w konserwacji. Sukces
oznacza wtedy doskona o techniczn .
Niektóre projekty ko cz si niepowodzeniem mimo dobrego kodu. Nawet doskonale
przeprowadzone projekty mog by nieciekawe dla u ytkowników. Doszed em do wniosku,
e zespó projektowy, w którym pracuj , jest cz ci wi kszego systemu, obejmuj cego dziesi tki,
setki, a nawet tysi ce osób. Produkty maj zapewnia zadowolenie ich wszystkich, a przede
wszystkim tych, którzy odpowiadaj za wysoko mojej pensji. Dla osób, które op acaj prac ,
warto oprogramowania musi przewy sza jego koszty. Sukces oznaczania zapewnianie
korzy ci firmie.
Przedstawione definicje nie s ze sob sprzeczne. Wa ny jest sukces na wszystkich trzech
poziomach (zobacz rysunek 1.1). Bez powodzenia na poziomie osobistym twórca b dzie mia
problemy z umotywowaniem siebie i pracowników. Bez sukcesu technicznego kod ród owy
w pewnym momencie za amie si pod swym ci arem. Przy braku powodzenia na poziomie
organizacji mo e si okaza , e zespó nie jest ju potrzebny.
Rysunek 1.1. Oblicza sukcesu
POZA HARMONOGRAM 21
Znaczenie sukcesów na poziomie organizacji
Zespo y programistyczne cz sto zaniedbuj sukces na poziomie firmy na rzecz atwiejszego
do osi gni cia powodzenia technicznego i osobistego. Nale y jednak pami ta o tym, e nawet
je li dana osoba nie bierze odpowiedzialno ci za sukces organizacji, jej prze o eni oceniaj
zespó na tym poziomie. Wy sza kadra zarz dzaj ca i dyrektorzy wykonawczy prawdopodobnie
nie b d zwraca uwagi na to, czy oprogramowanie jest eleganckie, atwe w konserwacji, a nawet
lubiane przez u ytkowników. Dla prze o onych licz si wyniki, czyli zwrot z inwestycji
w projekt. Je li zespó nie osi ga sukcesów w tym obszarze, mened erowie podejm dzia ania,
które zapewni powodzenie.
Niestety, wy sza kadra zarz dzaj ca zwykle nie ma czasu lub odpowiedniej perspektywy,
aby w ka dym projekcie stosowa wyrafinowane rozwi zania. Dlatego cz ciej u ywaj
miecza ni skalpela i s usznie oczekuj , e to zespó projektowy zajmie si szczegó ami.
Kiedy mened erowie s niezadowoleni z wyników zespo u, wyci gaj miecze. Najbardziej
oczywisty obiekt ci to koszty. S dwa proste sposoby na ich zmniejszenie: bardzo krótkie
terminy, które maj skróci czas wytwarzania, oraz zlecanie zada firmom maj cym siedziby
w pa stwach o ni szych kosztach pracy. Mo na te zastosowa oba te rozwi zania jednocze nie.
S to jednak nieeleganckie techniki. Krótkie terminy cz sto wyd u aj czas pracy zamiast go
skraca [McConnell 1999, s. 220], a zlecanie zada firmom zewn trznym wi e si z ukrytymi
kosztami [Overby].
Czy krótkie terminy i gro ba zlecenia zada firmom zewn trznym brzmi znajomo? Je li tak,
pora na wzi cie przez zespó odpowiedzialno ci za sukces, i to nie tylko osobisty i techniczny,
ale tak e na poziomie organizacji.
CO CENI ORGANIZACJE?
Cho warto niektórych projektów wynika bezpo rednio ze sprzeda y, korzy ci organizacji obejmuj tak e
czynniki inne ni dochody. Projekty zapewniaj warto na wiele sposobów i nie zawsze mo na wyceni je
w z otówkach i groszach.
Mo na wyró ni nast puj ce ród a warto ci (obok dochodów i oszcz dno ci)4:
odró nianie si od konkurencji;
kreowanie marki;
wzrost lojalno ci klientów;
spe nianie wymaga prawnych;
oryginalne badania;
informacje strategiczne.
4
Oparte cz ciowo na [Danne i Cleland-Huang].
22 ROZDZI A 1 . DL ACZEGO ZWI NNE PROGRAMOWANI E?
Wkraczanie w wiat zwinnego programowania
Czy zwinne wytwarzanie oprogramowania pomo e zespo owi w osi ganiu wi kszych
sukcesów? Mo liwe. Zwinne programowanie koncentruje si osi ganiu celów osobistych,
technicznych oraz organizacji. Je li zespó ma problemy w którym z tych obszarów, wdro enie
zwinnego wytwarzania oprogramowania mo e okaza si pomocne.
Sukces na poziomie organizacji
Zwinne metody pozwalaj osi gn sukces na poziomie organizacji poprzez koncentracj
na zapewnianiu warto ci i zmniejszaniu kosztów. Bezpo rednio przek ada si to na wy szy
zwrot z inwestycji. Zwinne metody powoduj tak e wczesne ustalanie oczekiwa , dlatego
je li projekt nie prowadzi do sukcesu organizacji, wiadomo o tym na tyle wcze nie, e mo na
anulowa go przed poniesieniem wysokich nak adów.
Zespo y stosuj ce zwinne programowanie zwi kszaj warto dzi ki w czeniu w prac
ekspertów biznesowych i skoncentrowaniu wysi ków na podstawowych warto ciach, które
projekt ma zapewnia organizacji. W projektach realizowanych zgodnie ze zwinnym podej ciem
jako pierwsze przygotowywane s najbardziej warto ciowe funkcje, a zespó cz sto udost pnia
nowe wersje, co znacznie zwi ksza warto . Kiedy zmieni si potrzeby biznesowe lub zespó
zdob dzie nowe informacje, mo na zmieni kierunek prac, aby dostosowa go do zaistnia ej
sytuacji. Do wiadczone zespo y stosuj ce zwinne podej cie poszukuj nieoczekiwanych
mo liwo ci, które pozwol ulepszy plan dzia ania.
Takie zespo y pozwalaj zmniejszy koszty. Po cz ci wynika to z doskona o ci technicznej.
W najlepszych zwinnych projektach pojawia si tylko kilka b dów miesi cznie. Mniejsze jest
tak e marnotrawstwo, co jest efektem wczesnego anulowania s abych projektów i zast powania
kosztownych praktyk rozwoju prostszymi. Komunikacja w zwinnych zespo ach jest szybka
i precyzyjna, a praca jest mo liwa nawet w przypadku nieobecno ci kluczowych osób.
Cz onkowie regularnie kontroluj proces i nieustannie usprawniaj kod, dzi ki czemu
konserwacja oprogramowania i wprowadzanie w nim poprawek s atwiejsze.
Sukces techniczny
Programowanie ekstremalne, czyli zwinna metoda, na której koncentruj si w tej ksi ce,
szczególnie dobrze nadaje si do zapewniania sukcesu technicznego. Programi ci stosuj cy XP
wspó pracuj ze sob , co pomaga im kontrolowa drobne szczegó y istotne w doskona ych
produktach, a jednocze nie gwarantuje, e ka dy fragment kodu przejrz przynajmniej
dwie osoby. Programi ci nieustannie integruj kod, co umo liwia zespo owi udost pnienie
oprogramowania w ka dym momencie, kiedy ma to sens biznesowy. Ca y zespó koncentruje
si na ca kowitym uko czeniu jednej funkcji przed przyst pieniem do pracy nad nast pn .
Zapobiega to nieoczekiwanym opó nieniom w momencie udost pniania produktu i umo liwia
swobodne zmienianie kierunku.
Programowanie ekstremalne obejmuje, obok struktury rozwoju, zaawansowane praktyki
techniczne, które prowadz do osi gni cia doskona o ci technicznej. Najbardziej znan
technik jest wytwarzanie sterowane testami. Pomaga ono pisa kod, który dzia a dok adnie
tak, jak programi ci tego oczekuj . Zespo y stosuj ce XP tworz tak e proste, nieustannie
zmieniaj ce si projekty, które mo na atwo zmodyfikowa przy zmianie planów.
WKRACZANI E W WI AT ZWI NNEGO PROGRAMOWANI A 23
Sukces osobisty
Sukces osobisty jest, no có , osobisty. Zwinne programowanie mo e nie spe nia wszystkich
wymaga w obszarze sukcesu osobistego. Jednak po przyzwyczajeniu si do tej techniki
u ytkownik, niezale nie od zajmowanego stanowiska, prawdopodobnie odkryje wiele jej zalet.
Kierownictwo i wy sza kadra zarz dzaj ca
Te osoby doceni d ugowieczno oprogramowania i koncentracj zespo u na zapewnianiu
wysokiego zwrotu z inwestycji.
U ytkownicy, udzia owcy, eksperci z dziedziny i mened erowie produktu
Te osoby doceni wp yw, jaki maj na kierunek rozwoju oprogramowania, a tak e
koncentracj zespo u na dostarczeniu u ytecznych i warto ciowych programów oraz
wysok cz stotliwo udost pniania wersji.
Mened erowie produktu i projektu
Mened erowie doceni mo liwo zmiany kierunku prac w obliczu nowych potrzeb
biznesowych, zdolno zespo u do podejmowania i spe niania zobowi za oraz wy sze
zadowolenie udzia owców.
Programi ci
Programi ci doceni wy sz jako pracy wynikaj c z podniesienia jako ci technicznej,
wi kszego wp ywu na szacunki i harmonogramy oraz niezale no ci zespo u.
Testerzy
Testerzy doceni traktowanie ich jak pe noprawnych cz onków zespo u, mo liwo wp ywu
na jako na wszystkich etapach projektu oraz bardziej wymagaj c i mniej schematyczn
prac .
Praca w zwinnych zespo ach to jeden z najprzyjemniejszych okresów w mojej karierze.
Wystarczy, e wyobra sobie przyjacielsk atmosfer w zespole, który wspó pracuje w celu
zaprojektowania i udost pnienia produktu o trwa ej warto ci, gdzie ka dy cz onek grupy
z entuzjazmem przyczynia si do skutecznego dzia ania ca o ci. Wyobra sobie branie
odpowiedzialno ci za dany obszar techniczny, biznesowych lub zwi zany z zarz dzaniem
i zaufanie reszty zespo u do moich zawodowych s dów i umiej tno ci. Jak e przyjemne
jest rozwi zywanie problemów projektowych i obserwowanie poprawy jako ci.
Zwinne programowanie zmienia obraz bran y. Rozwój i udost pnianie oprogramowania
w nowy sposób wymaga du o pracy i pomy lunku. Jednak je li zespó stosuje omawiane
podej cie spójnie i przestrzegaj c wszelkich zasad, mo e uzyska niezwyk e wyniki. B dzie
regularnie wytwarza naprawd warto ciowe oprogramowanie i ka dego tygodnia demonstrowa
post py. Ponadto rozwój oprogramowania stanie si przyjemniejszy ni kiedykolwiek wcze niej.
Wszyscy gotowi? Zaczynamy.
24 ROZDZI A 1 . DL ACZEGO ZWI NNE PROGRAMOWANI E?
Wyszukiwarka
Podobne podstrony:
informatyka agile development filozofia programowaniaprogram filozofia gimnazjumPodstawa programowa przedmiotu filozofiaprogram filozofia liceum00 filozofia kultury (program)Program literacki i społeczny polskiego pozytywizmu na tle historii narodu i w kontekście filozofiizestawy cwiczen przygotowane na podstawie programu Mistrz Klawia 6Międzynarodowy Program Badań nad Zachowaniami SamobójczymiFilozofia religii cwiczenia dokladne notatki z zajec (2012 2013) [od Agi]CSharp Introduction to C# Programming for the Microsoft NET Platform (Prerelease)Biedrzyński D , Pojęcie harmonii w filozofii EmpedoklesaInstrukcja Programowania Zelio Logic 2 wersja polskaNahua filozofiaProgram wykładu Fizyka II 14 15więcej podobnych podstron