एमआईएसआरए सी (MISRA C)

From Vigyanwiki

एमआईएसआरए सी, एमआईएसआरए कंसोर्टियम द्वारा विकसित C क्रमादेशन भाषा के लिए सॉफ्टवेयर विकास दिशानिर्देशों का एक सेट है। इसका उद्देश्य अंत: स्थापित तंत्र के संदर्भ में कूट सुरक्षा, सुरक्षा, पोर्टेबिलिटी और विश्वसनीयता की सुविधा प्रदान करना है, विशेष रूप से आईएसओ सी / सी 90 / सी 99 में प्रोग्राम किया गया है।[1] इस लेख में शामिल नहीं किए गए एमआईएसआरए सी++ के लिए दिशानिर्देशों का एक सेट भी है।

इतिहास

  • प्रारूप: 1997[2]
  • पहला संस्करण: 1998 (नियम, आवश्यक/परामर्शिका)
  • दूसरा संस्करण: 2004 (नियम, आवश्यक/परामर्शिका)
  • तीसरा संस्करण: 2012 (निर्देश; नियम, निर्णायक/अनिश्चित)
  • एमआईएसआरए अनुपालन: 2016, अद्यतन 2020

एमआईएसआरए सी (1998 और 2004) के पहले दो संस्करणों के लिए सभी दिशानिर्देशों को नियम माना गया। एमआईएसआरए सी: 2012 के प्रकाशन के साथ दिशानिर्देश की एक नई श्रेणी पेश की गई - निर्देश जिसका अनुपालन व्याख्या के लिए अधिक खुला है, या प्रक्रिया या प्रक्रियात्मक मामलों से संबंधित है।

दत्तक ग्रहण

हालांकि मूल रूप से विशेष रूप से मोटर वाहन उद्योग पर लक्षित, एमआईएसआरए सी स्वचालितयंत्र, वांतरिक्ष, दूरसंचार, चिकित्सा उपकरणों, रक्षा, रेलवे और अन्य क्षेत्रों में अग्रणी विकासक द्वारा सर्वोत्तम प्रथाओं के लिए व्यापक रूप से स्वीकृत मॉडल के रूप में विकसित हुआ है। उदाहरण के लिए:

  • संयुक्त स्ट्राइक फाइटर परियोजना C++ कूटलेखन मानक[3] एमआईएसआरए सी:1998 पर आधारित हैं।
  • नासा जेट प्रणोदन प्रयोगशाला सी कूटलेखन मानक[4] एमआईएसआरए सी: 2004 पर आधारित हैं।
  • आईएसओ 26262 कार्यात्मक सुरक्षा - सड़क वाहन एमआईएसआरए सी को सी भाषा का उपयुक्त उप-सेट बताते हैं
    • आईएसओ 26262-6:2011 भाग 6: सॉफ्टवेयर स्तर पर उत्पाद विकास[5] एमआईएसआरए सी: 2004 और एमआईएसआरए एसी एजीसी का हवाला देते हैं।
    • आईएसओ 26262-6:2018 भाग 6: सॉफ्टवेयर स्तर पर उत्पाद विकास[6] एमआईएसआरए सी: 2012 का हवाला देते हैं।
  • एयूटीओएसएआर सामान्य सॉफ़्टवेयर विनिर्देश (एसआरएस_बीएसडब्ल्यू_00007) इसी तरह एमआईएसआरए सी का हवाला देता है:
    • एयूटीओएसएआर 4.2 सामान्य सॉफ्टवेयर विनिर्देश[7] आवश्यकता है कि यदि बीएसडब्ल्यू मापांक कार्यान्वयन सी भाषा में लिखा गया है, तो यह एमआईएसआरए सी:2004 मानक के अनुरूप होगा।
    • एयूटीओएसएआर 4.3 सामान्य सॉफ्टवेयर विनिर्देश[8] आवश्यकता है कि यदि बीएसडब्ल्यू मापांक कार्यान्वयन सी भाषा में लिखा गया है, तो यह एमआईएसआरए सी: 2012 मानक के अनुरूप होगा।

दिशानिर्देश वर्गीकरण और संवर्गीकरण

जब एक नया सॉफ्टवेयर परियोजना शुरू किया जाता है, तो नवीनतम एमआईएसआरए मानक का उपयोग किया जाना चाहिए। पिछले मानक अभी भी लीगेसी सॉफ़्टवेयर परियोजनाओं के उपयोग के लिए उपलब्ध हैं जिन्हें इसे संदर्भित करने की आवश्यकता है।[9]


वर्गीकरण

