370 likes | 582 Views
Prototypowanie oprogramowania. Służy do szybkiego rozwoju oprogramowania zgodnie z założonymi specyfikacjami. Cele. Znać rolę prototypowania w różnych rodzajach przedsięwzięć. Rozumieć różnicę między prototypowaniem ewolucyjnym i prototypowaniem z porzuceniem.
E N D
Prototypowanie oprogramowania • Służy do szybkiego rozwoju oprogramowania zgodnie z założonymi specyfikacjami
Cele • Znać rolę prototypowania w różnych rodzajach przedsięwzięć. • Rozumieć różnicę między prototypowaniem ewolucyjnym i prototypowaniem z porzuceniem. • Rozpoznawać trzy różne metody budowy prototypów. • Wiedzieć, dlaczego prototypowanie jest jedyną sensowną metodą projektowania i tworzenia interfejsu użytkownika.
Zawartość • Prototypowanie w procesie tworzenia oprogramowania • Metody błyskawicznego prototypowania • Prototypowanie interfejsu użytkownika
Budowa prototypów • Prototyp jest początkowa wersją systemu oprogramowania, która służy do prezentacji założeń, do wypróbowania wariantów projektu, a bardziej ogólnie do coraz lepszego poznawania problemu i jego możliwych rozwiązań. • Bardzo ważne jest szybkie tworzenie prototypu, ponieważ umożliwia panowanie nad kosztami i umożliwia eksperymentowanie użytkownikom we wczesnej fazie procesu tworzenia oprogramowania.
Użycie prototypów oprogramowania • Określanie wymagań. Prototypy systemu umożliwiają użytkownikom eksperymentowanie w celu sprawdzenia, czy system pomaga im w pracy. • Zatwierdzanie wymagań. Prototyp może ujawnić błędy i pominięcia w zaproponowanych wymaganiach.
Stosowanie prototypu systemu Stosowanie prototypu systemu daje następujące korzyści: • nieporozumienia między wytwórcami systemu a użytkownikami mogą być rozpoznane już w chwili prezentacji usług systemu, • w trakcie budowy prototypu personel tworzący oprogramowanie może znaleźć sprzeczne lub niekompletne wymagania, • działający, choć niepełny, system jest szybko dostępny i można go wykorzystać do wykazania kierownictwu, że ten program użytkowy jest wykonalny i przydatny, • prototyp może być podstawą specyfikacji systemu o jakości przemysłowej.
Proces budowy prototypu Zdefiniuj funkcjonalność prototypu Określ cele prototypu Oceń prototyp Zbuduj prototyp Raport o ocenie prototypu Plan prototypowania Wykonywalny prototyp Ogólna definicja
Korzyści Badając 39 różnych przedsięwzięć z prototypami, Gordon i Bieman (1995) stwierdzili, że zastosowanie Prototypu dało następujące korzyści: • Zwiększona użyteczność systemu. • Lepsze dopasowanie systemu do potrzeb użytkowników. • Zwiększona jakość projektu. • Większą zdatność do pielęgnacji. • Zmniejszony wysiłek twórczy.
Prototypowanie w procesie tworzenia oprogramowania • Prototypowanie ewolucyjne zaczyna się od zbudowania dość prostego systemu, który spełnia najważniejsze wymagania użytkownika. Jest on następnie zmieniany i uzupełniany w miarę odkrywania nowych wymagań. Ostatecznie staje się systemem, którego oczekiwano. • Prototypowanie z porzuceniem służy natomiast do udoskonalenia i wyjaśnienia specyfikacji systemu. Prototyp jest budowany, oceniany i modyfikowany. Ocena prototypu inspiruje opracowywanie szczegółowej specyfikacji systemu, która jest częścią dokumentacji wymagań systemowych. Po napisaniu tej specyfikacji prototyp nie jest potrzebny i odrzuca się go.
Cele prototypowania • Celem prototypowania ewolucyjnego jest dostarczenie użytkownikom działającego systemu. Oznacza to, że powinno się rozpocząć od tych wymagań użytkownika, które są najlepiej rozpoznane i mają najwyższy priorytet. Wymagania mniej jasne lub o mniejszym priorytecie są implementowane jedynie wówczas, gdy (i pod warunkiem, że) zażądają tego użytkownicy. • Celem prototypowania z porzuceniem jest zatwierdzenie lub dostarczenie wymagań systemowych. Powinieneś zacząć od tych wymagań, które nie są dobrze rozpoznane, ponieważ potrzebujesz dowiedzieć się o nich więcej. Wymagania, które są oczywiste, nie muszą podlegać prototypowaniu.
Prototypowanie ewolucyjne i z porzuceniem Dostarczony system Prototypowanie ewolucyjne Ogólne wymagania Prototypowanie z porzuceniem Wykonywalny prototyp + specyfikacja systemu
Prototypowanie ewolucyjne • Idea prototypowania ewolucyjnego polega na opracowywaniu wstępnej implementacji, wystawianiu jej na krytykę użytkowników i udoskonalaniu jej w wielu krokach aż do chwili zbudowania odpowiedniego systemu. • Prototypowanie ewolucyjne ma wiele wspólnego z metodami błyskawicznego tworzenia programów użytkowych.
Prototypowanie ewolucyjne Zbuduj prototyp systemu Użytkuj prototyp systemu Opracuj abstrakcyjną specyfikację NIE TAK System jest odpowiedni? Dostarcz system
Zalety stosowania prototypowania ewolucyjnego • Przyspieszone dostarczanie systemu. W niektórych wypadkach błyskawiczne dostarczanie i użyteczność są znacznie ważniejsze niż funkcjonalność lub zdatność do pielęgnacji w długim okresie. • Włączenie użytkownika w budowę systemu. Udział użytkowników w procesie budowania powoduje nie tylko to, że system ma więcej szans spełnienia ich wymagań. Oznacza także akceptację systemu przez użytkowników, którzy będą chcieli, żeby dobrze działał.
Metody prototypowania ewolucyjnego • Procesy specyfikowania, projektowania i implementowania przeplatają się. • System jest budowany w postaci ciągu przyrostów. Użytkownicy i inni udziałowcy systemu są włączeni w projektowanie i ocenę każdego przyrostu. • Stosuje się metody błyskawicznego tworzenia systemów. Mogą to być narzędzia CASE i języki czwartej generacji. • Systemowe interfejsy użytkownika są zwykle budowane za pomocą interakcyjnego systemu wytwórczego, który umożliwia szybkie tworzenie projektu interfejsu przez rysowanie i rozmieszczanie ikon.
Główne problemy z prototypowaniem ewolucyjnym • Kłopoty z zarządzaniem • Prototypy ewoluują tak szybko, że opracowywanie dużej ilości dokumentacji jest zbyt kosztowne. Menedżerowie mogą mieć trudności z wykorzystaniem dostępnego personelu z powodu braku odpowiednich umiejętności. • Kłopoty z pielęgnacją • Ustawiczne zmiany powodują uszkodzenia struktury prototypowego systemu. • Kłopoty z umową
Weryfikacja i zatwierdzanie systemu zbudowanego z zastosowaniem prototypownia ewolucyjnego • Może polegać jedynie na stwierdzeniu, że program jest odpowiedni, tzn. wystarczająco dobry do zaplanowanego celu. • Ta odpowiedniość nie jest oczywiście czytelnie mierzalna; można jedynie przeprowadzić jej subiektywną ocenę.
Tworzenie przyrostowe • Umożliwia uniknięcie niektórych trudności związanych z ustawicznymi zmianami charakterystycznymi dla prototypowania ewolucyjnego. • We wczesnej fazie przedsięwzięcia powstaje ogólna architektura systemu, która potem służy za zrąb. • W ramach tego zrębu przyrostowo tworzy się i dostarcza komponenty systemu. • Po ich zatwierdzeniu i dostarczeniu nie zmienia się zrębu ani komponentów, chyba że zostaną wykryte błędy.
Przyrostowy proces tworzenia Określ końcowe produkty Zaprojektuj archi- tekturę systemu Wyspecyfikuj przyrost systemu Zbuduj przyrost systemu Oceń przyrost NIE System jest gotowy? Dostarcz gotowy system Oceń system Zintegruj przyrost TAK
Prototypowanie z porzuceniem • To podejście umożliwia uniknięcie niektórych trudności związanych z ustawicznymi zmianami charakterystycznymi dla prototypowania ewolucyjnego. • Prototyp porzucany oprogramowania najczęściej nie służy jednak do oceny projektu, ale pomaga w opracowaniu wymagań systemu. Projekt prototypu jest zwykle całkowicie odmienny od końcowej wersji gotowego systemu. • W prototypie porzucanym można pominąć dobrze rozpoznaną funkcjonalność, rozluźnić standardy jakościowe i pominąć kryteria efektywnościowe. • Język oprogramowania użyty do budowy takiego prototypu jest zwykle inny niż język implementacji gotowego systemu.
Proces wytwarzania oprogramowania z prototypowaniem z porzuceniem Ogólne wymagania Zbuduj prototyp Oceń prototyp Wyspecyfikuj system Komponenty użycia wielokrotnego Dostarczony system oprogramowania Oceń system Zbuduj oprogramowanie
Wady prototypowania z porzuceniem • Dostrojenie prototypu tak, aby spełniał wymagania niefunkcjonalne dotyczące efektywności, zabezpieczenia, solidności i niezawodności, może być niemożliwe. • Gwałtowne zmiany zachodzące w czasie budowania nieuchronnie powodują, że prototyp nie jest udokumentowany. • Firmowe standardy jakości zwykle nie są rygorystycznie przestrzegane w czasie budowania prototypu.
Metody błyskawicznego prototypowania • Istnieją trzy metody błyskawicznego tworzenia: • tworzenie za pomocą dynamicznych języków wysokiego poziomu, • programowanie bazy danych, • scalanie komponentów i programów użytkowych • W praktyce przy budowaniu prototypu systemu wszystkie te metody są często stosowane łącznie. • Tworzenie prototypu jest obecnie wspomagane przez zestaw narzędzi np. system Smalltalk VisualWork i Lotus Notes.
Tworzenie za pomocą dynamicznych języków wysokiego poziomu • Dynamiczne języki wysokiego poziomu to języki programowania, które obejmują mocne udogodnienia do zarządzania danymi w czasie wykonania. • Upraszczają budowanie programu, ponieważ zmniejszają wiele kłopotów z przydziałem i zarządzaniem pamięcią. • System takiego języka zawiera udogodnienia, które zwykle napisać samemu, korzystając z prostszych konstrukcji językowych, np. w Adzie lub C. Przykładami języków bardzo wysokiego poziomu są Lisp (oparty na strukturach listowych), Prolog (oparty na logice) i Smalltalk (oparty na obiektach).
Języki wysokiego poziomu do prototypowania Język Rodzaj Dziedzina zastosowania Smalltalk Obiektowy Systemy interakcyjne Java Obiektowy Systemy interakcyjne Prolog Logika Przetwarzanie symboliczne Lisp Oparty na listach Przetwarzanie symboliczne
Wybór języka do prototypowania • Jaka jest dziedzina zastosowania związana z rozwiązywanym problemem? Jaki jest spodziewany rodzaj interakcji z użytkownikiem? Różne języki mają rozmaite poziomy wspomagania kontaktu z użytkownikiem. • Jakie środowisko wspomagające jest dostarczane razem z językiem? Dobrze opracowane środowisko programistyczne z wieloma narzędziami i łatwym dostępem do komponentów użycia wielokrotnego upraszcza proces tworzenia prototypu.
Programowanie baz danych • Większość gospodarczych programów użytkowych obejmuje przetwarzanie danych z bazy danych i generowanie wyników, które polega na organizowaniu i formatowaniu danych. • Programowanie bazy danych jest wykonywane w specjalizowanym języku, który ma wbudowana wiedzę o bazie danych i zawiera operacje służące do pracy z bazą danych. • Pojęcie język czwartej generacji (4GL) obejmuje zarówno język programowania bazy danych, jak i wspomagające go środowisko. • Interfejs użytkownika składa się zwykle ze zbioru standardowych formularzy i arkuszy kalkulacyjnych.
Komponenty języków czwartej generacji Generator interfejsów Arkusz kalkulacyjny Język programowania BD Generator raportów System zarządzania bazą danych Język czwartej generacji
Scalanie komponentów i programów użytkowych • Czas konieczny do zbudowania systemu może być krótszy, jeśli wiele jego części będzie ponownie wykorzystanych, a nie zaprojektowanych i zaimplementowanych od nowa. • Prototypy mogą powstawać bardzo szybko, jeśli jest do dyspozycji zbiór komponentów użycia wielokrotnego i jakiś mechanizm scalania komponentów w system. • Ten mechanizm musi obejmować sterowanie i komunikację komponentów.
Wspomaganie prototypowania z komponentami użycia wielokrotnego • Na poziomie programu użytkowego, na którym całe systemy programów użytkowych mogą być zintegrowane z prototypem w celu współdzielenia ich funkcjonalności. • Jeśli prototyp wymaga na przykład udogodnień do przetwarzania tekstów, to można je zapewnić przez integrację ze standardowym systemem przetwarzania tekstów. • Programy takie jak Microsoft Office wspomagają łączenie programów użytkowych. • Na poziomie komponentów, na którym poszczególne komponenty są integrowane w ramach standardowego zrębu i z nich jest implementowany system.
Scalanie komponentów użycia wielokrotnego Oprogramowane komponenty użycia wielokrotnego Zrąb scalania komponentów Wykonywalny prototyp Kod sterujący i integrujący
Wspomaganie procesu scalania komponentów za pomocą systemów tworzenia graficznego • Systemy tworzenia graficznego, takie jak Visual Basic, wspomagają takie podejście do budowania programów użytkowych opartych na użyciu wielokrotnym. • Programiści użytkowi budują system interakcyjnie, definiując interfejs w kategoriach ekranów, pól, przycisków i menu. Te elementy maja nazwy i przypisane do nich skrypty przetwarzające (np. przycisk „Symuluj”. W tych skryptach można wywoływać komponenty ponownego użycia, specjalnie napisany kod oraz mieszać jedno i drugie.
3 . 8 7 6 Programowanie graficzne z użyciem wielokrotnym Komponent wy- świetlający tekst znakowany Komponent daty Plik Edycja Widoki Układ Opcje Pomoc Skorowidz ogólny 20 lutego 2000 Skrypt sprawdzający zakres Komponent znaku zachęty + skrypt Komponent rysujący płótna Komponent wy- świetlający drzewo
Problemy z użyciem systemów programowania graficznego • W zasadzie wspomaga tworzenie małych i prostych programów użytkowych. W wypadku większych systemów, które muszą być tworzone przez większe zespoły, jest to znacznie trudniej zorganizować. • Nie ma jawnej architektury systemu, a często występują złożone zależności między różnymi częściami systemu. Sprawia to kłopoty, gdy pojawiają się żądania zmian.
Prototypowanie interfejsu użytkownika • Graficzne interfejsy użytkownika są obecnie normą w wypadku systemów interakcyjnych. • Wysiłek włożony w wyspecjalizowanie, zaprojektowanie i zaimplementowanie interfejsu użytkownika jest istotną częścią kosztu zbudowania programu użytkowego. • Projektanci nie powinni nakłaniać użytkowników do swojej wizji akceptowalnego interfejsu. Użytkownik musi brać udział w procesie projektowania interfejsu. • Projektowanie koncentrujące się na użytkowniku polega na prototypowaniu interfejsu i udziale użytkownika przez cały proces projektowania interfejsu.
Główne tezy • Aby przedstawić użytkownikom wizję udogodnień systemu, można zbudować jego prototyp. Prototyp może zatem pomóc w określeniu i zatwierdzeniu wymagań systemu. • W miarę wzrostu dążenia do szybkiego dostarczania oprogramowania, prototypowanie jest coraz częściej używane jako standardowa metoda tworzenia małych i średnich systemów w zastosowaniach gospodarczych. • Prototypowanie „z porzuceniem” polega na budowie prototypu, który pomoże w zrozumieniu wymagań systemowych. W wypadku prototypowania ewolucyjnego prototyp ewoluuje przez kilka wersji do ostatecznego systemu. • Implementując prototyp porzucany, najpierw buduje się te części systemu, które rozumie się najsłabiej. Przy prototypowaniu ewolucyjnym najpierw buduje się te części systemu, które rozumie się najlepiej.
Główne tezy • Tworzenie błyskawiczne jest bardzo ważne w wypadku prototypowych systemów. Aby szybko dostarczyć prototyp, trzeba pominąć pewną część funkcjonalności systemu lub rozluźnić więzy niefunkcjonalne, takie jak czas reakcji i niezawodność. • Metody prototypowania obejmują użycie języków bardzo wysokiego poziomu, programowanie bazy danych i konstrukcję prototypu z komponentów użycia wielokrotnego. Wiele środowisk prototypowania wspomaga twórcze podejście oparte na programowaniu graficznym. • Interfejs użytkownika zawsze należy tworzyć przez prototypowanie, ponieważ ich wyspecyfikowanie w postaci modelu statycznego jest praktycznie niemożliwe. Użytkownicy powinni brać udział w ocenie i ewolucji prototypu.