Prototypowanie[edytuj]

![]() |
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
[ukryj]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.)