Model wodospadu (kaskady). Zobacz strony, na których pojawia się termin metoda kaskadowa

Czy wiesz, że istnieją różne metodyki zarządzania projektami? Każdy z nich obejmuje wszystkie główne cykle operacyjne:

  • Rozwój wymagań
  • Planowanie
  • Projekt
  • Kodowanie
  • Testowanie
  • Optymalizacja.

Dziś porozmawiamy o dwóch z nich. Dwa, które aktywnie wykorzystujemy w naszych projektach. Czytamy, analizujemy, wybieramy. Oto porównanie dwóch metodologii - Agile i Waterfall.

Zręczny

Metodologia ta opiera się na 12 zasadach (tzw. Manifest Agile). Przyjrzyjmy się kluczowym praktycznym zasadom Agile:

  • Klient może zmienić lub dostosować swoje wymagania na każdym etapie rozwoju.
  • Najlepszym wskaźnikiem efektywności zespołu jest działające rozwiązanie.
  • Najbardziej produktywnym sposobem komunikacji jest komunikacja osobista.
  • Nowe wersje produktu wydawane są albo po każdej iteracji, albo co kilka miesięcy (w zależności od projektu).

W 2015 roku przeprowadzono profesjonalne badanie na dużą skalę. Celował w 601 projektów informatycznych. Wynik pokazał, że Agile jest obecnie najpopularniejszym podejściem do zarządzania projektami.

Zwinność: korzyści

  • Możliwość całkowitego przerobienia projektu nawet po przejściu przez kilka iteracji.
  • Projekt podzielony jest na krótkie i przejrzyste segmenty (iteracje), w Scrumie nazywane są one sprintami.
  • Elastyczność Agile redukuje do minimum wszelkie możliwe ryzyka.
  • Agile jest idealny do rozwoju MVP.

Zwinny: wady

  • Obliczanie budżetu projektu jest znacznie skomplikowane ze względu na stale zmieniające się wymagania.
  • Zespół programistów musi być nie tylko wysoko wykwalifikowany, ale także zorientowany na klienta.
  • Nowe wymagania często kolidują z obecną architekturą projektu.
  • Ciągłe dopasowywanie wymagań czasami prowadzi do poczucia, że ​​projekt nigdy się nie skończy :)

Wodospad

Metodologia Waterfall opiera się na zasadzie konsekwentnego rozwoju. W skrócie schemat zarządzania projektem wygląda następująco:

  1. Analiza wymagań
  2. Planowanie
  3. Realizacja
  4. Testowanie i optymalizacja
  5. Zastosowanie
  6. Wsparcie

Przejście do każdego kolejnego kroku możliwe jest dopiero po zakończeniu poprzedniego etapu. Jednocześnie wprowadzenie nowej funkcjonalności jest dopuszczalne po wdrożeniu projektu i usunięciu wszystkich błędów.

Wodospad: korzyści

  • Przejrzysta i logiczna struktura zarządzania (świetna nawet dla zespołów z niewielkim doświadczeniem).
  • Fajna dokumentacja, która nie pozwala na rozbieżności i błędne interpretacje.
  • Pozwala łatwo śledzić zasoby, czas i możliwe ryzyka.
  • Stała ilość zadań dla programistów.

Wodospad: wady

  • Kaskada nie oznacza możliwości dostosowania wymagań; nie jest wystarczająco elastyczna.
  • Waterfall wymaga więcej czasu i zasobów w porównaniu do Agile.
  • Możesz „wypróbować” swój projekt dopiero po jego wydaniu. Nie ma możliwości zmiany funkcjonalności w trakcie procesu rozwoju.
  • Minimalna interakcja między klientem a zespołem programistów.

Co wybrać?

Agile to Twój wybór, jeśli:

  • Masz doświadczony zespół programistów.
  • Nie masz dokładnego wyobrażenia o ostatecznej funkcjonalności produktu.
  • Zmiany w projekcie muszą zostać wdrożone tak szybko, jak to możliwe.
  • Chcesz aktywnie uczestniczyć w projekcie przez cały czas jego rozwoju.
  • Musisz dostarczyć działający produkt tak szybko, jak to możliwe.
  • Jesteś startupowcem.

Twój wybór to Wodospad, jeśli:

  • Jest mało prawdopodobne, że wymagania Twojego projektu ulegną zmianie.
  • Jakość produktu jest o wiele ważniejsza niż czas i zasoby, które jesteś skłonny w niego zainwestować.
  • Niezbyt interesuje Cię obserwacja efektów pośrednich po każdym etapie rozwoju i nie starasz się brać aktywnego udziału w projekcie.

I na koniec spójrzmy na statystyki. Pokazuje, że projekty realizowane z wykorzystaniem metodyki Agile mają trzykrotnie większą szansę powodzenia niż projekty zarządzane z wykorzystaniem metodyki Waterfall.

Agile i Waterfall: Wnioski

Nigdy nie znajdziesz złotego środka na zarządzanie projektami. Metodologia, która potrafi doskonale usprawnić wszystkie etapy rozwoju i zrównoważyć wszelkie możliwe ryzyka, istnieje tylko w fantazji. Największą wadą Waterfall jest brak elastyczności. Stosując tę ​​metodologię, nie będziesz mógł zmieniać wymagań projektu w trakcie procesu tworzenia. A umiejętność dostosowania się do aktualnych warunków współczesnego rynku to ogromny plus.

Nie oznacza to jednak, że Waterfall jest zły i należy o nim zapomnieć. Jest świetny do małych projektów. Cóż, jeśli nauczysz się umiejętnie łączyć Agile i Waterfall w jednym projekcie, otworzy to nowe horyzonty i zapewni wiele ciekawych możliwości.

Metodologia wytwarzania oprogramowania - organizacja pracy z uwzględnieniem zasad ideologicznych, plan, kontrola nad procesami, podejście do pracowników. Wyróżnijmy 12 typów:

  • Wodospad to tradycyjne podejście.
  • RUP (Rational Unified Process) – racjonalny.
  • Agile to ogólna, elastyczna metodologia programowania.
  • Crystal Clear - podejście do wyrównywania programistów w zespole.
  • Spirala - metoda spiralna.
  • DSDM (Dynamic Systems Development Model) jest modelem dynamicznym.
  • FDD (Feature Driven Development) to metodologia uwzględniająca przyszłe zmiany.
  • JAD (Joint Application Development) to podejście zorientowane na użytkownika.
  • RAD (Rapid Application Development) to model szybkiego rozwoju.
  • Scrum to koncepcja pracy w warunkach niedotrzymanych terminów i kryzysu ideologicznego.
  • XP (Extreme Programming) – ekstremalny rozwój w dynamicznym środowisku.
  • LD (Lean Development) to metoda polegająca na starannym traktowaniu wszystkich uczestników procesu.

