~~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]]