Inżynieria oprogramowania - 8 Slide 1
Prototypowanie oprogramowania
. Szybka budowa
oprogramowania w celu
określenia i zatwierdzenia
wymagań
Inżynieria oprogramowania - 8 Slide 2
Cele
. Określić rolę prototypowania w różnych
projektach budowy oprogramowania
. Omówić prototypownie ewolucyjne i
prototypowanie z porzuceniem
. Omówić wybrane techniki szybkiego
prototypowania
. Wyjaśnić potrzebę prototypowania interfejsu
użytkownika
Inżynieria oprogramowania - 8 Slide 3
Zawartość
. Prototypowanie w procesie tworzenia
oprogramowania
. Techniki prototypowania
. Prototypowanie interfejsu użytkownika
Inżynieria oprogramowania - 8 Slide 4
Prototypowanie systemu
. Prototypowanie polega na szybkiej budowie
początkowej wersji systemu
. Granice pomiędzy prototypem a budowanym
systemem zacierają się coraz bardziej gdyż wiele
systemów budowanych jest przy użyciu podejścia
ewolucyjnego
Inżynieria oprogramowania - 8 Slide 5
Istota stosowania prototypów
. Prototypy mają pomóc klientowi i dostawcy
zrozumieć wymagania systemu
. Określenie wymagań. Użytkownik może eksperymentować z
prototypem aby sprawdzić w jakim stopniu budowany system
pomoże mu w pracy
. Zatwierdzenie wymagań. Prototyp może pomóc w ujawnieniu
błędów i pominięć w specyfikacji wymagań
. Prototypowanie można uważać jako działanie
zmierzające do redukcji ryzyka związanego z
budową oprogramowania
Inżynieria oprogramowania - 8 Slide 6
Korzyści prototypowania
. Ujawnienie rozbieżności w rozumieniu systemu pomiędzy
użytkownikami i twórcami oprogramowania
. Wykrywanie brakujących usług i identyfikowanie
sprzecznych lub niekompletnych wymagań
. Udostępnienie systemu o ograniczonych
funkcjonalnościach już w początkowym stadium budowy
. Prototyp może stanowić podstawę do lepszego
definiowania specyfikacji systemu
. Prototypowy system może być użyty w celach
szkoleniowych i testowych
Inżynieria oprogramowania - 8 Slide 7
Proces budowy prototypu
Plan
prototypowania
Określ cele
prototypu
Zdefiniuj
funkcjonalność
prototypu
Zbuduj
prototyp
Oceń
prototyp
Ogólna
definicja
Wykonywalny
prototyp
Raport o ocenie
prototypu
Inżynieria oprogramowania - 8 Slide 8
Prototypowanie w procesie
budowy oprogramowania
. Prototypowanie ewolucyjne
. Podejście do budowy systemu polegające na stworzeniu
prototypu i jego ciągłe udoskonalanie aż do uzyskania finalnego
produktu
. Prototypowanie z porzuceniem
. Prototyp będący zazwyczaj praktyczną implementacją systemu
(często ograniczoną) ułatwia definiowanie i zatwierdzanie
wymagań systemowych. Po zbudowaniu specyfikacji wymagań
system budowany jest od początku przy użyciu innych metod
procesu tworzenie oprogramowania
Inżynieria oprogramowania - 8 Slide 9
Cele prototypowania
. Celem prototypowania ewolucyjnego jest
dostarczenie użytkownikowi działającego
systemu. Budowa systemu rozpoczyna się od
implementacji tych wymagań, które są najlepiej
rozumiane.
. Celem prototypowania z porzuceniem jest
zatwierdzenie lub zdefiniowanie wymagań
systemowych. Proces prototypowania rozpoczyna
się od implementacji tych wymagań, które są
najsłabiej rozumiane.
Inżynieria oprogramowania - 8 Slide 10
Podejścia do prototypowania
Prototypowanie
ewolucyjne
Dostarczony
system
Ogólne
wymagania
Prototypowanie
z porzuceniem
Wykonywalny prototyp +
specyfikacja systemu
Inżynieria oprogramowania - 8 Slide 11
Prototypowanie ewolucyjne
. Dla systemów, których nie da się lub trudno jest
wyspecyfikować (systemy AI, systemy interfejsu
użytkownika)
. Opiera się na technikach umożliwiających
szybkie iteracje systemu
. Weryfikacja nie jest możliwa z uwagi na brak
kompletnej specyfikacji. Zatwierdzenie polega na
zademonstrowaniu właściwego działania
systemu.
Inżynieria oprogramowania - 8 Slide 12
Prototypowanie ewolucyjne
Opracuj
abstrakcyjną
specyfikację
Zbuduj
prototyp
systemu
Użytkuj
prototyp
systemu
Dostarcz
system
System jest
odpowiedni?
NIE
TAK
Inżynieria oprogramowania - 8 Slide 13
Zalety prototypowania ewolucyjnego
. Przyspieszenie dostarczenia systemu (roboczej
wersji)
. Szybka dostawa i wdrożenie są czasem ważniejsze niż
funkcjonalności czy łatwość pielęgnacji systemu
. Zaangażowanie użytkownika w budowę systemu
. System prawdopodobnie lepiej wypełni wymagania
użytkownika i bardziej prawdopodobnie że nie zostanie
odrzucony
Inżynieria oprogramowania - 8 Slide 14
Prototypowanie ewolucyjne
. Specyfikowanie, projektowanie i
implementowanie przeplatają się wzajemnie
. System jest budowany w postaci przyrostów
dostarczanych kolejno klientowi
. Wykorzystuje się techniki szybkiego tworzenia
oprogramowania takie jak narzędzia CASE czy
języki czwartej generacji 4GL
. Interfejs użytkownika zazwyczaj tworzy się przy
pomocy narzędzi graficznych
Inżynieria oprogramowania - 8 Slide 15
Problemy prototypowania ewolucyjnego
. Problemy zarządzania
. Istniejące procesy zarządzania zakładają stosowanie modelu
kaskadowego do budowy oprogramowania
. Od członków zespołu tworzącego oprogramowanie wymagane
są specjalistyczne umiejętności
. Problemy z pielęgnacją
. Ciągłe zmiany powodują uszkodzenie struktury tworzonego
systemu co w dłuższym okresie powiększa koszty pielęgnacji
. Problemy z umową
Inżynieria oprogramowania - 8 Slide 16
Prototyp jako specyfikacja
. Niektóre elementy wymagań (np. funkcje
krytyczne z uwagi na bezpieczeństwo) mogą nie
poddawać się prototypowaniu i w związku z tym
nie pojawią się w specyfikacji
. Prototyp (implementacja) nie stanowi prawnej
podstawy kontraktu
. Wymagania niefunkcjonalne nie mogą być
odpowiednio przetestowane w systemie
prototypowym
Inżynieria oprogramowania - 8 Slide 17
Tworzenie przyrostowe
. System budowany jest i dostarczany w postaci przyrostów
po określeniu ogólnej architektury
. Dla każdego przyrostu można opracowywać wymagania i
ich specyfikację
. Użytkownicy mogą eksperymentować z dostarczonymi
przyrostami podczas gdy dalsze fragmenty są w trakcie
budowania (forma prototypu systemu)
. Łączy w sobie pewne zalety prototypowania przy
zachowaniu lepszej struktury oprogramowania, ułatwiając
proces zarządzania
Inżynieria oprogramowania - 8 Slide 18
Przyrostowy proces tworzenia
Zaprojektuj
architekturę
systemu
System jest
gotowy?
NIE
TAK
Wyspecyfikuj
przyrost
systemu
Zbuduj
przyrost
systemu
Oceń
przyrost
Określ
końcowe
produkty
Dostarcz
gotowy
system
Oceń
system
Zintegruj
przyrost
Inżynieria oprogramowania - 8 Slide 19
Prototypowanie z porzuceniem
. Stosowane w celu ograniczenia ryzyka
związanego ze specyfikacją wymagań
. Prototyp budowany jest na podstawie wstępnej
specyfikacji, dostarczany do sprawdzenia
klientowi a następnie porzucany
. Prototyp nie powinien być uważany jako finalny
produkt
. Pewne cechy systemy mogą być pominięte
. Nie jest przeznaczony do dłuższego użytku
. System ma nieodpowiednią strukturę i jest trudny w utrzymaniu
Inżynieria oprogramowania - 8 Slide 20
Prototypowanie z porzuceniem
Wyspecyfikuj
system
Oceń
prototyp
Zbuduj
prototyp
Ogólne
wymagania
Oceń
system
Zbuduj
oprogramowanie
Dostarczony
system
oprogramowania
Komponenty użycia
wielokrotnego
Inżynieria oprogramowania - 8 Slide 21
Dostarczanie prototypu
. Dostawca może być zmuszany do dostarczenia
prototypu jako finalnego systemu
. Nie jest to właściwe z uwagi na:
. Trudność z dostosowaniem prototypu do wymogów
niefunkcjonalnych
. Brak dokumentacji systemu
. Degradację struktury systemu w wyniku szeregu zmian w
trakcie tworzenia prototypu
. Niemożność stosowania standardów jakości w trakcie procesu
tworzenia prototypu
Inżynieria oprogramowania - 8 Slide 22
Metody szybkiego prototypowania
. Różnorodne techniki mogą być wykorzystywane
do szybkiego prototypowania
. Tworzenie za pomocą dynamicznych języków wysokiego
poziomu
. Programowanie bazy danych
. Scalanie komponentów i aplikacji
. Techniki te często stosowane są łącznie
. Programowanie graficzne jest nieodłączną częścią
większości systemów do budowy prototypów
Inżynieria oprogramowania - 8 Slide 23
Języki prototypowania
Smalltalk Zorientowany obiektowo Systemy interaktywne
Java Zorientowany obiektowo Systemy interaktywne
Prolog Programowanie w logice Przetwarzanie symboliczne
Lisp Oparty na listach Przetwarzanie symboliczne
Inżynieria oprogramowania - 8 Slide 24
Wybór języka prototypowania
. Jaka jest dziedzina problemu aplikacji?
. Jaka jest wymagana interakcja z użytkownikiem?
. Jakie środowisko wspierające dostarczane jest
wraz z danym językiem?
. Różne części systemu mogą być programowane
w różnych językach. Jednakże mogą pojawić się
problemy z wzajemną komunikacją pomiędzy
elementami napisanymi w różnych językach
Inżynieria oprogramowania - 8 Slide 25
Języki programowania bazy danych
. Języki specyficzne dziedzinowo dla aplikacji
biznesowych opartych na systemie zarządzania bazą
danych
. Zazwyczaj zawierają język zapytań bazy danych, edytor
ekranów, generator raportów i arkusz kalkulacyjny
. Mogą być zintegrowane z narzędziami CASE
. Język + środowisko są czasami określane mianem języka
czwartej generacji (4GL)
. Efektywne kosztowo w przypadku systemów
biznesowych małej i średniej wielkości
Inżynieria oprogramowania - 8 Slide 26
Programowanie baz danych
Generator
raportów
Arkusz
kalkulacyjny
Generator
interfejsów
Język
programowania
BD
System zarządzania bazą danych
Język czwartej generacji
Inżynieria oprogramowania - 8 Slide 27
Programowanie graficzne
. Języki skryptowe takie jak Visual Basic ułatwiają
programowanie graficzne gdzie w fazie budowy
prototypu tworzy się interfejs użytkownika za
pomocą standardowych elementów i
powiązanych z nimi komponentów
. Istnieje obszerna biblioteka komponentów
ułatwiających tego typu projektowanie
. Komponenty te można dołączać do aplikacji w
celu realizacji specyficznych wymagań
użytkownika
Inżynieria oprogramowania - 8 Slide 28
Programowania graficzne z
użyciem wielokrotnym
20 lutego 2000
3.876
Plik Edycja Widoki Układ Opcje Pomoc
Skorowidz
ogólny
Komponent
daty
Skrypt
sprawdzający
zakres
Komponent
rysujący
płótna
Komponent
wyświetlający
drzewo
Komponent
znaku zachęty
+ skrypt
Komponent
wyświetlający
tekst znakowy
Inżynieria oprogramowania - 8 Slide 29
Problemy z projektowaniem
graficznym
. Trudno skoordynować projektowanie zespołowe
. Niezbyt przejrzysta architektura systemu
. Złożone zależności pomiędzy częściami
programu mogą powodować problemy z dalszą
jego pielęgnacją
Inżynieria oprogramowania - 8 Slide 30
Prototypowanie interfejsu użytkownika
. Niemożliwym jest wcześniejsze wyspecyfikowanie
spodziewanego przez klienta wyglądu interfejsu
użytkownika w sposób efektywny (prototypowanie)
. Tworzenie UI obejmuje ciągle rosnącą część kosztów
ogólnych budowy systemu
. Generatory interfejsu użytkownika mogą być użyte do
naszkicowania interfejsu i symulowania jego
funkcjonalności za pomocą komponentów powiązanych z
określonymi elementami interfejsu
. Interfejsy aplikacji webowych można prototypować przy
użyciu edytorów stron
Inżynieria oprogramowania - 8 Slide 31
Główne tezy
. Prototyp można wykorzystać w celu pokazania
użytkownikowi końcowemu funkcjonalności systemu
. Prototypowanie jest szczególnie wykorzystywane tam
gdzie wymagane jest szybkie tworzenie systemu
. Prototypowanie z odrzuceniem jest stosowane w celu
lepszego zrozumienia wymagań systemowych
. W trakcie procesu prototypowania ewolucyjnego system
budowany jest w drodze ewolucji od postaci początkowej
do końcowej
Inżynieria oprogramowania - 8 Slide 32
Główne tezy
. Istotne jest szybkie tworzenie prototypów. Takie
podejście może prowadzić do odrzucania wybranych
funkcjonalności lub łagodzenia ograniczeń
niefunkcjonalnych.
. Techniki prototypowania opierają się na językach bardzo
wysokiego poziomu, programowaniu baz danych i
konstruowaniu prototypu z komponentów wielokrotnego
użytku.
. Prototypowanie jest zasadniczą metodą tworzenia
niektórych elementów systemu jak np. interfejsu
użytkownika, który nie może być efektywnie
wyspecyfikowany na etapie początkowym. Użytkownik
musi uczestniczyć w procesie prototypowania