Spróbujmy dowiedzieć się, co kryje się za tymi angielskimi nazwami.

Wodospad

Model Waterfall należy do klasycznego rozumienia wytwarzania oprogramowania. Cały proces jest sztywny i liniowy, ma jasne cele dla każdego etapu, nowy etap rozpoczyna się po zakończeniu poprzedniego, nie ma odwrotu. Zaletami metodyki kaskadowej jest decentralizacja i ścisła kontrola nad terminem i jakością wykonania.

W praktyce Waterfall często nie spełnia oczekiwań, gdyż ignoruje dynamiczne zmiany. Dlatego po testach bardzo trudno jest cofnąć proces i dodać funkcje, które nie zostały wzięte pod uwagę na etapie rozwoju. Kaskada jest nieefektywna także dlatego, że wiąże się z chwilowym przestojem pracowników w ramach jednego projektu. Testowanie przeprowadza się dopiero pod koniec prac rozwojowych, choć problemy wykryte na tym etapie są kosztowne w naprawie.

RUP

RUP to podejście iteracyjne, które rozwiązuje problemy Waterfall. Co jest dobrego w RUP:

  • Odpowiada na zmieniające się wymagania. Nieważne, jak dobry jest kierownik projektu, nie da się wziąć wszystkiego pod uwagę na początku.
  • Integracja funkcji następuje stopniowo, czyli każdy „detal” przechodzi cykl opracowania, testowania i wdrożenia do projektu. W rezultacie ryzyko i koszty produkcji są zmniejszone.
  • Wczesne wydanie produktu. Oprogramowanie wychodzi z ograniczoną funkcjonalnością, aby zająć niszę na rynku i stawić czoła konkurencji, po czym zarasta „mięsem”.
  • Ponowne użycie. Zwiększając funkcjonalność łatwiej jest wskazać standardowe rozwiązania, które ograniczą rozwój.
  • Ciągła nauka. Dzięki częstym iteracjom programiści nie mają długich przerw pomiędzy wersjami kodu, dzięki czemu rozwój zawodowy przebiega sprawnie i bezboleśnie.
  • Ciągłe doskonalenie produktu. Iteracje pozwalają ocenić projekt nie tylko pod kątem zgodności z planem i specyfikacjami technicznymi, ale także znaleźć sposoby na zwiększenie wydajności i jakości produktu.

Zręczny

Agile to metoda elastycznego tworzenia oprogramowania, która wymaga dużej liczby iteracji. Dokument Agile Manifest opisuje 4 idee i 12 zasad zwinnego podejścia, można to krótko opisać w zaledwie dwóch punktach:

  • Relacje nieformalne są ważniejsze niż udokumentowane. Oznacza to, że najważniejsze są ustne ustalenia pomiędzy pracownikami, pomiędzy klientem a wykonawcą, co znajduje odzwierciedlenie w planach, umowach i specyfikacjach technicznych. Innymi słowy, klient ma zawsze rację.
  • Działający produkt jest główną oceną postępu. Nie narzędzia, rozwiązania, wydajność czy elegancja są ważne, ale fakt, że wszystkie zaplanowane możliwości zostały zrealizowane.

Pomimo swoich wad, Agile stał się podstawową koncepcją tworzenia oprogramowania i znajduje odzwierciedlenie w innych metodologiach, które zostaną omówione poniżej.

Krystalicznie czyste

Metodologia stworzona dla małych zespołów liczących 6-10 pracowników. Obsługuje również zasady zwinnego rozwoju, ale jest nieco bardziej szczegółowy. Główną ideą zawartą w nazwie jest to, że każdy zespół to zbiór ludzi o różnym poziomie wiedzy, różnych umiejętnościach i doświadczeniu.

Dlatego nie ma uniwersalnego podejścia do tworzenia oprogramowania; należy to ustalić w procesie komunikacji wewnątrz grupy. Tam też przypisane są role, narzędzia i standardy. Następnie grupę traktuje się jako całość i te same problemy rozwiązuje się na wyższym poziomie, aż hierarchia dotrze do klienta.

Spirala

Model spiralnego cyklu życia to złożona organizacja cyklu życia oprogramowania, która koncentruje się na wczesnej identyfikacji i łagodzeniu ryzyk projektowych. Rozwój zaczyna się od małej skali, rozwiązuje się lokalne problemy, ocenia zagrożenia i sposoby ich ograniczenia. Następny krok obejmuje bardziej złożone zadania – kolejny obrót spirali.

Zaletą tego podejścia nie jest zwiększenie szybkości rozwoju, ale zmniejszenie poziomu ryzyka. Sukces metody spiralnej zależy od sumiennego, ostrożnego i kompetentnego zarządzania, a wielkość projektu nie ma znaczenia zasadniczego.

DSDM

Model rozwoju systemów dynamicznych został opracowany w Wielkiej Brytanii w połowie lat 90. XX wieku i stanowi ewolucyjny rozwój szybkiego tworzenia aplikacji (RAD). Główna idea jest standardowa: planując na samym początku, nie da się zrozumieć wszystkich zawiłości rozwoju, dlatego cały proces ma charakter pracy badawczej.

DSDM posiada także podział na zespoły, z których każdy posiada osobę upoważnioną do podejmowania strategicznych decyzji. W procesie mogą brać udział wszyscy zainteresowani: użytkownicy, programiści, klienci, menedżerowie. Testowanie odbywa się przez cały cykl życia.

FDD

FDD to proces zapewniający skalowalność i powtarzalność, jednocześnie zachęcając do kreatywności i innowacyjności. Oto podstawowe zasady:

  • Rozwój każdego większego projektu musi być systematyczny.
  • Procesy powinny być proste i dobrze opracowane.
  • Wartość i logika procesu powinny być jasne dla każdego członka zespołu.
  • Preferowane są krótkie, iteracyjne cykle rozwoju. Zmniejsza to liczbę błędów i pozwala szybko zwiększyć funkcjonalność.

