in w4

background image

Proces tworzenia

oprogramowania i modele

cyklu życia oprogramowania

background image

Co nazywamy procesem

wytwarzania oprogramowania ?

To uporządkowany zbiór aktywności związanych z
tworzeniem oprogramowania. Najważniejsze z nich to:

przygotowanie specyfikacji,

wykonanie projektu oprogramowania,

testowanie i walidacja,

wprowadzanie udoskonaleń i poprawek.

Przyjęty (założony) model procesu wytwarzania
oprogramowania można uważać za (w pewnym sensie
abstrakcyjnego) reprezentanta rzeczywistego procesu.
Dany model opisuje proces wytwarzania oprogramowania
z jakiegoś punktu widzenia (perspektywy).

To co nazywamy modelem procesu wytwarzania
oprogramowania jest również nazywane modelem cyklu
życia oprogramowania.

background image

Modele cyklu życia

oprogramowania

Model kaskadowy (ang. waterfall model)

kolejne aktywności występujące w procesie wytwarzania

oprogramowania są „ułożone” w formie kaskady

Model ewolucyjny

aktywności: specyfikacja, pisanie kodu informatycznego, testowanie,

walidacja itd. przeplatają się ze sobą

Montaż z gotowych elementów

oprogramowanie jest tworzone z gotowych kawałków (modułów)

oprogramowania (poprzez ich scalanie w jedną całość)

Istnieje bardzo wiele wariantów i odmian powyższych modeli,

jak na przykład: naturalny model „buduj i poprawiaj”, model

kaskadowy z iteracjami, model spiralny, model „realizacji

przyrostowej”, model szybkiego prototypu, model RAD (ang.

Rapid Application Development) i model formalnych

transformacji

background image

Przykład: model kaskadowy

Określeni
e
wymagań

Projektowani
e

Pisanie kodu
informatyczneg
o

Testowan
ie

Wprowadzanie
poprawek i
ulepszeń

background image

Charakterystyka modelu

kaskadowego

Zalety:

ułatwia organizację (planowanie, harmonogramy,

monitorowanie etc.); zmusza do zdyscyplinowanego
podejścia, wymusza kończenie dokumentacji po każdej fazie

Wady:

narzuca ścisłą kolejność wykonywania prac, wysokie

koszty błędów popełnionych we wcześniejszych fazach, brak
weryfikacji i elastyczności, niedopasowanie – aktywności w
przedsięwzięciu są rzadko ułożone sekwencyjnie, realizatorzy
kolejnych faz muszą czekać na zakończenie wcześniejszych

Zalecenie:

stosować w projektach o dobrze zdefiniowanych

wymaganiach dla dobrze rozumianych zastosowań; rzadko
stosuje się go w czystej postaci; stanowi on bazę dla
doskonalszych modeli pochodnych

background image

Ewolucyjny model cyklu życia

oprogramowania

Postępowanie eksploracyjne

• Zakłada się tutaj ścisłą współpracę z

użytkownikiem(ami). Tworzenie oprogramowania

rozpoczyna się od wstępnej specyfikacji i jej

realizacji i „dokłada się” kolejne funkcjonalności

(tak jak proponuje użytkownik(cy)). Wymagania

powinny być na każdym etapie dobrze

sprecyzowane.

Użycie prototypu

• Prototyp oprogramowania jest użyty w celu

rozpoznania i zrozumienia nieprecyzyjnie

sformułowanych wymagań użytkownika(ów).

background image

Ewolucyjny sposób

postępowania

Współbieżne
aktywności

Walidacja

Wersja
końcowa

Pisanie kodu
informatycznego

Wersje
pośrednie

Specyfikacja

Wersja
początkowa

Szkicowy opis

background image

Krótka charakterystyka ewolucyjnego

modelu cyklu życia oprogramowania

Problemy

• często występuje brak przejrzystości w procesie

postępowania według tego modelu,

• produkt końcowy (wersja końcowa oprogramowania)

jest często kiepsko ustrukturyzowany,

• w tym przypadku często są wymagane specjalne

umiejętności (np. specjalne języki programowania w

przypadku szybkiego prototypowania).

Zastosowanie

• do oprogramowania małych lub średniej wielkości

systemów interaktywnych,

• do oprogramowania części jakichś dużych systemów

(np. stworzenia interfejsów użytkownika),

• do oprogramowania systemów o stosunkowo krótkim

„czasie życia”.

background image

Inżynieria oprogramowania bazująca

na montażu z gotowych elementów

Oparta jest na systematycznym i wielokrotnym
wykorzystywaniu pewnych modułów oprogramowania.
Gotowe, dostępne na rynku komponenty („z półki”, ang.
commercial-off-the-shelf components, COTS) są montowane
w jedną całość.

Części składowe takiego procesu:

analiza modułów oprogramowania (do czego można wykorzystać
dany moduł),

modyfikacja wymagań,

projektowanie oprogramowania z wielokrotnym wykorzystaniem
modułów software’owych,

montaż w jedną całość (integracja).

To podejście do inżynierii oprogramowania zyskuje na
znaczeniu wraz pojawieniem się standardów dla
komponentów COTS.

