Marcin Kucięba marcin.kucieba@sabre.com. Agile Development



Podobne dokumenty
INICJATYWA STUDENCKA. Gdańsk,

INICJATYWA STUDENCKA. Gdańsk,

LEKKIE METODOLOGIE WYTWARZANIA OPROGRAMOWANIA

The Agile Way Thomson Reuters case study. Małgorzata Kusyk, PMP Managing Partner, AgilePMO Senior Project Manager, Thomson Reuters

INŻYNIERIA OPROGRAMOWANIA LAB 1

Metodyki programowania. Tomasz Kaszuba 2015

Szybkość w biznesie. Zwinne testowanie oprogramowania (Agile) Mateusz Morawski (mateusz.morawski@hp.com) 14 kwietnia 2015

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

LEKKIE METODOLOGIE WYTWARZANIA OPROGRAMOWANIA

Wykład 2. MIS n Inżynieria oprogramowania Marzec Kazimierz Michalik Akademia Górniczo-Hutnicza im. S. Staszica w Krakowie

Podejście zwinne do zarządzania projektami

Metodyki zwinne wytwarzania oprogramowania

Jarosław Kuchta Dokumentacja i Jakość Oprogramowania. Wymagania jakości w Agile Programming

Projektowanie zwinne

Programowanie zwinne

SYSTEMY INFORMATYCZNE ćwiczenia praktyczne

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

Zagadnienia. Inżynieria Oprogramowania

Modele cyklu życia systemu cd Zasady programowania zwinnego Wykład 3

Acceptance Test Driven Development wspierane przez narzędzie ROBOT Framework. Edyta Tomalik Grzegorz Ziemiecki

Agile vs PRINCE /2015 I rok st. magisterskie Informatyka

Zwinne podejście do projektu i produktu Kto? Co? i Jak? Małgorzata Kusyk, PMP, PRINCE2P

Modele cyklu życia oprogramowania

Podejście tradycyjne. plan wykonanie sekwencyjna natura wykonywanych zadań

Zagadnienia. Inżynieria Oprogramowania

SCRUM niełatwe wdrażanie metodyki w praktyce. Adam Krosny

Agile Project Management

Programowanie zwinne - wprowadzenie. Programowanie ekstremalne. Wstęp Reguły i praktyki SCRUM. Wprowadzenie Role Zdarzenia Artefakty

Metodyka dla projektu SYRIUSZ

Akademia ADB Wykład I Praca w grupie i jakość kodu

Metody wytwarzania oprogramowania. Metody wytwarzania oprogramowania 1/31

Błędy procesu tworzenia oprogramowania (Badania firmy Rational Software Corporation)

Wzorce projektowe i refaktoryzacja

Scaling Scrum with SAFe. Małgorzata Czerwińska

Zarządzanie projektami. Porównanie podstawowych metodyk

Agile Software Development Perspektywa Członka Zespołu

Programowanie Zespołowe

Programowanie zespołowe

Spring Framework - wprowadzenie i zagadnienia zaawansowane

Studia podyplomowe PROGRAM NAUCZANIA PLAN STUDIÓW

NOWE METODYKI PROWADZENIA PROJEKTU

Estimation and planing. Marek Majchrzak, Andrzej Bednarz Wroclaw,

Program szkolenia: Jenkins - Continuous Integration

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Prowadzenie projektu programistycznego. Modele tworzenia oprogramowania. Programowanie kaskadowe i zwinne. Wykład 9

EXIN Agile Scrum Foundation. Przewodnik egzaminacyjny

Wstęp do zarządzania projektami

Programowanie Zespołowe

Przewodnik egzaminacyjny. EXIN Agile Scrum. Wydanie

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

Lekkie metodyki. tworzenia oprogramowania

Wstęp do zarządzania projektami

Planowanie i realizacja zadań w zespole Scrum

Continuous Integration i jakość kodu. Michał Prajs

Zwinne tworzenie aplikacji internetowych typu RIA w środowisku Ruby on Rails

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

AGILE SOFTWARE HOUSE SCRUM PRAKTYCZNIE SCRUM BOOK

Inżynieria oprogramowania (Software Engineering)

Zarządzanie testowaniem wspierane narzędziem HP Quality Center