प्रत्येक दिशानिर्देश को[10] अनिवार्य (एमआईएसआरए सी:2012 के लिए नया), आवश्यक या परामर्शिका के रूप में वर्गीकृत किया गया है। इसके अलावा, एमआईएसआरए अनुपालन दस्तावेज़ परामर्शिका दिशानिर्देशों को अस्वीकृत करने की अनुमति देता है।

  • अनिवार्य दिशा-निर्देशों का हमेशा पालन किया जाएगा।
  • आवश्यक दिशा-निर्देशों का अनुपालन किया जाएगा, जब तक कि विचलन के अधीन न हो।
  • परामर्शिका दिशानिर्देशों को अच्छा अभ्यास माना जाता है, लेकिन अनुपालन कम औपचारिक होता है।

संवर्गीकरण

नियमों को तार्किक रूप से कई श्रेणियों में विभाजित किया जा सकता है:

  • संभव संकलक अंतर से बचना, उदाहरण के लिए, सी का आकार int प्रकार भिन्न हो सकता है लेकिन int16_t (C99 में मानकीकृत) हमेशा 16 बिट का होता है।
  • कार्यों और निर्माणों का उपयोग करने से बचना जो विफलता के लिए प्रवण हैं, उदाहरण के लिए, malloc विफल हो सकता है।
  • बनाए रखने योग्य और दोषमार्जन करने योग्य कूट तैयार करें, उदाहरण के लिए, नामकरण परंपरा और टिप्पणी।
  • सर्वोत्तम अभ्यास नियम।
  • जटिलता सीमा।

परिधि

एमआईएसआरए सी: 2012 अलग-अलग प्रत्येक दिशानिर्देश को एकल अनुवाद इकाई (क्रमादेशन) या सिस्टम के रूप में वर्गीकृत करता है।[10]


निर्णायकता

एमआईएसआरए सी: 2012 नियमों (लेकिन निर्देशों को नहीं) को निर्णायक या अनिर्णीत के रूप में वर्गीकृत करता है।

अनुपालन प्राप्त करना

एमआईएसआरए अनुपालन

एमआईएसआरए ने एमआईएसआरए अनुपालन को समझने और प्राप्त करने के लिए अतिरिक्त मार्गदर्शन प्रदान करने के लिए दस्तावेज़ प्रकाशित किए है।

  • एमआईएसआरए अनुपालन: 2016, अप्रैल 2016 में एमआईएसआरए द्वारा जारी किया गया था।[11]
  • एमआईएसआरए अनुपालन: 2020, संशोधित संस्करण, फरवरी 2020 में जारी किया गया था।[12]


अनुपालन

एमआईएसआरए सी दिशानिर्देशों के अनुरूप होने का दावा करने के लिए सॉफ्टवेयर के एक भाग के लिए, सभी अनिवार्य नियमों को पूरा किया जाएगा और सभी आवश्यक नियमों और निर्देशों को या तो पूरा किया जाएगा या एक औपचारिक विचलन के अधीन होगा। औपचारिक विचलन के बिना परामर्शिका नियम अस्वीकृत हो सकते हैं, लेकिन इसे अभी भी परियोजना प्रलेखन में दर्ज किया जाना चाहिए।

नोट: अनुपालन उद्देश्यों के लिए, नियमों और निर्देशों के बीच कोई अंतर नहीं है।

विचलन

कई एमआईएसआरए सी नियमों को दिशानिर्देशों के रूप में चित्रित किया जा सकता है क्योंकि कुछ शर्तों के तहत सॉफ्टवेयर अभियंता नियमों से विचलित हो सकते हैं और फिर भी मानक के अनुरूप माने जा सकते हैं। विचलन को या तो कूट में या फ़ाइल में प्रलेखित किया जाना चाहिए। इसके साथ ही; सबूत प्रदान किया जाना चाहिए कि सॉफ्टवेयर अभियंता ने सिस्टम की सुरक्षा पर विचार किया है और नियम से विचलित होने का नकारात्मक प्रभाव नहीं पड़ेगा, विचलन के लिए आवश्यकताओं में भी शामिल हैं:

  • नियम से विचलित।
  • विचलन के लिए तर्क।[13]


प्रकाशित दस्तावेज़

एमआईएसआरए सी: 1998

एमआईएसआरए सी का पहला संस्करण, वाहन आधारित सॉफ़्टवेयर में C भाषा के उपयोग के लिए दिशानिर्देश, जो 1998 में प्रकाशित हुआ था और इसे आधिकारिक तौर पर एमआईएसआरए-C:1998 के रूप में जाना जाता है।[14] एमआईएसआरए सी: 1998 में 127 नियम हैं, जिनमें से 93 आवश्यक हैं और 34 परामर्शिका हैं; नियमों को 1 से 127 तक अनुक्रम में क्रमांकित किया गया है।

एमआईएसआरए सी: 2004

