SDLC, czyli o rozwoju oprogramowania

Co to jest SLDC?

Rozwój oprogramowania (SDLC) jest to skomplikowany proces i wymaga zaangażowania osób o różnych kompetencjach, nie tylko programistycznych.

W celu realizacji projektu, czyli wdrożenia oprogramowania trzeba wykonać określone czynności. Każde wdrożenie jest inne dlatego należy zastosować odpowiedni jeden z rodzajów SDLC.

Software development life cycle (SDLC), po polsku cykl życia oprogramowania jest to ustandaryzowany oraz ustrukturyzowany proces wytwarzania oprogramowania. W ramach SDLC występuję wiele faz, wykonywanych w odpowiedniej kolejności.

Składa się ze szczegółowego planu opisującego, jak rozwijać, utrzymywać, wymieniać lub ulepszać oprogramowanie.

Fazy SDLC

W ramach SDLC możemy wyróżnić następujące fazy:

  • planowanie,
  • analiza,
  • projektowanie,
  • implementacja,
  • testowanie,
  • utrzymanie.
sdlc cykl życia oprogramowania

Planowanie

Planowanie pozwala na zapoznanie się z potencjalnymi korzyściami, ryzykami oraz ograniczeniami, które mogą pojawić się w projekcie. To podczas tej fazy ustalane są cele projektu, wstępne założenia, budżet, kamienie milowe. Dobre określenie problemu biznesowego do rozwiązania pozwala na realne określenie celu projektu.

Na tym etapie określa się interesariuszy, zakres projektu. Identyfikowane są także ryzyka, wstępna architektura, procesy biznesowe, których zmiany dotykają.

Analiza

Kolejnym krokiem w procesie jest zebranie wymagań biznesowych oraz utworzenie dokumenty z wymaganiami. Często taki dokument nazywany jest SRS (Software Requriment Specification). Zawiera w sobie wszystkie wymagania oraz procesy biznesowe zdefiniowane podczas warsztatów. Na tym etapie wymagania określają tylko w sposób biznesowy działanie systemu, bez wchodzenia w techniczne szczegóły.

Tutaj następuję także walidacja pomysłów, które zostały określone w fazie planowania. Często na tym etapie pojawiają się nowe pomysły, które powstają w trakcie trwania warsztatów. Określa się także priorytety dla wymagań oraz ich przywiązanie do procesów biznesowych. Diagramy procesów biznesowych tworzone są z wykorzystaniem notacji BPMN.

Wymagania utworzone podczas tej fazy powinny zostać zaakceptowane przez interesariuszy.


Może się zainteresować: Rola analityka w projekcie.


Projektowanie

Po zebraniu wymagań biznesowych przychodzi faza projektowania rozwiązania. Na tym etapie definiowane są wymagania techniczne/systemowe dla produktu. Możemy do nich zaliczyć np. wymagania infrastrukturalne, bezpieczeństwa, wydajnościowe, SLA dla systemu. Wszystko to co pozwoli na spełnienie celu biznesowego.

Określane są sposoby integracji, następnie wybierana jest technologia, w której dane rozwiązanie ma powstać. Tworzona jest techniczna specyfikacja systemu, nazywana także DDS (Design Document Specification). Podczas projektowania rozwiązania najważniejszą kwestią jest zapewnienie realizacji dla wymagań biznesowych. Projekt systemu oraz jego integracje najczęściej modelowane są z wykorzystaniem notacji UML.

Implementacja

W tym momencie dopiero pojawiają się programiści na pełen etat i zaczyna się rozwój oprogramowania (często są także zaangażowani w fazę projektowania oraz planowania do oszacowania wstępnych kosztów). Na podstawie dokumentów z poprzednich faz wytwarzają oprogramowanie. Sposób wytwarzania oraz pracy jest zależny od sposobu prowadzenia projektu.

Testowanie

Testerzy na podstawie dokumentacji tworzą scenariusze testowe i plan testów. Jest to często niedoceniana faza i zazwyczaj nie trwa ona tyle ile powinna. Sprawdzana jest implementacja wymagań biznesowych oraz systemowych. Walidacja wymagań i kontrola jakości oprogramowania to jeden z ważnych czynników sukcesu. Jest to moment kiedy tak naprawdę dowiadujemy się czy praca, która została wykonana w poprzednich etapach została wykonana poprawnie.

Utrzymanie

Tak naprawdę jest to wdrożenie i utrzymanie aplikacji. Jest to ostatni etap procesu SDLC. Na tym etapie aplikacja wchodzi na produkcję i jest wykorzystywana przez użytkowników końcowych. Odpowiednia dokumentacja, zaprojektowanie systemu i jakość oprogramowania wpływa na koszty jakie w przyszłości zostaną poniesione w trakcie utrzymywania oprogramowania.

Utrzymanie to ciągły rozwój oprogramowania.

Po wdrożeniu pojawiają się trzy elementy, które wpływają na koszt utrzymania aplikacji:

  • dostosowywanie aplikacji do nowych wymagań, np. związanych ze zmianą prawa, czy procesów sprzedażowych,
  • aktualizacja technologii, czy rozbudowa infrastruktury użytej w ramach projektu, np. podbicie wersji Javy, dołożenie kolejnych serwerów,
  • usuwanie błędów w oprogramowaniu, które są wykrywane w trakcie użytkowania aplikacji.

Modele SDLC

Możemy wyróżnić sześć głównych modeli SDLC:

  • Agile,
  • Waterfall,
  • Iteracyjny,
  • Spiralny,
  • Bigbang,
  • Model V.

Agile

Agile jako główny cel stawia adaptację i ciągłą walidację oprogramowania1. Produkt wydawany jest w cyklach dzięki czemu bardzo szybko można dostarczyć działające oprogramowanie. Po każdym cyklu następuje sprawdzenie oprogramowania i otrzymywana jest informacja zwrotna na temat tego co zostało wytworzone. Elastyczność i możliwość dostosowywania wymagań jest jedną z zalet tego sposobu wytwarzania oprogramowania. Jest to także jedno z ryzyk, bo należy pamiętać o celu jaki ma projekt i co musi zostać dostarczone. Łatwo jest zejść z głównej ścieżki projektu i poprowadzić rozwój w innym kierunku.

Do modelu Agile zaliczamy Scruma2, RUPa3, czy Programowanie ekstremalne4.

Waterfall

Model Waterfall jest najstarszym modelem SDLC, który został użyty do tworzenia oprogramowania.

Model kaskadowy ilustruje proces tworzenia oprogramowania w liniowym przepływie sekwencyjnym5. Oznacza to, że każda faza procesu rozwoju rozpoczyna się dopiero po zakończeniu poprzedniej fazy. W tym modelu kaskadowym fazy nie nakładają się na siebie. Skutkuję to mniejszą elastycznością w procesie zmiany wymagań. Koszty związane z błędnym zebraniem wymagań oraz zaprojektowaniem systemu są o wiele większe.

Iteracyjny

Zespół szybko tworzy początkową wersję oprogramowania i następnie ulepsza ją w małych iteracjach. Podejście to jest stosowane przy tworzeniu większych aplikacji. Pomaga ono w szybszym uruchomieniu aplikacji, żeby zrealizować określony cel biznesowy.

Spiralny

Model spiralny wykorzystuje iteracyjne podejście innych modeli w połączeniu z procesami sekwencyjnymi, tak jak w modelu kaskadowym. Pozwala to na stopniowe publikowanie i udoskonalanie oprogramowania na każdym etapie spirali, ponieważ rozwój wielokrotnie przechodzi przez każdy etap procesu.

Bigbang

W tym modelu planowanie jest ograniczone oraz występuję proces nie jest sformalizowany. Proces tworzenia oprogramowania rozpoczyna się od zebrania finansowania i zasobów, a następnie rozpoczęcie tworzenia oprogramowania. Ten model zwykle używany jest w przypadku bardzo małych projektów z bardzo małymi zespołami, które nie wymagają tak dużej formalnej struktury i procesu.

Model V

Model V jest rozszerzeniem podejścia kaskadowego, które obejmuje testowanie bezpośrednio związane z każdą fazą rozwoju, a nie testowanie tylko po wytworzeniu oprogramowania. Dzięki takiemu podejściu każda faza tworzenia oprogramowania jest walidowana i można dostrzec błędy na wcześniejszych etapach projektu.

Podsumowanie

Wybór sposobu wytwarzania oprogramowania przez zespół powinien być indywidualny dla każdego projektu. Wytwarzania oprogramowania powinno uwzględniać wielkość, złożoność, ilość zasobów i wysokość budżetu projektu. Nie ma uniwersalnej metody, która zawsze najlepiej się sprawdzi w każdym rodzaju projektu. Świadomość istnienia różnych sposobów tworzenia oprogramowania daję nas swobodę i możliwość ulepszania procesu, który istnieje w naszej organizacji.

Chcesz się ze mną skontaktować. Napisz: https://www.nietylkoprogramowanie.pl/kontakt/

Przeczytaj więcej:

Przypisy

  1. https://agilemanifesto.org/iso/pl/manifesto.html – manifest Agile
  2. https://www.scrum.org – strona Scruma
  3. https://pl.wikipedia.org/wiki/Rational_Unified_Process
  4. https://www.jcommerce.pl/jpro/artykuly/extreme-programming-xp
  5. https://www.guru99.com/what-is-sdlc-or-waterfall-model.html

Jedna odpowiedź do „SDLC, czyli o rozwoju oprogramowania”

  1. Awatar gene

    Howdу very cool blog!! Man .. Beаutifuⅼ .. Amazing .. I will bookmark your website and take the feeds alѕo?
    I am glaɗ to searϲh out a lot of useful info һere within tһe
    publish, ԝe need develop more strategies on this regard, thank you for sharing.
    . . . . .

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *