Czym jest prototyp?

Dziś chciałbym na moment powrócić do bardziej teoretycznej i przegadanej formy artykułu, zwłaszcza, że jest ku temu okazja. Sporo osób zadaje na różnych forach i mediach społecznościowych pytania w stylu:

Kiedy produkcja?

Pokaż jak to wygląda na aucie

Kiedy będzie dostępny prototyp?

Podobne pytania padały wcześniej, przy okazji poprzedniego projektu HypeFIS. Odniosłem wówczas wrażenie, iż sporo osób błędnie postrzega termin “prototyp” jako “coś gotowego do produkcji”. Niestety sporo zamieszania wprowadziły w tej kwestii pseudo-popularnonaukowe programy i artykuły, które nagminnie używają tego terminu jako “słowa klucza” w odniesieniu niemalże do każdego przedprodukcyjnego stadium projektu.

spójrzmy jak z grubsza wygląda proces powstawania praktycznie każdego urządzenia, niezależnie od jego przeznaczenia.

Pierwszym krokiem jest zawsze faza projektowa. To w niej określamy zarys funkcjonalności, czynimy pewne założenia i ustalamy wymagania. Na tym etapie musimy w jakiś sposób odpowiedzieć sobie na pytanie:

Czy to co projektujmy ma w ogóle szansę zadziałać?

Innymi słowy, musimy uzyskać potwierdzenie słuszności naszych wymagań i założeń. Istnieje przy tym bardzo wiele różnych metod, pozwalających udzielić nam odpowiedzi. Szczególnie cennymi narzędziami są tu wszelkie formy symulacji komputerowej, umożliwiające zamodelowanie projektowanego urządzenia bez konieczności jego fizycznej budowy.

Ostateczną formą sprawdzenia czy nasz projekt nadaje się do realizacji jest stworzenie “proof-of-concept”, PoC’a. Termin ten nie posiada dobrego odpowiednika w języku polskim, stąd często takie urządzenie nazywane jest po prostu prototypem. Pewnym przybliżeniem jest określenie “studium wykonalności”, nie oddaje jednak ono faktu, iż efektem tego procesu ma być fizycznie istniejący system, a nie jedynie wynik prac koncepcyjnych.

Proof-of-concept

Czym więc jest ów PoC? To próba zbudowania projektowanego urządzenia możliwie jak najszybciej i jak najmniejszym kosztem, najczęściej bez zachowania pełnej zgodność z projektem. Innymi słowy naszym celem jest stworzenie czegoś, co będzie “z grubsza” przypominać docelowe urządzenie. Istotne jest jedynie to, aby zawrzeć w nim najważniejsze elementy, niezbędne do przetestowania kluczowych funkcjonalności. W przypadku systemów wbudowanych bardzo często używa się w tym celu gotowych zestawów ewaluacyjnych, zawierających mikrokontroler z kilkoma popularnymi interfejsami.

Biorąc pod uwagę obecny kształt naszego urządzenia, jest ono niemalże idealnym przykładem PoC’a. Jego serce stanowi płytka ewaluacyjna z serii STM32F4 Discovery. Do niej podłączone zostały wszystkie kluczowe urządzenia peryferyjne, takie jak wyświetlacz, slot karty pamięci, przyciski manetki, interfejsy CAN i diagnostyki. Do tego momentu jest on zgodny z projektem, tu jednak podobieństwa się kończą – system nie posiada jeszcze własnej, dedykowanej płytki drukowanej. Mapowanie pinów mikrokontrolera nieco odbiega od projektu, inaczej wyglądają obwody zasilania, itd.

PoC miał być próbą szybkiej oceny wykonalności projektu, a tu towarzyszy nam już całkiem długo.

I tu pojawia się druga, zasadnicza rola PoC’a. W momencie, w którym pozytywnie ocenimy realność założeń projektu, możemy dodawać pominięte wcześniej elementy i funkcjonalności, starając się przy tym “wycisnąć” jak najwięcej doświadczenia i informacji. Jest to o tyle cenne, iż są nam one niezbędne do tego, aby stworzyć wreszcie prototyp.

Prototypy

Sporo z Was zadaje pewnie pytanie:

A dlaczego nie nazwać PoC’a prototypem?