2004 में, 'महत्वपूर्ण प्रणालियों', या 'मिसरा-सी: 2004' में सी भाषा के उपयोग के लिए दिशानिर्देशों का दूसरा संस्करण तैयार किया गया था, जिसमें दिशानिर्देशों में कई महत्वपूर्ण बदलाव शामिल थे, जिसमें नियमों की पूरी तरह से पुनर्संख्या भी शामिल थी। .

एमआईएसआरए सी: 2004 में 142 नियम शामिल हैं, जिनमें से 122 आवश्यक हैं और 20 परामर्शिका हैं; उन्हें पर्यावरण से लेकर रन-टाइम विफलताओं तक 21 सामयिक श्रेणियों में विभाजित किया गया है।

एमआईएसआरए सी: 2012

मुख्य दस्तावेज़

2013 में, तीसरा संस्करण, एमआईएसआरए सी: 2012 प्रकाशित किया गया था। एमआईएसआरए सी: 2012 C भाषा के C99 संस्करण (C90 के लिए दिशानिर्देशों को बनाए रखते हुए) के लिए समर्थन प्रदान करता है, इसके अलावा कई सुधार शामिल हैं जो अनुपालन की लागत और जटिलता को कम कर सकते हैं, जबकि महत्वपूर्ण में C के लगातार, सुरक्षित उपयोग में सहायता करते हैं। सिस्टम।[15] एमआईएसआरए सी: 2012 में 143 नियम और 16 निर्देश शामिल हैं (अर्थात, ऐसे नियम जिनका अनुपालन व्याख्या के लिए अधिक खुला है, या प्रक्रिया या प्रक्रियात्मक मामलों से संबंधित है); जिनमें से प्रत्येक को अनिवार्य, आवश्यक या परामर्शिका के रूप में वर्गीकृत किया गया है। उन्हें एकल अनुवाद इकाई या सिस्टम के रूप में अलग से वर्गीकृत किया गया है। इसके अतिरिक्त, नियमों को निर्णायक या अनिर्णीत के रूप में वर्गीकृत किया गया है।

संशोधन 1

अप्रैल 2016 में, एमआईएसआरए प्रकाशित (मुफ्त डाउनलोड के रूप में) एमआईएसआरए सी: 2012 - संशोधन 1: अतिरिक्त सुरक्षा दिशानिर्देश[16] जिसने चौदह नए कंप्यूटर सुरक्षा दिशानिर्देश जोड़े।

संशोधन 2

फरवरी 2020 में, एमआईएसआरए प्रकाशित (मुफ्त डाउनलोड के रूप में) एमआईएसआरए सी:2012 - संशोधन 2: आईएसओ/IEC 9899:2011/18 कोर कार्यक्षमता के लिए अपडेट[17] जो C11/C18 के भीतर अपरिभाषित, अनिर्दिष्ट और कार्यान्वयन परिभाषित व्यवहारों के लिए मानचित्रण जोड़ता है।

सहायक दस्तावेज

एमआईएसआरए ने एमआईएसआरए सी: 2012 का समर्थन करने के लिए निम्नलिखित परिशिष्ट प्रकाशित किया है:

  • एमआईएसआरए सी: 2012 - परिशिष्ट 1: नियम मानचित्रण,[18] जिसमें एमआईएसआरए सी:2004 और नए संस्करण के बीच द्वि-दिशात्मक नियम मैपिंग शामिल है। इसका उद्देश्य उपयोगकर्ताओं को प्रवासन में सहायता करना है।
  • एमआईएसआरए सी: 2012 - परिशिष्ट 2: एमआईएसआरए सी का कवरेज: 2012 आईएसओ / आईईसी टीएस 17961: 2013 सी सुरक्षित के खिलाफ[19]
  • एमआईएसआरए सी: 2012 - परिशिष्ट 3: एमआईएसआरए सी का कवरेज: सीईआरटी सी के खिलाफ 2012[20]


उदाहरण सूट

एक उदाहरण सुइट (एमआईएसआरए-C:2004 और एमआईएसआरए सी:2012 के लिए) एमआईएसआरए GitLab से उपलब्ध है[21] रिपॉजिटरी (लॉगिन आवश्यक)। यह टूल-उपयोगकर्ताओं को विभिन्न एमआईएसआरए टूल द्वारा प्रदान किए गए जाँच समर्थन का मूल्यांकन और तुलना करने की अनुमति देता है; इसके अतिरिक्त, यह उपकरण-कार्यान्वयनकर्ताओं को एमआईएसआरए दिशानिर्देशों के इरादे के अनुसार कुछ मार्गदर्शन देता है।

उपकरण

