● Szybka budowa
oprogramowania w celu
określenia i zatwierdzenia
wymagań
Inżynieria oprogramowania - 8
Slide 1
●
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 2
●
Prototypowanie w procesie tworzenia oprogramowania
●
Techniki prototypowania
●
Prototypowanie interfejsu użytkownika Inżynieria oprogramowania - 8
Slide 3
●
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 4
●
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 5
●
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 6
Proces budowy prototypu Określ cele
Zdefiniuj
Zbuduj
Oceń
prototypu
funkcjonalność
prototypu
prototyp
prototyp
Plan
Ogólna
Wykonywalny
Raport o ocenie
prototypowania
definicja
prototyp
prototypu
Inżynieria oprogramowania - 8
Slide 7
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
•
Protot yp 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 8
●
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 9
Podejścia do prototypowania Prototypowanie
Dostarczony
ewolucyjne
system
Ogólne
wymagania
Prototypowanie
Wykonywalny prototyp +
z porzuceniem
specyfikacja systemu
Inżynieria oprogramowania - 8
Slide 10
●
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 11
Prototypowanie ewolucyjne Opracuj
Zbuduj
Użytkuj
abstrakcyjną
prototyp
prototyp
specyfikację
systemu
systemu
NIE
TAK
Dostarcz
System jest
system
odpowiedni?
Inżynieria oprogramowania - 8
Slide 12
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 13
●
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 14
Problemy prototypowania ewolucyjnego
●
Problemy zarządzania
•
Istniejące procesy zarządzania zakładają stosowanie modelu kaskadowego do budowy oprogramowania
•
O d 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 15
●
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 16
●
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 17
Przyrostowy proces tworzenia Określ
końcowe
produkty
Zaprojektuj
Wyspecyfikuj
Zbuduj
architekturę
przyrost
przyrost
Oceń
systemu
systemu
systemu
przyrost
NIE
TAK
Dostarcz
System jest
Oceń
gotowy
Zintegruj
gotowy?
system
system
przyrost
Inżynieria oprogramowania - 8
Slide 18
●
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 19
Prototypowanie z porzuceniem Ogólne
Zbuduj
Oceń
Wyspecyfikuj
wymagania
prototyp
prototyp
system
Komponenty użycia
wielokrotnego
Dostarczony
Zbuduj
Oceń
system
oprogramowanie
system
oprogramowania
Inżynieria oprogramowania - 8
Slide 20
●
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 21
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 22
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 23
●
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 24
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 25
Programowanie baz danych Generator
Arkusz
interfejsów
kalkulacyjny
Język
Generator
programowania
raportów
BD
System zarządzania bazą danych
Język czwartej generacji
Inżynieria oprogramowania - 8
Slide 26
●
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 27
Programowania graficzne z użyciem wielokrotnym
Komponent
Komponent
wyświetlający
daty
tekst znakowy
Plik
Edycja Widoki
Układ
Opcje
Pomoc
Skorowidz
20 lutego 2000
ogólny
Skrypt
3.876
sprawdzający
zakres
Komponent
znaku zachęty
+ skrypt
Komponent
rysujący
płótna
Komponent
wyświetlający
drzewo
Inżynieria oprogramowania - 8
Slide 28
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 29
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 30
●
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 31
●
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 Inżynieria oprogramowania - 8
Slide 32