Metodyka wytwarzania oprogramowania

O tym, że systemy się rozrastają a ich stopień złożoności wzrasta logarytmicznie nie trzeba chyba nikomu tłumaczyć. By budować i rozwijać systemy warto jest stosować usystematyzowane podeście. Taką systematyzację może wprowadzić metodyka.

Co to jest metodyka wytwarzania oprogramowania?

Metodyka wytwarzania oprogramowania jest to zestaw pojęć, notacji, modeli, języków, technik i sposobów postępowania służący do analizy dziedziny stanowiącej przedmiot projektowanego systemu.

Metodyka wytwarzania oprogramowania jest powiązana z notacją służącą do dokumentowania wyników faz projektu (pośrednich, końcowych) jako środek wspomagający ludzką pamięć i wyobraźnię i jako środek komunikacji w zespołach oraz pomiędzy projektantami a klientem.

Metodyka ustala:

  • fazy projektu, role uczestników projektu,
  • modele tworzone w każdej z faz,
  • scenariusze postępowania w każdej z faz,
  • reguły przechodzenia od fazy do następnej fazy,
  • notacje, których należy używać,
  • dokumentację powstającą w każdej z faz.

W tym miejscu chciałem ujednolicić pewne pojęcie. Otóż w moim rozumieniu faza i etap znaczą to samo. Będę je wiec stosował zamiennie.

Jestem wielkim fanem modelowania pojęciowego, czyli budowy modeli (potocznie zwanych diagramami), które przedstawiają złożoność systemu. Projektując system widzę także wpływ systemu na procesy biznesowe.  Analityk , Projektant i programista muszą dokładnie wyobrazić sobie problem oraz metodę jego rozwiązania. Zasadnicze procesy tworzenia oprogramowania zachodzą w ludzkim umyśle i nie są związane z dowolnym językiem programowania.
Pojęcia modelowania pojęciowego (conceptual modeling) oraz modelu pojęciowego (conceptual model) odnoszą się do procesów myślowych i wyobrażeń towarzyszących pracy nad oprogramowaniem. Modelowanie pojęciowe jest wspomagane przez środki wzmacniające ludzką pamięć i wyobraźnię. Służą one do przedstawienia rzeczywistości opisywanej przez dane, procesów zachodzących w rzeczywistości, struktur danych oraz programów składających się na konstrukcję systemu.

Cykl życia oprogramowania
Jednym z istotnych pytań stawianych w czasie wytwarzania oprogramowania jest pytanie:
Jak podzielić prace na etapy i jak je zorganizować?
W odpowiedzi na to pytanie proponuje się szereg tak zwanych modeli cyklu życia oprogramowania. Modele te wprowadzają fazy życia oprogramowania, określają czynności wykonywane w poszczególnych fazach oraz ustalają kolejność ich realizacji.
Modele cyklu życia oprogramowania pozwalają uporządkować przebieg prac, ułatwiają planowanie zadań oraz monitorowanie przebiegu ich realizacji.
Gdy popatrzymy na obrazek znany z RUP to mamy następujące  dyscypliny:

  • modelowanie biznesowe, 
  • zarządzanie wymaganiami, 
  • analiza i projektowanie 
  • implementacja, 
  • testowanie, 
  • wdrożenie.  
  • konserwacja. 
rup metodyka wytwarzania oprogramowania

Patrząc z punktu widzenia czasu w metodyce projektowania oprogramowania wyróżniamy następujące fazy.

  • Faza inicjacji  odpowiada za określenie celu i zakresu projektu, potencjalnej architektury systemu lub całego rozwiązania, a także wstępne określenie kosztów prac. Powyższe elementy powinny odzwierciedlać potrzeby Interesariuszy. Warto jest w tej fazie zdefiniować także zidentyfikować ryzyka zastanowić się także jak zmiany wpłynął na procesy biznesowe.
  • Faza przygotowania to faza, w której Należy niejako udowodnić, że zaplanowane w poprzedniej fazie rozwiązanie ma sens.  Weryfikowana jest architektura systemu.  weryfikacja odbywa się poprzez specyfikację szczegółowych wymagań systemowych,  oraz sprawdzenie jak zjednać wsuwane wymagania na system wpłynął na istniejących funkcjonalności. 
  • Faza konstrukcji to przygotowanie projektu  z systemu na bazie zdefiniowanych wymagań systemowych, a także implementacja i testowanie rozwiązania. W  fazie tej mają miejsce także wszystkie prace integracyjne.  
  • Faza uruchomienia to przeniesienie zbudowanego systemu do środowiska produkcyjnego.

W moim odczuciu zapomina się o fazie inicjującej projekt, w której zapadają jedne z najważniejszych decyzji. Faza inicjująca projekt zwana jest czasami fazą strategiczną.

W moim podejściu do procesu wytwórczego oprogramowania bardziej sprawdza się podejście w którym mówiąc o fazach mówię o: 

  • inicjacja
  • określenie wymagań, 
  • analiza
  • projektowanie 
  • implementacja, 
  • testowanie, 
  • wdrożenie. 
  • konserwacja
  • dokumentowanie 

 Oto jak rozumiem poszczególne wyżej wymienione fazy – składniki metodyki wytwarzania oprogramowania.

