~~REVEAL~~ ====== TFS - zarządzanie projektem w metodologii Scrum ====== {{http://upload.wikimedia.org/wikipedia/commons/thumb/5/58/Scrum_process.svg/1000px-Scrum_process.svg.png?700}} ===== Cykle życia oprogramowania ===== {{http://upload.wikimedia.org/wikipedia/commons/thumb/5/5f/Three_software_development_patterns_mashed_together.svg/640px-Three_software_development_patterns_mashed_together.svg.png?400}} //Źródło: [[http://en.wikipedia.org/wiki/Software_development_process|wikipedia.org]]// ==== Model kaskadowy ==== * Kolejne etapy następują po sobie bezpośrednio: [[wppl>Model kaskadowy]] (waterfall), wodospadowy, liniowy {{http://upload.wikimedia.org/wikipedia/commons/thumb/e/e9/POL_model_kaskadowy.svg/567px-POL_model_kaskadowy.svg.png?500}} ==== ==== **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 dużej licznie 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 * zakłada, że wymagania odbiorcy (klienta) często ewoluują podczas trwania projektu -> regularna adaptacja do zmieniających się wymagań * późne zmiany w specyfikacji nie mają destrukcyjnego wpływu na proces wytwarzania oprogramowania, * szybkie wytwarzanie oprogramowania wysokiej jakości, działające oprogramowanie jest dostarczane okresowo (tygodniowo), każda iteracja dostarcza działające, **przetestowane** funkcje * bezpośredni kontakt, jako najlepsza forma komunikacji w zespole i poza nim (zazwyczaj małe zespoły), potrzeba mniej dokumentacji * bardzo ważny jest odpowiedni nadzór nad procesem wytwórczym. ==== ==== **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) : [[http://agilemanifesto.org/iso/pl/|Manifesto for Agile Software Development]] * 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 * sprawna kontrola nad przebiegiem prac (narzędzia TFS) * zespoły 7+-2, zespół ma charakter samoorganizujący i międzyfunkcjonalny * **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, ustala co ma być wykonane w kolejnych sprintach * **Development Team** \\ odpowiada za wykonany w danym sprincie przyrost. Brak podziału na role (wszyscy są developeramin) * **Scrum master** \\ odpowiedzialny za proces wytwarzania, organizację pracy, podział ról, przestrzeganie zasad Scruma ==== Artefakty i zdarzenia ==== * **Product Backlog** - wykaz prac produktu (np. produkty WBS), nakreśla znane i najlepiej rozumiane wymagania. Zmienny i zazwyczaj niekompletny. * **Sprint backlog** - lista zadań w sprincie * **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 ==== * **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?700|}} ===== Scrum w TFS ===== ==== Przykładowy projekt ==== * Fabrikam Fiber Web Team Home View - projekt demo {{ http://i.msdn.microsoft.com/dn189203.battat_fig03(en-us,MSDN.10).png }} \\ Źródło: http://msdn.microsoft.com/ ==== Product Backlog ==== * ogólny plan prac, user story (życzenia klienta), zgłoszenie (zadania lub błędy) nieprzydzielone do iteracji * zmienia się w czasie prac nad projektem * elementy PB są zazwyczaj rozbijane na bardziej szczegółowe zadania sprintu {{ http://i.msdn.microsoft.com/dn189203.battat_fig04(en-us,MSDN.10).png }} ==== Product Backlog Item ==== * nazwa, opis, właściciel, stan: New -> Approved -> Commited -> Done, priorytet * effort (szacowany czas), planning poker * acceptance criteria - warunek osiągnięcia celu {{ http://i.msdn.microsoft.com/dn189203.battat_fig07(en-us,MSDN.10).png }} ==== Kanban Board ==== {{ http://i.msdn.microsoft.com/dn189203.battat_fig15(en-us,MSDN.10).png }} ==== Cykl życia Backlog Item ==== {{ http://i.msdn.microsoft.com/dynimg/IC421496.png }} ==== Iteration backlog ==== * **Iteracja** (sprint), określona w pewnym okresie czasu * Lista zadań - zazwyczaj rozbite elementy z lisy Product Backlog * Wykresy obrazujące postęp prac {{ http://i.msdn.microsoft.com/dn189203.battat_fig13(en-us,MSDN.10).png }} ==== Pojemność sprintu ==== * **Capacity** - określa czasu jaki członkowie mogą poświęcić dziennie na pracę (uwzględniając dni wolne) oraz specjalizację członków zespołu {{ https://msdn.microsoft.com/dn189203.battat_fig14(en-us,MSDN.10).png }} ==== Work Item - Jednostka pracy ==== {{https://www.visualstudio.com/en-us/docs/work/backlogs/_img/add-work-item-vsts-user-story-form.png?450}} Źródło: https://www.visualstudio.com/en-us/docs/work/backlogs ==== ==== * **Rodzaj:** task, bug, impediment(issue), user story, test case, ... * **Assigned to:** osoba odpowiedzialna za wykonanie * **Stan:** To do, In progress, Done, Removed * połączenia między zadaniami: hierarchiczne lub płaskie * każdy typ posiada swój własny cykl życia * 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, ==== Relacje zadań z innymi elementami ==== {{https://www.visualstudio.com/en-us/docs/work/reference/_img/linkscontrol-bug-form-dev-related-links.png?600}} Źródło: https://www.visualstudio.com/en-us/docs/work/reference ==== Cykl życia zgłoszenia ==== {{ http://i.msdn.microsoft.com/dynimg/IC421494.png }} ==== Board ==== {{ http://i.msdn.microsoft.com/dn189203.battat_fig23(en-us,MSDN.10).png }} ==== Effort ==== * **effort** - wskaźnik postępu ukończenia kolejnych funkcjonalności * każde zadanie ma określony (zaplanowany) czas realizacji * **Burndown Chart** {{ http://upload.wikimedia.org/wikipedia/commons/thumb/0/05/SampleBurndownChart.png/800px-SampleBurndownChart.png }} \\ Żródło: wikipedia.org ==== Raporty i zapytania ==== {{ :zajecia:znd_2014_1:tfs_queries.png?600 |}} ==== Team room ==== {{ https://i-msdn.sec.s-msft.com/dynimg/IC696843.png }} ==== Charts ==== {{https://www.visualstudio.com/en-us/docs/report/_img/charts-active-bugs.png}} Źródło: https://www.visualstudio.com/en-us/docs/report ==== Alerts ==== {{ https://i-msdn.sec.s-msft.com/dynimg/IC720120.png }} ===== Scrum w Visual Studio 2013/2015 ===== * **Team Explorer -> Work Items** - lista zadań projektu * **Team Explorer -> My Work** - lista zadań powiązanych z zalogowanym użytkownikiem * Queries (raporty i zapytania) **Team -> New query** * Dodawanie zgłoszeń **Team -> Add New Work Item** * Powiązanie zgłoszenia (Work Item, asociate, resolve) z wysłaniem kodu (Check In) do repozytorium ==== VS Team Explorer ==== ^ Git ^ TFVC ^ |{{https://www.visualstudio.com/en-us/docs/connect/_img/te-home-page-git-repo.png}}|{{https://www.visualstudio.com/en-us/docs/connect/_img/te-home-page-tfvc-repo.png}}| Źródło: https://www.visualstudio.com/en-us/docs/connect/work-team-explorer ==== My work (TFVC) ==== Zarządzanie zadaniami z poziomu VS {{ https://i-msdn.sec.s-msft.com/dynimg/IC591023.png }} ==== Zarządzanie zadaniami podczas zatwierdzania zmian (TFVC) ==== {{ https://i-msdn.sec.s-msft.com/dynimg/IC591276.png }} ==== Code review (TFVC) ==== {{ https://i-msdn.sec.s-msft.com/dynimg/IC592394.png }} ==== Relacje zadań z zatwierdzonymi zmianami kodu (git) ==== {{https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/45/92/2014/06/pull_2D00_requests/4743.VCtrlGitPullReqTopicBranchSourceEdit1.png}} Źródło: https://msdnshared.blob.core.windows.net ==== Pull request (git) ==== {{https://www.visualstudio.com/en-us/docs/git/tutorial/_img/vs_pull_requests.png}} ===== 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/library/vstudio/fda2bad5|Application Lifecycle Management with Visual Studio TFS]] MSDN * [[http://msdn.microsoft.com/en-us/magazine/dn189203.aspx|Agile Project Management using TFS]] by Suliman Battat * Projekt demo: [[http://fabrikam.codeplex.com/|Fabrikam Fiber]] * [[wp>Comparison_of_issue-tracking_systems|Comparison of issue tracking systems]]