Prototypowanie
Zasugerowano, aby zintegrować ten artykuł z artykułem [[::Model prototypowy|Model prototypowy]]. Nie opisano powodu propozycji integracji. |
Prototypowanie (ang. software prototyping) – rozwój oprogramowania poprzez tworzenie kolejnych wersji prototypów oprogramowania przy użyciu narzędzi do prototypowania. Prototypowanie stało się praktyką na tyle powszechną, że uważa się ją obecnie za standard.
Spis treści
Cele prototypowania[edytuj]
Zastosowanie metody prototypowania umożliwia:
- usprawnienie procesu analizy problemu
- doprecyzowanie wymagań na podstawie doświadczeń z prototypem
- wczesne wykrycie nieporozumień na linii wykonawca-zleceniodawca
- wykrycie brakujących funkcjonalności
- zdiagnozowanie potencjalnych trudności
- szkolenie użytkowników w trakcie tworzenia systemu
- testowanie systemu w trakcie jego rozwoju
Prototypowanie ewolucyjne[edytuj]
Prototypowanie ewolucyjne zaczyna się od zbudowania prostego systemu spełniającego część funkcjonalności. Jest on następnie modyfikowany w miarę poznawania wymagań. Ostatecznie prototyp staje się systemem, którego oczekiwano.
Cele: Celem prototypowania ewolucyjnego jest dostarczenie użytkownikowi działającego systemu.
Zalety[edytuj]
- Przyśpieszone dostarczenie użytkownikowi początkowej wersji systemu
- Włączenie użytkownika w budowę systemu
Wady[edytuj]
- Kłopoty z zarządzaniem – prototypowanie ewolucyjne cechuje się gwałtownym rozwojem, przez co nie nadąża się z tworzeniem dokumentacji;
- Kłopoty z pielęgnacją – ustawiczne zmiany powodują uszkodzenia struktury prototypowanego systemu;
- Kłopoty ze stworzeniem umowy – tradycyjny model umowy klienta z wytwórcą oprogramowania oparty jest na specyfikacji systemu uzgodnionej przed rozpoczęciem prac. W przypadku prototypowania ewolucyjnego zakres prac nie jest znany przed ich rozpoczęciem. Powoduje to problemy z ustaleniem wynagrodzenia.
Cechy[edytuj]
- 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.
Prototypowanie z porzuceniem[edytuj]
Prototypowanie z porzuceniem służy do udoskonalenia i wyjaśnienia specyfikacji. Prototyp jest budowany, oceniany i modyfikowany. Ocena prototypu inspiruje opracowanie szczegółowej specyfikacji systemu, która jest częścią dokumentacji wymagań systemowych. Po ukończeniu tej specyfikacji prototyp nie jest potrzebny i odrzuca się go.
Cele: Celem prototypowania z porzuceniem jest zatwierdzenie i dostarczenie wymagań.
Zalety[edytuj]
- Ułatwia stworzenie precyzyjnej specyfikacji wymagań
- Zmniejsza ryzyko przy tworzeniu wymagań
Wady[edytuj]
- Część pożądanych cech systemu może zostać pominięta poprzez zbytnie zasugerowanie się prototypem
- System może być trudny w zarządzaniu
Cechy[edytuj]
- Najczęściej stosowany przy budowie systemów sprzętowych. Posługując się ‘komponentami z półki’ sprawdzamy projekt przed podjęciem decyzji o kosztownych zakupach;
- Używane do redukowania ryzyka wymagań;
- Prototyp jest otrzymywany ze wstępnej specyfikacji, dostarczany do eksperymentów i porzucany;
- Prototyp NIE powinien być traktowany jako końcowy system;
- Część cech systemu może być pominięta;
- Nie ma specyfikacji do długookresowej pielęgnacji;
- System będzie źle strukturalizowany i trudny w zarządzaniu.
Tworzenie przyrostowe[edytuj]
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. Tworzenie przyrostowe jest łatwiejsze w zarządzaniu, ponieważ przestrzega się w nim standardów budowy oprogramowania.
Metody błyskawicznego prototypowania[edytuj]
- Tworzenie za pomocą dynamicznych języków wysokiego poziomu
- Języki programowania bazy danych
- Scalanie komponentów i programów użytkowych
Inne metody budowania prototypu[edytuj]
- Niepełna realizacja – z reguły tylko część wymagań systemu jest trudna do określenia. W związku z tym proponuje się by w ramach prototypu ująć tylko te funkcje;
- Szybkie programowanie – prototyp może polegać na realizacji wszystkich funkcjonalności tą samą techniką, która zostanie użyta w ostatecznej wersji, aczkolwiek z zaniechaniem testowania dla przyśpieszenia procesu. W ten sposób prototyp różni się od ostatecznego produktu jedynie niezawodnością;
- Papier – szybka i stosunkowo lubiana przez klientów technika prototypowania interfejsu użytkownika.
Podsumowanie[edytuj]
- Prototyp może zostać użyty do ukazania zleceniodawcy konkretnego produktu który otrzyma, co daje możliwość dopracowania ewentualnych braków lub błędów;
- Prototypowanie staje się niezmiernie ważne w projektach gdzie wymagany jest gwałtowny rozwój;
- Prototypowanie z porzuceniem używane jest do zapoznania się i dopracowania wymagań systemu;
- W podejściu ewolucyjnym prototypowania, rozwijany system ewoluuje od samego początku w kierunku gotowego produktu – finalnej wersji;
- Błyskawiczne prototypowanie jest istotne. Może wymagać porzucenia niektórych funkcjonalności lub rozluźnienia ograniczeń niefunkcjonalnych;
- Techniki prototypowania polegają również na wykorzystaniu dynamicznych języków wysokiego poziomu, języków programowania baz danych i prototypowania przez scalanie komponentów i programów użytkowych;
- Prototypowanie jest istotne dla części systemu takich jak interfejs użytkownika ze względu na trudność z efektywną wstępną specyfikacją. Użytkownik musi brać udział w ewaluacji prototypu.
Bibliografia[edytuj]
- Ian Sommerville: Software engineering. 2007. ISBN 0-321-31379-8. (ang.)