Programowanie systemów dla wojska

0

Hello

Takie pytanie, na które ostatnio szukam odpowiedzi:
gdzie znaleźć jakieś informacje/wytyczne odnośnie programowania systemów dla wojska, konkretnie chodzi o elementy safety-critical (awionika, sterowanie uzbrojeniem, apratura medyczna, roboty bojowe etc)? Czym różni się Project Management w takich projektach oraz cała architektura systemów i proces ich powstawania od naszej codziennej działalności w branży?

Wiem, że istnieją opracowane standardy bezpieczeństwa, które musi spełniać orpogramowanie z danej kategorii, jednak nigdzie nie moge jakoś wyszukać książek czy artykułów jak wygląda tworzenie zgodnego z nimi softu. Ogólnie patrzyłem na wytyczne obowiązujące w NATO, jednak nie wiem czy standardy te są powszechnie obowiązujące czy kraje członkowskie mają wolną rekę do opracowywania swoich wariantów - w końcu firmy biorące udział w przetargach na uzbrojenie muszą jakichś wytycznych się trzymać przecież

Sprawa jest o tyle ciekawa, że w przeciwieństwie do większości codziennych aplikacji (nietrudno się domyślić zresztą) chodzi tu o 100% niezawodność tworzonego do tych celów oprogramowania przy zachowaniu pełnej przejrzystości ("analizowalności"?) kodu, co więcej umożliwienie nieustannego poszerzania funkcjonalności przy minimum ingerencji z wcześniejszymi, sprawdzonymi modułami.
Zapewne nie różni się to zbytnio od tworzenia softu do urządzeń szpitalnych, chociaż zastosowania militarne prawdopodobnie determinują przestrzeganie surowszych wymogów bezpieczeństwa.

Byłby ktoś w stanie naświetlić troche to zagadnienie? Ew. polecić jakiś materiał do poczytania?

ktoś orientuje się, jaka platforma programistyczna obecnie prowadzi w tym sektorze? (ADA już wyszło z użycia, a o A# specjalnie dużo nie piszą)

Pozdr :d

0

W niektórych najnowocześniejszych, superważnych projektach używa się... C++. Ale z bardzo silnymi zasadami odnośnie jakości kodu. W zasadzie wychodzi z tego podzbiór C++. Zależy to od konkretnego projektu, choć niektóre reguły lubią się powtarzać. I tak całkowicie zabrania się (!) używania dynamicznie przydzielanej pamięci. Albo używania wyjątków (ze względu na brak odpowiednich narzędzi -- może teraz już tego nie ma).

Myślę, że w dużym stopniu zadowoli Cię cokolwiek słynny dokument omawiający standardy kodowania dla projektu JSF. JSF to Joint Strike Fighter. Czyli F-35, jeden z najlepszych samolotów na świecie. Soft dla myśliwca został napisany w C++, a standardy kodowania pomagał tworzyć sam Bjarne. Dla mnie ten dokumencik to rewelacja i źródło wielu wskazówek. Zarówno dotyczących pisania programów, jak i... tworzenia dokumentacji standardu kodowania (można się wzorować na tym dokumencie).

0

Streszczając - sprowadzili C++ do formy Cobola ze śmieszniejszą składnią, wprowadzili podobne ograniczenia. Jak dla mnie to chory żart...

Do dziś używa się pochodnej ADy - Sparka. Bardzo fajna zabawka, szczególnie dla osób lubiących metody formalne.

0

No to wiemy, że rzeczy, które Świętowit uważa za "chore żarty", walnie przyczyniają się do powstania najlepszych myśliwców na świecie ;).

Awionika i soft są mocną stroną F-35. W wersji pionowego startu automatycznie stabilizują samolot, sprawiając, że np. zawis jest bardzo prosty. W przypadku Harrierów manewrowanie z dyszami ustawionymi pionowo było, dla kontrastu, ekstremalnie trudne. Nie wiem, czy używają już tego rutynowo, ale dostępny jest hełm, który -- po sprzężeniu z awioniką samolotu -- pozwala pilotowi "widzieć" przez podłogę. Wyświetlacz na szybie hełmu zastępuje klasyczny HUD. Przy okazji, awionika F-35 pozwala na niemożliwe dotąd manewry taktyczne, np. odpalanie rakiet do celów pod sporym kątem.

