Model kaskadowy
- Kolejne etapy następują po sobie bezpośrednio: Model kaskadowy (waterfall), wodospadowy, liniowy
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) : 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
Scrum w TFS
Przykładowy projekt
- Fabrikam Fiber Web Team Home View - projekt demo
Ź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
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
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
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
Work Item - Jednostka pracy
Ź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,
Effort
- effort - wskaźnik postępu ukończenia kolejnych funkcjonalności
- każde zadanie ma określony (zaplanowany) czas realizacji
- Burndown Chart
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
Źródło: https://www.visualstudio.com/en-us/docs/connect/work-team-explorer
Więcej informacji
- Ken Schwaber, Jeff Sutherland, Scrum Guide wersja polska
- Agile Project Management using TFS by Suliman Battat
- Projekt demo: Fabrikam Fiber