2008-09-27 17 views
12

Słyszałem, że przemysł motoryzacyjny ma coś, co nazywa MISRA C.Kodowanie dla wysokiej niezawodności/dostępności/bezpieczeństwa - jakie standardy czytam?

Jakie są odpowiednie standardy dla innych branż wysoka niezawodność/dostępność/bezpieczeństwa, takie jak

  • Przestrzeń
  • Samoloty
  • Bankowość/finansowy
  • Automotive
  • Medical
  • Obrona/Wojsko
  • ???

-Adam

+0

To trochę ogólne pytanie. A może coś bardziej konkretnego? Język? Platforma? Kraj (tj. Inny niż USA!) –

+0

Zadałem podobne pytanie jakiś czas temu i [to] (http://stackoverflow.com/questions/81832/what-is-the-best-resource-for-learning-about -safety-critical-systems-developmen # 81869) była jedyną odpowiedzią, którą otrzymałem. Jestem jednak bardzo zainteresowany, aby zobaczyć, co ludzie mają do powiedzenia. – mdec

Odpowiedz

6

Sprawdź Centrum lotów kosmicznych Goddard i jego numer coding standards. Jednym ze standardów C, który wprowadziłem w moim własnym kodzie, jest to, że nagłówki muszą być samodzielne i zapewniają prosty sposób wymuszenia tego - nagłówek modułu musi być pierwszym plikiem zawartym w module, więc jeśli plik nie jest samowystarczalny, nie zostanie skompilowany.

+1

O Boże drogi. Kocham to. – TraumaPony

+0

Zobacz [Należy użyć '# include' w nagłówkach] (http://stackoverflow.com/questions/1804486/should-i-use-include-in-headers), aby uzyskać informacje o bieżącej lokalizacji kodu GSFC dla C . –

4

jeśli pytasz konkretnie o kodowanie The MISRA przedstawia kilka wskazówek na unikanie typowych błędów w C

jednak jest dużo więcej do dobrego oprogramowania niż kodowania. "Biblią" przemysłu lotniczego dla rozwoju sw jest DO-178B. Mówi, jakie pytania należy rozwiązać na różnych etapach projektowania i jak należy udokumentować odpowiedzi. To ogromna ilość papierkowej roboty, ale jeśli próbujesz utrzymać samoloty w powietrzu, chcesz, aby najsłabszym punktem był człowiek (pilot), a nie oprogramowanie.

+0

Czy jest dostępny link do tego? –

+0

http://en.wikipedia.org/wiki/DO-178B – TraumaPony

2

Może być pouczające spojrzenie na niektóre wymagania Carrier Grade Linux. Podczas gdy oni (jak sama nazwa wskazuje!) Określają wymagania linuksowe, robią to w celu wykorzystania w segmencie telekomunikacyjnym wysokiej dostępności.

1

NIST dostarcza całą masę powiązanych dokumentów, możesz zanurkować i przejrzeć ich pracę - ale jest ich dużo i wszystko jest dość gadatliwe, więc nie mam konkretnego, który by ci wskazywał.
Jeśli chcesz być bardziej konkretny w stosunku do swoich potrzeb, być może uda mi się go nieco zawęzić ...

Co więcej, Carnegie Mellon jest niezawodny pod względem niezawodności i łatwości projektowania. wystarczy, aby znaleźć swoje standardy, ale także dość szczegółowe.

Ponadto, określone branże często mają swoje własne standardy, w zależności także od kraju. Na przykład przemysł kart kredytowych - PCI-DSS; Branża bankowa w UE - Basel II; Medyczne - HIPAA (choć to dość wysoki poziom); cokolwiek związanego z rządem USA, różne dokumenty NIST; itp.

3

do programowania systemów wysokiej niezawodności w Ada istnieje: ISO/IEC TR 15942:"Information technology — Programming languages — Guide for the use of the Ada programming language in high integrity systems":

Wprowadzenie

Jako społeczeństwo jesteśmy coraz uzależniony od wysokich systemów integralności: dla systemów bezpieczeństwa (takich jako samoloty typu fly-by-wire), dla systemów zabezpieczeń (dla ochrony informacji cyfrowych ) lub dla systemów finansowych (e. bankomaty). Wraz ze wzrostem złożoności tych systemów, tak spełnia wymagania dla ulepszonych technik wytwarzania komponentów oprogramowania. Te wysokie systemy integralności muszą być przedstawione jako w pełni przewidywalne w działaniu, a mają wszystkie właściwości wymagane od nich. Można to osiągnąć tylko za pomocą analizy oprogramowania, a ponadto przy użyciu standardowego testu dynamicznego . Obecnie nie ma języka głównego wysokiego poziomu, gdzie wszystkie programy w tym języku mają wartość gwarantowaną możliwą do przewidzenia i można analizować i można uzyskać . Dlatego dla każdego wyboru języka implementacji niezbędna jest kontrola sposobu, w jaki aplikacja używa języka . Język Ada [ARM] został zaprojektowany z określonymi mechanizmami dla kontrolowania używania niektórych aspektów języka . Ponadto

  1. Semantyka programów Ada są dobrze zdefiniowane, nawet w błędach sytuacjach. W szczególności efekt programu można przewidzieć na podstawie definicji języka z kilkoma zależnościami implementacyjnymi lub interakcjami między językami funkcji między językami .

  2. Silny wpisując w języku może być stosowany w celu zmniejszenia zakresu (i koszt) analizy w celu sprawdzenia kluczowych właściwości.

  3. Język Ada został z powodzeniem zastosowany w wielu aplikacjach o wysokiej wiarygodności . Ten pokazuje, że sprawdzone kompilatory Ada mają wymaganą jakość dla takich aplikacji.

  4. Można podać wskazówki ułatwiające korzystanie z języka i , aby zachęcić do opracowania narzędzi w celu dalszej weryfikacji.

Ada dlatego idealnie nadaje się do wdrażającej oprogramowanie wysokiej integralności i ten dokument zawiera wytyczne w kontrole, które są wymagane na wykorzystania Ada aby upewnić się, że programy są przewidywalne i przeanalizowania.