Rok akademicki: 2017/2018 Kod: IIN s Punkty ECTS: 2. Poziom studiów: Studia I stopnia Forma i tryb studiów: Stacjonarne

Wprowadzenie do metodyki SCRUM. mgr inż. Remigiusz Samborski Instytut Informatyki Politechnika Wrocławska

JUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Feature Driven Development

Analiza i projekt systemu pracy grupowej z zastosowaniem metodyki SCRUM w technologii SharePoint Karolina Konstantynowicz

Programowanie Zespołowe

Text. Atlassian User Group Lower Silesia Praktyczne wykorzystanie narzędzi Atlasisan w skalowaniu i zarządzaniu projektami. Best practices.

Jak być agile w projekcie utrzymaniowym? JOANNA SIEMIŃSKA

Wsparcie narzędziowe zarządzania ryzykiem w projektach. Spotkanie 2 Zbigniew Misiak (BOC IT Consulting)

Leszno Jakie są i będą oczekiwania biznesu wobec IT?

Organizacja procesu projektowania, rozwoju i serwisowania systemu wspomagającego zarzadzanie uczelnią

Czy Agile wystarczy by być innowacyjnym?

Dobre wdrożenia IT cz. I Business Case.

Wykład 1 Inżynieria Oprogramowania

Program szkolenia: Continuous Integration i Git

Michał Olejnik. 22 grudnia 2009

Tworzenie gier na urządzenia mobilne

Zarządzanie Projektami Inwestycyjnymi

I Twój zespół może być zwinny (choć to może trochę potrwać) Paweł Lipiński

Etapy życia oprogramowania

Zarządzanie projektami. Porównanie podstawowych metodyk

Zarządzanie projektami w NGO

Zarządzanie projektem wdrożeniowym systemu klasy ERP autorska metodyka

Agile Software Development. Zastosowanie metod Scrum i Kanban.

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

AN EVOLUTION PROCESS FOR SERVICE- ORIENTED SYSTEMS

Budowa systemu wspomagającego podejmowanie decyzji. Metodyka projektowo wdrożeniowa

Projektowanie systemów informatycznych. Roman Simiński programowanie.siminskionline.pl. Cykl życia systemu informatycznego

Scrum. Zwinna metodyka prowadzenia projektów

Testowanie Akceptacyjne

Zarządzanie i realizacja projektów systemu Microsoft SharePoint 2010

Wprowadzenie do Behaviordriven

Optymalizacja Automatycznych Testów Regresywnych

Agile, approach Scrum in IT projects Katarzyna Terlecka, Filip Sajdak & Jerzy Wachala

Program szkolenia: Tworzenie aplikacji w Ruby on Rails z wykorzystaniem zwinnych metodyk

Scrum w praktyce. Michał Piórek

Scrum i nie tylko : teoria i praktyka w metodach Agile / Krystian Kaczor. Wyd. 2. Warszawa, Spis treści

Transkrypt:

Marcin Kucięba marcin.kucieba@sabre.com Agile Development

Agile Development Dotychczasowe podejście Konieczność zmian Agile Manifest Praktyki Agile Dlaczego Agile? Agile resources & books 2

Software development dotychczas Waterfall tradycyjne podejście w procesie wytwarzania oprogramowania Analiza Design Development Testowanie Instalacja Sekwencyjność - brak możliwości zmiany wcześniejszych decyzji! 3

Konieczność zmian Brak efektywności dotychczasowego podejścia Wysoki współczynnik projektów zakończonych porażką Według raportu CHAOS w 1998 roku: 26% projektów zakończonych zostało z sukcesem 28% zakończonych zostało porażką 46% projektów przekroczyło budżet bądź planowany termin zakończenia Zderzenie narzuconej metodyki z rzeczywistością projektu" Brak możliwości reagowania na zmiany Niska jakość dostarczanego oprogramowania 4

Początki zmian Extreme Programming SCRUM DSDM Adaptive Software Development Crystal Feature-Driven Development Pragmatic Programming 5

Manifest Agile 11 Lutego 2001 w Wasatach w stanie Utah 17 ludzi spotkało się aby określić wspólny mianownik nowych procesów związanych z wytwarzaniem oprogramowania oraz stworzyć podstawowe, wspólne dla tych procesów zasady software developmentu Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas 6

