~~NOCACHE~~ ~~SLIDESHOW~~ ====== Zarządzanie projektem w Azure Boards ====== ==== Agile - założenia ==== * 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 ==== Agile - wady ==== **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 * łączny czas realizacji projektu może być dłuższy niż w modelu kaskadowym * zmiany w składzie zespołu mogą poważnie zakłócić pracę * końcowy produkt może znacznie odbiegać od pierwotnych założeń ===== Metodologia Scrum ===== **Scrum** //to lekki framework, który pomaga ludziom, zespołom i organizacjom wytwarzać wartość dzięki adaptacyjnym rozwiązaniom złożonych problemów. // \\ ''Scrum Guide 2020'', https://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 * **ramy czasowe (timebox)** - sprint i każde zdarzenie mają ograniczony czas trwania * filary empiryzmu: przejrzystość, inspekcja i adaptacja (zasady proste, ale nie zawsze łatwe do zastosowania) ==== Zespół scrumowy ==== * **Product Owner** \\ odpowiada za maksymalizację wartości produktu, zarządza backlogiem produktu i kontaktem z klientem * **Developers** (w starszych wersjach Scrum Guide: Development Team) \\ tworzą w każdym sprincie użyteczny przyrost produktu \\ specjaliści o różnych kompetencjach (cały zespół scrumowy liczy zwykle do 10 osób), \\ międzyfunkcjonalność i samoorganizacja * **Scrum Master** \\ odpowiada za wdrożenie Scruma i skuteczność zespołu: wspiera zespół i organizację w stosowaniu zasad Scruma oraz usuwa przeszkody ==== Artefakty ==== * **Product Backlog** - uporządkowany wykaz prac produktu, nakreśla znane i najlepiej rozumiane **wymagania**. Zmienny i zazwyczaj niekompletny. Zobowiązanie: cel produktu (Product Goal). * **Sprint backlog** - plan prac na sprint: cel sprintu (Sprint Goal), wybrane elementy PB i plan ich realizacji * **Sprint** - pojedyncza iteracja (maksymalnie miesiąc, zwykle 1-4 tygodnie) \\ planowanie -> realizacja -> przegląd sprintu -> retrospektywa * **Przyrost (Increment)** - konkretny krok w kierunku celu produktu, spełniający definicję ukończenia (Definition of Done) * **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. 8 h (dla sprintu miesięcznego, krócej dla krótszych); ustalenie celu sprintu (Sprint Goal), wybór elementów z Product Backlogu i plan ich realizacji; zakres można doprecyzowywać w trakcie sprintu, o ile nie zagraża to celowi sprintu * **Codzienny scrum** - spotkanie Developers trwające 15 min., codziennie o tej samej porze i w tym samym miejscu; inspekcja postępów w kierunku celu sprintu i dostosowanie planu na kolejne 24 godziny * **Przegląd** - max. 4 h (dla sprintu miesięcznego); prezentacja wyników interesariuszom, omawianie postępów w kierunku celu produktu i aktualizacja Product Backlogu * **Retrospektywa sprintu** - max. 3 h (dla sprintu miesięcznego); inspekcja przebiegu sprintu (relacje członków, procesy, narzędzia, definicja ukończenia) i plan usprawnień na kolejne sprinty ===== Azure Boards ===== ==== Azure Boards - obszary (hubs) ==== * **Work items** - listy zadań przypisanych do Ciebie, obserwowanych i ostatnio przeglądanych * **Boards** - karty (work items) przeciągane między kolumnami; praktyki Kanban * **Backlogs** - planowanie i porządkowanie pracy; backlog produktu oraz backlogi portfolio (Feature, Epic) * **Sprints** - zadania sprintu, Taskboard, planowanie pojemności * **Queries** - zapytania, masowe aktualizacje, wykresy dla pulpitów * **Delivery Plans** - kalendarz dostarczanych funkcji i zależności między zespołami * **Analytics views** - raporty Power BI oparte na danych Azure Boards * interfejs został odświeżony (wydajność, dostępność, nawigacja klawiaturą); funkcje pozostały bez zmian ==== Procesy w Azure Boards ==== Proces wybiera się przy tworzeniu projektu; określa typy zadań i stany. Dalej: przykłady na procesie **Scrum**. ^ Proces ^ Typy zadań ^ Kolumny tablicy ^ | Basic | Epic, Issue, Task | To Do -> Doing -> Done | | Agile | Epic, Feature, User Story, Task, Bug | Backlog -> Active -> Resolved -> Closed | | Scrum | Epic, Feature, Product Backlog Item, Task, Bug, Impediment | New -> Approved -> Committed -> Done | | CMMI | Epic, Feature, Requirement, Task, Bug | Backlog -> Active -> Resolved -> Closed | ==== Work Item - Jednostka pracy ==== * definicja elementu pracy: tytuł, opis, itd. {{zajecia:znd_2020_1:work_item_details.png}} ==== Work Item - pola i właściwości ==== * **Rodzaj:** task, bug, impediment (w procesie Agile: issue), product backlog item (w procesie Agile: user story), test case, ... * Pola zależą od procesu wytwórczego (Basic, Agile, Scrum lub CMMI) 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, pól i procesów (procesy dziedziczone w interfejsie webowym; XML w instalacjach lokalnych) * integracja z systemem kontroli wersji (Azure Repos, GitHub), z systemem buildów, testów * połączenia zadań z różnymi zasobami: strony www, dokumenty, multimedia, załączniki (do 100 na zadanie, do 60 MB każdy), commity, pull requesty i buildy ==== Jednostki pracy Scruma ==== * Product Backlog Item, Tasks - wymagania backlogu projektu i zadania sprintu * Bug - defekty kodu * Impediment - przeszkody blokujące pracę zespołu * Epic, Feature - grupowanie zadań w bardziej pojemne scenariusze {{zajecia:znd_2020_1:scrum_artifacts.png}} ==== Boards ==== * tablice Kanban: karty przeciągane między kolumnami, wizualizacja przepływu pracy i łatwe śledzenie postępów * szybkie dodawanie elementów (//New item//) i zadań podrzędnych bezpośrednio na tablicy; zmiana stanu przez przeciągnięcie karty {{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 * backlogi portfolio (Feature, Epic) grupują elementy PB {{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 -> Committed -> Done (oraz Removed) {{zajecia:znd_2020_1:pb_item_lifecycle.png?400}} ==== Sprints ==== * zarządzanie zadaniami w sprincie (Taskboard, 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 zespołu przeznaczają dziennie na pracę (godziny na dzień, z uwzględnieniem urlopów i dni wolnych) * pola zadania: **Original Estimate**, **Remaining Work** (zasila capacity i burndown sprintu) oraz **Completed Work** {{zajecia:znd_2020_1:open-capacity-agile.png}} ==== Queries: Raporty i zapytania ==== * listy zadań filtrowane przez zapytania (edytor zapytań, masowa aktualizacja zadań) * wykresy statusu i trendu oparte na zapytaniach, import i eksport z Excela oraz CSV {{zajecia:znd_2020_1:queries_view.png?600}} ==== Dashboardy i raporty ==== * widgety z informacjami o projekcie (m.in. burndown sprintu, prędkość zespołu) * raporty Power BI oparte na usłudze Analytics {{zajecia:znd_2020_1:dashboard_view.png?800}} ==== Burndown Chart ==== {{https://upload.wikimedia.org/wikipedia/commons/thumb/0/05/SampleBurndownChart.png/800px-SampleBurndownChart.png}} ==== Śledzenie od wymagania do wdrożenia i integracje ==== * utworzenie gałęzi bezpośrednio z zadania (wymagania) * otwieranie i weryfikowanie pull requestów powiązanych z zadaniami * powiązanie buildów i wdrożeń z zadaniami oraz śledzenie statusu wdrożenia * pełna ścieżka zmian: od wymagania do produkcji * **GitHub** - powiązanie commitów, pull requestów, gałęzi i zgłoszeń (issues) z zadaniami Azure Boards * **Microsoft Teams** i **Slack** - powiadomienia i praca z zadaniami w komunikatorze * rozszerzenia z Azure DevOps Marketplace oraz Azure DevOps REST API * import i eksport zadań z Excela i CSV ==== Konfiguracja: zespoły, obszary i iteracje ==== * **area path** - podział pracy według produktu lub obszaru; **iteration path** - sprinty, wydania i kamienie milowe * każdy zespół ma własny backlog, tablice i sprinty, wyznaczone przez domyślny area path i iteration path * hierarchia area path powinna odzwierciedlać potrzeby raportowania (rollupy) * zespół decyduje, czy błędy (bugs) są widoczne na backlogu razem z elementami PB ==== Konfiguracja: procesy, pola i tablice ==== * własne procesy, typy zadań, pola i stany tworzy się przez dziedziczenie procesu; zmiany dotyczą wszystkich zespołów, więc wprowadzaj je z umiarem i komunikuj z wyprzedzeniem * kolumny tablicy wynikają ze stanów zadań; zespół może dodawać własne kolumny i swimlanes oraz dostosować karty * własne pola: tylko te potrzebne do raportowania lub automatyzacji (do 1024 pól na proces); listy wyboru zamiast wolnego tekstu * uprawnienia: proces - Project Collection Administrators, obszary i iteracje - Project Administrators, ustawienia zespołu - administratorzy zespołu ==== Azure Boards i AI ==== * **Azure DevOps MCP Server** pozwala asystentowi AI (np. GitHub Copilot w trybie agenta) odpytywać dane Boards, tworzyć i aktualizować zadania językiem naturalnym * przykłady zapytań: * ''Wyświetl tytuł, stan i osobę przypisaną dla zadań #100, #101 i #102 w projekcie Contoso'' * ''Dodaj do user story #1234 trzy zadania: projekt interfejsu, implementacja API i testy jednostkowe'' * ''Pokaż wszystkie aktywne błędy w projekcie Contoso z priorytetem, osobą przypisaną i datą utworzenia'' * wyniki należy weryfikować: asystent AI proponuje, a decyzje dotyczące planu pracy podejmuje zespół ===== Azure Boards i Git ===== * utworzenie gałęzi bezpośrednio z zadania oraz powiązanie commitów i pull requestów z zadaniem * powiązanie w komunikacie commita: ''git commit -m "Zmiana związana z zadaniem #123"'' * zadania można przeglądać i edytować w Web Portal oraz w środowiskach programistycznych (Visual Studio, VS Code) * starszy widok zadań (legacy) w Visual Studio nie jest rozwijany i ma zostać usunięty w przyszłym wydaniu ===== Więcej informacji ===== * Ken Schwaber, Jeff Sutherland, [[https://scrumguides.org/download.html|Scrum Guide]] (aktualna wersja z 2020 r., dostępna także po polsku) * [[https://agilemanifesto.org/iso/pl/manifesto.html|Manifest Agile]] * [[https://learn.microsoft.com/en-us/azure/devops/boards/get-started/what-is-azure-boards|What is Azure Boards?]] * [[https://learn.microsoft.com/en-us/azure/devops/boards/get-started/plan-track-work|Plan and track work in Azure Boards]] * [[https://learn.microsoft.com/en-us/azure/devops/boards/configure-customize|Configure and customize Azure Boards]] * [[https://learn.microsoft.com/en-us/azure/devops/boards/work-items/guidance/scrum-process|Scrum process in Azure Boards]] * [[https://learn.microsoft.com/en-us/azure/devops/mcp-server/mcp-server-overview|Azure DevOps MCP Server]]