~~NOCACHE~~ ~~REVEAL theme=simple&size=1024x800~~ ====== Zarządzanie projektem w Azure Boards ====== ===== Cykle życia oprogramowania ===== {{zajecia:znd_2020_1:three_software_development_patterns_mashed_together.png?400}} //Źródło: [[http://en.wikipedia.org/wiki/Software_development_process|wikipedia.org]]// ==== Model kaskadowy ==== * [[wppl>Model kaskadowy]] (waterfall), wodospadowy, liniowy \\ Kolejne etapy następują po sobie bezpośrednio {{zajecia:znd_2020_1:model_kaskadowy.png?600}} ==== ==== **Zalety:** * klient wie dokładnie czego się spodziewać. Precyzyjnie określenie tego co program będzie realizował w ostatecznej wersji. * możliwe całościowe oszacowanie kosztów i czasu trwania projektu. * projekt dobrze udokumentowany na każdym etapie * stabilność i bezpieczeństwo, np. dzięki bogatej dokumentacji nowa osoba może być szybko wdrożona do projektu * łatwy nadzór ==== ==== **Wady:** * brak możliwości powrotu do wcześniejszych etapów * początkowe założenia są bardzo istotne, projekt musi być w całości zaplanowany i wszystkie wymagania muszą być rozpoznane od początku projektu * błąd popełniony w początkowej fazie może mieć drastyczny wpływ na całość projektu * produkt jest testowany wyłącznie na końcowym etapie. Późne wykrywanie błędów podnosi koszty. * brak uwzględnienia zmian w zapotrzebowaniu klienta, rynku, zmian w technologiach ==== Metodyki zwinne - Agile ==== * podejście przyrostowe: produkt rozwijany w iteracjach, każda iteracja dostarcza **działające** i **przetestowane** funkcje * szybkie wytwarzanie oprogramowania wysokiej jakości * regularna adaptacja do zmieniających się wymagań (np. zmiana wymagań klienta) * późne zmiany w specyfikacji nie mają destrukcyjnego wpływu na proces wytwarzania oprogramowania * bezpośredni kontakt, jako najlepsza forma komunikacji w zespole i poza nim (zazwyczaj małe zespoły) -> mniej dokumentacji * bardzo ważny jest odpowiedni nadzór nad procesem wytwórczym -> Scrum ==== ==== **Wady:** * trudności z oszacowaniem czasu realizacji oraz budżetu projektu * wymagana duża aktywność i współpraca członków zespołu, bezpośredni kontakt nie zawsze możliwy w projektach np. open source * sumaryczny czas wykonania projektu zazwyczaj będzie dłuższy niż w modelu kaskadowym * zmiany personalne w zespole mogą mieć katastrofalne skutki * końcowy produkt może znaczenie odbiegać od pierwotnych założeń ===== Metodologia Scrum ===== **Scrum** //to ramy postępowania (framework), dzięki którym ludzie mogą z powodzeniem rozwiązywać złożone problemy adaptacyjne, by w sposób produktywny i kreatywny wytwarzać produkty o najwyższej możliwej wartości. // \\ ''Scrum Guide'', http://www.scrumguides.org/ ==== Scrum ==== * jedna z najbardziej znanych metodyk zwinnych (Agile) * metoda przyrostowa : produkt powstaje w kolejnych krótkich iteracjach (sprintach) * używalny (ale niekompletny) produkt już po pierwszej iteracji * częste kontakty w zespole oraz z klientem * inspekcje i adaptacje projektu sprzyjają wczesnemu wykrywaniu problemów i dopasowaniu do potrzeb * **kontrola czasu** - czynność musi być zakończona w określonym czasie * przejrzystość (proste zasady) ... jednak nie takie proste do zastosowania ==== Zespół scrumowy ==== * **Product owner** \\ odpowiada za projekt przed klientem, zarządza backlogiem produktu * **Development Team** \\ odpowiada za wykonany w danym sprincie przyrost \\ od 3 do 9 specjalistów o rożnych kompetencjach, \\ międzyfunkcjonalność i samoorganizacja * **Scrum master** \\ odpowiedzialny za proces wytwarzania, organizację pracy, podział ról, przestrzeganie zasad Scruma ==== Artefakty ==== * **Product Backlog** - uporządkowany wykaz prac produktu, nakreśla znane i najlepiej rozumiane **wymagania**. Zmienny i zazwyczaj niekompletny. * **Sprint backlog** - lista zadań w sprincie, których celem jest realizacja wymagania z PB * **Sprint** - pojedyncza iteracja (7-30 dni) \\ planowanie -> realizacja -> przegląd sprintu -> retrospektywa * **Work Item** - jednostka pracy, zgłoszenie, zadanie do wykonania w określonym czasie przez członka zespołu ==== Sprint ==== {{zajecia:znd_2020_1:scrum_process.png?800}} ==== Zdarzenia w Sprincie ==== * **Planowanie sprintu** - max. 8h, określenie celu sprintu, wybór zadań, czas realizacji zadań z góry ustalony, lista zadań nie powinna się zmieniać w czasie iteracji * **Codzienny scrum** - spotkanie 15 min. zespołu programistycznego na stojąco prowadzone przez scrum master. Co zostało wykonane i co jest do zrobienia? * **Przegląd** - max. 4h, podsumowanie osiągniętych celów, modyfikacja listy product becklog * **Retrospektywa sprintu** - max. 3h, inspekcja działań (relacje członków, procesy i narzędzia) i plany usprawnień do najbliższego sprintu ==== ==== {{:zajecia:ppz:vs-2010-scrum.jpg?800|}} ===== Scrum w Azure Boards ===== ==== Work Items ==== * przegląd listy zadań * filtrowanie zadań względem różnych kryteriów {{zajecia:znd_2020_1:work_items.png?800|}} ==== Work Item - Jednostka pracy ==== * definicja elementu pracy: tytuł, opis, itd. {{zajecia:znd_2020_1:work_item_details.png}} ==== ==== * **Rodzaj:** task, bug, impediment (issue), user story, test case, ... * Pola zależą od procesu wytwórczego (Scrum, Agile) oraz typu zgłoszenia * **Assigned to:** osoba odpowiedzialna za wykonanie * **Stan**, np. To do, In progress, Done * cykl życia - możliwe przejścia między stanami * połączenia między zadaniami: hierarchiczne lub płaskie * możliwość definiowania własnych typów (XML) * integracja z systemem kontroli wersji, z systemem buildów, testów * połączenia zadań z różnymi zasobami: strony www, dokumenty, multimedia, ==== Jednostki pracy Scruma ==== * Product Backlog Item, Tasks - wymagania backlogu projektu i zadania sprintu * Bug - defekty kodu * Epic, Feature - grupowanie zadań w bardziej pojemne scenariusze {{zajecia:znd_2020_1:scrum_artifacts.png}} ==== Boards ==== * tablice Kanban, łatwy sposób śledzenia postępów {{zajecia:znd_2020_1:boards.png?800}} ==== Backlogs ==== * lista elementów Product Backlog * ogólny plan prac, user story, zgłoszenie (zadania lub błędy) * elementy PB są rozbijane na zadania sprintu {{zajecia:znd_2020_1:view-backlogs.png?800}} ==== Product Backlog Item ==== * nazwa, opis, właściciel, stan, priorytet * effort (szacowany czas, story points), planning poker * acceptance criteria - warunki osiągnięcia celu {{zajecia:znd_2020_1:pbi-form.png?500}} ==== Cykl życia Backlog Item ==== * stany: New -> Approved -> Commited -> Done {{zajecia:znd_2020_1:pb_item_lifecycle.png?400}} ==== Sprints ==== * zarządzenie zadaniami w sprincie (tablica Kanban, backlog sprintu) * planowanie pojemności (capacity), burndown chart * zakres czasowy sprintu {{zajecia:znd_2020_1:sprints_view.png?800}} ==== Cykl życia zadania ==== * stany zadania: To do -> In progress -> Done {{zajecia:znd_2020_1:task_lifecycle.png}} ==== Pojemność sprintu ==== * **Capacity** - ilość czasu jaką członkowie przeznaczają dziennie na pracę {{zajecia:znd_2020_1:open-capacity-agile.png}} ==== Queries: Raporty i zapytania ==== * listy zadań filtrowane przez zapytania {{zajecia:znd_2020_1:queries_view.png?600}} ==== Dashboard ==== * widgety z informacjami na temat projektu {{zajecia:znd_2020_1:dashboard_view.png?800}} ==== Burndown Chart ==== {{http://upload.wikimedia.org/wikipedia/commons/thumb/0/05/SampleBurndownChart.png/800px-SampleBurndownChart.png}} ===== Scrum w Visual Studio ===== * **Team Explorer -> Work Items** - lista zadań * Tworzenie zadań **Team -> Add New Work Item** * Tworzenie gałęzi kodu powiązanych z zadaniami * Queries (raporty i zapytania) **Team -> New query** * Powiązanie zadania ze zmianami kodu w git ==== Lista zadań ==== * **Assigned to me**: twoja lista zadań * **Following**: śledzone zadania * **Mentioned**: zadania, w których zostałeś wspomniany * **My activity**: ostatnio przeglądane zadania {{zajecia:znd_2020_1:open-work-items-vs-te-complete.png?600}} ==== Operacje na zadaniach ==== * **Assign to me**: przydziel mi to zadanie * **New Branch**: nowa gałąź automatycznie połączona z zadaniem * **Complete work item**: zmiana stanu zadania na Completed, Done lub Closed * **Relate to changes**: powiąż ostatnie zmiany kodu z zadaniem {{zajecia:znd_2020_1:work-item-menu-options-vs.png?400}} ==== Skojarzenie zadań z rewizją git ==== {{zajecia:znd_2020_1:vs_commit_work_item.png}} * możliwe także powiązanie w treści wiadomości \\ ''git commit -m "Zmiana związana z zadaniem #123"'' Źródło: https://msdnshared.blob.core.windows.net ==== VS2019 Legacy experience ==== * W VS2019 domyślnie zapytania i zadania obsługiwane przez Web Portal * Przywrócenie funkcjonalności dostępnych w poprzednich wersjach VS \\ Tools -> Options -> Work Items -> Legacy experience {{zajecia:znd_2020_1:option-vs-options-work-items.png?500}} ==== ==== * dodawanie nowych elementów pracy * edytor zapytań i raporty zadań {{zajecia:znd_2020_1:query-1.png?800}} ===== Więcej informacji ===== * Ken Schwaber, Jeff Sutherland, {{http://www.scrumguides.org/docs/scrumguide/v1/Scrum-Guide-PL.pdf|Scrum Guide}} wersja polska * [[http://msdn.microsoft.com/en-us/magazine/dn189203.aspx|Agile Project Management using TFS]] by Suliman Battat * [[https://channel9.msdn.com/Series/Visual-Studio-jak-zorganizowac-prace-uzywajac-Scrum-i-GIT|Vsual Studio – jak zorganizować pracę używając Scrum i GIT?]] * [[https://agilemanifesto.org/iso/pl/manifesto.html|https://agilemanifesto.org/iso/pl/manifesto.html]] * [[https://azure.microsoft.com/pl-pl/blog/deep-dive-into-azure-boards/|Deep dive into Azure Boards]]