Albo dookólny system zobrazowania w podczerwieni. Kilka sensorów rozmieszczonych jest wokół samolotu. Każdy z nich patrzy w podczerwieni w innym kierunku. W sumie obejmują całą sferę wokół samolotu. Soft łączy obrazy z tych sensorów w całość. Potrafi wykryć np. odpalenie rakiety z ziemi. Powiadamia pilota, przewiduje nawet który z samolotów w formacji jest celem ataku. Radar mógłby tego nie zauważyć, bo obserwuje tylko wycinek przestrzeni wokół samolotu. Ostrzegacze radarowe z kolei nie wykryłyby rakiet naprowadzanych na podczerwień. Nowa awionika ma wykrywać wszystko.

Wspominałem już, że -- w dużej części dzięki nowej awionice -- F-35 może np. strzelić rakietą za siebie?

To nie są opcje dostępne w standardzie w pierwszym lepszym samolocie. F-35 to maszyna z górnej półki!

Nie wiadomo jeszcze jak to się sprawdzi w walce, ale póki co nie ma powodów by sądzić, że będzie to działało gorzej niż inne przydatne nowinki zaraz po ich wprowadzeniu.

Także wygląda na to, że to, co Świętowit uważa za "chore żarty", jest wyrąbanym w kosmos softem w danej klasie (lub zasadami tworzenia takiego softu, zależnie od tego jak interpretować wypowiedź Świętowita :P). IMO, jeśli to wszystko się sprawdzi w warunkach bojowych (naturalnie po jakimś czasie eksploatacji i nanoszeniu poprawek), to będzie mały tryumf programistów w sztuce wojennej.

@Świętowit:
Ten Spark wygląda bardzo ciekawie!

0
bswierczynski napisał(a)

Awionika i soft są mocną stroną F-35. W wersji pionowego startu automatycznie stabilizują samolot, sprawiając, że np. zawis jest bardzo prosty. W przypadku Harrierów manewrowanie z dyszami ustawionymi pionowo było, dla kontrastu, ekstremalnie trudne. Nie wiem, czy używają już tego rutynowo, ale dostępny jest hełm, który -- po sprzężeniu z awioniką samolotu -- pozwala pilotowi "widzieć" przez podłogę. Wyświetlacz na szybie hełmu zastępuje klasyczny HUD.

F-35 jest rozwijany nadal, ma nadal dopieszczaną awionikę. Harrier, jako konstrukcja, ma przeszło 40 lat, Harrier II 30. Zdajesz sobie sprawę jak wielki postęp w elektronice przez te lata zaszedł? Harriera ogranicza wiele koncepcji wynikających ze słabości ówczesnej elektroniki, m.in. jej mocy obliczeniowej. Tylko mi nie mów, że 'efekty specjalne' w nowoczesnych myśliwcach zawdzięczamy C++ :P

bswierczynski napisał(a)

Także wygląda na to, że to, co Świętowit uważa za "chore żarty", jest wyrąbanym w kosmos softem w danej klasie (lub zasadami tworzenia takiego softu, zależnie od tego jak interpretować wypowiedź Świętowita :P).

@Świętowit:
Ten Spark wygląda bardzo ciekawie!

Wiesz, w Cobolu, Fortranie (chociaż jemu tak wiele do zarzucenia nie mam) czy Visual Basicu też powstało sporo fantastycznego oprogramowania. Wiele poważnego softu webowego w PHP (interpretowanym odpowiedniku C++) ma się naprawdę nieźle, o czym oczywiście wiesz. W praktycznie każdym języku da się tworzyć bezpieczne oprogramowanie wysokiej jakości, za co niestety trzeba czasem płacić wysoką cenę. Po prostu w C++ (nawet mocno obciętym) trzeba na cholerną ilość rzeczy uważać, nadrabiać dziesiątki błędów projektowych i niedostatków języka żeby jakoś kodu zachować.

Weźmie się świetnych designerów, programistów etc. to język ma drugorzędne znaczenie. W każdym razie istnieje sporo projektowanych do poważnych zastosowań, z imperatywnych chociażby wspomniany Spark, z funkcyjnych Erlang. Wybór czegoś niskopoziomowego z wysokopoziomowymi aspiracjami do rzeczy krytycznych jest ryzykowny, zwyczajnie zbyt wiele rzeczy można spierniczyć.

Tak patrząc z boku to wygląda jakbym toczył krucjatę przeciwko C++, a tak nie jest... póki co.

0

Co bardziej skomplikowane systemy wbudowane składają się z części wykonawczych (np. moduły do odbierania i wysyłania sygnałów) i z części sterujących, które określają logikę urządzenia. Części wykonawcze są to zazwyczaj niskopoziomowe drajwery, oraz moduły, które obrabiają dane dla systemu zajmujących się logiką aplikacji. Te części są zazwyczaj pisane w C/C++ z domieszkami assemblera i to się raczej w najbliższej przyszłości nie zmieni.
Natomiast system sterujący jest to dosyć wysokopoziomowa aplikacja i do jej stworzenia wykorzystuje się [zazwyczaj] coś bardziej odpowiedniego niż C++. Przykładem takiego języka używanego do sterowania w awionice jest Esterel. NASA do oprogramowania logiki łazików wykorzystywała dialekt LISPa.