जबकि कई सॉफ्टवेयर उपकरण मौजूद हैं जो एमआईएसआरए अनुरूपता के लिए कूट की जांच करने का दावा करते हैं, कोई एमआईएसआरए प्रमाणन प्रक्रिया नहीं है।[22] स्थैतिक कूट विश्लेषण करने वाले उपकरणों का उपयोग करके अधिकांश दिशानिर्देशों की जाँच की जा सकती है। शेष दिशानिर्देशों के लिए डायनेमिक कूट विश्लेषण के उपयोग की आवश्यकता होती है।

एमआईएसआरए अनुरूपता के लिए कूट की जाँच करने वाले उपकरणों में शामिल हैं:

एमआईएसआरए अनुरूपता का समर्थन करने वाले C/C++ कंपाइलर में शामिल हैं:

आलोचना

कुछ शोध परिणाम एमआईएसआरए सी 2004 की प्रभावशीलता पर सवाल उठाते हैं।

एमआईएसआरए सी:1998 पर एमआईएसआरए सी:2004 के साथ पहले के काम की तुलना करने वाले एक पेपर में, द हैटन इस निष्कर्ष पर पहुंचे कि:Cite error: Closing </ref> missing for <ref> tag

From the data obtained, we can make the following key observations. First, there are 9 out of 72 rules for which violations were observed that perform significantly better (α = 0.05) than a random predictor at locating fault-related lines. The true positive rates for these rules range from 24-100%. Second, we observed a negative correlation between MISRA rule violations and observed faults. In addition, 29 out of 72 rules had a zero true positive rate. Taken together with Adams' observation that all modifications have a non-zero probability of introducing a fault, this makes it possible that adherence to the MISRA standard as a whole would have made the software less reliable.

यह भी देखें

संदर्भ

  1. "MISRA C भाषा के सुरक्षित और सुरक्षित उपयोगों को स्पष्ट करता है". www.misra.org.uk. Retrieved 2019-10-09.
  2. 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.
  3. "जॉइंट स्ट्राइक फाइटर एयर व्हीकल C++ कोडिंग स्टैंडर्ड्स" (PDF). Retrieved 2019-07-16.
  4. "C प्रोग्रामिंग लैंग्वेज के लिए JPL इंस्टीट्यूशनल कोडिंग स्टैंडर्ड" (PDF). Retrieved 2019-07-16.
  5. "ISO 26262-6:2011 Road vehicles -- Functional safety -- Part 6: Product development at the software level". iso.org. ISO. Retrieved 2019-07-16.
  6. "ISO 26262-6:2018 Road vehicles -- Functional safety -- Part 6: Product development at the software level". iso.org. ISO. Retrieved 2019-07-16.
  7. "AUTOSAR 4.2 General Software Specification" (PDF). autosar.org. Retrieved 2019-07-16.
  8. "AUTOSAR 4.3 General Specification of Basic Software Modules" (PDF). autosar.org. AutoSAR. 2016-11-30. Retrieved 2019-07-16.
  9. MISRA publications
  10. 10.0 10.1 "Fact Sheet: MISRA C:2012 (PDF)" (PDF). programmingresearch.com. Retrieved 10 June 2013.
  11. "MISRA Compliance:2016 (PDF)". MISRA. Retrieved 22 July 2016.
  12. "MISRA Compliance:2020 (PDF)" (PDF). MISRA. Retrieved 8 April 2020.
  13. "Achieving MISRA C:2012 Compliance". Parasoft. Retrieved May 29, 2017.
  14. "मिश्रा सी का संक्षिप्त इतिहास". MISRA. 2013-03-18. Retrieved 2014-06-30.
  15. "MISRA C:2012 release date announced". MISRA. 26 February 2013. Retrieved 10 June 2013.
  16. "MISRA C:2012 - Amendment 1 (PDF)". MISRA. April 2016. Retrieved 31 October 2019.
  17. "MISRA C:2012 - Amendment 2 (PDF)". MISRA. February 2020. Retrieved 6 January 2021.
  18. "MISRA C:2012 - Addendum 1: Rule Mapping (PDF)".
  19. "MISRA C:2012 - Addendum 2: Coverage of MISRA C:2012 against ISO/IEC TS 17961:2013 "C Secure" (PDF)".
  20. "MISRA C:2012 - Addendum 3: Coverage of MISRA C:2012 against CERT C (PDF)".
  21. MISRA GitLab repository
  22. "MISRA C FAQ list." MISRA Consortium
  23. "Helix QAC for C and C++ | Perforce".
  24. "Clearlake Capital-Backed Perforce Software to Acquire Rogue Wave Software | Perforce".
  25. "Klocwork for C, C++, C#, Java, and JavaScript | Perforce".
  26. "C/C++ Built-in Test Configurations". Parasoft. 17 October 2022. Retrieved 9 March 2023.
  27. MISRA conformance checking, PC-lint/FlexeLint, Gimpel Software.
  28. Languages and Standards; iar.com


बाहरी संबंध