FDD reguluje czas, jaki należy przeznaczyć na każdy z procesów. Czynności organizacyjne w cyklu powinny zajmować nie więcej niż 23-25%, natomiast 75-77% czasu należy przeznaczyć na bezpośredni rozwój, montaż i testowanie funkcji.

JAD

JAD to metodologia mająca na celu maksymalizację zaangażowania użytkowników końcowych w rozwój. Dzieje się to poprzez spotkania i wspólne seminaria. JAD został wynaleziony w latach 70. XX wieku przez pracowników IBM i jest skierowany do ogółu biznesu. Jednak z biegiem czasu koncepcję tę zaczęto z powodzeniem stosować w tworzeniu oprogramowania.

W przeciwieństwie do podejścia Waterfall, JAD skutkuje skróceniem czasu rozwoju, większym zadowoleniem klientów i oszczędnościami w kosztach badań rynkowych. Z drugiej strony wymaga to dużej próbki klientów i konieczności pracy programistów nie według rygorystycznych wymagań specyfikacji technicznych, ale ze stale zmieniającymi się opiniami.

RAD

RAD to metodologia, która stawia na szybkość i łatwość programowania. Jednym z głównych warunków jest użycie szybko rozwijającego się języka. Tak nazywa się abstrakcyjny język programowania, dzięki któremu programista jest w stanie rozwiązywać problemy szybciej niż przedstawiciele trzeciej generacji (C/C++, Pascal czy Fortran). Oto kilka dodatkowych punktów tej koncepcji:

  • Korzystanie z grup fokusowych w celu gromadzenia wymagań.
  • Prototypowanie i testowanie projektów z użytkownikami.
  • Ponowne wykorzystanie komponentów oprogramowania.
  • Korzystanie z planu, który nie obejmuje przeprojektowania ani projektowania kolejnej wersji produktu.
  • Prowadzenie nieformalnych spotkań na wniosek jednej ze stron.

RAD polega na wykorzystaniu całej gamy narzędzi oprócz języka szybkiego programowania: systemów zbierania wymagań, środowisk programistycznych, frameworków, programów do komunikacji grupowej, testowania oprogramowania.

Scrum

Scrum to elastyczna metoda zarządzania projektami, której celem jest zwiększenie produktywności w zespołach sparaliżowanych wcześniej trudniejszymi procesami metodologicznymi. Koncepcja opiera się na „sprintach”. Sprint to krótka iteracja, ściśle ograniczona w czasie (zwykle 2-4 tygodnie). W tym czasie czas trwania spotkań jest minimalizowany, ale ich częstotliwość wzrasta (nazywa się je „scrumami”).

Dzięki temu kontrola wykonania jest bardziej elastyczna i pozwala programistom szybciej reagować na pojawiające się problemy. Tradycyjne planowanie schodzi na dalszy plan, a jego miejsce zajmuje dziennik sprintu.

XP

Programowanie ekstremalne to umiejętność rozwoju w obliczu stale zmieniających się wymagań. Oto kilka znaków:

  • Gra planistyczna. Na początku projektu jest tylko przybliżony plan, po każdej iteracji jego przejrzystość wzrasta.
  • Wysoka częstotliwość wydań. Nowa wersja produktu ma drobne zmiany w porównaniu do poprzedniej, ale czas wydania jest minimalny.
  • Kontakt z klientem. Aby sprostać wymaganiom odbiorcy końcowego konieczna jest szybka reakcja na uwagi i sugestie.
  • Refaktoryzacja. Poprawa jakości kodu bez zmniejszania funkcjonalności.
  • Standard wykonania kodu. Obowiązują albo ogólne zasady, albo spory projektowe nie podlegają dyskusji i krytyce.
  • Wspólna odpowiedzialność. Pomimo tego, że każdy członek zespołu wykonuje swój własny obszar pracy, za kod jako całość odpowiada cały zespół.

LD

Lean Software Development to kolejna gałąź elastycznej metodyki, która zakłada utrzymanie wysokiego poziomu moralnego i funkcjonalnego programistów. Wyraża się to w:

  • Nagradzanie pracowników za owocną pracę.
  • Zmiana bieżących zadań tylko w razie potrzeby lub na prośbę klienta.
  • Ścisła realizacja planu: wszystko w nadmiarze jest uważane za stratę czasu i zasobów.
  • Wprowadzenie ogólnej koncepcji „Myśl na wielką skalę, rób mało, szybko popełniaj błędy, szybko się ucz”.

W krótkim podsumowaniu trudno jest ujawnić wszystkie zalety i wady metodologii oraz wskazać efektywne obszary zastosowań. Dzisiaj porozmawiamy osobno o najbardziej odpowiednich pojęciach. Które dokładnie? Zostawcie swoje życzenia w komentarzach.

Główny artykuł: Model wodospadu

Model cyklu życia wodospadu model wodospadu) został zaproponowany w 1970 roku przez Winstona Royce’a. Zapewnia sekwencyjną realizację wszystkich etapów projektu w ściśle ustalonej kolejności. Przejście do kolejnego etapu oznacza całkowite zakończenie prac z poprzedniego etapu. Wymagania określone na etapie tworzenia wymagań są ściśle dokumentowane w formie specyfikacji technicznych i rejestrowane przez cały okres realizacji projektu. Każdy etap kończy się wydaniem kompletnego zestawu dokumentacji wystarczającej do kontynuacji rozwoju przez inny zespół programistów.

Etapy projektu według modelu wodospadu:

1. Tworzenie wymagań;

2. Projekt;

3. Wdrożenie;

4. Testowanie;

5. Wdrożenie;

6. Eksploatacja i konserwacja.

Zalety:

· Kompletna i skoordynowana dokumentacja na każdym etapie;

· Łatwo jest określić harmonogram i koszty projektu.

Wady:

W modelu kaskadowym przejście z jednej fazy projektu do drugiej zakłada, że ​​wynik (wynik) poprzedniej fazy jest całkowicie poprawny. Jednak niedokładność któregokolwiek wymagania lub jego błędna interpretacja powoduje, że konieczne jest „cofnięcie się” do wczesnej fazy projektu, a wymagane przeróbki nie tylko wytrącają zespół projektowy z harmonogramu, ale często prowadzą do jakościowego wzrost kosztów i ewentualnie zakończenie projektu w formie, w jakiej był pierwotnie zakładany. Według współczesnych ekspertów głównym błędnym przekonaniem autorów modelu kaskadowego jest założenie, że projekt przechodzi przez cały proces raz, zaprojektowana architektura jest dobra i łatwa w użyciu, projekt wdrożenia jest rozsądny, a błędy we wdrażaniu są łatwo wyeliminować poprzez testowanie. Model ten zakłada, że ​​wszystkie błędy zostaną skoncentrowane w implementacji, dlatego ich eliminacja następuje równomiernie podczas testowania komponentów i systemu. Zatem model kaskady nie jest zbyt realistyczny w przypadku dużych projektów i można go skutecznie wykorzystać jedynie do tworzenia małych systemów.

Model iteracyjny

Alternatywą dla modelu sekwencyjnego jest tzw. iteracyjny i przyrostowy model rozwoju. rozwój iteracyjny i przyrostowy, IID), który także otrzymał od T. Gilba w latach 70-tych. Nazwa model ewolucyjny. Ten model jest również nazywany model iteracyjny I model przyrostowy .

Model IID polega na rozbiciu cyklu życia projektu na sekwencję iteracji, z których każda przypomina „miniprojekt”, obejmujący wszystkie procesy rozwojowe zastosowane do stworzenia mniejszych fragmentów funkcjonalności w porównaniu z projektem jako całością. Celem każdego iteracje- uzyskanie działającej wersji systemu oprogramowania, zawierającej funkcjonalność określoną przez zintegrowaną treść wszystkich poprzednich i bieżących iteracji. Wynik końcowej iteracji zawiera całą wymaganą funkcjonalność produktu. Zatem po zakończeniu każdej iteracji produkt otrzymuje przyrost - przyrost- do swoich możliwości, które konsekwentnie rozwijają ewolucyjnie. Iteracyjność, inkrementalność i ewolucja w tym przypadku są wyrazem tego samego znaczenia w różnych słowach z nieco innych punktów widzenia.


Jak to ujął T. Gilb, „ewolucja jest techniką zaprojektowaną w celu stworzenia pozorów stabilności. Szanse na pomyślne stworzenie złożonego systemu będą największe, jeśli zostanie on wdrożony w serii małych kroków i jeśli każdy krok będzie zawierał jasno określony sukces, a także możliwość „cofnięcia się” do poprzedniego udanego etapu w przypadku niepowodzenia . Deweloper przed uruchomieniem wszystkich zasobów przeznaczonych do stworzenia systemu ma możliwość otrzymania sygnałów zwrotnych ze świata rzeczywistego i skorygowania ewentualnych błędów w projekcie.”

Podejście IID ma też swoje negatywne strony, które w istocie są odwrotną stroną zalet. Po pierwsze, od bardzo dawna brakowało całościowego zrozumienia możliwości i ograniczeń projektu. Po drugie, podczas iteracji musisz odrzucić część pracy wykonanej wcześniej. Po trzecie, sumienność specjalistów w wykonywaniu pracy wciąż maleje, co można wytłumaczyć psychologicznie, gdyż stale dominuje u nich poczucie, że „wszystko i tak można później przerobić i ulepszyć”.

W większości nowoczesnych metodologii programowania (RUP, MSF, XP) wdrażane są różne warianty podejścia iteracyjnego.

Model spiralny

Model spiralny(Język angielski) model spiralny) został opracowany w połowie lat 80. XX wieku przez Barry'ego Boehma. Opiera się na klasycznym cyklu Deminga PDCA (planuj – wykonaj – sprawdź – działaj). Przy zastosowaniu tego modelu oprogramowanie tworzone jest w kilku iteracjach (zwojach spiralnych) metodą prototypowania.

Każda iteracja polega na utworzeniu fragmentu lub wersji oprogramowania, podczas której doprecyzowuje się cele i charakterystykę projektu, ocenia jakość uzyskanych wyników i planuje prace nad kolejną iteracją.

W każdej iteracji oceniane są:

· ryzyko przekroczenia terminów i kosztów projektu;

· konieczność wykonania kolejnej iteracji;

· stopień kompletności i dokładności zrozumienia wymagań systemowych;

· możliwość zakończenia projektu.

Ważne jest, aby zrozumieć, że model spiralny nie jest alternatywą dla modelu ewolucyjnego (model IID), ale specjalnie opracowaną wersją. Niestety, model spiralny jest często albo błędnie używany jako synonim modelu ewolucyjnego w ogóle, albo (nie mniej błędnie) określany jako model całkowicie niezależny wraz z IID.

Charakterystyczną cechą modelu spiralnego jest zwrócenie szczególnej uwagi na ryzyka wpływające na organizację cyklu życia i punkty kontrolne. Boehm formułuje 10 najczęstszych (według priorytetu) zagrożeń:

1. Niedobór specjalistów.

2. Nierealne terminy i budżet.

3. Implementacja niewłaściwej funkcjonalności.

4. Zaprojektowanie niewłaściwego interfejsu użytkownika.

5. Perfekcjonizm, niepotrzebna optymalizacja i dopracowanie detali.

6. Ciągły strumień zmian.

7. Brak informacji o komponentach zewnętrznych, które definiują środowisko systemu lub biorą udział w integracji.

8. Wady pracy wykonywanej przez zasoby zewnętrzne (w stosunku do projektu).

9. Niewystarczająca wydajność powstałego systemu.

10. Luka w kwalifikacjach specjalistów z różnych dziedzin.

Dzisiejszy model spiralny definiuje następujący ogólny zestaw punktów kontrolnych:

1. Koncepcja Operacji (COO) - koncepcja (użytkowanie) systemu;

2. Cele cyklu życia (LCO) – cele i treść cyklu życia;

3. Architektura cyklu życia (LCA) - architektura cyklu życia; tutaj można mówić o gotowości architektury koncepcyjnej docelowego systemu oprogramowania;

4. Początkowa Zdolność Operacyjna (IOC) – pierwsza tworzona wersja produktu, nadająca się do próbnej eksploatacji;

5. Final Operational Capability (FOC) – gotowy produkt, wdrożony (zainstalowany i skonfigurowany) do rzeczywistej pracy.