0
Świętowit napisał(a)

Streszczając - sprowadzili C++ do formy Cobola ze śmieszniejszą składnią, wprowadzili podobne ograniczenia. Jak dla mnie to chory żart...

wiesz.. jezyk to nie sluzy do tego zeby byl "fajny" czy zeby sie "milo w nim pisalo" tylko ma w nim powstac cos co bedzie na 100% dzialalo bo w gre wchodzi zycie ludzkie :P

wracajac do tematu, to moze znajdziesz cos w literaturze dotyczacej programowania pod RTOS

0
Świętowit napisał(a)

Harriera ogranicza wiele koncepcji wynikających ze słabości ówczesnej elektroniki, m.in. jej mocy obliczeniowej.

Dokładnie. W ogóle teraz informatyka pełni ogromną rolę w amerykańskim wojsku. Ciągle pracują nad zintegrowanym systemem wymiany informacji na polu walki. Dzięki niemu, wlatujący po zboczu wzgórza śmigłowiec będzie mógł wyszukać znajdujące się w pobliżu klasyczne samoloty, UAV, a nawet pojedynczych żołnierzy, i automatycznie uzyskać z nich informacje na temat sytuacji taktycznej po drugiej stronie szczytu. To może mieć ogromne znaczenie, podobnie jak odpalanie rakiet do tyłu, widzenie przez podłogę kokpitu itd. W przypadku pionowego lądowania, stabilizacja powinna znacznie podnieść poziom bezpieczeństwa

Zobaczymy jak te hity sprawdzą się w warunkach bojowych, po wdrożeniu. Ale historia uczy, że sporo z tych nowinek staje się standardem. Bo są skuteczne. Niedawno przecież krążownik rakietowy systemu Aegis zniszczył rakietą satelitę, który niby wyrwał się spod kontroli. Przechwycenie nastąpiło na 240 km. Równie dobrze zamiast satelity mógłby tam być pocisk balistyczny. Tu też spore znaczenie miały systemy informatyczne. Rakiety używane przez te krążowniki niszczą cel swoją energią kinetyczną, tj. muszą się z nim zderzyć przy prędkości 28 000 km/h. Nie chcesz mieć tu zbyt wielu błędów numerycznych ;).

Świętowit napisał(a)

Tylko mi nie mów, że 'efekty specjalne' w nowoczesnych myśliwcach zawdzięczamy C++

Jak zapewne zauważyłeś, starannie unikałem takiej wypowiedzi :P. Niemniej jednak twórcy softu dla F-35 wybrali C++. Pytanie brzmi, co o tym wyborze sądzą poszczególni programiści. Tego się pewnie nigdy nie dowiemy.

Świętowit napisał(a)

W praktycznie każdym języku da się tworzyć bezpieczne oprogramowanie wysokiej jakości [...] Weźmie się świetnych designerów, programistów etc. to język ma drugorzędne znaczenie

To fakt, choć użycie właściwego języka do właściwego celu zdecydowanie się opłaca. Ci kolesie co "napisali F-35" ;) na pewno wiedzieli co robią i nie byli "klepaczami kodu". Dobry programista potrafi jednak dokonać właściwego doboru języka. Czy ci tutaj wzięli C++, bo w nim byli superdobrzy, żadnego innego nie znali, a chcieli koniecznie zgarnąć ten projekt? Czy ktoś z Ministerstwa miał zadzwonić do jakiegoś uber-przypakowanego speca od języków i zadzwonił akurat do Bjarne'a, który oczywiście polecił C++? Czy może faktycznie im wyszło, że C++ się będzie lepiej nadawał niż inne języki?

Świętowit napisał(a)

[...] po prostu w C++ (nawet mocno obciętym) trzeba na cholerną ilość rzeczy uważać [...] Tak patrząc z boku to wygląda jakbym toczył krucjatę przeciwko C++, a tak nie jest... póki co.

W tej Twojej krucjacie, która krucjatą jeszcze nie jest, zgadzamy się w paru sprawach dotyczących C++. Ja tam staram się walczyć/ostrzegać ludzi przed stwierdzeniami typu "C++ nie jest trudny". W porównaniu do czego? Nauka całego C++ nie jest trudna w porównaniu ze zbudowaniem rakiety kosmicznej w pojedynkę? OK, tak można powiedzieć. Ale w porównaniu z innymi językami, C++ ma tyle "bajerów", zawiłości, tyle niezdefiniowanych zachowań i dziwadeł, że... szkoda gadać.