Faza inicjacji
Celem fazy inicjacji  jest określenie głównych celów z punktu widzenia klienta oraz przygotowanie odpowiednich  do podjęcia najważniejszych, długofalowych decyzji związanych z projektem — między innym o tym, czy projekt na produkcie oprogramowania zostanie uruchomiony. 

Określenie wymagań
Celem tej fazy jest dokładne określenie wymagań klienta wobec tworzonego systemu. Etap określania wymagań należy rozumieć nie proste zbieranie wymagań klienta, lecz jako proces, w którym wspólnie z przedstawicielami producenta konstruuje zbiór wymagań wobec systemu zgodny z postawionymi w fazie strategicznej projektu.

Analiza
Celem fazy analizy jest zbudowanie modelu logicznego (analitycznego) systemu opisującego sposób realizacji przez system postawionych przed nim wymagań. Model ten abstrahuje od szczegółów realizacyjnych (implementacji) systemu.

Projektowanie
Celem fazy projektowania jest opracowanie szczegółowego opisu implementacji systemu. W odróżnieniu od modelu analitycznego model
projektowy jest ściśle związany ze środowiskiem implementacyjnym.

Implementacja
Celem fazy implementacji jest zakodowanie modelu projektowego w odpowiednim języku programowania tak, aby wytwarzany produkt programistyczny spełniał zdefiniowane wcześniej wymagania na oprogramowanie. W czasie implementacji wykonuje się ciągłe testowanie (niektóre rodzaje testów) oraz na bieżąco tworzy się i rozwija dokumentację.

Testowanie
Celem fazy testowania jest sprawdzenie poprawności działania systemu oraz wykrycie możliwie jak największej liczby błędów. W tej fazie wykonywane są różnego typu testu. Szczególnie ważne, z punktu widzenia realizacji projektu, są testy akceptacyjne polegające na odbieraniu (akceptacji) przez użytkownika przyszłego systemu.

Wdrożenie
Celem tej fazy jest uruchomienie systemu w środowisku jego działania („u klienta”). Podczas wdrożenia wykonywane jest zazwyczaj dostrajanie systemu, szkolenie użytkownika oraz przekazanie systemu odbiorcy.

Konserwacja
Celem tej fazy jest konserwacja i pielęgnacja systemu. Polega ona na przykład na dostosowywaniu działania systemu do zmian prawnych
lub organizacyjnych oraz na usuwaniu błędów, które są identyfikowane w czasie eksploatacji systemu.

Dokumentowanie
Celem tej fazy jest, udokumentowanie wszelkich działań podejmowanych w czasie realizacji projektu informatycznego tak, aby było śledzić i kontrolować te działania oraz aby można było w przyszłości dokonywać zmian i poprawek w poszczególnych modelach systemu, oraz jego implementacji. 

Wybrane fazy zostały opisane bardziej szczegółowo:

Do zapewnienia pełnej spójności przed analizą wymagań lubię opracować modele architektoniczne i przeprowadzić analizę biznesową. 
W zależności od podziału na etapy, warunki przejścia od jednego do drugiego etapu, czynności zalecane do wykonania w poszczególnych etapach,
sposoby i zakres dokumentowania oraz innych elementów można wyróżnić wiele wariantów czynności składających się na metodykę wytarzania oprogramowania. Przed przystąpieniem do prac nad oprogramowaniem warto jest zastanowić się i wybrać najlepszy w danej sytuacji model cyklu życiowego i starać się przestrzegać jego reguł w trakcie wytwarzania oprogramowania.

Do najpopularniejszych i najczęściej wykorzystywanych modeli cyklu życia oprogramowania należą:

  • Model kaskadowy (wodospadowy)
  • Model spiralny
  • Model bazujący na prototypach
  • oraz model zwinny we wszystkich jego odmianach

Wszystkie z wyżej wymienionych cykli życia oprogramowania mają jedną cechę wspólną. Tą cechą jest iteracyjność, czyli przyrostowe dostarczanie produktów poszczególnych faz. Moim zdaniem dobra metodyka wytarzania oprogramowania powinna być iteracyjna.

Podobne wpisy
Architektura systemów

Obserwując zmiany na rynku zauważyłem, że rola architektury systemów (architektury oprogramowania) rośnie. Dziś w wielu organizacjach myśli nie tylko a więcej

NATO Architecture Framework

Technik i obszarów, które możemy modelować jest bardzo wiele. Ponadto powstało wiele szablonów, ram, frameworków, które mówią co i jak więcej

MVP, czyli o zwinnym podejściu do zakresu przedsięwzięcia

O MVP słyszy się często wśród analityków. MVP to Minimum Viable Product, czyli minimalnie wykonywalny produkt. Tłumaczenie nie jest doskonałe, więcej

Zasada TAO w procesie wytwórczym oprogramowania

W co większych firmach lub przy okazji dużych przedsięwzięć zwanych projektami, analitycy to nie jedna lub dwie osoby a grupa więcej

Reklama
MODESTO - licencje Enterprise Architect

Zostaw komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Przewiń do góry