Konieczne jest dobre zrozumienie podstawowych zasad cyklu życia oprogramowania, wymagań klienta wobec tworzonego produktu, a także uwzględnienie jego możliwości finansowych. Istnieje kilka modeli cyklu życia (model kaskadowy, model spiralny, szybki). prototypowanie itp.). Wybór konkretnego modelu cyklu życia zależy przede wszystkim od treści i celów projektu, a także wysokości jego finansowania.

Generalnie preferujemy model spiralny, który obejmuje elastyczne metodologie programowania zwane Agile. Czasami jednak używamy modelu wodospadu (zwanego także modelem wodospadu) i jego pochodnych do realizacji małych i nieskomplikowanych projektów. W tym artykule opiszemy model kaskadowy, będący klasycznym typem cyklu życia oprogramowania.

Według tego modelu projekt realizowany jest krok po kroku, zgodnie z dokładną sekwencją działań: zbieranie i badanie wymagań, projektowanie i rozwój oprogramowania, testowanie i wsparcie techniczne. Model wodospadu jest dość elastyczny i niektóre etapy mogą się nakładać.

Przyjrzyjmy się po kolei każdemu etapowi cyklu życia:

1. Analiza wymagań

Na tym etapie ważne jest udokumentowanie wszystkich wymagań dotyczących przyszłego oprogramowania. Należy poświęcić odpowiednią ilość czasu na omówienie szczegółów projektu ze wszystkimi zainteresowanymi stronami. Wszystkie napływające dane muszą zostać przeanalizowane i usystematyzowane. Ważne jest także uwzględnienie wszelkich ograniczeń technicznych, jakie mogą pojawić się po stronie Klienta. Efektem tego etapu powinno być stworzenie szczegółowej specyfikacji spełniającej wszystkie wymagania Klienta. Należy zwrócić także uwagę na inne czynniki, które mogą skomplikować proces rozwoju. Należą do nich terminy wyznaczone przez klienta, a także ograniczenia budżetowe.

Uwaga: im więcej informacji o projekcie zbierzesz, tym mniej czasu spędzisz na poprawianiu błędów, finalizowaniu projektu, rewizji budżetu, omawianiu i rozwiązywaniu innych problemów.

Wizja projektu

Ważnym zadaniem jest stworzenie szczegółowego dokument wizji projektu (lub obraz) , który zawiera krótki opis projektu, cele biznesowe, a także kryteria sukcesu projektu, czynniki ryzyka biznesowego oraz opis końcowego użytkownika produktu.

Gotowy dokument należy przekazać klientowi do zatwierdzenia, aby upewnić się, że wszystkie określone wymagania zostały wzięte pod uwagę, a także poinformować go o wszelkich ryzykach, które mogą pojawić się po wydaniu projektu.

Zbieranie wymagań

Po rozwiązaniu wszystkich głównych problemów zaleca się przeprowadzenie dalszych dyskusji i interaktywnych warsztatów ze wszystkimi zainteresowanymi stronami. Pomoże to zidentyfikować wszelkie nieoczywiste punkty, które mogą później spowodować zmiany w interfejsie aplikacji lub konieczność przepisania wzorców kodu. Ten etap może również obejmować wypełnianie kwestionariuszy, przeglądanie spraw, burzę mózgów itp.

Wiele projektów utknęło w martwym punkcie ze względu na dodatkowe wymagania, które pojawiają się na etapie rozwoju. Dlatego bardzo ważne jest zrozumienie początkowych celów biznesowych i głównej idei przyszłej aplikacji.

2. Projektowanie oprogramowania

Kolejnym etapem cyklu życia oprogramowania jest utworzenie dokumentu opisującego zakres i granice projektu. W dokumencie tym znajdują się makiety lub szkice interfejsu przyszłej aplikacji, a także szczegółowa specyfikacja wymagań oprogramowania. Należy zaznaczyć, że w niektórych przypadkach dokument wizji (obraz) projektu oraz dokument dotyczący zakresu i granic projektu można przedstawić jako jeden dokument „O obrazie i granicach projektu”.

Zakres i granice projektu

Dokument opisujący zakres i granice projektu powinien wymieniać główne funkcje tworzonego oprogramowania. Ustalane są one na podstawie dokumentu wizji projektu i oczywiście z uwzględnieniem określonych ram czasowych i ustalonego budżetu.
Dodatkowo w dokumencie tym znajdują się makiety lub szkice utworzone na podstawie dokumentu wizji projektu oraz zebranych wymagań.
Można odręcznie narysować szkic interfejsu użytkownika lub wykorzystać do tego programy do tworzenia makiet, a następnie uzgodnić to z klientem. Poniżej znajduje się lista przydatnych programów do tworzenia makiet, które wykorzystujemy w praktyce:

W trakcie dyskusji nad projektem klient może mieć coraz więcej nowych pomysłów dotyczących jego realizacji. Dlatego zaleca się dać mu czas na przemyślenie swojego projektu i jego wymagań, a następnie ponownie spotkać się i omówić szczegóły projektu, aby nic nie zostało przeoczone.
Na tym etapie pojawia się również kwestia obsługi posprzedażowej produktu. Należy powiadomić klienta o sposobie świadczenia pomocy technicznej po zakończeniu fazy testowej i późniejszym wydaniu produktu.
Należy pamiętać, że dokument wizji projektu i dokument zakresu projektu muszą zostać utworzone przed podpisaniem umowy.

specyfikacje dotyczące wymagań oprogramowania

Specyfikacja wymagań oprogramowania (SRS) opisuje wymagania, które musi spełniać tworzone oprogramowanie. Powinien być logiczny, spójny, przystępny i kompletny. Wymagania można wyrazić w różnej formie, np. w formie tradycyjnych stwierdzeń must (np. „System Staff Manager musi obsługiwać przeglądarki: Google Chrome, Apple Safari, Mozilla Firefox, Opera, IE 8+”) lub w formie historyjek użytkowników (np. „ponieważ jestem menadżerem, potrzebuję dostępu do danych osobowych wszystkich pracowników”).
Istnieje duża liczba szablonów specyfikacji. Wybór konkretnego szablonu zależy od specyfiki projektu. W większości przypadków specyfikacja zawiera opis produktu, klasy użytkowników, wymagania funkcjonalne i niefunkcjonalne wobec tworzonego oprogramowania. Czasami szablon zawiera także prototyp. Najważniejsze jest, aby specyfikacja była jasna, zwięzła i użyteczna dla programistów.

