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 systemu w trakcie jego tworzenia
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 Definic ja z ak r es u funk c jonalnoś c i pr ototy pu Utwor z enie pr ototy pu Oc ena pr ototy pu Plan s twor z enia pr ototy pu Ogólna definic ja funk c jonalnoś c i Dz iałając y pr ototy p Rapor t z ewaluac ji
Model spiralny Boehma a prototypowanie Określenie celów, alternatyw, ograniczeń Analiza ryzyka Analiza ryzyka Analiza ryzyka Prototyp 3 Analiza alternatyw. rozw., identyfikacja i ograniczenie ryzyka Prototyp 4 REVIEW Plan cyklu życia Analiza ryzyka Prototyp 2 Prototyp 1 Symulacje, benchmarki Planowanie kolejnej fazy Plan implementacji Integracja i plan testów Walidacja wymagań Analiza wymagań Testy akceptacyjne Utrzymanie Projektowanie Testy integracyjne Kodowanie Testy modułów Szczegółowy projekt Implementacja rozwiązania
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 Utworzony i wdrożony system Specyfikacja wymagań systemowych
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 Start Utworzenie ogólnej specyfikacji Utworzenie prototypu N Ewaluacja prototypu System poprawny? T Wdrożenie systemu
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 komponenty Utworzenie systemu Walidacja systemu Wdrożony system Na podst. Ian Somerville, 1995
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) Wdrożenie finalnej postaci systemu System jest kompletny? Walidacja systemu Integracja inkrementu z dotychczasowym systemem 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 Visual Basic
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 Rząd przycisków wycentrowany i zgrupowany (nie rozrzucony na długości dialogu)
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