Manifest Agile Interactions with individuals over processes and tools. Creating working software over comprehensive documentation. Customer collaboration over contract negotiation. Responding to change over following a plan 7

Praktyki Agile Planowanie Iteracje User stories Obecność klienta Planowanie iteracji Prezentacja aplikacji Project velocity Release planning Design Simple design YAGNI Refactoring Kodowanie Standardy kodowania Test driven development Continious integration Wspólny kod Pair programming Zespół nie pracuje overtime Testowanie Unit testy Analiza jakości kodu Testy integracyjne Testy akceptacyjne Automatyzacja testów 8

Iteracja n I T C D A 9 Iteracja 4 Iteracja 5 Iteracja 6 Iteracja 7 Iteracja 8 Iteracja 9 Iteracja 10 Iteracja 11 Iteracja 12 I T C D A I T C D A I T C D A I T C D A I T C D A I T C D A I T C D A I T C D A I T C D A Zawsze niezmienna długość Pełny cykl zadań developerskich w każdej iteracji Iteracja 3 I T C D A Iteracje Iteracja 2 Iteracja 1 Iteracja 0 I T C D A I T IP C D A IP Initial Planning A Analiza D Design C - Kodowanie T Testowanie I Integracja

Planowanie iteracji Zawsze na początku każdej iteracji Klient decyduje co będzie realizowane w danej iteracji Aktywny udział wszystkich członków zespołu Estymacja zadanie wyłączne developerów Podział zaplanowanych user stories na zasadach sign up Planujemy tylko tyle, ile jesteśmy w stanie zrobić w iteracji 10

User stories Opisują zamknięty kawałek funkcjonalność Muszą posiadać wartość dla klienta Muszą mieścić się w iteracji Nie skupiają się na aspektach technologicznych projektu Są demonstrowalne Są szacowane w bezjednostkowych punktach Wymagają implementacji we wszystkich warstwach systemu 11

Prezentacja aplikacji Każdy z developerów prezentuje zaimplementowane user stories Wspólna ocena wykonania user stories Regularny feedback Możliwość śledzenia postępu prac przez klienta 12

Project velocity Project Burndown Backlog zbiór user stories do wykonania Tracking - analiza postępu prac Velocity średnia ilość zrealizowanych punktów Burndow chart charakterystyka postępu prac w czasie Metryki narzędzie umożliwiające predykcje 7000 6000 5000 4000 3000 2000 1000 0 I1 E1 E2 E3 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Iteration Scheduled Actual Trend Planned Trend Gap Last Iteration 2309 Total Deliverable Work: Gap %: 6184 37% Actual % of Iterations Remaining: 27% Trend Units of Work per Iteration: 279 Trend Needed Units or Work per Iteration: 741 Per Iteration Variance: 166% Schedule Iteration Variance 9 Trend Gap Iteration Variance % 60% Iteration Variance 13

Release planning Etapowe wdrażanie systemu Minimalizacja ryzyka związanego z uruchomieniem systemu Zwiększone szanse na sukces poprzez zarządzanie czynnikiem time to market What you get is what you see - klient wie i widzi, co system oferuje użytkownikom Klient decyduje co i kiedy oddać użytkownikom 14

Simple design Nie robimy dokładnego up front design Zawsze stosuj simple design principles High cohesion, Low copuling, Single responisbility, Open/Close, Liskov s Substitution Proste kod łatwiej zmienić Prosty kod łatwiej zrozumieć Prosty kod łatwiej utrzymywać Implementacja designu, który jest prosty zajmuje mniej czasu Pamiętaj o tym, że ktoś będzie używał twojego kodu Unikaj zbędnej komplikacji i overdesignu YAGNI You are not going to need this 15

Test Driven Development Najpierw implementujemy testy, potem klasy Testy definiują zakres implementacji oraz funkcjonalność klas i komponentów Testy wspomagają simple design Testy stanowią dokumentacje użycia klas i komponentów Tworzone klasy i komponenty są łatwiejsze w użyciu 16

Continious Integration Cały zespół pracuje na wspólnym kodzie Projekt posiada automatyczny proces budowania aplikacji ant, maven Build integracyjny kompiluje projekt i uruchamia wszystkie testy unitowe i sprawdza jakość kodu Build integracyjny uruchamiany jest po oddaniu każdej zmiany Status buildu jest komunikowany natychmiast wszystkim członkom zespołu Zmiany muszą być oddawane często 17