Aby stworzyć prototyp, musisz dowiedzieć się, co następuje:

  • sposób odbierania i przetwarzania danych przychodzących w celu utworzenia niezbędnych danych wyjściowych;
  • formę, w jakiej należy przedstawić wynik.

Makiety (czyli prototypy) przekazywane są projektantom UI/UX, którzy zamieniają je w kolorowe szablony.

3. Tworzenie oprogramowania

Należy zaznaczyć, że rozwój oprogramowania może obejmować także stworzenie interaktywnego prototypu, który w istocie będzie podstawą przyszłej aplikacji. Taki prototyp pomaga zdefiniować architekturę systemu jako całości. Na tym etapie pisze się niewielki kod: na przykład kod przycisków i prostych formularzy, aby dać klientowi ogólne pojęcie o tym, jak będzie działał produkt końcowy. Dlatego prototypowanie włączyliśmy do fazy tworzenia oprogramowania.

Gdy interaktywny prototyp i projekt aplikacji jest gotowy i zatwierdzony przez klienta, rozpoczyna się opracowywanie standardów aplikacji (konwencje nazewnictwa, sposób dokumentowania kodu, instrukcje dla użytkownika końcowego itp.). Następnie możesz bezpiecznie przejść do kolejnego etapu cyklu życia, czyli tworzenia oprogramowania. Tworzenie oprogramowania można podzielić na małe części lub jednostki, a każda jednostka jest opracowywana i testowana przez programistów w celu sprawdzenia jej funkcjonalności (testy jednostkowe).

4. Testowanie oprogramowania

Po zakończeniu fazy rozwoju produkt musi zostać poddany rygorystycznym testom, aby upewnić się, że spełnia określone wymagania. Testy akceptacyjne wymagają, aby klient spróbował lokalnie używać produktu dokładnie w taki sam sposób, w jaki będzie go używał po wydaniu. Po naprawieniu głównych błędów oprogramowanie będzie można wdrożyć. Do skorygowania drobnych błędów można zastosować prosty system śledzenia, który umożliwi skorygowanie ewentualnych usterek już na etapie konserwacji oprogramowania.

5. Wsparcie techniczne oprogramowania

Po przetestowaniu produktu i wdrożeniu na serwerze klienta rozpoczyna się kolejna faza cyklu życia oprogramowania, którą nazywamy utrzymaniem oprogramowania lub wsparciem technicznym. Ogólnie rzecz biorąc, konserwacja polega na naprawianiu drobnych błędów wykrytych na tym etapie.
Możliwe jednak, że pomimo wszystkich wysiłków podjętych w poprzednich krokach będziesz musiał wprowadzić pewne zmiany w utworzonym oprogramowaniu. Klient może podjąć decyzję o wprowadzeniu zmian w funkcjonalności opracowanego produktu. Dlatego będziesz musiał zebrać, opisać i omówić z klientem nowe wymagania, aby wprowadzić niezbędne zmiany w produkcie. W takim przypadku będziesz musiał pracować z nowym projektem wodospadu, a wszystkie kroki opisane powyżej będą musiały zostać powtórzone od początku.

Wniosek

Przyjrzeliśmy się kluczowym etapom rozwoju niezbędnym do stworzenia wysokiej jakości oprogramowania. Aby Twój projekt zakończył się sukcesem, konieczne jest omówienie wszystkich wymagań dotyczących przyszłej aplikacji z bezpośrednim klientem, a także szczegółowe udokumentowanie wszystkich prac, które należy wykonać na każdym etapie rozwoju.

Model kaskadowy jest koniecznie stosowany przy tworzeniu systemów podtrzymywania życia stosowanych w wojsku, rozwoju przestrzeni kosmicznej i medycynie, na przykład przy opracowywaniu oprogramowania do sterowania lotem, systemów poduszek powietrznych itp. Można go również wykorzystać przy opracowywaniu małych i nieskomplikowanych projektów. Jeżeli jednak na jednym z początkowych etapów zostanie popełniony błąd, istnieje ryzyko, że zostanie on wykryty dopiero na etapie rozwoju lub testowania. Dlatego zaleca się stosowanie tego modelu tylko wtedy, gdy wszystkie wymagania są bardzo jasne i nie ulegną zmianie w czasie.

Artykuł powstał pod okiem doświadczonych analityków biznesowych w XB Software.

Poniższe dwie zakładki zmieniają zawartość poniżej.

Rozwój oprogramowania zna wiele godnych uwagi metodologii - innymi słowy, ustalonych najlepszych praktyk. Wybór zależy od specyfiki projektu, systemu budżetowania, subiektywnych preferencji, a nawet temperamentu menadżera. W artykule opisano metodologie, z którymi regularnie spotykamy się w Edison.

1. „Model wodospadu” (model kaskadowy lub „wodospad”)


Jedna z najstarszych polega na sekwencyjnym przechodzeniu etapów, z których każdy musi zostać całkowicie ukończony, zanim rozpocznie się następny. Model Waterfall ułatwia zarządzanie projektem. Dzięki swojej sztywności rozwój przebiega szybko, koszt i termin realizacji są z góry określone. Ale to jest miecz obosieczny. Model kaskadowy da doskonałe rezultaty tylko w projektach z jasno i z góry określonymi wymaganiami oraz sposobami ich realizacji. Nie ma możliwości cofnięcia się o krok; testowanie rozpoczyna się dopiero po zakończeniu lub prawie zakończeniu prac rozwojowych. Produkty opracowane według tego modelu bez uzasadnionego wyboru mogą posiadać wady (listy wymagań nie można w żadnym momencie modyfikować), które wychodzą na jaw dopiero na końcu ze względu na ścisłą kolejność działań. Koszt wprowadzenia zmian jest wysoki, gdyż z ich rozpoczęciem trzeba poczekać do zakończenia całego projektu. Jednak koszty stałe często przewyższają wady tego podejścia. Korygowanie braków powstałych w procesie produkcyjnym jest możliwe i z naszego doświadczenia wynika, że ​​wymaga od jednego do trzech dodatkowych uzgodnień do zamówienia z niewielką specyfikacją techniczną.

