Czym jest „Zwinność” w wytwarzaniu oprogramowania dla Automotive?
Istnieją dwie podstawowe metody tworzenia oprogramowania: tradycyjny model kaskadowy oraz nowsze podejście, zwane agile (tj. „zwinne”), które jest kluczowe dla przekształcenia przemysłu motoryzacyjnego w kierunku „pojazdów zdefiniowanych programowo”.
W podejściu kaskadowym tworzenie oprogramowania przechodzi przez odrębne,
następujące po sobie fazy. Fazy te obejmują definiowanie wymagań, implementację
oraz integrację i testowanie.
Metoda kaskadowa ma liczne wady: nie jest ona wystarczająco elastyczna, aby
nadążyć za tempem zmian w dzisiejszym przemyśle motoryzacyjnym; nie kładzie mocnego
nacisku na bliską współpracę i szybkie pozyskanie informacji zwrotnej od zespołów
biznesowych wewnątrz firmy oraz od partnerów zewnętrznych, a także nie zapewnia
testowania na wystarczająco wczesnym etapie projektu.
Możliwość testowania złożonych systemów oprogramowania jest szczególnie
ważna w przemyśle motoryzacyjnym, gdzie inżynierowie przeprowadzają
zaawansowane symulacje rzeczywistych warunków jazdy – software-in-the-loop,
hardware-in-the-loop
i vehicle-in-the-loop
– zanim wyjadą pojazdem na drogę publiczną.
Jak działa agile?
Podejście „zwinne” stanowi kulturową i proceduralną zmianę w stosunku do
podejścia kaskadowego, które jest liniowe i sekwencyjne. Agile jest iteracyjne,
oparte na współpracy oraz uwzględnia częste pętle informacji zwrotnej.
Organizacje korzystające z agile tworzą małe zespoły adresujące konkretne,
wysoko priorytetowe wymagania biznesowe. Zespoły często pracują w ustalonym,
stosunkowo krótkim cyklu iteracyjnym, zwanym Sprintem. W ramach takiej pojedynczej
iteracji wytwarzają na podstawie określonych potrzeb biznesowych, kompletny i
przetestowany inkrement produktu softwareowego, gotowy do weryfikacji przez
interesariuszy.
Zarówno podejście kaskadowe, jak i „zwinne”, mogą wykorzystywać V-model wytwarzania
oprogramowania, przechodząc kolejno przez fazy projektowania, implementacji
oraz testów. Różnica polega na tym, że podejście kaskadowe stosuje V-model
jako proces nadrzędny o jednokrotnym przebiegu w ramach całego projektu, natomiast
podejście „zwinne” może realizować V-model w ramach każdego Sprintu.
Metody „zwinne” umożliwiają firmom przejście od długo-okresowych
aktualizacji produktu związanych z metodą kaskadową, do nowszego stylu
wdrażania oprogramowania znanego jako CI/CD, czyli
ciągła integracja i wdrażanie. Agile i CI/CD są ze sobą powiązane. Agile odnosi
się do metody wytwarzania oprogramowania; CI/CD zapewnia częste integrowanie,
testowanie i wdrażanie na produkcję nowych wersji z niewielkimi zmianami, solidnie
zweryfikowanych pod kątem jakości.
Agile zapewnia wiele korzyści, w tym umożliwia inżynierom szybkie reagowanie
na zmieniające się uwarunkowania biznesowe. Korzystając z metod zwinnych,
inżynierowie mogą zapewnić ciągłą dostawę ulepszeń oprogramowania, które zostało
dokładnie przetestowane i które odpowiada stale weryfikowanym potrzebom biznesu.
„Zwinne” tworzenie oprogramowania w przemyśle motoryzacyjnym
Wraz z coraz większą rolą oprogramowania w pojazdach, rośnie presja na
producentów samochodów (OEM) i dostawców, aby pisać, wdrażać i integrować kod
szybciej i skuteczniej. Oprogramowanie nie tylko odgrywa większą rolę w podstawowych
funkcjach pojazdu, ale także umożliwia wprowadzanie nowych funkcjonalności
użytkowych, takich jak systemy rozrywki, zaawansowane
systemy wspomagania kierowcy i systemy
jazdy autonomicznej.
Producenci muszą wprowadzać nowe funkcjonalności bliżej terminu rozpoczęcia
produkcji, a także oczekują możliwości szybkiego i bezpiecznego wprowadzania
aktualizacji oprogramowania już po wyprodukowaniu pojazdu.
Tradycyjnie, programiści odpowiadali za oprogramowanie dla każdego
komponentu sprzętowego, a następnie integrowali je z kodem dla innych części
pojazdu. Testowanie zintegrowanego oprogramowania odbywało się na późnym etapie
procesu, co ograniczało czas na wprowadzanie dodatkowych zmian. Rozwój każdego
komponentu i platformy samochodowej był procesem jednorazowym, który
rozpoczynał się od nowa dla kolejnej platformy.
Producenci odchodzą od takiego podejścia na rzecz metod
iteracyjnych, które uwzględniają korzyści płynące ze współpracy, integracji
i ponownego wykorzystania kodu, wynikające z podejścia „zwinnego”. Na przykład,
warstwy pośrednie oprogramowania (middleware) mogą zastąpić kod specyficzny dla
każdego komponentu lub platformy pojazdu. Aplikacje i funkcje mogą być
integrowane za pomocą interfejsów
programowania aplikacji i współdzielone między zespołami programistów.
Metoda „zwinna” pomaga również producentom pojazdów wdrażać nowe
architektury, w których przetwarzanie przenosi się z mniejszych
jednostek sterujących, do dużych, scentralizowanych kontrolerów
domenowych, co zmniejsza koszty i złożoność.