Oprogramowanie inżynierskie to nauka a nie sztuka

16.05.2017 Skomentuj pierwszy
 
Mirko Baecker  Siemens Industry Software  EMEA Marketing Director – Digital Manufacturing
  
   Mirko Baecker
   Siemens Industry Software
   EMEA Marketing Director – Digital Manufacturing

 

 

 

 

 

Niezależnie od tego, czy mamy do czynienia z mitem „programisty-bohatera”, działającego na własną rękę i próbującego przez całą noc opanować problem, czy nagłym sukcesem przypadkowej aplikacji na smartfony samotnego developera dążącego do sławy i fortuny, opracowywanie oprogramowania jest powszechnie postrzegane jako indywidualne działanie metodą prób i błędów. Jest to jednak dalekie od prawdy w przypadku znaczących projektów programistycznych, podczas których duży zespół programistów pracuje na złożonych, często kluczowych dla bezpieczeństwa systemach.

Branża inżynierii oprogramowania jest nauką, a nie sztuką. Zasady powtarzalnego, sterowanego procesami rozwoju technologicznego dla stworzenia solidnego oprogramowania wysokiej jakości zostały ustalone w takich organizacjach jak NASA, gdzie niezawodność miała kluczowe znaczenie. Jest ona również istotnym elementem w branżach takich jak obronność, lotnictwo, wbudowane i przemysłowe systemy sterowania, medycyna, wytwarzanie energii i motoryzacja, które muszą równoważyć złożoność procesów, koszty oraz ryzyko.

We wszystkich tych sektorach ryzyko pozostaje nadal wysokie, obecna jest presja na redukcję kosztów, a złożoność stale wzrasta. Przemysł samochodowy jest jednym z obszarów, gdzie wiele różnych części inżynierii oprogramowania musi współpracować i łączyć się z inżynierią systemów oraz inżynierią mechaniczną, ponieważ mnogość systemów mechanicznych ulepszonych przez wbudowane oprogramowanie sprawiła, że w dzisiejszych czasach samochody nie są już produkowane tylko do jazdy. Przedsiębiorstwa samochodowe przeobrażają się w mobilne firmy elektroniki użytkowej, opierające się na nowych i przełomowych technologiach w celu tworzenia nowych produktów – bez rezygnacji z obowiązków w zakresie bezpieczeństwa i wydajności.

Oznacza to, że narzędzia wspierające zarządzanie cyklem rozwoju produktu muszą być zintegrowanymi systemami, które przekraczają wiele domen i branż, aby umożliwić płynny przepływ informacji oraz zapewnienie wydajności i odpowiedzialności na wszystkich etapach tego procesu rozwojowego.

Samochód czy złożony, połączony system?

Wspierane, połączone i autonomiczne samochody to tylko najbardziej skrajne przypadki; pojazdy elektryczne i hybrydowe już prezentują całkowicie nową odsłonę problemów projektowych. Przykładem może być pojazd zasilany energią elektryczną; jest to jeden z wielu systemów kontroli w czasie rzeczywistym, gdzie precyzja ma kluczowe znaczenie; nie można przegapić sygnału lub niepoprawnie odpowiedzieć na dane wejściowe. Nie jest to już jednak system autonomiczny. Jeśli pobieramy energię z hamowania do ładowania baterii w hybrydowym układzie napędowym, wymaga to większej liczby czujników, optymalizacji zużycia energii oraz drenażu baterii w całym pojeździe, ponieważ wpływa to na zakres jazdy. Wymaga to również zintegrowania z systemami informacyjno-rozrywkowymi, które łączą w sobie informacje, sterowanie oraz nawigację dla kierowcy. Jest to punkt, w którym nowe połączone cechy samochodów łączą się z tradycyjnymi opcjami osobistej rozrywki i interakcji człowieka z samochodem i niezwykle ważne jest zaprojektowanie tego interfejsu i doświadczenia w taki sposób, aby nie przytłoczyć kierowcy nadmierną złożonością aplikacji, która może powodować wypadki.

Integracja tych wszystkich wymiarów bez narażania kluczowych funkcji każdego systemu lub kwestii związanych z bezpieczeństwem, jest poważnym wyzwaniem dla inżynierii oprogramowania.

Samochody może kiedyś zaczynały jako urządzenia mechaniczne, ale teraz są one bardzo złożonymi kompilacjami oprogramowania z milionami linii kodu, które dodatkowo mają również koła. Niewiele innych systemów wymaga tyle samo oprogramowania, co samochód lub ciężarówka; w samochodzie znajdziemy więcej kodów niż w myśliwcu odrzutowym. Obecnie, do 90% z 500 000 różnych wymogów dla nowych samochodów nie dotyczy w ogóle mechaniki, tylko kwestii związanych z elektroniką i oprogramowaniem. Kody nie są pisane w celu zbudowania pojedynczego pojazdu; pomimo że przemysł samochodowy przełączył się do wspólnych platform współdzielonych pomiędzy różnymi modelami, to nadal istnieją dziesiątki lub nawet setki wariantów dla poszczególnych platform samochodowych. Oznacza to, że nie można ich już traktować jako zbiór systemów mechanicznych, dla których wykonuje się oddzielnie prototyp i projekt, a następnie łączy ze sobą w ostatnim etapie integracji; należy wymodelować, stworzyć, przetestować i zatwierdzić systemy fizyczne w programie za pomocą symulacji, w tandemie z oprogramowaniem, które łączy je ze sobą i kontroluje.

