Na wielu rozmowach kwalifikacyjnych prawdopodobnie zostaniesz zapytany o metodologie. To nie jest najważniejsze ani najtrudniejsze pytanie, ale posiadanie ściągawki byłoby miłe. W tym artykule postaramy się przekazać, czym jest metodologia rozwoju i porównać je. Metodologia tworzenia oprogramowania to proces wykorzystywany do rozwijania określonego produktu, to znaczy jest to jeden ze sposobów organizowania rozwoju przez zespół programistów. Istnieje wiele różnych modeli rozwoju, z których każdy definiuje własne podejście. Nie można powiedzieć, że którykolwiek z nich powinien być używany do każdego projektu. Właściwe podejście zależy całkowicie od sytuacji. Zamierzam przyjrzeć się bliżej trzem z nich.
Zalety:
Postaram się pokrótce wyjaśnić istotę metodologii za pomocą prostych słów, ale terminologii jest dużo. Myślę, że najważniejsze jest zrozumienie istoty. Z doświadczeniem zapamiętasz terminologię. Cały rozwój jest podzielony na sprinty (często 2-3 tygodnie). Są zaległości(lista zadań) na cały okres rozwoju i dla każdego oddzielnego sprintu. Każde zadanie ma swój własny punkt fabularny (stopień trudności). Każdy uczestnik procesu ma swoją rolę:
Wodospad
Metodologia wodospadu jest jedną z najstarszych i obejmuje ściśle sekwencyjną implementację: każdy etap musi zostać zakończony, zanim rozpocznie się następny. Innymi słowy przejście do kolejnego etapu oznacza, że praca z poprzedniego etapu jest w 100% zakończona. Rysunek pokazuje, jak to działa: najpierw analizujemy problem (dokumentujemy zadania, omawiamy wyzwania), następnie projektujemy (na tym etapie kształtuje się struktura projektu), a następnie kodujemy i testujemy. Powrót do poprzednich etapów jest zabroniony. Takie podejście jest zalecane w przypadku małych projektów, w których wymagania są znane z góry i mało prawdopodobne, aby uległy zmianie.
- Kompletna i spójna dokumentacja na każdym etapie
- Łatwość użycia
- Stabilne wymagania
- Budżety i terminy są z góry ustalone
- Duża ilość dokumentacji
- Niezbyt elastyczny
- Klient nie widzi wersji demonstracyjnej produktu
- Brak możliwości cofnięcia się
Scrum
Scrum to metodologia tworzenia oprogramowania, która dzieli cały proces na iteracje. Na koniec każdej interakcji zespół jest gotowy do udostępnienia wersji demonstracyjnej produktu. Na rysunku widać, że zespół przechodzi przez wszystkie etapy rozwoju równolegle, dzięki czemu na końcu każdej iteracji można mieć ukończoną część projektu.
- Zespół scrumowy składa się z profesjonalistów (programistów, testerów, projektantów) pracujących nad projektem.
- Scrum master to osoba, która czuwa nad przestrzeganiem zasad scrum.
- Właścicielem produktu jest klient.
- Stand-up – Jest to krótkie spotkanie, odbywające się codziennie, w którym biorą udział wszyscy członkowie zespołu. Każdy uczestnik odpowiada na 3 pytania: Co zrobiłem? Co zrobię? A jakie są problemy z blokowaniem?
- Planowanie spotkania – To spotkanie odbywa się na początku sprintu. Na tym spotkaniu określane są zadania, które muszą być wykonane w kolejnym sprincie.
- Retrospektywa - To spotkanie odbywa się na koniec sprintu i ma na celu określenie, co zostało zrobione dobrze, a co można poprawić.
- Klient może zobaczyć wyniki podczas procesu rozwoju
- Codzienny monitoring procesu deweloperskiego
- Możliwość wprowadzania zmian w trakcie rozwoju
- Ustanowiono komunikację ze wszystkimi członkami zespołu
- Niewielka ilość dokumentacji
- Trudno oszacować robociznę i inne koszty potrzebne do rozwoju
- Trudno zidentyfikować wąskie gardła przed rozpoczęciem rozwoju
- Konieczność zaangażowania wszystkich w pracę pozostałych członków zespołu.
Kanban
Kanban to metoda polegająca na wizualizacji postępów w realizacji zadań zespołu. Główną ideą jest zmniejszenie liczby aktualnie wykonywanych zadań (w kolumnie „W toku”). W scrumie zespół koncentruje się na pomyślnym ukończeniu sprintów. W Kanbanie zadanie zajmuje pierwszoplanową pozycję. Jest to dobre dla projektów na etapie konserwacji, gdzie podstawowa funkcjonalność została już zaimplementowana i pozostają minimalne ulepszenia i poprawki błędów. W Kanbanie zadania są przydzielane indywidualnie. Zadanie przechodzi przez wszystkie etapy na tablicy, niezależnie od innych zadań, a po wykonaniu może zostać pokazane klientowi. Tablica Kanban składa się z kolumn, z których każda reprezentuje odrębny proces rozwoju. Niektóre kolumny (na przykład „W toku” ) ograniczyć liczbę zadań, które mogą wykonywać. Pomaga to szybko i łatwo znaleźć obszary problemowe w podziale zadań. Na zdjęciu przykład takiej właśnie tablicy. Liczba kolumn i ich nazwy mogą się różnić. Przedstawię najczęstsze:
- Do zrobienia – lista zadań do wykonania
- W toku — zadania, nad którymi aktualnie pracujemy
- Przegląd kodu — zadania, które zostały wykonane i przesłane do przeglądu
- W trakcie testowania — zadania gotowe do testowania
- Gotowe — zakończone zadania
- Łatwość użycia
- Widoczność (pomaga zlokalizować wąskie gardła, ułatwia zrozumienie)
- Duże zaangażowanie zespołu w sam proces
- Bardzo elastyczny rozwój
- Niestabilna lista zadań
- Trudne do zastosowania w projektach długoterminowych
- Brak twardych terminów
GO TO FULL VERSION