Wykorzystując model wodospadu stworzyliśmy od podstaw wiele projektów łącznie z opracowaniem specyfikacji technicznych. Projekty, o których pisze się na Habré: średni - mikrotomografia rentgenowska, mały - automatyczna aktualizacja usługi Windows na AWS.

Kiedy stosować metodologię wodospadu?

  • Tylko wtedy, gdy wymagania są znane, rozumiane i zarejestrowane. Nie ma sprzecznych wymagań.
  • Nie ma problemów z dostępnością programistów o wymaganych kwalifikacjach.
  • W stosunkowo małych projektach.

2. „Model V”


Odziedziczyłem strukturę „krok po kroku” z modelu kaskadowego. Model w kształcie litery V ma zastosowanie w układach, dla których szczególnie ważna jest nieprzerwana praca. Na przykład programy aplikacyjne w klinikach do monitorowania pacjentów, zintegrowane oprogramowanie do mechanizmów sterujących awaryjnymi poduszkami powietrznymi w pojazdach i tak dalej. Cechą szczególną modelu jest to, że ma on na celu dokładne sprawdzenie i przetestowanie produktu, który jest już w początkowej fazie projektowania. Etap testowania odbywa się jednocześnie z odpowiadającym mu etapem rozwoju, na przykład testy jednostkowe są pisane podczas kodowania.

Przykładem naszej pracy opartej na metodologii V jest aplikacja mobilna dla europejskiego operatora komórkowego, która pozwala zaoszczędzić koszty roamingu w podróży. Projekt realizowany jest według jasnej specyfikacji, ale obejmuje istotny etap testów: wygody interfejsu, funkcjonalności, obciążenia, łącznie z integracją, co powinno potwierdzić, że kilka podzespołów różnych producentów ze sobą stabilnie współpracuje, kradzież pieniędzy i pożyczek jest wykluczona. niemożliwe.

Kiedy stosować model V?

  • Jeśli wymagane jest dokładne przetestowanie produktu, model V uzasadni swoją nieodłączną ideę: walidację i weryfikację.
  • Dla małych i średnich projektów, w których wymagania są jasno określone i stałe.
  • W warunkach dostępności inżynierów posiadających niezbędne kwalifikacje, zwłaszcza testerów.

3. „Model przyrostowy” (model przyrostowy)

W modelu przyrostowym kompletne wymagania systemowe są podzielone na różne zespoły. Terminologia jest często używana do opisania montażu oprogramowania krok po kroku. Ma miejsce kilka cykli rozwojowych, które razem tworzą cykl życia wielu wodospadów. Cykl podzielony jest na mniejsze, łatwe w tworzeniu moduły. Każdy moduł przechodzi przez fazy definiowania wymagań, projektowania, kodowania, wdrażania i testowania. Procedura rozwoju według modelu przyrostowego polega na wypuszczeniu produktu z podstawową funkcjonalnością na pierwszym dużym etapie, a następnie sukcesywnie dodawaniu nowych funkcji, tzw. „przyrostów”. Proces trwa aż do stworzenia kompletnego systemu.

Modele przyrostowe stosuje się tam, gdzie indywidualne żądania zmian są jasne i można je łatwo sformalizować i wdrożyć. W naszych projektach wykorzystaliśmy go do stworzenia czytnika DefView, a następnie sieci bibliotek elektronicznych Vivaldi.

Jako przykład opiszemy istotę jednego przyrostu. Sieć bibliotek elektronicznych Vivaldi zastąpiła DefView. DefView podłączony do jednego serwera dokumentów i może teraz łączyć się z wieloma. Serwer magazynujący instalowany jest w siedzibie instytucji, która chce udostępnić swoje treści określonej grupie odbiorców, która bezpośrednio uzyskuje dostęp do dokumentów i konwertuje je do wymaganego formatu. Pojawił się główny element architektury – centralny serwer Vivaldi, który pełni rolę ujednoliconej wyszukiwarki dla wszystkich serwerów pamięci masowej zainstalowanych w różnych instytucjach.

Kiedy stosować model przyrostowy?

  • Kiedy podstawowe wymagania dotyczące systemu są jasno określone i zrozumiałe. Jednocześnie niektóre szczegóły mogą z czasem zostać dopracowane.
  • Wymagane jest wcześniejsze wprowadzenie produktu na rynek.
  • Istnieje kilka ryzykownych cech lub celów.

4. „Model RAD” (model szybkiego tworzenia aplikacji lub szybkiego tworzenia aplikacji)

Model RAD jest rodzajem modelu przyrostowego. W modelu RAD komponenty lub funkcje są opracowywane równolegle przez kilka wysoko wykwalifikowanych zespołów, niczym kilka miniprojektów. Ramy czasowe jednego cyklu są ściśle ograniczone. Powstałe moduły są następnie łączone w jeden działający prototyp. Synergy pozwala bardzo szybko przedstawić klientowi coś działającego do sprawdzenia w celu uzyskania informacji zwrotnej i wprowadzenia zmian.

Model szybkiego tworzenia aplikacji obejmuje następujące fazy:

  • Modelowanie biznesowe: zdefiniowanie listy przepływów informacji pomiędzy różnymi działami.
  • Modelowanie danych: informacje zebrane w poprzednim etapie służą do określenia obiektów i innych podmiotów niezbędnych do obiegu informacji.
  • Modelowanie procesów: Przepływy informacji łączą obiekty w celu osiągnięcia celów rozwojowych.
  • Zbuduj aplikację: wykorzystuje zautomatyzowane narzędzia do montażu w celu konwersji modeli CAD na kod.
  • Testowanie: testowane są nowe komponenty i interfejsy.
Kiedy stosuje się model RAD?

Może być stosowany wyłącznie przez wysoko wykwalifikowanych i wysoce wyspecjalizowanych architektów. Budżet projektu jest duży, aby opłacić tych specjalistów wraz z kosztem gotowych narzędzi do automatycznego montażu. Model RAD można wybrać mając pewność, że znasz docelowy biznes i potrzebę pilnej produkcji systemu w ciągu 2-3 miesięcy.

5. „Model Agile” (elastyczna metodyka rozwoju)


