Programowanie zwinne Wykład 1 Marcin Młotkowski 10 października 2012
Plan wykładu Sprawy organizacyjne Organizacja pracowni 1 Sprawy organizacyjne Organizacja pracowni 2 3 Marcin Młotkowski Programowanie zwinne 2 / 42
O wykładzie i wykładowcy Organizacja pracowni Prowadzący Marcin Młotkowski konsultacje: poniedziałek 10:15 12:00, pok. 303 Strona wykładu http://www.ii.uni.wroc.pl/ marcinm/dyd/zwinne/ Marcin Młotkowski Programowanie zwinne 3 / 42
Cel wykładu Sprawy organizacyjne Organizacja pracowni Wykład dostarczy wiadomości o zasadach programowania zwinnego, o metodykach oraz ich zaletach i wadach. Wykład obejmuje również zasady projektowania obiektowego a także teorię i praktykę testowania. Zadaniem pracowni jest nabycie pewnej praktyki w stosowaniu zasad zwinnych, w szczególności pracy zespołowej. Marcin Młotkowski Programowanie zwinne 4 / 42
Plan wykładu Sprawy organizacyjne Organizacja pracowni Ogólne zasady zwinnego wytwarzania oprogramowania Planowanie działania Współpraca z użytkownikiem: określanie wymagań funkcjonalnych i niefunkcjonalnych Rola testowania w programowaniu zwinnym Wzorce projektowe Udoskonalanie kodu Marcin Młotkowski Programowanie zwinne 5 / 42
Literatura I Sprawy organizacyjne Organizacja pracowni Alistar Cockburn. Agile Software Development. Gra zespołowa. Wydawnictwo Helion, 2008. Martin Fowler. Refaktoryzacja. Wydawnictwa Naukowo Techniczne, 2006. Erich Gamma, Richard Helm, Ralph Johnson, and John Vilissides. Wzorce Projektowe. Wydawnictwa Naukowo Techniczne, 2005. Ron Jeffries. Programowanie ekstremalne w C#. Microsoft Press, 2005. Marcin Młotkowski Programowanie zwinne 6 / 42
Literatura II Sprawy organizacyjne Organizacja pracowni Robert C. Martin and Micah Martin. Agile. Programowanie zwinne: zasady, wzorce i praktyki zwinnego wytwarzania oprogramowania w C. Wydawnictwo Helion, 2008. Ken Schwaber. Agile project management with SCRUM. Microsoft Press, 2004. Marcin Młotkowski Programowanie zwinne 7 / 42
Do poczytania Sprawy organizacyjne Organizacja pracowni Frederick Brooks. The Mythical Man-Month. Jason Fried and David Heinemeier Hansson. ReWork: Change the Way You Work Forever. Marcin Młotkowski Programowanie zwinne 8 / 42
Podział na zespoły Sprawy organizacyjne Organizacja pracowni podział na grupy 3-osobowe; praca podczas pracowni; Marcin Młotkowski Programowanie zwinne 9 / 42
Plan wykładu Sprawy organizacyjne 1 Sprawy organizacyjne Organizacja pracowni 2 3 Marcin Młotkowski Programowanie zwinne 10 / 42
Pomieszanie pojęć Sprawy organizacyjne metodyka, metodologia, zarządzanie projektami Marcin Młotkowski Programowanie zwinne 11 / 42
Słownik Sprawy organizacyjne Projekt Zorganizowane działanie zmierzające do osiągnięcia zamierzonego celu. Marcin Młotkowski Programowanie zwinne 12 / 42
Słownik Sprawy organizacyjne Projekt Zorganizowane działanie zmierzające do osiągnięcia zamierzonego celu. Cechy: projekt ma założony czas trwania; projekt jest unikatowy; projekt ma cele; projekt potrzebuje zasobów; projekt jest obarczony ryzykiem. Marcin Młotkowski Programowanie zwinne 12 / 42
Słownik Sprawy organizacyjne Projekt Zorganizowane działanie zmierzające do osiągnięcia zamierzonego celu. Cechy: projekt ma założony czas trwania; projekt jest unikatowy; projekt ma cele; projekt potrzebuje zasobów; projekt jest obarczony ryzykiem. Proces Powtarzalny ciąg czynności, bez zaplanowanego końca. Przykładem może być wyprodukowanie partii towaru na linii produkcyjnej. Marcin Młotkowski Programowanie zwinne 12 / 42
Przykłady projektów Sprawy organizacyjne zaprojektowanie, implementacja i wdrożenie projektu informatycznego; kampania marketingowa; prace remontowe; opracowanie nowego leku;... Marcin Młotkowski Programowanie zwinne 13 / 42
Słownik, cd. Sprawy organizacyjne Metodyka zarządzania projektem Standard zarządzania projektem. Marcin Młotkowski Programowanie zwinne 14 / 42
Słownik, cd. Sprawy organizacyjne Metodyka zarządzania projektem Standard zarządzania projektem. Metodologia Standard zarządzania projektem opracowany dla specyficznych dziedzin. Na przykład badanie opinii publicznej w jakiejś sprawie za pomocą ankiet telefonicznych. Marcin Młotkowski Programowanie zwinne 14 / 42
Wniosek Metodyki zarządzania projektem to nie tylko metodyki w projektach informatycznych! Przykłady uniwersalnych metodyk PMI (Project Management Institute), PRINCE (Projects In a Controlled Environment) Marcin Młotkowski Programowanie zwinne 15 / 42
Najprostsza metodyka: horda Mongolska Opis Terminy gonią, więc zatrudniamy jak najwięcej osób. Marcin Młotkowski Programowanie zwinne 16 / 42
Najprostsza metodyka: horda Mongolska Opis Terminy gonią, więc zatrudniamy jak najwięcej osób. Kiedy się sprawdza Kopanie rowów. Marcin Młotkowski Programowanie zwinne 16 / 42
Najprostsza metodyka: horda Mongolska Opis Terminy gonią, więc zatrudniamy jak najwięcej osób. Kiedy się sprawdza Kopanie rowów. Kiedy się nie sprawdza Kopanie studni. Marcin Młotkowski Programowanie zwinne 16 / 42
Metodyka zarządzania vs metodyka wytwarzania Metodyka zarządzania Zarządzanie całym projektem. Metodyka wytwarzania Zarządzanie samym procesem wytwarzania produktu. Marcin Młotkowski Programowanie zwinne 17 / 42
Przykład metodyki wytwarzania: model kaskadowy Specyfikacja wymagań Projekt systemu Implementacja systemu Testowanie systemu Wdrożenie systemu Marcin Młotkowski Programowanie zwinne 18 / 42
Kolejne iteracje w modelu kaskadowym Specyfikacja wymagań Projekt systemu Implementacja systemu Testowanie systemu Wdrożenie systemu Marcin Młotkowski Programowanie zwinne 19 / 42
Niektóre cechy modelu kaskadowego nie można przejść do kolejnej fazy przed zakończeniem bieżącej iteracje są kosztowne nieelastyczny podział wymuszenie sporządzenia dokładnej specyfikacji przed rozpoczęciem projektowania i kodowania Marcin Młotkowski Programowanie zwinne 20 / 42
Współpraca z klientem klient za bardzo nie wie, czego chce; Marcin Młotkowski Programowanie zwinne 21 / 42
Współpraca z klientem klient za bardzo nie wie, czego chce; klient nawet wie, czego chce, ale nie zna się na programowaniu; Marcin Młotkowski Programowanie zwinne 21 / 42
Współpraca z klientem klient za bardzo nie wie, czego chce; klient nawet wie, czego chce, ale nie zna się na programowaniu; klient zmienia specyfikację Marcin Młotkowski Programowanie zwinne 21 / 42
Zmiany Sprawy organizacyjne Jedyną rzeczą stałą w projekcie są zmiany. Marcin Młotkowski Programowanie zwinne 22 / 42
Zmiany Sprawy organizacyjne Jedyną rzeczą stałą w projekcie są zmiany. Przyczyny zmian klient zmienił wymagania klient powiedział dokładnie o co mu chodzi zmiana prawa Marcin Młotkowski Programowanie zwinne 22 / 42
Czym się zarządza w projekcie? Marcin Młotkowski Programowanie zwinne 23 / 42
Klasyfikacja Project Management Institute zarządzanie integracją projektu; zarządzanie zakresem projektu; zarządzanie czasem; zarządzanie kosztami; zarządzanie jakością; zarządzanie zasobami ludzkimi; zarządzanie komunikacją; zarządzanie ryzykiem; zarządzanie zaopatrzeniem. Marcin Młotkowski Programowanie zwinne 24 / 42
Zarządzanie integracją projektu rózne dziedziny (informatyka +...) różni specjaliści planowanie projektu (sposób współpracy) analiza ekonomiczna projektu. Marcin Młotkowski Programowanie zwinne 25 / 42
Zarządzanie zakresem ustalenie celów strategicznych; ustalenie kryteriów (czas, budżet, jakość); podział na elementy i ich analiza. Marcin Młotkowski Programowanie zwinne 26 / 42
Zarządzanie czasem Sprawy organizacyjne ustalenie listy zadań i ich zależności; oszacowanie czasu; kontrola terminowości. Marcin Młotkowski Programowanie zwinne 27 / 42
Zarządzanie kosztami koszty pracy; koszty powierzchni biurowej; koszty szkoleń, licencji etc; kontrola kosztów. Marcin Młotkowski Programowanie zwinne 28 / 42
Zarządzanie jakością Sprawy organizacyjne kryteria jakości (produktu i procesu); wdrożenie kontroli jakości; analiza błędów Marcin Młotkowski Programowanie zwinne 29 / 42
Zarządzanie zasobami ludzkimi wiedza o umiejętnościach osób, brakach; rozwijanie wiedzy zespołu; stosunki międzyludzkie. Marcin Młotkowski Programowanie zwinne 30 / 42
Zarządzanie komunikacją standardy wymiany informacji (wymagania, kody źródłowe etc); kontrola wykonywanych zadań; archiwizacja. Marcin Młotkowski Programowanie zwinne 31 / 42
Zarządzanie ryzykiem identyfikacja zagrożeń (włamanie, awaria dysku); usuwanie skutków zagrożeń; Marcin Młotkowski Programowanie zwinne 32 / 42
Zarządzanie zaopatrzeniem zaopatrzenie w materiały (np. specjalistyczny sprzęt); zaopatrzenie w oprogramowanie i licencje, instalacja Marcin Młotkowski Programowanie zwinne 33 / 42
Plan wykładu 1 Sprawy organizacyjne Organizacja pracowni 2 3 Marcin Młotkowski Programowanie zwinne 34 / 42
Inspiracje Sprawy organizacyjne duża liczba projektów zakończona niepowodzeniem Marcin Młotkowski Programowanie zwinne 35 / 42
Inspiracje Sprawy organizacyjne duża liczba projektów zakończona niepowodzeniem wady stosowanych metodyk Marcin Młotkowski Programowanie zwinne 35 / 42
Sposób prowadzenia projektu: kaskada vs zwinne Szczegółowe procedury i zaawansowane narzędzia do zarządzania projektem. Marcin Młotkowski Programowanie zwinne 36 / 42
Sposób prowadzenia projektu: kaskada vs zwinne Szczegółowe procedury i zaawansowane narzędzia do zarządzania projektem. Postawienie na współpracę i zaufanie Marcin Młotkowski Programowanie zwinne 36 / 42
Specyfikacja projektu: kaskada vs zwinne Wyczerpująca dokumentacja Marcin Młotkowski Programowanie zwinne 37 / 42
Specyfikacja projektu: kaskada vs zwinne Wyczerpująca dokumentacja Działające oprogramowanie Marcin Młotkowski Programowanie zwinne 37 / 42
Współpraca z klientem: kaskada vs zwinne Negocjacje kontraktu Marcin Młotkowski Programowanie zwinne 38 / 42
Współpraca z klientem: kaskada vs zwinne Negocjacje kontraktu Stała współpraca z klientem Marcin Młotkowski Programowanie zwinne 38 / 42
Organizacja projektu: kaskada vs zwinne Trzymanie się planu Marcin Młotkowski Programowanie zwinne 39 / 42
Organizacja projektu: kaskada vs zwinne Trzymanie się planu Reagowanie na zmiany Marcin Młotkowski Programowanie zwinne 39 / 42
Rezultat tych zmian W lutym 2001, w Snowbird (Utah) spotkało się 17 deweloperów. Marcin Młotkowski Programowanie zwinne 40 / 42
Rezultat tych zmian W lutym 2001, w Snowbird (Utah) spotkało się 17 deweloperów. I napisało Agile Manifesto Marcin Młotkowski Programowanie zwinne 40 / 42
Agile Manifesto 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. Marcin Młotkowski Programowanie zwinne 41 / 42
Zasady programowania zwinnego 1 osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania oprogramowania, Marcin Młotkowski Programowanie zwinne 42 / 42
Zasady programowania zwinnego 1 osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania oprogramowania, 2 działające oprogramowanie jest dostarczane okresowo (raczej tygodniowo niż miesięcznie), Marcin Młotkowski Programowanie zwinne 42 / 42
Zasady programowania zwinnego 1 osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania oprogramowania, 2 działające oprogramowanie jest dostarczane okresowo (raczej tygodniowo niż miesięcznie), 3 podstawową miarą postępu jest działające oprogramowanie, Marcin Młotkowski Programowanie zwinne 42 / 42
Zasady programowania zwinnego 1 osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania oprogramowania, 2 działające oprogramowanie jest dostarczane okresowo (raczej tygodniowo niż miesięcznie), 3 podstawową miarą postępu jest działające oprogramowanie, 4 późne zmiany w specyfikacji nie mają destrukcyjnego wpływu na proces wytwarzania oprogramowania, Marcin Młotkowski Programowanie zwinne 42 / 42
Zasady programowania zwinnego 1 osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania oprogramowania, 2 działające oprogramowanie jest dostarczane okresowo (raczej tygodniowo niż miesięcznie), 3 podstawową miarą postępu jest działające oprogramowanie, 4 późne zmiany w specyfikacji nie mają destrukcyjnego wpływu na proces wytwarzania oprogramowania, 5 bliska, dzienna współpraca pomiędzy biznesem a developerem, Marcin Młotkowski Programowanie zwinne 42 / 42
Zasady programowania zwinnego 1 osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania oprogramowania, 2 działające oprogramowanie jest dostarczane okresowo (raczej tygodniowo niż miesięcznie), 3 podstawową miarą postępu jest działające oprogramowanie, 4 późne zmiany w specyfikacji nie mają destrukcyjnego wpływu na proces wytwarzania oprogramowania, 5 bliska, dzienna współpraca pomiędzy biznesem a developerem, 6 bezpośredni kontakt, jako najlepsza forma komunikacji w zespole i poza nim, Marcin Młotkowski Programowanie zwinne 42 / 42
Zasady programowania zwinnego 1 osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania oprogramowania, 2 działające oprogramowanie jest dostarczane okresowo (raczej tygodniowo niż miesięcznie), 3 podstawową miarą postępu jest działające oprogramowanie, 4 późne zmiany w specyfikacji nie mają destrukcyjnego wpływu na proces wytwarzania oprogramowania, 5 bliska, dzienna współpraca pomiędzy biznesem a developerem, 6 bezpośredni kontakt, jako najlepsza forma komunikacji w zespole i poza nim, 7 ciągła uwaga nastawiona na aspekty techniczne oraz dobry projekt (design), Marcin Młotkowski Programowanie zwinne 42 / 42
Zasady programowania zwinnego 1 osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania oprogramowania, 2 działające oprogramowanie jest dostarczane okresowo (raczej tygodniowo niż miesięcznie), 3 podstawową miarą postępu jest działające oprogramowanie, 4 późne zmiany w specyfikacji nie mają destrukcyjnego wpływu na proces wytwarzania oprogramowania, 5 bliska, dzienna współpraca pomiędzy biznesem a developerem, 6 bezpośredni kontakt, jako najlepsza forma komunikacji w zespole i poza nim, 7 ciągła uwaga nastawiona na aspekty techniczne oraz dobry projekt (design), 8 prostota, Marcin Młotkowski Programowanie zwinne 42 / 42
Zasady programowania zwinnego 1 osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania oprogramowania, 2 działające oprogramowanie jest dostarczane okresowo (raczej tygodniowo niż miesięcznie), 3 podstawową miarą postępu jest działające oprogramowanie, 4 późne zmiany w specyfikacji nie mają destrukcyjnego wpływu na proces wytwarzania oprogramowania, 5 bliska, dzienna współpraca pomiędzy biznesem a developerem, 6 bezpośredni kontakt, jako najlepsza forma komunikacji w zespole i poza nim, 7 ciągła uwaga nastawiona na aspekty techniczne oraz dobry projekt (design), 8 prostota, 9 samozarządzalność zespołów, Marcin Młotkowski Programowanie zwinne 42 / 42
Zasady programowania zwinnego 1 osiągnięcie satysfakcji klienta poprzez szybkość wytwarzania oprogramowania, 2 działające oprogramowanie jest dostarczane okresowo (raczej tygodniowo niż miesięcznie), 3 podstawową miarą postępu jest działające oprogramowanie, 4 późne zmiany w specyfikacji nie mają destrukcyjnego wpływu na proces wytwarzania oprogramowania, 5 bliska, dzienna współpraca pomiędzy biznesem a developerem, 6 bezpośredni kontakt, jako najlepsza forma komunikacji w zespole i poza nim, 7 ciągła uwaga nastawiona na aspekty techniczne oraz dobry projekt (design), 8 prostota, 9 samozarządzalność zespołów, 10 regularna adaptacja do zmieniających się wymagań. Marcin Młotkowski Programowanie zwinne 42 / 42