background image

Iteracje w procesie tworzenia

oprogramowania

Wymagania systemowe ewoluują (zmieniają się) zawsze w
trakcie trwania projektu. Dlatego potrzebny jest proces iteracji,
w którym ponownie analizuje się wypracowane we
wcześniejszych krokach rzeczy i ewentualnie się je modyfikuje,
w szczególności w przypadku dużych systemów.

Iteracje mogą być dołączone de facto do każdego z modeli cyklu
życia oprogramowania (w niektórych z nich są wręcz
niezbędne).

Pewien sposób iterowania jest również widoczny w takich
podejściach jak:

dostarczanie oprogramowania „kawałek po kawałku” (ang.
incremental delivery),

„spiralny” sposób organizacji pisania kodu informatycznego (ang.
spiral development).

background image

Dostarczanie oprogramowania „kawałek

po kawałku” (ang. incremental delivery)

Zamiast dostarczenia oprogramowania „w jednym rzucie”

proces jego tworzenia jest dzielony na kilka „przyrostów” -

i tym samym również proces jego instalacji. Każdy z

„przyrostów” związany jest z dostarczeniem modułu

oprogramowania realizującego jedną z „funkcjonalności”

(funkcji) systemu.

W tym sposobie poszczególne punkty specyfikacji

oprogramowania, które ma powstać, otrzymują swoje

priorytety. Punkty (specyfikacji) z najwyższymi priorytetami

są realizowane w najwcześniejszych „przyrostach”.

Jeżeli rozpoczyna się realizacja jakiegoś „przyrostu”, to w

tym momencie związane z nim punkty specyfikacji zostają

„zamrożone” (nie ulegają już zmianie). Nie dotyczy to

jednakże „przyrostów” późniejszych, które mogą

ewoluować (zostać zmodyfikowane).

background image

Tworzenie oprogramowania „kawałek po

kawałku” (ang. incremental

development)

Walidacja kodu inform.

danego „przyrostu”

Pisanie kodu inform.

danego „przyrostu”

Projektowanie

architektury oprogr.

Integracja danego

danego „przyrostu”

Walidacja całości
oprogramowania

Przygotowanie

specyfikacji (spec)

Przyporządkowanie

punktów spec „

przyrostom

Oprogramowanie niekompletne

Oprogramowanie
kompletne

background image

Zalety tworzenia oprogramowania

„kawałek po kawałku”

Klient otrzymuje kawałki („przyrosty”) oprogramowania, w

których zostały zaimplementowane kolejne funkcjonalności

całego oprogramowywanego systemu, na długo przed

zakończeniem projektu. Zatem może je oceniać jeszcze w czasie

jego trwania.

Wcześniej zrealizowane „przyrosty” oprogramowania mogą

posłużyć jako prototypy użyteczne w wyprowadzeniu lub

doprecyzowaniu wymagań dla „przyrostów” następnych.

W tym sposobie tworzenia oprogramowania ryzyko nieudania się

całego projektu jest znacznie mniejsze niż w innych przypadkach.

Tutaj implementowane usługi (oprogramowywanego) systemu,

którym nadano najwyższy priorytet, generują (w sposób

naturalny) największe potrzeby, jeżeli chodzi o testy. Wiadomo

zaś, że oprogramowanie, które przeszło przez więcej testów jest

bardziej niezawodne – czyli jest to zaleta.

background image

Model spiralny cyklu życia

oprogramowania

Proces tworzenia oprogramowania jest tutaj
przedstawiony za pomocą spirali (nie jako sekwencja
aktywności z możliwościami powrotów).

Każdy obieg (pętla) w spirali reprezentuje fazę w
procesie tworzenia oprogramowania.

W spirali nie występują takie pętle jak np.
specyfikacyjna, projektowa itp. Procesy specyfikacji,
projektowania są „rozproszone”; ich części występują w
wielu pętlach spirali.

Zagrożenia są określane w sposób bezpośredni a
negatywne efekty związanych z nimi zjawisk (jeżeli
wystąpią) są usuwane w momencie ich wystąpienia.

background image

Model spiralny dla procesu tworzenia

oprogramowania - ilustracja

Analiza
zagrożeń

Prototyp 3

Prototyp
operacyjny

Koncepcja
operacyjna

Symulacje, modele, pośrednie punkty docelowe

Określenie
wymagań
ogólnych

Wymagania
walidacyjne

Projekt realizacji
wymagań V&V

Projekt
produktu

Szczegółowy
projekt

Kod infor-
matyczny.

Test wstępny

Test
integracyjny

Test akceptacyjny

Usługa

Implementacja, weryfikacja, przejście do
następnego poziomu tworzenia programu

Ocena alternatyw, identyfikacja,
rozwiązywanie problemów
związanych z zagrożeniami

Określenie celów, zadań,
alternatyw i ograniczeń

Planowanie następnej fazy

Plan integracji i
testowania

Opracowanie
harmonogramu

Opracowanie wymagań i
określenie cyklu
życia oprogramowania

PRZEGLĄD

Analiza
zagrożeń

Analiza
zagrożeń

Analiza
zagrożeń

Prototyp 2

Prototyp1

background image

Podstawowe aktywności występujące w

procesie tworzenia oprogramowania

SPECYFIKACJA

- Przygotowanie specyfikacji oprogramowania,

które mamy stworzyć (napisać)

PROJEKT

- Przygotowanie projektu oprogramowania – zgodnie

z otrzymanymi od klienta lub napisanymi przez siebie
specyfikacjami – i następnie realizacja tego projektu poprzez
napisanie odpowiadającego mu kodu informatycznego

WALIDACJA I TESTOWANIE

- Walidacja i testowanie napisanego

kodu informatycznego

EWOLUCJA

- Sprawowanie pieczy nad oprogramowaniem po

jego instalacji (tworzenie aktualizacji, tzw. service packs dla
obsługi błędów, jeżeli one wystąpią u użytkownika itp.)

background image

Programowanie a operacja

debuggingu

Programowanie to zamiana opracowanego projektu (jakiegoś
programu) w kodu informatyczny. W skład tej czynności
wchodzi również usuwanie błędów programistycznych
(błędów w kodzie powstałych w wyniku nieprawidłowego
użycia zastosowanego języka programowania).

Programowanie to aktywność programistów (informatyków
specjalizujących się w programowaniu).

Programiści wymyślają testy w celu wykrycia błędów
polegających na nieprawidłowym działaniu programu. Błędy
tego typu usuwane są w procesie zwanym debuggingiem.

background image

Operacja debuggingu -

ilustracja

Zlokalizuj
błąd

Wymyśl sposób
usunięcia błędu

Operacja usu-
nięcia błędu

Ponów test
poprawności
działania programu

background image

Weryfikacja i walidacja

oprogramowania

W operacjach (aktywnościach) weryfikacji i walidacji (ang.

software verification and validation, V & V) sprawdza się, czy

oprogramowanie jest napisane zgodnie ze specyfikacjami

(weryfikacja) i czy spełnia oczekiwania klienta (walidacja).

(Weryfikacja nazywana jest również testowaniem.)

W powyższych aktywnościach mamy do czynienia z procesami

sprawdzania poprawności działania programu, jego przeglądu

pod kątem spełnienia oczekiwań i poddawania różnorakiego

rodzaju testom.

Testowanie programu (w sensie weryfikacja) polega na

sprawdzeniu poprawności jego działania w opracowanych przez

programistów scenariuszach testowych. Scenariusze te należy

wyprowadzić ze specyfikacji i przewidzieć w nich sprawdznie dla

wszystkich możliwych wartości danych (objętych specyfikacjami).

background image

Proces testowania - ilustracja

Testowanie
komponentów

Testowanie
całego programu

Testowanie
pod kątem
akceptacji

background image

Poziomy w operacji

testowania

Testowanie komponentów (modułów) programu

• Oddzielne komponenty są testowane niezależnie od

siebie.

• Komponenty – to mogą być funkcje w pojedynczych

obiektach lub w ich grupach.

Testowanie całego programu

• To testowanie zintegrowanych komponentów

(modułów) programu – jako całości. Testowanie

własności „reprezentatywnych” programu jest tutaj

szczególnie ważne.

Testowanie pod kątem akceptacji

• Testowanie na danych otrzymanych od klienta, aby

zorientować się, czy będą spełnione jego

oczekiwania.

background image

Ewolucja oprogramowania

Oprogramowanie to takie dobro, w którym (z natury rzeczy)
stosunkowo łatwo daje się wprowadzać zmiany.

Przykład ewolucji oprogramowania: zmieniają się
uwarunkowania w prowadzeniu jakiegoś biznesu. Powoduje to
to, że oprogramowanie służące do prowadzenia tego biznesu
musi zostać zmienione i uzupełnione, dostosowane do
zaistniałych zmian.

Mimo że istnieje granica pomiędzy procesem tworzenia
oprogramowania i tym co dzieje się z oprogramowaniem po
instalacji, to w ostatnich czasach staje się ona coraz bardziej
rozmyta, gdyż coraz mniej programów pojawiających się na
rynku jest zupełnie nowych (od początku do końca).

background image

Podsumowanie

Cztery główne aktywności (procesy) związane

z wytwarzaniem oprogramowania (cyklem

życia oprogramowania) to: przygotowanie

specyfikacji, przygotowanie projektu programu

i jego implementacja (czyli napisanie kodu

informatycznego), weryfikacja i walidacja

oprogramowania oraz jego ewolucja.

Poszczególne modele cyklu życia

oprogramowania przedstawiają różne sposoby

(warianty) połączeń pomiędzy procesami

związanymi z wytwarzaniem oprogramowania.

Przykładowe modele to: kaskadowy,

ewolucyjny i montażu z gotowych elementów.


Document Outline


Wyszukiwarka

Podobne podstrony:
W4 Proces wytwórczy oprogramowania
W4 2010
Statystyka SUM w4
w4 3
W4 2
W4 1
w4 skrócony
Education in Poland
w4 orbitale molekularne hybrydyzacja
Participation in international trade
w4 Zazębienie ewolwentowe
TM w4
IB w4 Aud pełny

więcej podobnych podstron