Rozwój oprogramowania to tylko jeden etap w procesie, który zaczyna się od planowania ogólnej architektury, projektowania systemu i definiowania elementów w systemie. Oprogramowanie i sprzęt nie mogą być zróżnicowane i fragmentaryczne; muszą być rozwijane równolegle, w silnej integracji pomiędzy komponentami mechanicznymi i elektrycznymi oraz modelami oprogramowania, które składają się na ogólny system w całym procesie rozwoju w taki sposób, aby umożliwić zatwierdzenie ich razem. Rozwój na bazie modelu oznacza, że systemy inżynieryjne oraz to, co dzieje się w oddzielnych domenach, takich jak układ napędowy, systemy bezpieczeństwa i systemy informacyjno-rozrywkowe, musi być teraz zastosowane we wszystkich tych dziedzinach.

Nowe pojazdy łączą w sobie systemy mechaniczne i elektryczne, do których już przywykliśmy, z narzędziami Zarządzania Cyklem Życia Produktu oraz oprogramowaniem i systemami elektrycznymi wspieranymi przez narzędzia Aplikacji Zarządzania Cyklem Życia Produktu. Skuteczna realizacja nowych pojazdów według harmonogramów wymaganych przez klienta, bez kompromisów w zakresie bezpieczeństwa i innowacji, wymaga narzędzi, które integrują i łączą te światy ze sobą oraz wspierają najlepsze praktyki.

Posiadając liczne zespoły programistów pracujących nad logiką i kodowaniem wielu systemów, konieczny jest jasny podział odpowiedzialności za te wszystkie systemy, jak na przykład rozwój skali i testów regresyjnych, które są wymagane, aby upewnić się, że żadna z wprowadzonych zmian nie niesie za sobą niebezpiecznych skutków ubocznych. Jeśli chodzi o wydajność, wymagana może być automatyzacja z ciągłą integracją w celu potwierdzenia ogólnego bezpieczeństwa kodu we wszystkich wariantach budowanej platformy pojazdu. Wydajność nie uległa jednak pogorszeniu w związku ze zmianami. Musi istnieć możliwość powrotu i ustalenia w dowolnym momencie, kto zatwierdził projekt, która kombinacja składników była testowana razem lub w jaki sposób ustalono priorytety odnośnie do wszelkich wykrytych usterek, tak więc potrzebne są narzędzia, które dają pogląd we wszystkich systemach mechanicznych, elektrycznych i kontroli oprogramowania w pojeździe.

Aby nadążyć za tempem przemysłu, rozwój motoryzacji musi zawierać duże ilości symulacji, przechwytywania i odtwarzania danych z badań układów fizycznych, aby zatwierdzić każdą zmianę oprogramowania w sposób, który umożliwia kompatybilność i pozwala na ponowne wykorzystanie w szerszej gamie samochodów, platform pojazdów i wariantów. Dla autonomicznych pojazdów i systemów wspomagających, gromadzenie danych i badania będą musiały obejmować wszystkie obszary, na których pojazdy będą działać, co może obejmować różne kultury jazdy, a także różne przepisy ruchu drogowego i bezpieczeństwa.

Większość wadliwych produktów w przemyśle samochodowym ma związek z oprogramowaniem, a nie sprzętem w samochodzie, więc zwiększenie jakości dzięki lepszej inżynierii oprogramowania jest konieczne, aby uniknąć kosztów finansowych oraz utraty reputacji przez producenta samochodów w związku z wycofaniem danego modelu z produkcji.

Testowanie, weryfikacja i zatwierdzanie tych modeli musi odbywać się w sposób zintegrowany, z pomocą narzędzi programistycznych, które integrują się z systemami PLM i same są zintegrowane w celu ułatwienia wizualizacji wymagań, specyfikacji i przepływu informacji pomiędzy różnymi modelami w ramach spójnego procesu, a nie szeregu oddzielnych etapów. Taki stan rzeczy musi mieć miejsce w całym procesie, począwszy od wykazania wykonalności koncepcji, aż po realizację i optymalizację całego systemu, a coraz częściej również aż do momentu wypuszczenia produktu na rynek.

I wszystko to trzeba wykonywać w coraz szybszym tempie.

1 2
KOMENTARZE (0)
Nieznajomy musisz być zalogowany aby dodać komentarz.
E-mail:
Hasło: