MISRA C

מתוך ויקיפדיה, האנציקלופדיה החופשית

MISRA C היא קבוצה של הנחיות הנחשבות לסטנדרט דה פקטו בכתיבת קוד מקור של אפליקציות קריטיות המיועדות למערכות הנמצאות תחת רגולציה של גופי תקינה[1], והנכתבת בשפת התכנות C, הסטנדרט פותח על ידי MISRA (ראשי תיבות של Motor Industry Software Reliability Association). מטרותיו הן להקל על בטיחות קוד, אבטחה, ניידות ואמינות בהקשר של מערכות משובצות, במיוחד מערכות שקוד המקור שלהם נכתב ב -ISO C ‏/ C90 / ‏C99.[2] או ISO/IEC 9899:2018[3]

הגרסה הנוכחית והמעודכנת ביותר שקיימת כיום, נקראת MISRA C 2023 מהדורה 3 רוויזיה 2, ונכון לעכשיו, מסמך ההגדרות של גרסה זאת הוא היחידי שניתן לרכוש ולהוריד באתר MISRA הרשמי[4]

קיים גם סט הנחיות MISRA עבור ++C[5] הידוע בשמו MISRA C++:2023: [6]

היסטוריה[עריכת קוד מקור | עריכה]

  • טיוטה: 1997[7]
  • מהדורה ראשונה: 1998 (כללים, חובה / מומלצים)[8]
  • מהדורה שנייה: 2004 (כללים, חובה / מומלצים)
  • מהדורה שלישית: 2012 (הנחיות; כללים, ניתן להחליט / לא ניתן להחליט)
  • התיקון הראשון (Amendment 1 ) לתקן MISRA C2012 יצא באפריל 2016
  • התיקון השני (Amendment 2 ) לתקן MISRA C2012 יצא בבפרואר 2020[9]
  • התיקון השלישי (Amendment 3 ) לתקן MISRA C2012 יצא באוקטובר 2022[10]
  • התיקון הרביעי (Amendment 4 ) לתקן MISRA C2012 יצא במרץ 2023[11]
  • MISRA C 2023 , הגרסה העכשווית, מכילה את כל התיקונים הקודמים, שוחררה באוקטובר 2023[12]

בשתי המהדורות הראשונות של MISRA-C (כלומר 1998 ו-2004) כל ההנחיות נחשבו לכללים. עם פרסום MISRA C: 2012 הוצגה קטגוריה חדשה של הנחיות – ההנחיה שתאימותה פתוחה יותר לפרשנות, או מתייחסת לנושאים תהליכים או פרוצדורליים.

חידוש נוסף ב MISRA C 2012 הוא הוספת הכללים המנדטורים, כללים שסטייה מהם לא תתאפשר תחת שום צידוק[13]

התפתחות ואימוץ בתעשייה[עריכת קוד מקור | עריכה]

אף על פי שבמקור ייועד לתעשיית הרכב, MISRA C התפתח כמודל מקובל לשיטות עבודה מומלצות על ידי מפתחים מובילים בתחומים כולל רכב, תעופה, טלקום, מכשירים רפואיים, ביטחון, רכבת ואחרים. לדוגמה:

  • פרויקט C ++ Coding Standards[14] של Joint Strike Fighter[14] מבוסס על MISRA-C: 1998.
  • C Coding Standards במעבדה להינע סילוני של נאס"א[15] מבוססים על מיסרה-C: 2004.
  • ISO 26262 "בטיחות פונקציונלית – כלי רכב בדרכים" מצטט את MISRA C כתת-קבוצת כללים מתאימה של שפת C:
    • ISO 26262-6: 2011 "חלק 6: פיתוח מוצרים ברמת התוכנה"[16] מצטט את MISRA-C: 2004 ו-MISRA AC AGC.
    • ISO 26262-6: 2018 "חלק 6: פיתוח מוצרים ברמת התוכנה"[17] מצטט את MISRA C: 2012.
  • מפרט התוכנה הכללי של AUTOSAR SRS_BSW_00007 מצטט גם כן את MISRA C:
    • מפרט התוכנה הכללי של AUTOSAR 4.2[18] מחייב "שאם הטמעת מודול BSW כתובה בשפת C, היא תואמת את תקן MISRA C: 2004."
    • מפרט התוכנה הכללי של AUTOSAR 4.3[19] מחייב "שאם הטמעת מודול ה-BSW כתובה בשפת C, היא תואמת את תקן MISRA C: 2012."

כלי תוכנה מסחריים שמאפשריים בדיקה אוטומטית של 100% מכללי MISRA C 2023[עריכת קוד מקור | עריכה]

ככלל בדיקות תאימות של קוד מקור לתקן MISRA C נעשים בסריקה אוטומטית על ידי כלי ניתוח קוד סטאטי מסחריים, כל שיטה אחרת כגון סקר קוד הנה מסובכת, מיייגעת ובעלת סיכוי גבוה לטעויות רבות

  • HELIX QAC by Perforce , כלי ניתוח קוד סטאטי וותיק, מבוסס על הכלי של חברת PRQA שנרכשה על ידי Perforce בשנת 2018[20] תומך בכל גרסאות MISRA C ובין הבודדים שתומכים גם בגרסה העדכנית, MISRA C 2023[21]
  • Parasoft C/C++TEST, כלי ניתוח קוד סטאטי שנפוץ מאד בקרב חברות המפתחות אפליקציות קריטיות תחת רגולציה, מכוןן שמספר מעובדי חברת Parasoft יצרנית הכלי השתתפו בכתיבת גרסת 2023 של התקן, היה הכלי הראשון בעולם שתמך בתקן במלואו כבר במאי 2023[22]

אפשרות לסטות מהתקן Deviations[עריכת קוד מקור | עריכה]

במידה ולא ניתן לכתוב את האפליקציה תחת אילוץ של כלל מסויים, דוגמא אופיינת לכך היא למשל יישום כלל [MISRA 2012 Rule 11.4, advisory]: A conversion should not be performed between a pointer to object and an integer type. ישום של כלל זה לא תאפשר פניה לרגיסטרים של מעבדים במערכות משובצות מחשב. במקרים כאלה, צוות הפיתוח יכול להחליט שניתן לסטות מתאימות מוחלטת לתקן עלי ידי ויתור על ישום כללים שאינן מוגדרים כ"מנדטורים" (הכללים כללים שסטייה מהם לא תתאפשר תחת שום צידוק). במידה ועושים זאת נדרשת הצדקה והסבר שיתועדו בדו"ח מיוחד שנקרא Derivation Report[23]

קישורים חיצוניים[עריכת קוד מקור | עריכה]

  • Introduction to ISO26262 and MISRA C (in the context of ISO26262), video in Hebrew by Daniel Liezrowice from an Ecomotion workshop
  • "Introduction to MISRA C". embedded.com.
  • A practical guide to make your legacy codebase MISRA C 2012 compliant
  • "MISRA C: Safer Is Better". Electronic Design magazine.
  • "Commentary on the first edition of the MISRA C guidelines". knosof.co.uk.
  • "New Version of MISRA C: Why Should You Care?". Electronic Design magazine.
  • "MISRA C:2012: Plenty Of Good Reasons To Change". Electronic Design magazine.
  • "MISRA C:2012 fact sheet" (PDF). programmingresearch.com.
  • "MISRA C:2012 ensures automotive software safety". EE Times magazine.
  • "Compliance to MISRA C: Code Generation". Mathworks.
  • The Anticipated MISRA C:2012 Amendment 2 is Now Available

הערות שוליים[עריכת קוד מקור | עריכה]

  1. ^ MISRA C
  2. ^ "MISRA clarifies safe and secure uses of the C language". www.misra.org.uk. נבדק ב-2019-10-09.
  3. ^ C17 (C standard revision)
  4. ^ MISRA ORG, MISRA C:2023 Third Edition, Second Revision, MISRA ORG
  5. ^ The MISRA Org, MISRA C++:2023 released
  6. ^ MISRA C++:2023: Guidelines for the use of C++17 in critical systems, Amazon, ‏נובמבר 2023
  7. ^ In spring 1997 software engineers at the Austin Rover Group (ARG) sent a draft C coding standard to Programming Research Ltd (PRL) for review. The review was performed by PRL's then senior consultant, David Blyth, who proposed replacing the draft with an appreciably stronger set of coding rules. Those rules, with minor changes, formed the basis of the first edition of MISRA C.
  8. ^ MISRA C:1998
  9. ^ HORIBA MIRA Limited, [https://misra.org.uk/app/uploads/2021/06/MISRA-C-2012-AMD2.pdf MISRA C:2012 Amendment 2 Updates for ISO/IEC 9899:2011 Core functionality], The MISRA organization, ‏February 2020
  10. ^ The MISRA Consortium Limited, [https://misra.org.uk/app/uploads/2022/12/MISRA-C-2012-AMD3.pdf MISRA C:2012 Amendment 3 Updates for ISO/IEC 9899:2011/2018 Phase 2 — New C11/C18 features], ‏אוקטובר 2022
  11. ^ The MISRA Consortium Limited, [https://misra.org.uk/app/uploads/2023/03/MISRA-C-2012-AMD4.pdf MISRA C:2012 Amendment 4 Updates for ISO/IEC 9899:2011/2018 Phase 3 — Multi-threading and atomics], ‏מרץ 2023
  12. ^ The MISRA organization, MISRA C:2023 released, MISRA C, ‏אוקטובר 2023
  13. ^ HORIBA MIRA Limited, [https://misra.org.uk/app/uploads/2021/06/MISRA-Compliance-2020.pdf MISRA Compliance:2020 Achieving compliance with MISRA Coding Guidelines], MISRA ORG, ‏פברואר 2020
  14. ^ 1 2 "Joint Strike Fighter Air Vehicle C++ Coding Standards" (PDF). נבדק ב-2019-07-16.
  15. ^ "NASA JPC C Coding Standards" (PDF). נבדק ב-2019-07-16.
  16. ^ "ISO 26262-6:2011 Road vehicles -- Functional safety -- Part 6: Product development at the software level". iso.org. ISO. נבדק ב-2019-07-16.
  17. ^ "ISO 26262-6:2018 Road vehicles -- Functional safety -- Part 6: Product development at the software level". iso.org. ISO. נבדק ב-2019-07-16.
  18. ^ "AUTOSAR 4.2 General Software Specification" (PDF). autosar.org. נבדק ב-2019-07-16.
  19. ^ "AUTOSAR 4.3 General Specification of Basic Software Modules" (PDF). autosar.org. AutoSAR. 2016-11-30. נבדק ב-2019-07-16.
  20. ^ Perforce, Clearlake Capital Acquires Perforce Software, www.perforce.com, ‏עשירי לינואר 2018
  21. ^ Perforce Software, What’s New in Helix QAC?
  22. ^ Parasoft, Complete Support for MISRA C 2023 in New Release of C & C++ Testing Solution Enables Seamless Compliance, www.parasoft.com, ‏05.31.2023
  23. ^ Parasoft INC, [https://alm.parasoft.com/hubfs/New_Pages/practical-guide-accelerate-MISRAC-2023-compliance-with-test-automation.pdf A Practical Guide to Accelerate MISRA C 2023 Compliance With Test Automation]