Jakie są różnice między wyrzucanymi a ewolucyjnymi prototypami?

12

Mam notatki na temat różnych metod prototypowania i znalazłem kilka definicji w Internecie, ale chciałbym potwierdzić to, czego się nauczyłem.

Rozumiem, że prototypowanie jednorazowe jest opracowywane na podstawie szkicu specyfikacji, różne prototypy są dostarczane i modyfikowane, dopóki klient nie będzie zadowolony z jego funkcjonalności.

Z drugiej strony prototypy ewolucyjne są budowane na podstawie podstawowych wymagań zebranych od użytkowników końcowych. Początkowy prototyp jest prezentowany użytkownikom i oceniany. Prototyp jest modyfikowany na podstawie informacji zwrotnych, dopóki klient nie będzie zadowolony.

Czy to jest poprawne? Czy są lepsze definicje prototypowania na odległość i ewolucji?

Thomas Owens
źródło
2
Częściej nie wydaje się, że prototyp ewoluuje w gotowy produkt. Nigdy wcześniej tak naprawdę nie słyszałem o tym, co było niepotrzebne w porównaniu z ewolucyjnym.
itsmatt,
1
Cześć Mifas, przepraszam, że to zostało przeniesione, ale jeśli masz swoje definicje z Internetu, prośba o potwierdzenie, czy definicje są poprawne, jest okrągła i nie jest tak naprawdę na ten temat.
1
@MarkTrapp Jeśli usuniemy definicje, czy możemy ponownie otworzyć? Zarówno definicje w poście, jak i istniejąca odpowiedź są błędne, jeśli chodzi o formalną definicję frazy. Istnieją przepełnione stosy w przypadku przepełnienia stosu, ale nie mogę ich tutaj znaleźć i myślę, że jest to niezbędne, aby przynajmniej nie podawać więcej fałszywych informacji w Internecie.
Thomas Owens
@Mifas Jeśli usuniesz definicje, nie ma treści pytania, prawda? Gdyby Mifas podążył za pytaniem tutaj i zaktualizował je, aby wyjaśnić, co próbuje zrobić, sprawiłoby, że zapytałby o te definicje, byłoby to całkiem dobre pytanie.
1
@Mark Fantastic. Dzięki. Pracuję teraz nad moją odpowiedzią.
Thomas Owens

Odpowiedzi:

11

Obie metody prototypowania są stosowane, gdy istnieje jakiś aspekt systemu, którego nie do końca rozumiesz. Jednak kluczową różnicą jest stosowana metodologia cyklu życia. Dzięki ewolucyjnemu prototypowaniu zazwyczaj rozumiesz niektóre aspekty systemu i nie jesteś pewien innych. W przypadku prototypowania typu „out-out” ogólnie nie rozumiesz, co musisz zrobić, zanim zbudujesz system gotowy do produkcji.

Zauważ, że istnieje wiele rodzajów prototypowania, które nie są ograniczone do całego systemu. Na przykład użycie szkiców papierowych lub tablic interfejsu użytkownika można uznać za prototypowanie. Tak, możesz przejść przez kilka iteracji i odrzucić poprzedni projekt, ale nie użyjesz również ostatecznego prototypu w systemie (na przykład fizycznie nie jest to możliwe).

Jeśli interesujesz się ogólnymi zagadnieniami inżynierii oprogramowania i szerokością SE, gorąco polecam wybranie cytowanej przeze mnie książki Sommerville. To naprawdę dobre, aby omówić szeroki zakres tematów. Jeśli bardziej interesują Cię modele procesów i metodologie oraz to, jak możesz je zastosować w różnych projektach, polecam książkę McConnell - zawiera ona cały rozdział poświęcony prototypowaniu ewolucyjnemu i kolejny rozdział poświęcony prototypowaniu.

Rzuciłem też okiem na artykuł z Wikipedii na temat prototypowania oprogramowania . Niektóre z nich są trochę dziwne (przynajmniej po mojej szybkiej lekturze), ale wydaje się, że nie ma niczego, z czym po prostu się nie zgadzam. Niektóre z nich są trochę skoncentrowane na jednym konkretnym aspekcie, ale nie jest to w rzeczywistości mylne. Wolę poniższe definicje, ale może to być ciekawa lektura na temat różnych rodzajów prototypowania.


Ewolucyjne prototypowanie

Rozwój eksploracyjny, w którym celem procesu jest współpraca z klientem w celu zbadania jego wymagań i dostarczenia ostatecznego systemu. Rozwój rozpoczyna się od zrozumiałych części systemu. System ewoluuje poprzez dodanie nowych funkcji zaproponowanych przez klienta. (Sommerville: Software Engineering, wydanie 8)


Ewolucyjne prototypowanie to model cyklu życia, w którym system jest opracowywany przyrostowo, dzięki czemu można go łatwo modyfikować w odpowiedzi na opinie użytkowników końcowych i klientów. Większość ewolucyjnych działań związanych z prototypowaniem rozpoczyna się od prototypowania interfejsu użytkownika, a następnie ewolucji gotowego systemu, ale prototypowanie można rozpocząć od dowolnego obszaru wysokiego ryzyka. Ewolucyjne prototypowanie to nie to samo, co prototypowanie na odległość, a dokonanie właściwego wyboru, czy opracować prototyp ewolucyjny, czy prototyp, jest jednym z kluczy do sukcesu. Inne klucze do sukcesu obejmują korzystanie z doświadczonych programistów, zarządzanie harmonogramem i oczekiwaniami budżetowymi oraz zarządzanie samym działaniem związanym z prototypowaniem. (McConnell: Rapid Development: Taming Wild Software Schedules)


Wyrzucanie prototypów:

Prototypowanie bezzwrotne polega na tym, że celem ewolucyjnego procesu rozwoju jest zrozumienie wymagań klienta, a tym samym opracowanie lepszej definicji wymagań dla systemu. Prototyp koncentruje się na eksperymentowaniu z słabo poznanymi wymaganiami klienta. (Sommerville: Software Engineering, wydanie 8)


Dzięki prototypowaniu Throwaway opracowywany jest kod w celu zbadania czynników krytycznych dla sukcesu systemu, a następnie kod ten jest wyrzucany. Implementacja prototypowania wykorzystuje języki programowania lub praktyki programistyczne lub oba, które są znacznie szybsze niż język docelowy i praktyki. Interfejs użytkownika jest prototypowany znacznie częściej niż jakakolwiek inna część systemu, ale inne części niektórych systemów również mogą czerpać korzyści z prototypowania. Praktyka Throwaway Prototyping stosowana jako pomoc w określaniu wymagań może przyspieszyć projekty oparte na tradycyjnych modelach cyklu życia, takie jak projekty DoD. Może być inicjowany na poziomie zarządzania lub technicznym. (McConnell: Rapid Development: Taming Wild Software Schedules)

Thomas Owens
źródło
-2

Wyrzucanie prototypów - dzięki temu opracowywana jest niewielka część systemu, a następnie przekazywana klientom i użytkownikom końcowym w celu wypróbowania go. Użytkownik przekazuje informacje zwrotne, które można szybko włączyć do rozwoju głównego systemu

Ewolucyjne prototypowanie - jest to model cyklu życia, w którym System jest opracowywany przyrostowo, dzięki czemu można go łatwo modyfikować w odpowiedzi na uwagi użytkowników końcowych i opinii klientów

Samuel
źródło
1
To pytanie zostało zadane w 2011 roku. Twoja odpowiedź nie dodaje wiele do już udzielonych odpowiedzi.
Jan Doggen