Inżynieria oprogramowania wbudowanego
Termin osadzone inżynierii oprogramowania składa się z warunkami systemów wbudowanych (niemiecki „ systemów wbudowanych «) oraz inżynierii oprogramowania (niemiecki» technologii oprogramowania ”). System wbudowany to binarny system cyfrowy (system komputerowy), który jest osadzony w otaczającym systemie technicznym i współdziała z nim. Zadaniem systemu komputerowego jest kontrolowanie, regulowanie lub monitorowanie systemu, w którym jest osadzony. Inżynieria oprogramowania zajmuje się wytwarzaniem oprogramowania, czyli tworzeniem i obsługą programów oraz organizacją i modelowaniem związanych z nimi struktur danych.
Cechą szczególną systemów wbudowanych jest ich zdolność jako „uniwersalnego integratora systemów”. Systemy techniczne składają się z oddziałujących na siebie komponentów. Duża liczba komponentów, rosnąca złożoność poszczególnych komponentów i całego systemu oraz, co nie mniej ważne, wymagania stale ulepszanych systemów sprawiają, że konieczne jest wyposażanie poszczególnych komponentów i interakcji w coraz więcej funkcji.
Wyzwania inżynierii oprogramowania wbudowanego
Tworząc oprogramowanie dla systemów wbudowanych, programiści stają przed specjalnymi warunkami brzegowymi, które muszą być spełnione dla prawidłowego funkcjonowania. Obejmuje to sprzężenie z procesami fizycznymi, związane z nimi wymagania dotyczące niezawodności i rosnącą liczbę rozproszonych systemów o wysokiej dynamice.
Sprzężenie z procesami fizycznymi
Fizyczne procesy, z którymi połączone są systemy wbudowane i których interakcjami ma się zająć oprogramowanie, zmuszają system do przyjęcia predefiniowanego zachowania czasowego. Ponieważ sekwencje czasowe nie mogą być zmieniane, na przykład w przypadku sterowanych silników, system wbudowany musi działać w czasie rzeczywistym , czyli jego zachowanie w czasie musi być dostosowane do otaczającego systemu technicznego. Rozróżnia się twarde i miękkie zachowanie w czasie rzeczywistym. Rozróżnienie jest dokonywane wyłącznie na podstawie konsekwencji, jakie może spowodować niewłaściwe postępowanie w czasie: Jeśli niewłaściwe postępowanie stanowi zagrożenie dla ludzi i / lub materiałów, nie może ono wystąpić, a system musi spełniać warunki czasowe we wszystkich okolicznościach. Nazywa się to twardym systemem czasu rzeczywistego. Jeśli nieprawidłowe zachowanie powoduje jedynie obniżenie jakości, określa się je jako miękki system czasu rzeczywistego. Inne adaptacje systemu fizycznego mogą odnosić się na przykład do maksymalnej dopuszczalnej utraty mocy, na przykład z powodu maksymalnej dostępnej mocy elektrycznej lub ograniczenia wytwarzanego ciepła lub średniego zużycia energii. W przypadku urządzeń zasilanych bateryjnie, na przykład, średnie zużycie energii determinuje czas użytkowania. Dostosowanie wartości elektrycznych można zwykle osiągnąć tylko poprzez wspólną inżynierię sprzętu i oprogramowania (współprojektowanie).
Wymagania dotyczące niezawodności
Wymagania dotyczące niezawodności stawiane systemom wbudowanym dotyczą w szczególności jakości sprzętu i oprogramowania. Jakość oprogramowania to całość cech i charakterystycznych wartości produktu programowego, które odnoszą się do jego przydatności do spełnienia określonych lub założonych wymagań. Cechy obejmują funkcjonalność, niezawodność, użyteczność, wydajność, zmienność i możliwość przenoszenia. Niezawodność (angielski niezawodność ) zdefiniowana jest tutaj jako prawdopodobieństwo, że określona funkcja system jest w pełni osiągnięty w określonym terminie i na podstawie przewidywanych warunkach pracy, czyli jest nienaruszona i nie ma awarii systemu. W przypadku błędów lub wadliwych działań, które zmniejszają niezawodność, należy dokonać rozróżnienia między błędnym działaniem ( błąd angielski ), które prowadzi do późniejszego błędu, wadliwą lokalizacją w urządzeniu lub kodzie programu, znaną również jako błąd wewnętrzny ( English error ) i faktyczne niewłaściwe zachowanie, określane również jako efekt awarii lub awaria zewnętrzna (angielska awaria ), można wyróżnić. Wskaźnik błędów zewnętrznych jest mierzony w FIT ( Awaria w czasie , liczba błędów występujących na 10 9 godzin pracy). Błędy powodowane przez oprogramowanie przekraczają szybkość sprzętową bez specjalnych środków o około 100 do 1000. Jednym z głównych zadań inżynierii oprogramowania wbudowanego jest zmniejszenie tego wskaźnika do wymaganych wartości.
Systemy rozproszone o wysokiej dynamice
Wraz z rosnącą liczbą systemów liczba (niezależnych) elementów elektronicznych jest bardzo duża, od kilku 100 do ponad 1000 elementów. Opracowania, takie jak inteligentne czujniki (czujniki z wbudowanym przetwarzaniem wstępnym, np. przez mikroprocesory) lub MEMS (system mikroelektromechaniczny) pokazują, że penetracja procesu fizycznego elementami elektronicznymi do pomiaru, sterowania i regulacji może być bardzo proces / przetwarzanie informacji nie może być więcej może być utrzymane. Problemy w rozwoju oprogramowania takich systemów mogą być reprezentowane przez dwie najczęściej wymagane właściwości: z jednej strony taka aplikacja rozproszona powinna być solidna, niezawodna i działać w czasie rzeczywistym, z drugiej strony aplikacja rozproszona działa na wysokim poziomie stopień równoległy, a cały system jest zwykle również dynamiczny, co oznacza, że aplikacja musi dostosowywać się do zmieniających się warunków. Szczególnym wyzwaniem jest połączenie dystrybucji, niezawodności i dynamicznej adaptacji.
Podejścia do inżynierii oprogramowania wbudowanego
Oprócz poprawności algorytmicznej aplikacji, w przypadku aplikacji wbudowanych musi być zwykle spełniony jeden lub więcej innych warunków. Oprócz podstawowych zasad inżynierii oprogramowania, które są również stosowane w obszarze systemów wbudowanych, można zastosować dodatkowe metody, aby spełnić te warunki. Metody projektowania różnią się w zależności od warunku, który ma być spełniony.
Model referencyjny dla systemów wbudowanych
Rysunek 1 przedstawia ogólny model referencyjny nierozproszonego systemu wbudowanego. Charakterystyczne jest silne wiązanie zewnętrzne za pomocą siłowników i czujników; stanowią one zasadnicze połączenie ze środowiskiem technicznym, w którym system jest osadzony. Interfejs użytkownika można pominąć, w tym przypadku jest to system głęboko osadzony. Architektura referencyjna pokazuje, że aplikacje wbudowane mają silną więź wejścia/wyjścia (I/O). W związku z tym sprzęt i oprogramowanie są zaprojektowane tak, aby silnie dominowały we/wy.
Metody projektowania, aby spełnić wymagania czasowe
Zdolność aplikacji do pracy w czasie rzeczywistym jest najczęstszym warunkiem, który musi zostać spełniony. Zdolność do pracy w czasie rzeczywistym odnosi się do modelu referencyjnego z rysunku 1, co oznacza, że system generalnie musi odpowiednio wcześnie reagować na zdarzenia zewnętrzne. Terminowość polega na określeniu maksymalnego czasu po wystąpieniu zdarzenia, w którym musiała nastąpić reakcja, a ewentualnie także minimalnego czasu po zdarzeniu, przed którym reakcja nie może nastąpić. To ostatnie jest konieczne, na przykład, jeśli kilka reakcji musi zachodzić jednocześnie w możliwie rozproszonym zastosowaniu.
Czasowy projekt
Aby ustalić sprzężenie między zdarzeniami środowiskowymi a systemem wbudowanym, dostępne są dwie metody: projektowanie sterowane czasem i projektowanie sterowane zdarzeniami. Projekt wyzwalany czasowo zakłada, że istnieje w większości okresowo nazywana część oprogramowania, w której określa się występowanie zdarzeń. Implementacja może mieć miejsce, na przykład, za pomocą żądania przerwania (IRQ) wyzwalanego okresowo przez zegar ze skojarzoną procedurą obsługi przerwań (ISR). Ta cykliczna część określa obecność zdarzeń i rozpoczyna odpowiednią procedurę reakcji. Czas cyklu jest oparty na wymaganym maksymalnym czasie odpowiedzi na to zdarzenie i inne czasy w systemie. Ta metodologia projektowania daje w rezultacie projekt statyczny, w którym wszystkie czynności mające na celu czas kompilacji (ang. compile time) muszą być znane. Zdolność tego projektu do pracy w czasie rzeczywistym można udowodnić, jeśli znane są wszystkie maksymalne czasy przetwarzania (czas wykonania najgorszego przypadku w języku angielskim, WCET ) i wszystkie maksymalne czasy bez przerw (czas wyłączenia przerwania najgorszego przypadku w języku angielskim, WCIDT).
Projekt oparty na wydarzeniach
W projekcie wyzwalanym zdarzeniami same zdarzenia otrzymują żądanie przerwania. Oznacza to, że powiązane procedury obsługi muszą przynajmniej częściowo być zaprojektowane jako procedury obsługi przerwań, a system zarządzania priorytetami przerwań musi regulować priorytety, gdy występują w tym samym czasie. Cały system jest najwyraźniej mniej obciążony, ponieważ obsługa zdarzeń jest wywoływana tylko wtedy, gdy coś jest rzeczywiście obecne. Jednak sam system nie może być zaprojektowany tak, aby był słabszy niż projekt sterowany czasem, ponieważ musi być zagwarantowana zdolność do pracy w czasie rzeczywistym. Projekt systemu (twardego) systemu czasu rzeczywistego musi zawsze uwzględniać maksymalne obciążenie, a nie średnie. Innym negatywnym aspektem projektu opartego na zdarzeniach jest to, że maksymalna zdefiniowana częstość zdarzeń nie musi być przestrzegana automatycznie. Dodatkowe środki sprzętowe są wymagane, jeśli - na przykład z powodu odbijania przełączników lub podprocesów, które działają poza specyfikacją - można przekroczyć zakładaną częstotliwość zdarzeń w celu utrzymania funkcjonalności aplikacji.
Metodologia projektowania dla rozproszonych systemów wbudowanych z możliwością pracy w czasie rzeczywistym
Projekt czasowy można uogólnić w taki sposób, że wybierany jest projekt systemu synchronicznego. Taka konstrukcja systemu odpowiada najszerzej stosowanemu modelowi sprzętu cyfrowego: obliczenia są przeprowadzane przez (asynchroniczną) sieć przełączającą i przechowywane w przerzutnikach na koniec cyklu zegara. W zastosowaniu do projektowania oprogramowania oznacza to, że obliczenia algorytmiczne i komunikacja (przed lub po obliczeniach) odbywają się w założonym okresie czasu, a na koniec tego okresu wszystkie wyniki są zapisywane jako dane wejściowe dla kolejnego okresu czasu. Metodologia projektowania synchronicznego daje w rezultacie architekturę systemu, która odpowiada architekturze złożonej, współpracującej maszyny. W przypadku systemów rozproszonych działających w czasie rzeczywistym, sam czas komunikacji musi być ograniczony, co gwarantują specjalne sieci (np. TTP/C, Time-Triggered Protocol Class C lub różne standardy Ethernet czasu rzeczywistego). W samym opracowaniu należy następnie udowodnić założenie, że przetwarzanie algorytmiczne odbywa się w określonym maksymalnym czasie ( wyznaczanie WCET ). Języki synchroniczne wspomagające rozwój to Esterel , Luster i Signal. Timing Definition Language (TDL) może być również używany do definiowania zachowania systemu w czasie, szczególnie w przypadku systemów rozproszonych .
Metody projektowania w celu spełnienia wymagań energetycznych
Istnieje stosunkowo niewiele metod opartych na oprogramowaniu, aby spełnić specyfikacje związane z energią lub utratą mocy. Wybór mikrokontrolera na podstawie jego właściwości energetycznych, a nawet zmiana innych programowalnych architektur, takich jak programowalne tablice bramek (FPGA), może mieć znacznie bardziej energooszczędny efekt niż czyste rozwiązania programowe. W ramach projektu oprogramowania można zastosować trzy metody w celu zmniejszenia zużycia energii i utraty mocy:
- Rzeczywisty czas działania programu w rozpatrywanej jednostce czasu jest tak zaprojektowany, aby był jak najmniejszy, a gdy procesor jest bezczynny, wybierany jest stan operacyjny „uśpiony” lub podobny. Ten stan pracy (sprzętu) charakteryzuje się tym, że wiele części procesora jest wyłączonych, co znacznie zmniejsza zużycie energii. O tym, jak bardzo można go wyłączyć i jak można wybudzić procesor, można decydować tylko indywidualnie i zależy od typu procesora, możliwości zaplanowania aplikacji i tak dalej.
- Inne podejście próbuje zaprojektować program w taki sposób, aby czasy bezczynności, które są jak najbardziej równe (na jednostkę czasu rozpatrywaną), były uzyskiwane przy przestrzeganiu wszystkich limitów czasowych. W drugim kroku częstotliwość taktowania procesora (a tym samym również napięcie robocze) można ustawić tak, aby nie było już żadnych przestojów. Zapewnia to jednolicie działającą konstrukcję ze zminimalizowanym rozpraszaniem mocy. Idealną jednostką czasu, której kolejność jest zoptymalizowana, jest superokres (= najmniejsza wspólna wielokrotność we wszystkich różnych sekwencjach okresowych w systemie), ale regulacja częstotliwości zegara musi być możliwa dla każdego indywidualnego okresu.
- Alternatywnie lub dodatkowo można zastosować wyspecjalizowane kompilatory , które dostarczają kod szczególnie korzystny pod względem energetycznym. Zapotrzebowanie na energię elektryczną dla różnych instrukcji jest różne, które można wykorzystać.
Indywidualne dowody
- ↑ Helmut Balzert: Podręcznik technologii oprogramowania. Tom 1: Rozwój oprogramowania. Spektrum Akademischer Verlag, Heidelberg 1996, 1998, 2001, ISBN 3-8274-0480-0 .
- ↑ Antonio González, Scott Mahlke, Shubu Mukherjee, Resit Sendag, Derek Chiou, Joshua J. Yi: Niezawodność: błąd czy rzeczywistość? W: IEEE Micro 24 (6), s. 36-45.
literatura
- Shankar Sastry, Janos Szipanovitis, Ruzena Bajcsy, Helen Gill: Modelowanie i projektowanie oprogramowania wbudowanego. W: Proceedings of the IEEE 91 (1), 2003, ISSN 0018-9219 .
- Christian Siemers: Trochę historii czasu. W: Elektronikpraxis 43, 2007, s. 42–43.
