haker.info | Etyczny hacking |

haker.info  — Etyczny hacking

 Metodyki wytwarzania oprogramowania

17 czerwca 2019 godz. 14:43    Dawid Farbaniec    770 słów

1. Podstawowe pojęcia

tym wpisie opisano w skrócie najpopularniejsze metodyki wytwarzania oprogramowania. Przedstawiono czym jest model kaskadowy, iteracyjny czy prototypowanie. Natomiast na końcu znajdziesz wprowadzenie do metodyk zwinnych (Agile).

Inżynieria oprogramowania — jest to zastosowanie inżynierii w tworzeniu oprogramowania. Dziedzina ta zajmuje się m.in. metodykami, które stosuje się do wytwarzania oprogramowania.

Wyjaśnienie terminu Inżynieria oprogramowania według standardu Instytutu Inżynierów, Elektryków i Elektroników (ang. Institute of Electrical and Electronics Engineers, w skrócie IEEE) brzmi następująco:

Inżynieria oprogramowania to aplikowanie systematycznego, zdyscyplinowanego i wymiernego podejścia do wytwarzania, obsługi i konserwacji oprogramowania.
IEEE Standard Glossary of Software Engineering Terminology 610.12-1990, 1990

Proces wytwarzania oprogramowania – jest to podział wytwarzania oprogramowania na określone fazy. Nazywany jest też cyklem życia oprogramowania. Dzielenie całego procesu na części ma za zadanie uczynić wydajniejszym projektowanie, programowanie i zarządzanie projektem.

2. Podstawowe metody wytwarzania oprogramowania

2.1. Model kaskadowy / Wodospad (ang. Waterfall)

Jedna z pierwszych zdefiniowanych metodyk wytwarzania oprogramowania. Polega na podzieleniu procesu tworzenia oprogramowania na liniowe, następujące po sobie etapy. Stąd nazwa wodospad, gdyż postęp tworzenia projektu zmierza prostą ścieżką do jednego celu jakim jest powstanie gotowego systemu. Każdy kolejny etap jest zależny od wyników dostarczonych przez poprzednie etapy. Model ten jest krytykowany za długi czas od pomysłu do stworzenia działającego programu.



2.2. Model prototypowy

Metoda prototypowania w programowaniu występuje często w postaci, gdzie najpierw tworzony jest schemat aplikacji. Dalej tworzony jest interfejs graficzny, do którego następnie programowana jest logika. Pozwala to wypuścić niedokończoną aplikację, czyli taką w której tylko część funkcjonalności jest zaimplementowana i działa, ale produkt jest możliwy do używania. Dodatkowo przedstawienie najpierw prototypu klientowi do akceptacji często chroni przed kosztami, które mogłyby wystąpić np. w przypadku błędów projektowych czy błędnego zaprogramowania określonego modułu.



2.3. Model przyrostowy / iteracyjny (ang. incremental / iterative)

Model ten polega na całościowym zaplanowaniu tworzonego systemu oraz podzieleniu go na odrębne moduły. Dalej następuje programowanie wybranego modułu lub kilku, testowanie i przedstawienie ich działania klientowi. Działania te są powtarzane, aż do powstania kompletnego systemu. Stąd nazwa „model przyrostowy”, gdyż każdy etap zakończony akceptacją klienta rozszerza produkt o nową, gotową funkcjonalność.



2.4. Metoda Rapid Application Development (RAD)

W przypadku Rapid Application Development (od ang. szybkie tworzenie aplikacji) do programisty dostarczane są gotowe moduły takie jak na przykład kontrolki, klasy, biblioteki czy inne komponenty, które posiadają wyodrębnioną, gotową funkcjonalność. Zadaniem programisty (lub zespołu) jest ułożenie tego wszystkiego w całość, czyli finalny produkt. Gotowe komponenty mogą zostać zakupione z zewnątrz (np. kontrolki Telerik), mogą być darmowe (otwarte licencje) lub mogą być wykonane na zlecenie przez inną część zespołu której to powierzono. Firmy często posiadają autorskie frameworki, czyli zestawy bibliotek stworzonych przez zespół firmowy do wielokrotnego użycia w kolejnych produktach. Mianem RAD (Rapid Application Development) określa się też środowiska programistyczne, które wyróżniają się wieloma gotowymi komponentami oraz wizualnym projektowaniem aplikacji – często poprzez metodę „przeciągnij i upuść” (ang. drag and drop). Przykładowe środowiska RAD to Microsoft Visual Studio (wiele języków programowania), Qt Designer (język C++) czy Lazarus (język Free Pascal).

2.5. Metodyki zwinne Agile

Określenie „Programowanie zwinne” zostało zaproponowane w dokumencie Manifest Agile (Agile Manifesto) w 2001 r. Metody zwinne zostały stworzone głównie z powodu, że wymagania klienta często się zmieniają w czasie trwania projektu. Praca zostaje rozdzielona pomiędzy samo–zarządzalne zespoły w skład których wchodzą nie tylko programiści, ale również ludzie od marketingu, działu operacyjnego, zasobów ludzkich itd. Agile stosowane do zarządzania projektami posiada elementy LEAN Management (od ang. zarządzanie szczupłe).

Fragment manifestu Agile:

Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.

Jednostki i interakcje ponad procesy i narzędzia.
Działające oprogramowanie ponad wyczerpującą dokumentację.
Współpraca z klientem ponad negocjacje kontraktu.
Reagowanie na zmiany ponad podążaniem według planu.
Fragment manifestu Agile

2.5.1. Programowanie ekstremalne (XP, ang. eXtreme Programming)

Programowanie ekstremalne to bardzo popularny rodzaj metodyki zwinnej (Agile). W metodologii tej najważniejsza jest jakość wytwarzanego oprogramowania oraz dostosowanie do zmieniających się potrzeb klienta. Proces wytwarzania dzielony jest na krótkie cykle, które kończą się punktem kontrolnym, podczas którego możliwe jest zaadoptowanie nowych zmian podanych przez klienta.

Niektóre praktyki stosowane w tej metodyce:

  • Tworzenie testów jednostkowych do całości kodu
  • Ulepszenia i optymalizacje są zostawiane na koniec
  • Nie wypuszcza się kodu, który nie przeszedł testów jednostkowych
  • Bardzo częsty kontakt z klientem
  • Programowanie w parach, gdzie jeden programista pisze kod, a drugi przeprowadza analizę i review
  • Dopilnowanie, aby pracowano na najnowszej wersji kodu
  • Ustalenie i trzymanie się konkretnego standardu i stylu pisania kodu

3. Zakończenie

Wiele metodologii tworzenia oprogramowania posiada niektóre cechy zaczerpnięte z innych. W prostych słowach: cechy określonych metodologii krzyżują się. Nowoczesne programowanie zwinne (Agile) wyciągnęło najlepsze praktyki z poprzednich metodologii. Nie oznacza to jednak, że jest idealne, gdyż pojawiają się również słowa krytyki.

Dawid Farbaniec


Tagi:  inne 

Komentarze czytających



Wszystkie treści umieszczone na tej witrynie są chronione prawem autorskim. Surowo zabronione jest kopiowanie i rozpowszechnianie zawartości tej witryny bez zgody autora. Wszelkie opublikowane tutaj treści (w tym kody źródłowe i inne) służą wyłącznie celom informacyjnym oraz edukacyjnym. Właściciele tej witryny nie ponoszą odpowiedzialności za ewentualne niezgodne z prawem wykorzystanie zasobów dostępnych w witrynie. Użytkownik tej witryny oświadcza, że z zamieszczonych tutaj danych korzysta na własną odpowiedzialność. Wszelkie znaki towarowe i nazwy zastrzeżone zostały użyte jedynie w celach informacyjnych i należą wyłącznie do ich prawnych właścicieli. Korzystając z zasobów witryny haker.info oświadczasz, że akceptujesz powyższe warunki.