Agile w praktyce, czyli jak to robimy naprawdę Marcin Górecki marcin.gorecki@tt.com.pl Łódź, 21.01.2010
AGENDA O Agile Trudności z adopcją Co zostało wdrożone u nas Dyskusja
Manifest Agile Poprzez wytwarzanie oprogramowania oraz pomaganie innym w tym zakresie odkrywamy lepsze sposoby realizowania tej pracy. W wyniku tych doświadczeń zaczęliśmy przedkładać: Ludzi i ich wzajemne interakcje (współdziałanie) ponad procedury i narzędzia. Działające oprogramowanie nad wyczerpującą dokumentację. Współpracę z klientem nad negocjację umów. Reagowanie na zmiany nad realizowanie planu. Oznacza to, że wprawdzie doceniamy to co wymieniono po prawej stronie, to jednak bardziej cenimy to co wymieniono po lewej. Źródło: http://pl.wikipedia.org/wiki/Manifest_Agile
Główne cechy Agile Osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania oprogramowania Działające oprogramowanie jest dostarczane okresowo Podstawową miarą postępu jest działające oprogramowanie Późne zmiany w specyfikacji nie mają destrukcyjnego charakteru na proces wytwarzania oprogramowania Bliska, dzienna współpraca pomiędzy biznesem a developmentem Bezpośredni kontakt jako najlepsza forma komunikacji w zespole i poza nim Ciągła uwaga nastawiona na aspekty techniczne oraz dobry projekt (design) Prostota Samozarządzalność zespołów Regularna adaptacja do zmieniających się wymagań Źródlo: http://pl.wikipedia.org/wiki/Zwinne_programowanie
Główne techniki Agile Różne źródła wymieniają różne techniki. Wikipedia: Test Driven Development (TDD) Behavior Driven Development (BDD) - planowanie Continuous Integration Pair Programming Planning poker - estymacje RITE method - usability testing Brakuje najważniejszego - meetingów
Adopcja agile Klient przyzwyczajony do waterfalla
Ograniczenia w adopcji Agile Ograniczony dostęp do klienta, pojedynczy punkt kontaktu (SA u nas, wyznaczone osoby u klienta) Klient wymaga dokumentacji Rozproszone, miedzynarodowe zespoły Różne role na projekcie Duża część wymagań jest znana na początku projektu Różny poziom doświadczenia u członków zespołu Niechęć człoków zespołu Pełna przejrzystość działań Szybkie rezultaty, ciężko chować pod dywan Rezultat: Zbudowanie specyficznego procesu
Adopcja Agile Spotkania, ciągły kontakt Test Driven Development (TDD) Testy funkcjonalne Testy unitarne tworzone przed rozpoczęciem developmentu Kilka cykli testów: developerskie, tygodniowe, okresowe, akceptacyjne Continuous Integration Cotygodniowe buildy Dużo automatyzacji, ant Early release process
Wykorzystywane narzędzia Skype, MSN, email Issue tracking – bugzilla, Jira VMware jako platforma developerska i testowa Source control – SVN Zbieranie wymagań – excel, Enterprise Architect Testy – findbugs, junit, jmeter, excel
Organizacja developerki na moich projektach Akceptacja taska Zrozumienie zadania Przygotwanie testów unitarnych Development Wykonanie testów Commit kodu oraz wyniku testu Zamknięcie
Efekt Znaczna poprawa jakości dostarczanego oprogramowania Szybsza identyfikacja błędnych wymagań przez klienta
Zapraszam do dyskusji i pytań Dyskusja Zapraszam do dyskusji i pytań