Unit testy Unit testy są częścią developmentu i tworzone są przez developerów Wszystkie testy powstają przed implementacją Testy umożliwiają refactoring Każda metoda publiczna klasy powinna posiadać test Unit testy powinny pokrywać jak największą ilość kodu pokrycie testami powinno być mierzone Aplikacja nie może być zreleasowana jeżeli któreś z klas nie posiadają testów Unit testy strzegą zaimplementowanej funkcjonalności przed przypadkowym uszkodzeniem podczas przyszłej implementacji 18

Analiza jakości kodu Wysoka jakość kodu jest jednym z priorytetów Agile Development Sprawdzanie jakości powinno być częścią continious integration Narzędzia wspomagające analizę jakości Checkstyle (standardy kodowania) Cobertura (code coverage) PMD (statyczna analiza kodu) JDepend (analiza zależności) 19

Praktyki Agile Stanowią narzędzia w rękach zespołu Wspierają podstawowe zasady wyrażone w manifeście Obejmują wszystkie aspekty związane z tworzonym oprogramowaniem Tworzenie kodu, organizacja projektu, zarządzanie, testowanie Są od siebie zależne wspierając się nawzajem Wyznaczają dyscyplinę i organizują prace w projekcie 20

Dlaczego Agile? Zapewnia większą jakość dostarczanego softwaru Dzięki feedbackowi klienta produkt nie rozmija się z oczekiwaniami Pozwala reagować na zmiany w trakcie realizacji projektu Pozwala klientowi na bieżąco kształtować produkt Realizacja oczekiwań klienta Waterfall Agile Oczekiwania klienta 21

Dlaczego Agile? Dzięki simple design i obecności testów łatwo jest wprowadzać zmiany Maintanance systemu jest tańszy w porównaniu z dotychczasowym podejściem Koszt zmian Waterfall Agile 22

Dlaczego Agile? Pozwala na bieżąco zarządzać release planem dzięki czemu klient ma większe elastyczność budżetowania projektu 120 100 80 60 40 20 R1 R2 FR 1 2 3 4 5 6 7 8 10 11 12 13 14 15 16 17 23

Dlaczego Agile? Większa kontrola realizacji prac Szacunek na podstawie dotychczasowych doświadczeń zamiast planowania przyszłej realizacji Natychmiastowa szacunkowa weryfikacji wstępnych estymacji 6000 5000 4000 3000 2000 Project Burndown I 4, Total 17 Sheduled Actual Trend Planned 1000 Project Burndown I 11, Total 23 0 I1 E1 E2 E3 C1 C2 C3 C4 C5 C6 C7 Iteration 7000 6000 5000 4000 3000 Scheduled Actual Trend Planned 6000 5000 Project Burndown I 16, Total 19 2000 1000 0 I1 E1 E2 E3 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 4000 3000 2000 Scheduled Actual Trend Planned Iteration 1000 0 I1 E1 E2 E3 C1 C2 C3 C4 C5 C6 C7 C8 C9 C10 C11 Iteration 24

Dlaczego Agile Od pierwszej iteracji system jest gotowy do wdrożenia dzięki continious integration Unit testy zwiększają zaufanie do działania systemu Działające oprogramowanie motywuje zespół Samodzielność zespołu owocuje większym zaangażowaniem 25

Agile resources Agile Development http://www.agilemanifesto.org/ http://www.agilealliance.org/ Extreme Programming http://www.xprogramming.com/ http://www.extremeprogramming.org/ http://www.jera.com/techinfo/xpfaq.html 26

Agile books Agile Software Development, Principles, Patterns, and Practices Rober C. Martin Applying UML and Patterns Craig Lerman Agile and Iterative Development: A Manager's Guide Craig Lerman A Practical Guide to extreme Programming David Astels, Granville Miller, Miroslav Novak Test Driven Development: By Example Kent Beck Refactoring: Improving the Design of Existing Code Martin Fowler, Kent Beck, John Brant, William Opdyke Extreme Programming Explained: Embrace Change Kent Beck, Cynthia Andres 27