Prototypowanie oprogramowania

● Szybka budowa

oprogramowania w celu

określenia i zatwierdzenia

wymagań

Inżynieria oprogramowania - 8

Slide 1

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 2

Zawartość

●

Prototypowanie w procesie tworzenia oprogramowania

●

Techniki prototypowania

●

Prototypowanie interfejsu użytkownika Inżynieria oprogramowania - 8

Slide 3

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 4

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 5

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 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

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 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

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 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

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 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

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 16

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 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

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 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

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 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

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 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

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 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

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 31

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 Inżynieria oprogramowania - 8

Slide 32