Poniekąd jest w tym nieco racji. Granica między PoC’em a prototypem jest dość płynna i trudno jest zdefiniować jasne rozgraniczenie. Przyjmijmy jednak, że prototypem można nazwać urządzenie, które pod względem kluczowych elementów odwzorowuje projekt i nie przewidujemy już w tej materii dalszych zmian. Innymi słowy – ma ono już uformowaną i okrzepłą strukturę, swego rodzaju szkielet. Oczywiście pewne mniej istotne elementy lub funkcjonalności wciąż mogą ulegać przeobrażeniom, jednak “rdzeń” pozostaje niezmienny. Pozwala to na pewną elastyczność w doborze peryferiów np. rodzaju interfejsów czy ilości wejść/wyjść.

Wróćmy jeszcze na sekundę do podtytułu – “prototypy”. Dlaczego liczba mnoga? Zazwyczaj nigdy nie kończy się na jednym prototypie – praktycznie zawsze jest coś do skorygowania: czy to związanego z częścią mechaniczną, rozmieszczeniem elementów na płytce, zasilaniem, czy też z samym projektem schematu.

Zwróćmy uwagę, że zarówno PoC jak i prototyp są ulepszane stopniowo – mamy więc do czynienia z procesami iteracyjnym, w których kolejne wersje są co raz to bardziej udoskonalane.

Produkt

Kiedy prototyp staje się gotowym produktem? Zasadniczo w momencie, w którym spełnione zostały wszystkie założenia projektu, skorygowano wszelkie usterki i osiągnięto ostateczną formę urządzenia. Należy jednak pamiętać, iż ostatni prototyp nie staje się automatycznie produktem. Cechą dystynktywną prototypów jest zazwyczaj posiadanie pewnych dodatkowych możliwości debugowania, czy to za pomocą interfejsu JTAG, portu szeregowego czy tzw. punktów pomiarowych na płytce. Finalny produkt nie musi ich już zawierać, są one zbędnym elementem, podnoszącym jedynie koszta produkcji.

A co kiedy jednak okaże się, iż nasz produkt ma jednak pewne niedociągnięcia, których nie wychwyciliśmy wcześniej? Cóż, tu sprawa się mocno komplikuje. Obejściem problemu jest tworzenie kolejnych rewizji urządzenia, zawierających niezbędne poprawki. Czemu obejściem, a nie rozwiązaniem?

O ile budując kolejne prototypy nie musieliśmy przejmować się poprzednimi wersjami, to wypuszczenie nowych rewizji zmusza nas do zachowania wstecznej kompatybilności. Innymi słowy oprogramowanie musi obsługiwać poprawnie zarówno najnowszą rewizję, jak i wspierać pozostałe, starsze wersje.

A co z oprogramowaniem

Cała powyższa dyskusja dotyczy przede wszystkim warstwy sprzętu. Nie możemy jej tak łatwo modyfikować, zwłaszcza kiedy trafi już do użytkownika. Inaczej ma się sprawa z oprogramowaniem. O ile udostępnimy jakąś formę aktualizacji, to będzie istniała możliwość wprowadzenia niezbędnych poprawek lub nowych funkcjonalności również do istniejących już urządzeń.

Dlaczego nie wszystko można nazwać prototypem?

Spójrzmy na słowo “prototyp”. Część proto-, oznacza przodka, bazę. Prototypem jest więc urządzenie stanowiące realną bazę dla typu, czyli serii egzemplarzy. Idąc tym tokiem myślenia, PoC w żaden sposób nie może stanowić bazy dla produkcji seryjnej, gdyż już w swoim założeniu stanowi jedynie ograniczoną formę testu. Również forma “pająka”, czyli kłębowiska kabli połączeniowych, w której to najczęściej powstaje nie może być uważana za ostateczną.

Bardzo często słyszymy stwierdzenie “prototyp” w kontekście czegoś, co nim nie jest. Ba, nawet na niniejszym blogu użyłem tego stwierdzenia w odniesieniu do typowego PoC’a 🙂 Dlaczego? Cóż… tak się utarło, tak się mówi… Warto mieć jednak świadomość, czym na prawdę jest prototyp i że zawsze ma wielu całkowicie zapomnianych, starszych braci.

Posted in Sto dni w kolorze.