W „zwinnej” metodyce rozwoju, po każdej iteracji klient może obserwować wynik i zrozumieć, czy go satysfakcjonuje, czy nie. To jedna z zalet modelu elastycznego. Do jego wad można zaliczyć fakt, że ze względu na brak konkretnych sformułowań wyników trudno jest oszacować koszty pracy i koszty niezbędne do rozwoju. Extreme Programming (XP) to jedno z najbardziej znanych zastosowań modelu zwinnego w praktyce.

Ten typ opiera się na krótkich codziennych spotkaniach – „Scrum” oraz regularnie powtarzających się spotkaniach (raz w tygodniu, raz na dwa tygodnie lub raz w miesiącu), zwanych „Sprintem”. Podczas codziennych spotkań członkowie zespołu omawiają:

  • raport z pracy wykonanej od ostatniego Scruma;
  • lista zadań, które pracownik musi wykonać przed kolejnym spotkaniem;
  • trudności napotkane w trakcie pracy.
Metodologia jest odpowiednia dla dużych projektów lub tych, które mają długi cykl życia, stale dostosowując się do warunków rynkowych. W związku z tym wymagania zmieniają się w trakcie procesu wdrażania. Warto pamiętać o klasie ludzi kreatywnych, którzy mają tendencję do generowania, wymyślania i wypróbowywania nowych pomysłów raz w tygodniu, a nawet codziennie. Zwinny rozwój najlepiej pasuje do tego psychotypu menedżerów. Rozwijamy wewnętrzne start-upy firmy w oparciu o Agile. Przykładowym projektem klienta jest Elektroniczny System Badań Lekarskich, stworzony z myślą o przeprowadzaniu masowych badań lekarskich w ciągu kilku minut. W drugim akapicie tej recenzji nasi amerykańscy partnerzy opisali bardzo ważną rzecz, która jest podstawą sukcesu w Agile.

Kiedy stosować Agile?

  • Gdy potrzeby użytkowników stale się zmieniają w dynamicznym biznesie.
  • Zwinne zmiany są wdrażane mniejszym kosztem ze względu na częste przyrosty.
  • W przeciwieństwie do modelu wodospadu, model zwinny wymaga jedynie niewielkiego planowania, aby rozpocząć projekt.

6. „Model iteracyjny” (model iteracyjny lub iteracyjny)

Iteracyjny model cyklu życia nie wymaga na początku pełnej specyfikacji wymagań. Zamiast tego tworzenie rozpoczyna się od wdrożenia fragmentu funkcjonalności, który staje się podstawą do zdefiniowania dalszych wymagań. Ten proces się powtarza. Wersja może nie jest idealna, najważniejsze, że działa. Rozumiejąc ostateczny cel, dążymy do niego tak, aby każdy krok był skuteczny, a każda wersja wykonalna.

Diagram przedstawia iteracyjny „rozwój” Mony Lisy. Jak widać, w pierwszej iteracji jest tylko szkic Mony Lisy, w drugiej pojawiają się kolory, a trzecia iteracja dodaje szczegóły, nasycenie i kończy proces. W modelu przyrostowym funkcjonalność produktu budowana jest kawałek po kawałku, produkt składa się z części. W przeciwieństwie do modelu iteracyjnego, każdy element reprezentuje kompletny element.

Przykładem rozwoju iteracyjnego jest rozpoznawanie głosu. Pierwsze badania i przygotowanie aparatu naukowego rozpoczęły się dawno temu, najpierw w myślach, potem na papierze. Z każdą nową iteracją jakość rozpoznawania poprawiała się. Jednak nie osiągnięto jeszcze doskonałego rozpoznania, dlatego problem nie został jeszcze całkowicie rozwiązany.

Kiedy najlepiej zastosować model iteracyjny?

  • Wymagania dotyczące ostatecznego systemu są z góry jasno określone i zrozumiałe.
  • Projekt jest duży lub bardzo duży.
  • Należy określić główny cel, ale szczegóły realizacji mogą z czasem ulec zmianie.

7. „Model spiralny” (model spiralny)


„Model spiralny” jest podobny do modelu przyrostowego, ale z naciskiem na analizę ryzyka. Dobrze sprawdza się przy rozwiązywaniu krytycznych problemów biznesowych, gdy porażka jest nie do pogodzenia z działalnością firmy, w kontekście wypuszczenia na rynek nowych linii produktowych, gdy konieczne są badania naukowe i testy praktyczne.

Model spiralny obejmuje 4 etapy na każdą turę:

  1. planowanie;
  2. ocena ryzyka;
  3. projekt;
  4. ocena wyniku i, jeśli jakość jest zadowalająca, przejście do nowego etapu.
Model ten nie nadaje się do małych projektów, sprawdza się przy skomplikowanych i kosztownych projektach, jak np. opracowanie systemu obiegu dokumentów dla banku, gdzie każdy kolejny krok wymaga więcej analizy w celu oceny skutków niż programowania. W przypadku projektu opracowania EDMS dla ODU Syberii SO UES dwa spotkania dotyczące zmiany kodyfikacji sekcji archiwum elektronicznego zajmują 10 razy więcej czasu niż połączenie dwóch folderów przez programistę. Projekty rządowe, w których braliśmy udział, zaczynały się od przygotowania przez środowisko eksperckie kosztownej koncepcji, która nie zawsze jest bezużyteczna, bo opłaca się w skali kraju.

Podsumujmy


Slajd pokazuje różnice pomiędzy dwiema najpopularniejszymi metodologiami.

We współczesnej praktyce modele wytwarzania oprogramowania są wielowymiarowe. Nie ma jednego, odpowiedniego modelu dla wszystkich projektów, warunków początkowych i modeli płatności. Nawet tak ukochany przez nas wszystkich Agile nie da się zastosować wszędzie ze względu na nieprzygotowanie części klientów lub brak możliwości elastycznego finansowania. Metodyki częściowo pokrywają się pod względem środków, a częściowo są do siebie podobne. Niektóre inne koncepcje zostały wykorzystane jedynie w celu promowania własnych kompilatorów i nie wniosły niczego nowego do praktyki.

O technologiach deweloperskich:
Jeszcze raz o siedmiu głównych metodologiach rozwoju.
10 głównych błędów w systemach skalujących.
8 zasad planowania rozwoju, które ułatwiają życie.
5 głównych zagrożeń w tworzeniu oprogramowania na zamówienie.

W ankiecie mogą wziąć udział wyłącznie zarejestrowani użytkownicy. , Proszę.