Niemniej jednak uważam, że przy dużej dozie samodyscypliny, egzekwując zasady podobne do tych z programu JSF, można uzyskać czytelny, dobry kod. Taki, w którym nawet wiadomo o co chodzi gdy się na niego spojrzy.

O ile rozumiem, Ty uważasz, że nawet wtedy korzystanie z C++ jest bez sensu i że lepiej po prostu wziąć inny język. Prawdopodobnie masz ode mnie w CPP o wiele większe doświadczenie, więc pozostaje mi tylko... może nie od razu potraktować to jako bezwzględną prawdę, ale jako ważną opinię.

Świętowit napisał(a)

Wybór czegoś niskopoziomowego z wysokopoziomowymi aspiracjami do rzeczy krytycznych jest ryzykowny, zwyczajnie zbyt wiele rzeczy można spierniczyć.

Bjarne mówi, że to siła C++. Ja twierdzę podobnie jak Ty. C++ obsługuje różne paradygmaty i jest bardzo potężny, ale... W porównaniu do innych języków, daje programiście ogromną liczbę możliwości strzelenia sobie w stopę. Na różne sposoby. I to tak, że strzał oderwałby nam nie tylko stopę, ale całą nogę. Gdzieś tak od szyi w dół.

0

hello ponownie, wybaczcie, ze chwile mnie nie bylo.

bswierczynski - swietny ten dokument, nie spodziewalem sie zeby ktos publikowal takie reczy gdziekolwiek a tu prosze. znam projekt JSF, kawal urzadzenia, aczkolwiek ciekawe jak wypada porownanie F-35 vs Eurofighter.
co do zastosowania domyslam sie ze jego powszechnosc oraz sprawdzonosc miala glowny wplyw na wybor (ale tak jak to zostalo wspomniane, bycmoze po prostu spytano pierwszego z brzegu eksperta by sie wypowiedzial - Bjarne'a - i na tym sie skonczylo). Masa stworzonych zasad na potrzeby tego projektu wydaje sie bardzo zdrowo-rozsadkowa. Ale pisanie wlasnych funkcji matematycznych? wow

z drugiej strony nowoczesne jezyki sharp oferuja bardzo wysoki poziom bezpieczenstwa kodu (przynajmniej tego nowo pisanego) oraz jego przejrzystosc , ale prawdopodobnie narzut zwiazany z samym .NET'em jest nie do zaakaceptowania, a fakt ze dotnet jest platforma closed-source jeszcze bardziej go pograza (chociaz kto wie, moze MS wspolpracuje blizej z tworcami takiego oprogramowania, udostepniajac kody modulow do analizy)

0
Świętowit napisał(a)

Streszczając - sprowadzili C++ do formy Cobola ze śmieszniejszą składnią, wprowadzili podobne ograniczenia. Jak dla mnie to chory żart...

Do dziś używa się pochodnej ADy - Sparka. Bardzo fajna zabawka, szczególnie dla osób lubiących metody formalne.

Z tego co rozumiem, SPARK to obciachana Ada z restrykcjami, tak jak obciachano C++.
Dlaczego faworyzujesz restrykcje Ady a krytykujesz restrykcje w C++?

0

znam projekt JSF, kawal urzadzenia, aczkolwiek ciekawe jak wypada porownanie F-35 vs Eurofighter.

Porównanie oprogramowania czy porównanie samolotów? F-35 to zupełnie inny typ samolotu niż Eurofighter Typhoon, więc trudno porównać. Z tego co pamiętam to F-35 dopiero zaczęto projektować już po oblataniu Typhoona, więc siłą rzeczy musi mieć nowsze rozwiązania.
Trudno też cokolwiek porównywać, bo jak dotąd F-35 nie uzyskał sprawności bojowej ;-)

a fakt ze dotnet jest platforma closed-source jeszcze bardziej go pograza

Kod źródłowy .NET Frameworka dostępny jest na licencji MS-RL. Można przejrzeć. Plus dla wojska, rządu i innych instytucji był dostępny już wcześniej.

0
Azarien napisał(a)

Dlaczego faworyzujesz restrykcje Ady a krytykujesz restrykcje w C++?

Dlatego, że Spark to więcej niż obcięta ADA, poza tym wprowadzone do języka zmiany są naprawdę przemyślane.

1 użytkowników online, w tym zalogowanych: 0, gości: 1