Cele oraz techniki tworzenia prototypów systemów
infromatycznych
Zagadnienia
Rola oraz umiejscowienie prototypowania w procesie tworzenia oprogramowania
Rola prototypu w procesie walidacji wymagań systemowych
Przegląd technik prototypowania
Prototypowanie ewolucyjne oraz metoda odrzucania prototypów
Prototypowanie interfejsu użytkownika (GUI)
Zastosowanie prototypów
Prototyp systemu umożliwia użytkownikom zrozumienie wymagań stawianych systemowi
Wpływ systemu na tryb pracy, wpółpraca z innymi systemami
Wykorzystanie do szkoleń użytkowników systemu jeszcze przed jego wdrożeniem
Prototyp systemu wraz z jego wersją
produkcyjną mogą zostać wykorzystane w procesie tzw. testowania wstecznego (ang.
back-to-back testing)
Ułatwia wykrywanie błędów wprowadzonych do
Testowanie wsteczne (1/2)
Wykorzystywane w sytuacji gdy mamy dostępną więcej niż 1 wersję systemu
Np. prototyp oraz sam system
Na wszystkich wersjach wykonuje się te same testy
Pojawienie się różnicy w wynikach testów sygnalizuje potencjalne problemy
W przypadku testowania kolejnych iteracji systemu
testowana jest jedynie wspólna funkcjonalność obu
wersji
Testowanie wsteczne (2/2)
Kolejne kroki w procesie testowania
Stworzenie ogólnego zestawu testów
(Automatyczne) wykonanie przygotowanego zestawu testów na obu wersjach systemu wraz z każdorazowym zapisaniem uzyskanych wyników testów
(Automatyczne) porównanie uzyskanych wyników testów
Jeśli wyniki są identyczne ...
Nie jest to jeszcze gwarancją, że obie wersje działają poprawnie (mogą zawierać ten sam błąd)
Jeśli się różnią ...
Zwykle sygnalizuje to jakąś nieprawidłowość która powinna być przeanalizowana
Korzyści z zastosowania prototypów
Ujawnienie różnic w rozumieniu planowanej funkcjonalności systemu przez przyszłych użytkowników oraz twórców
Metoda minimalizacji ryzyka
Identyfikacja pominiętych funkcjonalności
Np. obsługa sytuacji wyjątkowych
Lokalizacja niejasnych funkcjonalności
Np. „System ma umożliwić zmianę treści pozycji rachunku przez operatora”
„Działający system” dostępny dla użytkowników we wczesnej fazie projektu
Prototyp może posłużyć jako podstawa specyfikacji
systemu
Przebieg procesu prototypowania
Us talenie c elów s twor z enia
pr ototy pu
Oc ena pr ototy pu Utwor z enie
pr ototy pu Definic ja
z ak r es u funk c jonalnoś c i
pr ototy pu
s twor z eniaPlan pr ototy pu
Ogólna definic ja funk c jonal-
noś c i
Dz iałając y
pr ototy p Rapor t z
ewaluac ji
Model spiralny Boehma a prototypowanie
REVIEW Określenie celów,
alternatyw, ograniczeń Analiza alternatyw. rozw.,
identyfikacja i ograniczenie ryzyka
Planowanie kolejnej fazy Implementacja rozwiązania
Analiza ryzyka Analiza ryzyka Analiza ryzyka
Analiza ryzyka
Prototyp 4 Prototyp 3
Prototyp 2 Prototyp
1
Symulacje, benchmarki Plan cyklu życia
Plan implementacji
Integracja i plan testów
Projektowanie Walidacja
wymagań
Analiza
wymagań Szczegółowy
projekt Kodowanie Testy modułów Testy integracyjne
Testy akceptacyjne Utrzymanie
Cele w zależności od podejścia
Celem prototypowania ewolucyjnego (ang.
evolutionary prototyping) jest dostarczenie użytkownikom gotowego systemu. Punktem
wyjściowym dla tworzenia systemu są wymagania najlepiej w danej chwili zrozumiałe
Celem prototypowania z wykorzystaniem metody odrzucania prototypów (ang. throw-away
prototyping) jest walidacja niejasnych wymagań.
Punktem wyjściowym dla procesu tworzenia
prototypu są wymagania które są w danym etapie
niejasne/niezrozumiałe
Dwa podejścia do prototypowania
Ogólne wymagania
Prototypowanie ewolucyjne
Meotoda odrzucania prototypów
Specyfikacja wymagań systemowych Utworzony i
wdrożony system
Cechy prototypowania ewolucyjnego
Wykorzystywane w przypadku systemów gdzie stworzenie specyfikacji z góry jest niemożliwe
Systemy sztucznej inteligencji
Graficzny interfejs użytkownika
Prowadzone z zastosowaniem technik
umożliwiająych szybkie tworzenie kolejnych iteracji (wersji) systemu
Nie ma możliwości walidacji systemu
Nie ma specyfikacji!
Walidacja oznacza w tym przypadku
zademonstrowanie „odpowiedniości systemu”
Prototypowanie ewolucyjne - etapy
Utworzenie ogólnej specyfikacji
Start
Utworzenie prototypu
Ewaluacja prototypu
System poprawny?
Wdrożenie systemu N
T
Prototypowanie ewolucyjne - problemy
Większość istniejących technik zarządzania zakłada istnienie oddzielnych faz w procesie tworzenia
oprogramowania
Model kaskadowy
Ciągłe, praktycznie niekontrolowane zmiany systemu
Naruszenie (jednolitej) struktury
Problemy z pielęgnacją
Czas życia takiego projektu jest stosunkowo krótki
Struktura systemu staje się nieprzejrzysta – trzeba go napisać od nowa
Throw-away prototyping
Metoda minimalizacji ryzyka
Początkowa specyfikacja prototyp
Prototyp udostępnia się do testów/eksperymentów a następnie odrzuca
Takiego prototypu nie powinno się wykorzystywać jako podstawy końcowego systemu
Część aspektów systemu może być całkiem pominiętych
Pielęgnacja (nie brana w ogóle pod uwagę)
Na ogół brak struktury i rozwiązania ad hoc kłopoty z rozwijaniem
Throw-away prototyping - etapy
Ogólna specyfikacja
systemu Utworzenie prototypu Ewaluacja prototypu Specyfikacja systemu
Utworzenie systemu Walidacja systemu Wdrożony system
komponenty
Prototyp jako specyfikacja - problemy
Jak określić zakres pracy?
Utworzyć system taki jak załączony
Niektóre funkcje systemu mogą okazać się trudne do zawarcia w prototypie
Np. dotyczące kryteriów bezpieczeństwa
Więc nie pojawią się w specyfikacji
Wymagania niefunkcjonalne są na ogół częściowo
bądź wcale nie przetestowane w prototypie
Inkrementalny cykl życia projektu
Po zdefiniowaniu ogólnej architektury system jest tworzony i wdrażany w postaci kolejnych inkrementów
Użytkownicy mają możliwość pracy z danym inkrementem służy on jako prototyp
Podejście to ma na celu
Połączenie zalet prototypowania z zapewnieniem strukturalnego cyklu życia projektu oraz
przejrzystej struktury samego systemu
Proces inkrementalnego tworzenia systemu
Określenie zakresu i postaci systemu
Definicja architektury
Specyfikacja zakresu danego
inkrementu
Tworzenie danego inkrementu
Walidacja inkrementu (wg
specyfikacji)
Integracja inkrementu z dotychczasowym
systemem Walidacja systemu
Wdrożenie finalnej postaci systemu
System jest kompletny?
Na podst. Ian Somerville, 1995
Techniki tworzenia prototypów
Generatory aplikacji oraz języki czwartej generacji (4GLs)
Wykorzystanie gotowych komponentów
Języki 4tej generacji (4GL)
Specyficzne dla danej dziedziny zastosowań języki do zastosowań biznesowych
Oparte o systemy zarządzające bazami danych
Typowa funkcjonalność
Zapytania i aktualizacja bazy danych
Generowanie raportów
Standardowe formatki
W typowej postaci w skład wchodzi
Język zapytań do bazy danych (najczęściej SQL)
Generator formatek
Generator raportów
Często dostarczane jako część zestawu narzędzi CASE
Efektywne kosztowo w przypadku małych i średnich systemów
Prototypowanie z wykorzystaniem gotowych komponentów
Prototyp powstaje poprzez połączenie gotowych fragmentów
Coraz bardziej popularny w miarę upowszechniania się bibliotek komponentów
Microsoft ActiveX
Sun Java Beans
Potrzebny jest również mechanizm umożliwiający łączenie gotowych elementów
Np. system UNIX – interpretery poleceń (Bourne shell, C shell) oraz komponenty (narzędzia do ogólnych zastosowań – sed, awk, grep)
Przykład języka opartego na takim podejściu: MS
Wykorzystanie gotowych elementów
Biblioteka komponentów
System utworzony jako
połączenie komponentów
Prototyp
Katalog dostę pnych komponentów
Specyfikacja systemu
Prototypowanie interfejsu użytkownika
Specyfikacja wyglądu i zachowania UI z góry
Praktycznie niemożliwa
Potrzeba stworzenia prototypu
Tworzenie UI stanowi coraz większą część całościowych kosztów tworzenia systemów
Por. typowy system bazodanowy
Czego używać?
Coraz większa liczba dostępnych narzędzi
umożliwiających składanie UI z pojedynczych komponentów
Microsoft Visual Studio, Inprise Builder
Prototyp UI – przykład (1/2)
• Por. opis zasad tworzenia GUI – Eric J Braude „Software Engineering. An Object-Oriented Approach”
Prototyp UI – przykład (2/2)
Pokrewne dane zgrupowane razem
Dla każdej grupy danych określone nazwa; obramowanie grupy
Podsumowanie (1/2)
Prototyp systemu wykorzystuje się w celu
zademonstrowania końcowym użytkownikom konkretnego wyobrażenia na temat przyszłego wyglądu oraz funkcjonalności systemu
Wyróżniamy dwa rodzaje prototypowania
Prototypowanie ewolucyjne
Metoda odrzucania prototypu
Przy tworzeniu prototypu systemu musimy mieć do dyspozycji techniki szybkiego generowania kodu
Struktura prototypu ulega naruszeniu
Na skutek ciągłych zmian/modyfikacji
Zatsosowanie długiego cyklu życia projektu staje się problematyczne
Podsumowanie (2/2)
Punktem wyjściowym metody odrzucania prototypu są wymagania najmniej zrozumiałe; w
prototypowaniu ewolucyjnym zaczynamy od części najlepiej zrozumiałych
Prototypowanie jest szczególnie ważne przy
tworzeniu części systemu które z natury nie dają się efektywnie specyfikować
Interfejs użytkownika