MISRA C - MISRA C
MISRA C je sada pokynů pro vývoj softwaru pro programovací jazyk C vyvinutá The MISRA Consortium . Jeho cílem je zajistit bezpečnost , zabezpečení , přenositelnost a spolehlivost kódu v kontextu vestavěných systémů , konkrétně systémů naprogramovaných v ISO C / C90 / C99 .
Tento článek také neobsahuje sadu pokynů pro MISRA C ++.
Dějiny
- Předloha: 1997
- První vydání: 1998 (pravidla, povinné/poradenské)
- Druhé vydání: 2004 (pravidla, povinné/poradenské)
- Třetí vydání: 2012 (směrnice; pravidla, rozhodnutelné/nerozhodnutelné)
- Soulad s MISRA: 2016, aktualizováno 2020
U prvních dvou vydání MISRA-C (1998 a 2004) byly všechny Pokyny považovány za Pravidla. Vydáním MISRA C: 2012 byla zavedena nová kategorie pokynů - směrnice, jejíž shoda je otevřenější interpretaci nebo se týká procesních nebo procesních záležitostí.
Přijetí
Ačkoli byl původně speciálně zaměřen na automobilový průmysl, MISRA C se vyvinul jako široce přijímaný model osvědčených postupů předními vývojáři v sektorech včetně automobilového, leteckého, telekomunikačního, zdravotnického zařízení, obrany, železnice a dalších. Například:
- Joint Strike Fighter projekt C ++ Kódovací standardy jsou založeny na Misra-C: 1998.
- NASA Jet Propulsion Laboratory C Kódovací standardy jsou založeny na Misra-C: 2004.
-
ISO 26262 Funkční bezpečnost - Silniční vozidla uvádí MISRA C jako vhodnou podskupinu jazyka C:
- ISO 26262-6: 2011 Část 6: Vývoj produktu na softwarové úrovni cituje MISRA-C: 2004 a MISRA AC AGC.
- ISO 26262-6: 2018 Část 6: Vývoj produktu na softwarové úrovni cituje MISRA C: 2012.
- AUTOSAR Specifikace General Software (SRS_BSW_00007) rovněž cituje MISRA C:
- Obecná specifikace softwaru AUTOSAR 4.2 vyžaduje, že Pokud je implementace modulu BSW napsána v jazyce C, pak musí odpovídat standardu MISRA C: 2004.
- Obecná specifikace softwaru AUTOSAR 4.3 vyžaduje, že Pokud je implementace modulu BSW napsána v jazyce C, pak musí odpovídat standardu MISRA C: 2012.
Klasifikace a kategorizace pokynů
Když je spuštěn nový softwarový projekt, měl by být použit nejnovější standard MISRA. Předchozí standardy jsou stále k dispozici pro použití se staršími softwarovými projekty, které na ně musí odkazovat.
Klasifikace
Každý pokyn je klasifikován jako povinný (nový pro MISRA C: 2012), požadovaný nebo poradní . Kromě toho dokument MISRA o shodě umožňuje, že Poradní pokyny budou zrušeny .
- Vždy musí být dodrženy povinné pokyny
- Požadované pokyny musí být dodrženy, pokud nepodléhají odchylce
- Poradní pokyny jsou považovány za správnou praxi, ale dodržování předpisů je méně formální.
Kategorizace
Pravidla lze logicky rozdělit do několika kategorií:
- Vyhnete se možným rozdílům kompilátoru, například velikost C celého čísla se může lišit, ale INT16 je vždy 16 bitů. (C99 standardizováno na
int16_t
.) - Vyhnutí se používání funkcí a konstrukcí, které jsou například náchylné k selhání,
malloc
může selhat. - Produkujte udržovatelný a laditelný kód, například konvence pojmenování a komentáře.
- Pravidla osvědčených postupů.
- Omezení složitosti.
Rozsah
MISRA C: 2012 zvlášť klasifikuje každý směr buď jako jednotného překladatelského útvaru nebo systému .
Rozhodnutelnost
MISRA C: 2012 klasifikuje pravidly (ale ne směrnice ) jako rozhodnutelný nebo nerozhodnutelné .
Dosažení shody
Soulad s MISRA
Dokumenty publikované společností MISRA poskytují další pokyny k pochopení a dosažení souladu s MISRA.
- MISRA Compliance: 2016 , byla vydána společností MISRA v dubnu 2016.
- MISRA Compliance: 2020 , přepracované vydání, bylo vydáno v únoru 2020.
Dodržování
Aby mohl software prohlašovat, že je v souladu s pokyny MISRA C, musí být splněna všechna povinná pravidla a všechna požadovaná pravidla a směrnice musí být buď splněna, nebo podléhají formální odchylce. Poradní pravidla mohou být zrušena bez formální odchylky, ale toto by mělo být stále zaznamenáno v projektové dokumentaci.
Poznámka: Pro účely dodržování předpisů neexistuje žádný rozdíl mezi pravidly a směrnicemi .
Odchylky
Mnoho pravidel MISRA C lze charakterizovat jako směrnice, protože za určitých podmínek se softwaroví inženýři mohou od pravidel odchýlit a přesto je považovat za vyhovující normě. Odchylky musí být zdokumentovány buď v kódu, nebo v souboru. Navíc; musí být předložen důkaz, že softwarový inženýr zvážil bezpečnost systému a že odchylka od pravidla nebude mít negativní dopad, požadavky na odchylky také zahrnují:
- Pravidlo se odchýlilo od.
- Odchylka.
Publikované dokumenty
MISRA C: 1998
První vydání MISRA C, „Guidelines for the use of the C language in vehicle based software“, který byl vydán v roce 1998 a je oficiálně známý jako MISRA-C: 1998 .
MISRA-C: 1998 má 127 pravidel, z nichž je 93 povinných a 34 poradních; pravidla jsou očíslována v pořadí od 1 do 127.
MISRA C: 2004
V roce 2004 bylo vydáno druhé vydání „Pokyny pro používání jazyka C v kritických systémech “ neboli MISRA-C: 2004 s mnoha zásadními změnami v pokynech, včetně úplného přečíslování pravidel.
MISRA-C: 2004 obsahuje 142 pravidel, z nichž 122 je „povinných“ a 20 „poradních“; jsou rozděleny do 21 aktuálních kategorií, od „prostředí“ po „selhání za běhu“.
MISRA C: 2012
Hlavní dokument
V roce 2013 vyšlo třetí vydání MISRA C: 2012. MISRA C: 2012 rozšiřuje podporu na verzi C99 jazyka C (při zachování pokynů pro C90), kromě toho obsahuje řadu vylepšení, která mohou snížit náklady a složitost dodržování předpisů a současně napomáhat konzistentnímu a bezpečnému používání C v kritických oblastech systémy.
MISRA-C: 2012 obsahuje 143 pravidel a 16 „směrnic“ (tj. Pravidel, jejichž dodržování je otevřenější interpretaci nebo se týká procesních nebo procesních záležitostí); každý z nich je klasifikován jako povinný , požadovaný nebo poradní . Jsou samostatně klasifikovány jako jedna překladová jednotka nebo systém . Pravidla jsou navíc klasifikována jako Rozhodnutelná nebo Nerozhodnutelná .
Změna 1
V dubnu 2016 MISRA zveřejnila (zdarma ke stažení) MISRA C: 2012 - dodatek 1: Další bezpečnostní pokyny, které přidaly čtrnáct nových bezpečnostních pokynů.
Změna 2
V únoru 2020 společnost MISRA zveřejnila (zdarma ke stažení) MISRA C: 2012 - dodatek 2: Aktualizace základní funkce ISO/IEC 9899: 2011/18, která přidává mapování nedefinovaných, nespecifikovaných a implementací definovaných chování v rámci C11/C18.
Podpůrné dokumenty
MISRA zveřejnila následující dodatky k podpoře MISRA C: 2012:
- MISRA C: 2012 - dodatek 1: Mapování pravidel , který obsahuje obousměrné mapování pravidel mezi MISRA C: 2004 a novou verzí. Je určen k pomoci uživatelům při migraci.
- MISRA C: 2012 - dodatek 2: Pokrytí MISRA C: 2012 podle ISO/IEC TS 17961: 2013 „C Secure“
- MISRA C: 2012 - Dodatek 3: Pokrytí MISRA C: 2012 proti CERT C
Příklad sady
Příkladná sada (pro MISRA-C: 2004 a MISRA C: 2012) je k dispozici v úložišti MISRA GitLab (je nutné přihlášení). To umožňuje uživatelům nástrojů vyhodnotit a porovnat podporu kontroly poskytovanou různými nástroji MISRA; navíc poskytuje implementátorům nástrojů určité pokyny, pokud jde o záměr pokynů MISRA.
Nástroje
I když existuje mnoho softwarových nástrojů, které tvrdí, že kontrolují kód pro „shodu MISRA“, neexistuje žádný certifikační proces MISRA.
Většinu pokynů lze zkontrolovat pomocí nástrojů, které provádějí analýzu statického kódu . Zbývající pokyny vyžadují použití dynamické analýzy kódu .
Mezi nástroje, které kontrolují kód pro shodu MISRA, patří:
- Astrée od AbsInt
- Axivion Bauhaus Suite od Axivion GmbH. MISRA C: 2004, C: 2012, C: 2012 Dodatek 1, C ++: 2008, Compliance: 2016 .
- CodeSonar od společnosti GrammaTech
- Coverity by Synopsys - statická analýza
- Cppcheck - otevřený nástroj pro statickou analýzu pro C/C ++
- ECLAIR by BUGSENG
- Goanna by Red Lizard Software - nástroj pro analýzu softwaru pro C/C ++.
- Helix QAC od společnosti Perforce Software . MISRA C: 1998, C: 2004, C: 2012, C ++: 2008 .
- Klocwork od Rogue Wave Software (nyní ve vlastnictví Perforce Software). MISRA C: 2012, C: 2012 Dodatek 1, C ++: 2008 .
- Testování LDRA společností Liverpool Data Research Associates
- Test Parasoft C/C ++ od Parasoftu
- Software PC-Lint od společnosti Gimpel. MISRA C: 1998, C: 2004, C: 2012, C ++: 2008 .
- Polyspace od MathWorks
- PVS-Studio by Program Verification Systems
- SonarQube od SonarSource ( open source s některými komerčními zásuvnými komponentami)
- SQuORE od Squoring Technologies
- Porozumět SciTools
Mezi kompilátory C/C ++, které podporují shodu s MISRA, patří:
- Software Green Hills
- IAR Systems - MISRA C: 1998, C: 2004, C: 2012, C ++: 2008 .
- ÚKOLY - MISRA C: 1998, C: 2004, C: 2012 .
Kritika
Některé výsledky výzkumu zpochybňují účinnost přípravku MISRA.
V dokumentu, který porovnává dřívější práci na MISRA C: 1998 s MISRA C: 2004, Les Hatton dochází k závěru, že:
S ohledem na zjevně se rozšiřující vliv standardu MISRA C se tento příspěvek pokouší posoudit, zda byly uspokojivě vyřešeny důležité nedostatky v původním standardu. Bohužel nemají a důležitý skutečný poměr k falešně pozitivním není v MISRA C 2004 mnohem lepší než v MISRA C 1998 a v obou je nepřijatelně nízký.
Dále uvádí:
V současné podobě se zdá, že jediní lidé, kteří mají prospěch z aktualizace MISRA C 2004, jsou prodejci nástrojů a lze doufat, že budou přijata opatření jak pro zjednodušení formulace, tak pro snížení falešně pozitivního poměru v budoucích revizích přijetím trochu více upozornění na publikovaná experimentální data a menší pokušení vymyslet pravidla na základě toho, že se jeví jako dobrý nápad.
Studie na TU Delft , Cathal Boogerd a Leon Moonen, empiricky hodnotí hodnotu MISRA C: 2004. Dochází k podobným výsledkům:
Ze získaných dat můžeme učinit následující klíčová pozorování. Za prvé, existuje 9 ze 72 pravidel, u nichž byla pozorována porušení, která při lokalizaci linek souvisejících se závadami fungují výrazně lépe (α = 0,05) než náhodný prediktor. Skutečné kladné sazby pro tato pravidla se pohybují od 24 do 100%. Za druhé, pozorovali jsme negativní korelaci mezi porušováním pravidel MISRA a pozorovanými chybami. Navíc 29 ze 72 pravidel mělo nulovou skutečnou kladnou sazbu. Spolu s Adamsovým pozorováním, že všechny modifikace mají nenulovou pravděpodobnost vzniku chyby, to umožňuje, že dodržování standardu MISRA jako celku by způsobilo, že software bude méně spolehlivý.
Viz také
Reference
externí odkazy
- Oficiální webové stránky
- „Úvod do MISRA C“ . embedded.com. Červenec 2002.
- „MISRA C: Bezpečnější je lepší“ . Časopis Electronic Design.
- „Komentář k prvnímu vydání pokynů MISRA C“ . knosof.co.uk.
- „Nová verze MISRA C: Proč by vás to mělo zajímat?“ . Časopis Electronic Design.
- „MISRA C: 2012: Spousta dobrých důvodů, proč se změnit“ . Časopis Electronic Design.
- „Informační list MISRA C: 2012“ (PDF) . programováníresearch.com.
- „MISRA C: 2012 zajišťuje bezpečnost automobilového softwaru“ . Časopis EE Times.
- „Soulad s MISRA C: Generování kódu“ . Matematika.