Modele rozwoju oprogramowania

Modele rozwoju oprogramowania

Przedstawię w krótkich opisach 5 modeli rozwoju programowania. Dwa z nich stosujemy w firmie. Pozostałe trzy przedstawiam dla tych, którzy chcą wiedzieć więcej.

  • Model rozwoju oprogramowania, model kaskadowy [Waterfall].
  • Polega na sekwencyjnych, czyli następujących po sobie w ściśle określonym porządku czynnościach, które są kolejnymi etapami realizacji projektu. Każdy etap procesu wymaga udokumentowania i ukończenia przed rozpoczęciem kolejnego. Zaletami modelu kaskadowego są pewność, że każdy etap procesu rozwoju oprogramowania jest skończony, zanim rozpocznie się realizację kolejnego, dokumentacja projektu, łatwość w realizacji i wykorzystaniu. Główne wady modelu kaskadowego to: trudność w zastosowaniu w przypadku złożonych projektów. Niezauważony błąd na początkowym etapie może być powielony w kolejnych etapach, istotne koszt realizacji projektu.
  • Model rozwoju oprogramowania, model spiralny [Spiral].
  • Model spiralny rozwoju oprogramowania łączy w sobie dwa inne modele, kaskadowy oraz prototypowy. Model ma postać spirali, każda pętla przedstawia kolejne etapy procesu. Każdy etap składa się z elementów: cele, raporty i zagrożenia, budowa i testy, następne działanie. Zaletą spiralnego modelu rozwoju oprogramowania są: koncentracja na redukcji błędów, budowa wstępnych projektów, pozwala realizować skomplikowane rozwiązania, rozwój oprogramowania następuje na wczesnym etapie realizacji projektu. Wady spiralnego modelu rozwoju oprogramowania to: wymaga doświadczonych specjalistów, duże koszty i czasochłonność, uzależnienie sukcesu realizacji projektu od analizy ryzyka, brak zastosowania w małych projektach, skomplikowany.
  • Model rozwoju oprogramowania, model przyrostowy [Iterativeand Incremental].
  • Model przyrostowy został wymyślony, aby zredukować wady modelu kaskadowego. Model przyrostowy rozwoju oprogramowania ma szczególne zastosowanie w sytuacjach, w których klienci nie są w stanie precyzyjnie określić swoich potrzeb. W modelu przyrostowym, funkcjonalność oprogramowania dzielona jest na mniejsze elementy. Każdy element dzielony jest na fazy: początek, opracowanie, budowanie, dostarczenie. Każda z faz składa się z interacji. Interacje są określone w zakresie czasu trwania, ale nie są określone w zakresie funkcjonalności. Zalety przyrostowego modelu rozwoju oprogramowania: częste interacje klient – usługodawca, brak niezbędności posiadania całościowej wizji oprogramowania, szybkie dostarczanie pierwszych wersji oprogramowania, wczesne wykrywanie problemów. Wady przyrostowego modelu rozwoju oprogramowania: istotne kosztów związane z realizacją projektu.
  • Model rozwoju oprogramowania, model RUP [Rational Unified Process].
  • Model RUP nie jest pojedynczym procesem, ale szablonem procesu. Model RUP bazuje na kilku elementach: interacyjne wytwarzanie oprogramowania, zarządzanie wymaganiami, architektura oparta na komponentach, graficzne projektowanie oprogramowania, kontroli, jakości oraz kontroli zmian. Model RUP polega na elementach-klockach. Główne elementy to rola, produkt, zadanie.
  • Model rozwoju oprogramowania, model programowania zwinnego [Agile].
  • Model oprogramowania zwinnego opiera się na interakcjach w całym procesie jego rozwoju. Klient komunikuje się z wykonawcą i na odwrót, czyli wykonawca komunikuje się z klientem wielokrotnie i stale w celu uzyskania zadawalającego efektu. Model rozwoju oprogramowania bazujący na ludziach i ich relacjach, działającym oprogramowaniu, współpracy klient-wykonawca, reagowaniu na potrzeby klienta poprzez realizację zmian.