एमआईएसआरए सी (MISRA C): Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Software development standard for the C programming language}} {{TOC right}} MISRA C, Motor Industry Software Reliability Association द्वार...")
 
No edit summary
Line 1: Line 1:
{{Short description|Software development standard for the C programming language}}
{{Short description|Software development standard for the C programming language}}
{{TOC right}}
{{TOC right}}
MISRA C, [[Motor Industry Software Reliability Association]] द्वारा विकसित C ([[ प्रोग्रामिंग भाषा ]]) प्रोग्रामिंग लैंग्वेज के लिए सॉफ्टवेयर डेवलपमेंट गाइडलाइंस का एक सेट है। इसका उद्देश्य [[ अंतः स्थापित प्रणालियाँ ]] के संदर्भ में कोड [[सुरक्षा]], [[कंप्यूटर सुरक्षा]], [[ में porting ]] और विश्वसनीयता को सुविधाजनक बनाना है, विशेष रूप से उन सिस्टम को [[ISO C]] / C90 / [[C99]] में प्रोग्राम किया गया है।<ref>{{cite web|title=MISRA C भाषा के सुरक्षित और सुरक्षित उपयोगों को स्पष्ट करता है|url=https://www.misra.org.uk/LinkClick.aspx?fileticket=JMG_JlEytqY%3D&tabid=59|access-date=2019-10-09|publisher=www.misra.org.uk}}</ref>
'''एमआईएसआरए सी''', एमआईएसआरए कंसोर्टियम द्वारा विकसित C क्रमादेशन भाषा के लिए सॉफ्टवेयर विकास दिशानिर्देशों का एक सेट है। इसका उद्देश्य अंत: स्थापित तंत्र के संदर्भ में कूट सुरक्षा, सुरक्षा, पोर्टेबिलिटी और विश्वसनीयता की सुविधा प्रदान करना है, विशेष रूप से आईएसओ सी / सी 90 / सी 99 में प्रोग्राम किया गया है।<ref>{{cite web|title=MISRA C भाषा के सुरक्षित और सुरक्षित उपयोगों को स्पष्ट करता है|url=https://www.misra.org.uk/LinkClick.aspx?fileticket=JMG_JlEytqY%3D&tabid=59|access-date=2019-10-09|publisher=www.misra.org.uk}}</ref>
इस लेख में शामिल नहीं किए गए MISRA C++ के लिए दिशानिर्देशों का एक सेट भी है।
इस लेख में शामिल नहीं किए गए एमआईएसआरए सी++ के लिए दिशानिर्देशों का एक सेट भी है।
{{toclimit|limit=2}}
{{toclimit|limit=2}}


== इतिहास ==
== इतिहास ==
* ड्राफ्ट: 1997<ref>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.</ref>
* प्रारूप: 1997<ref>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.</ref>
* पहला संस्करण: 1998 (नियम, आवश्यक/सलाहकार)
* पहला संस्करण: 1998 (नियम, आवश्यक/परामर्शिका)
* दूसरा संस्करण: 2004 (नियम, आवश्यक/सलाहकार)
* दूसरा संस्करण: 2004 (नियम, आवश्यक/परामर्शिका)
* तीसरा संस्करण: 2012 (निर्देश; नियम, निर्णायक/अनिश्चित)
* तीसरा संस्करण: 2012 (निर्देश; नियम, निर्णायक/अनिश्चित)
* मिश्रा अनुपालन: 2016, अद्यतन 2020
* एमआईएसआरए अनुपालन: 2016, अद्यतन 2020


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


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


* [[संयुक्त हड़ताल लड़ाकू कार्यक्रम]] प्रोजेक्ट C++ कोडिंग मानक<ref name="JSF-C++">{{Cite web|url=http://www.stroustrup.com/JSF-AV-rules.pdf|title=जॉइंट स्ट्राइक फाइटर एयर व्हीकल C++ कोडिंग स्टैंडर्ड्स|access-date=2019-07-16}}</ref> मिश्रा-सी:1998 पर आधारित हैं।
* [[Index.php?title=संयुक्त स्ट्राइक फाइटर परियोजना|संयुक्त स्ट्राइक फाइटर परियोजना]] C++ कूटलेखन मानक<ref name="JSF-C++">{{Cite web|url=http://www.stroustrup.com/JSF-AV-rules.pdf|title=जॉइंट स्ट्राइक फाइटर एयर व्हीकल C++ कोडिंग स्टैंडर्ड्स|access-date=2019-07-16}}</ref> एमआईएसआरए सी:1998 पर आधारित हैं।
* [[नासा]] [[जेट प्रणोदन प्रयोगशाला]] सी कोडिंग मानक<ref name="JPL-C">{{Cite web|url=https://andrewbanks.com/wp-content/uploads/2019/07/JPL_Coding_Standard_C.pdf|title=C प्रोग्रामिंग लैंग्वेज के लिए JPL इंस्टीट्यूशनल कोडिंग स्टैंडर्ड|access-date=2019-07-16}}</ref> मिश्रा-सी: 2004 पर आधारित हैं।
* [[नासा]] [[जेट प्रणोदन प्रयोगशाला]] सी कूटलेखन मानक<ref name="JPL-C">{{Cite web|url=https://andrewbanks.com/wp-content/uploads/2019/07/JPL_Coding_Standard_C.pdf|title=C प्रोग्रामिंग लैंग्वेज के लिए JPL इंस्टीट्यूशनल कोडिंग स्टैंडर्ड|access-date=2019-07-16}}</ref> एमआईएसआरए सी: 2004 पर आधारित हैं।
* ISO 26262 कार्यात्मक सुरक्षा - सड़क वाहन C भाषा के एक उपयुक्त उप-समूह के रूप में MISRA C का हवाला देते हैं:
* आईएसओ 26262 कार्यात्मक सुरक्षा - सड़क वाहन एमआईएसआरए सी को सी भाषा का उपयुक्त उप-सेट बताते हैं
** [[आईएसओ 26262]]-6:2011 भाग 6: सॉफ्टवेयर स्तर पर उत्पाद विकास<ref>{{Cite web|url=https://www.iso.org/standard/51362.html|title=ISO 26262-6:2011 Road vehicles -- Functional safety -- Part 6: Product development at the software level|website=iso.org|publisher=ISO|access-date=2019-07-16}}</ref> मिश्रा-सी: 2004 और मिश्रा एसी एजीसी का हवाला देते हैं।
** [[आईएसओ 26262]]-6:2011 भाग 6: सॉफ्टवेयर स्तर पर उत्पाद विकास<ref>{{Cite web|url=https://www.iso.org/standard/51362.html|title=ISO 26262-6:2011 Road vehicles -- Functional safety -- Part 6: Product development at the software level|website=iso.org|publisher=ISO|access-date=2019-07-16}}</ref> एमआईएसआरए सी: 2004 और एमआईएसआरए एसी एजीसी का हवाला देते हैं।
** आईएसओ 26262-6:2018 भाग 6: सॉफ्टवेयर स्तर पर उत्पाद विकास<ref>{{Cite web|url=https://www.iso.org/standard/68388.html|title=ISO 26262-6:2018 Road vehicles -- Functional safety -- Part 6: Product development at the software level|website=iso.org|publisher=ISO|access-date=2019-07-16}}</ref> मिश्रा सी: 2012 का हवाला देते हैं।
** आईएसओ 26262-6:2018 भाग 6: सॉफ्टवेयर स्तर पर उत्पाद विकास<ref>{{Cite web|url=https://www.iso.org/standard/68388.html|title=ISO 26262-6:2018 Road vehicles -- Functional safety -- Part 6: Product development at the software level|website=iso.org|publisher=ISO|access-date=2019-07-16}}</ref> एमआईएसआरए सी: 2012 का हवाला देते हैं।
* AUTOSAR सामान्य सॉफ़्टवेयर विनिर्देश (SRS_BSW_00007) इसी तरह MISRA C का हवाला देता है:
* एयूटीओएसएआर सामान्य सॉफ़्टवेयर विनिर्देश (एसआरएस_बीएसडब्ल्यू_00007) इसी तरह एमआईएसआरए सी का हवाला देता है:
** [[ऑटोसार]] 4.2 सामान्य सॉफ्टवेयर विनिर्देश<ref>{{Cite web|url=https://www.autosar.org/fileadmin/user_upload/standards/classic/4-2/AUTOSAR_SWS_BSWGeneral.pdf|title=AUTOSAR 4.2 General Software Specification|website=autosar.org|access-date=2019-07-16}}</ref> आवश्यकता है कि यदि BSW मॉड्यूल कार्यान्वयन सी भाषा में लिखा गया है, तो यह MISRA C:2004 मानक के अनुरूप होगा।
** [[ऑटोसार|एयूटीओएसएआर]] 4.2 सामान्य सॉफ्टवेयर विनिर्देश<ref>{{Cite web|url=https://www.autosar.org/fileadmin/user_upload/standards/classic/4-2/AUTOSAR_SWS_BSWGeneral.pdf|title=AUTOSAR 4.2 General Software Specification|website=autosar.org|access-date=2019-07-16}}</ref> आवश्यकता है कि यदि बीएसडब्ल्यू मापांक कार्यान्वयन सी भाषा में लिखा गया है, तो यह एमआईएसआरए सी:2004 मानक के अनुरूप होगा।
** ऑटोसार 4.3 सामान्य सॉफ्टवेयर विनिर्देश<ref name="AUTOSAR-C">{{cite web|url=https://www.autosar.org/fileadmin/user_upload/standards/classic/4-3/AUTOSAR_SWS_BSWGeneral.pdf|title=AUTOSAR 4.3 General Specification of Basic Software Modules|date=2016-11-30|website=autosar.org|publisher=AutoSAR|access-date=2019-07-16|issue=4.3.0}}</ref> आवश्यकता है कि यदि BSW मॉड्यूल कार्यान्वयन सी भाषा में लिखा गया है, तो यह MISRA C: 2012 मानक के अनुरूप होगा।
** एयूटीओएसएआर 4.3 सामान्य सॉफ्टवेयर विनिर्देश<ref name="AUTOSAR-C">{{cite web|url=https://www.autosar.org/fileadmin/user_upload/standards/classic/4-3/AUTOSAR_SWS_BSWGeneral.pdf|title=AUTOSAR 4.3 General Specification of Basic Software Modules|date=2016-11-30|website=autosar.org|publisher=AutoSAR|access-date=2019-07-16|issue=4.3.0}}</ref> आवश्यकता है कि यदि बीएसडब्ल्यू मापांक कार्यान्वयन सी भाषा में लिखा गया है, तो यह एमआईएसआरए सी: 2012 मानक के अनुरूप होगा।


== दिशानिर्देश वर्गीकरण और वर्गीकरण ==
== दिशानिर्देश वर्गीकरण और संवर्गीकरण ==
जब एक नया सॉफ्टवेयर प्रोजेक्ट शुरू किया जाता है, तो नवीनतम MISRA मानक का उपयोग किया जाना चाहिए। पिछले मानक अभी भी लीगेसी सॉफ़्टवेयर परियोजनाओं के उपयोग के लिए उपलब्ध हैं जिन्हें इसे संदर्भित करने की आवश्यकता है।<ref name="MISRA-Pubs">[http://www.misra.org.uk/Publications/tabid/57/Default.aspx MISRA publications]</ref>
जब एक नया सॉफ्टवेयर परियोजना शुरू किया जाता है, तो नवीनतम एमआईएसआरए मानक का उपयोग किया जाना चाहिए। पिछले मानक अभी भी लीगेसी सॉफ़्टवेयर परियोजनाओं के उपयोग के लिए उपलब्ध हैं जिन्हें इसे संदर्भित करने की आवश्यकता है।<ref name="MISRA-Pubs">[http://www.misra.org.uk/Publications/tabid/57/Default.aspx MISRA publications]</ref>




=== वर्गीकरण ===
=== वर्गीकरण ===
प्रत्येक दिशानिर्देश वर्गीकृत है<ref name="PRQA-factsheet">{{cite web | url=http://www.programmingresearch.com/content/misc/PRQA-MISRAC2012-FactSheet.pdf | title=Fact Sheet: MISRA C:2012 (PDF) | publisher=programmingresearch.com | access-date=10 June 2013}}</ref> अनिवार्य के रूप में (मिश्रा सी के लिए नया: 2012), आवश्यक या सलाह। इसके अलावा, MISRA अनुपालन दस्तावेज़ सलाहकार दिशानिर्देशों को अस्वीकृत करने की अनुमति देता है।
प्रत्येक दिशानिर्देश को<ref name="PRQA-factsheet">{{cite web | url=http://www.programmingresearch.com/content/misc/PRQA-MISRAC2012-FactSheet.pdf | title=Fact Sheet: MISRA C:2012 (PDF) | publisher=programmingresearch.com | access-date=10 June 2013}}</ref> अनिवार्य (एमआईएसआरए सी:2012 के लिए नया), आवश्यक या परामर्शिका के रूप में वर्गीकृत किया गया है। इसके अलावा, एमआईएसआरए अनुपालन दस्तावेज़ परामर्शिका दिशानिर्देशों को अस्वीकृत करने की अनुमति देता है।


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


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


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


=== क्षेत्र ===
=== परिधि ===
मिश्रा सी: 2012 अलग-अलग प्रत्येक दिशानिर्देश को एकल [[अनुवाद इकाई (प्रोग्रामिंग)]] या सिस्टम के रूप में वर्गीकृत करता है।<ref name="PRQA-factsheet"/>
एमआईएसआरए सी: 2012 अलग-अलग प्रत्येक दिशानिर्देश को एकल [[अनुवाद इकाई (प्रोग्रामिंग)|अनुवाद इकाई (क्रमादेशन)]] या सिस्टम के रूप में वर्गीकृत करता है।<ref name="PRQA-factsheet"/>




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


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


=== मिश्रा अनुपालन ===
=== एमआईएसआरए अनुपालन ===
MISRA ने MISRA अनुपालन को समझने और प्राप्त करने के लिए अतिरिक्त मार्गदर्शन प्रदान करने के लिए दस्तावेज़ प्रकाशित किए।
एमआईएसआरए ने एमआईएसआरए अनुपालन को समझने और प्राप्त करने के लिए अतिरिक्त मार्गदर्शन प्रदान करने के लिए दस्तावेज़ प्रकाशित किए है।
* MISRA अनुपालन: 2016, अप्रैल 2016 में MISRA द्वारा जारी किया गया था।<ref name="Compliance2016">{{cite web |url=http://misra.org.uk/LinkClick.aspx?fileticket=w_Syhpkf7xA%3d&tabid=57 |title=MISRA Compliance:2016 (PDF) |publisher=MISRA |access-date=22 July 2016}}</ref>
* एमआईएसआरए अनुपालन: 2016, अप्रैल 2016 में एमआईएसआरए द्वारा जारी किया गया था।<ref name="Compliance2016">{{cite web |url=http://misra.org.uk/LinkClick.aspx?fileticket=w_Syhpkf7xA%3d&tabid=57 |title=MISRA Compliance:2016 (PDF) |publisher=MISRA |access-date=22 July 2016}}</ref>
* MISRA अनुपालन: 2020, संशोधित संस्करण, फरवरी 2020 में जारी किया गया था।<ref name="Compliance2020">{{cite web |url=https://www.misra.org.uk/app/uploads/2021/06/MISRA-Compliance-2020.pdf |title=MISRA Compliance:2020 (PDF) |publisher=MISRA |access-date=8 April 2020}}</ref>
* एमआईएसआरए अनुपालन: 2020, संशोधित संस्करण, फरवरी 2020 में जारी किया गया था।<ref name="Compliance2020">{{cite web |url=https://www.misra.org.uk/app/uploads/2021/06/MISRA-Compliance-2020.pdf |title=MISRA Compliance:2020 (PDF) |publisher=MISRA |access-date=8 April 2020}}</ref>




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


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


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


* नियम से विचलित।
* नियम से विचलित।
Line 76: Line 76:
== प्रकाशित दस्तावेज़ ==
== प्रकाशित दस्तावेज़ ==


=== मिश्रा सी: 1998 ===
=== एमआईएसआरए सी: 1998 ===
MISRA C का पहला संस्करण, वाहन आधारित सॉफ़्टवेयर में C भाषा के उपयोग के लिए दिशानिर्देश, जो 1998 में प्रकाशित हुआ था और इसे आधिकारिक तौर पर MISRA-C:1998 के रूप में जाना जाता है।<ref>{{cite web|url=http://www.misra-c.com/Activities/MISRAC/tabid/160/Default.aspx |title=मिश्रा सी का संक्षिप्त इतिहास|publisher=MISRA |date=2013-03-18 |access-date=2014-06-30}}</ref>
एमआईएसआरए सी का पहला संस्करण, वाहन आधारित सॉफ़्टवेयर में C भाषा के उपयोग के लिए दिशानिर्देश, जो 1998 में प्रकाशित हुआ था और इसे आधिकारिक तौर पर एमआईएसआरए-C:1998 के रूप में जाना जाता है।<ref>{{cite web|url=http://www.misra-c.com/Activities/MISRAC/tabid/160/Default.aspx |title=मिश्रा सी का संक्षिप्त इतिहास|publisher=MISRA |date=2013-03-18 |access-date=2014-06-30}}</ref>
मिश्रा-सी: 1998 में 127 नियम हैं, जिनमें से 93 आवश्यक हैं और 34 सलाहकार हैं; नियमों को 1 से 127 तक अनुक्रम में क्रमांकित किया गया है।
एमआईएसआरए सी: 1998 में 127 नियम हैं, जिनमें से 93 आवश्यक हैं और 34 परामर्शिका हैं; नियमों को 1 से 127 तक अनुक्रम में क्रमांकित किया गया है।


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


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


=== मिश्रा सी: 2012 ===
=== एमआईएसआरए सी: 2012 ===


==== मुख्य दस्तावेज़ ====
==== मुख्य दस्तावेज़ ====
2013 में, तीसरा संस्करण, मिश्रा सी: 2012 प्रकाशित किया गया था। MISRA C: 2012 C भाषा के C99 संस्करण (C90 के लिए दिशानिर्देशों को बनाए रखते हुए) के लिए समर्थन प्रदान करता है, इसके अलावा कई सुधार शामिल हैं जो अनुपालन की लागत और जटिलता को कम कर सकते हैं, जबकि महत्वपूर्ण में C के लगातार, सुरक्षित उपयोग में सहायता करते हैं। सिस्टम।<ref name="2012-announced">{{cite web |url=http://www.misra.org.uk/LinkClick.aspx?fileticket=SAG1iH3YwNE%3d&tabid=59 | title=MISRA C:2012 release date announced | publisher=MISRA | date=26 February 2013 | access-date=10 June 2013}}</ref>
2013 में, तीसरा संस्करण, एमआईएसआरए सी: 2012 प्रकाशित किया गया था। एमआईएसआरए सी: 2012 C भाषा के C99 संस्करण (C90 के लिए दिशानिर्देशों को बनाए रखते हुए) के लिए समर्थन प्रदान करता है, इसके अलावा कई सुधार शामिल हैं जो अनुपालन की लागत और जटिलता को कम कर सकते हैं, जबकि महत्वपूर्ण में C के लगातार, सुरक्षित उपयोग में सहायता करते हैं। सिस्टम।<ref name="2012-announced">{{cite web |url=http://www.misra.org.uk/LinkClick.aspx?fileticket=SAG1iH3YwNE%3d&tabid=59 | title=MISRA C:2012 release date announced | publisher=MISRA | date=26 February 2013 | access-date=10 June 2013}}</ref>
मिश्रा-सी: 2012 में 143 नियम और 16 निर्देश शामिल हैं (अर्थात, ऐसे नियम जिनका अनुपालन व्याख्या के लिए अधिक खुला है, या प्रक्रिया या प्रक्रियात्मक मामलों से संबंधित है); जिनमें से प्रत्येक को अनिवार्य, आवश्यक या सलाहकार के रूप में वर्गीकृत किया गया है। उन्हें एकल अनुवाद इकाई या सिस्टम के रूप में अलग से वर्गीकृत किया गया है। इसके अतिरिक्त, नियमों को निर्णायक या अनिर्णीत के रूप में वर्गीकृत किया गया है।
एमआईएसआरए सी: 2012 में 143 नियम और 16 निर्देश शामिल हैं (अर्थात, ऐसे नियम जिनका अनुपालन व्याख्या के लिए अधिक खुला है, या प्रक्रिया या प्रक्रियात्मक मामलों से संबंधित है); जिनमें से प्रत्येक को अनिवार्य, आवश्यक या परामर्शिका के रूप में वर्गीकृत किया गया है। उन्हें एकल अनुवाद इकाई या सिस्टम के रूप में अलग से वर्गीकृत किया गया है। इसके अतिरिक्त, नियमों को निर्णायक या अनिर्णीत के रूप में वर्गीकृत किया गया है।


====संशोधन 1====
====संशोधन 1====
अप्रैल 2016 में, मिश्रा प्रकाशित (मुफ्त डाउनलोड के रूप में) मिश्रा सी: 2012 - संशोधन 1: अतिरिक्त सुरक्षा दिशानिर्देश<ref name="C2012Amend1">{{cite web | url=https://misra.org.uk/LinkClick.aspx?fileticket=V2wsZxtVGkE%3d&tabid=57 | title=MISRA C:2012 - Amendment 1 (PDF) | publisher=MISRA | date=April 2016 | access-date=31 October 2019}}</ref> जिसने चौदह नए कंप्यूटर सुरक्षा दिशानिर्देश जोड़े।
अप्रैल 2016 में, एमआईएसआरए प्रकाशित (मुफ्त डाउनलोड के रूप में) एमआईएसआरए सी: 2012 - संशोधन 1: अतिरिक्त सुरक्षा दिशानिर्देश<ref name="C2012Amend1">{{cite web | url=https://misra.org.uk/LinkClick.aspx?fileticket=V2wsZxtVGkE%3d&tabid=57 | title=MISRA C:2012 - Amendment 1 (PDF) | publisher=MISRA | date=April 2016 | access-date=31 October 2019}}</ref> जिसने चौदह नए कंप्यूटर सुरक्षा दिशानिर्देश जोड़े।


====संशोधन 2====
====संशोधन 2====
फरवरी 2020 में, MISRA प्रकाशित (मुफ्त डाउनलोड के रूप में) MISRA C:2012 - संशोधन 2: ISO/IEC 9899:2011/18 कोर कार्यक्षमता के लिए अपडेट<ref name="C2012Amend2">{{cite web | url=https://misra.org.uk/LinkClick.aspx?fileticket=42UepuUAjQ4%3d&tabid=57 | title=MISRA C:2012 - Amendment 2 (PDF) | publisher=MISRA | date=February 2020 | access-date=6 January 2021}}</ref> जो C11/C18 के भीतर अपरिभाषित, अनिर्दिष्ट और कार्यान्वयन परिभाषित व्यवहारों के लिए मानचित्रण जोड़ता है।
फरवरी 2020 में, एमआईएसआरए प्रकाशित (मुफ्त डाउनलोड के रूप में) एमआईएसआरए सी:2012 - संशोधन 2: आईएसओ/IEC 9899:2011/18 कोर कार्यक्षमता के लिए अपडेट<ref name="C2012Amend2">{{cite web | url=https://misra.org.uk/LinkClick.aspx?fileticket=42UepuUAjQ4%3d&tabid=57 | title=MISRA C:2012 - Amendment 2 (PDF) | publisher=MISRA | date=February 2020 | access-date=6 January 2021}}</ref> जो C11/C18 के भीतर अपरिभाषित, अनिर्दिष्ट और कार्यान्वयन परिभाषित व्यवहारों के लिए मानचित्रण जोड़ता है।


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


* मिश्रा सी: 2012 - परिशिष्ट 1: नियम मानचित्रण,<ref>{{Cite web|url=https://www.misra.org.uk/forum/download/file.php?id=629|title=MISRA C:2012 - Addendum 1: Rule Mapping (PDF)}}</ref> जिसमें MISRA C:2004 और नए संस्करण के बीच द्वि-दिशात्मक नियम मैपिंग शामिल है। इसका उद्देश्य उपयोगकर्ताओं को प्रवासन में सहायता करना है।
* एमआईएसआरए सी: 2012 - परिशिष्ट 1: नियम मानचित्रण,<ref>{{Cite web|url=https://www.misra.org.uk/forum/download/file.php?id=629|title=MISRA C:2012 - Addendum 1: Rule Mapping (PDF)}}</ref> जिसमें एमआईएसआरए सी:2004 और नए संस्करण के बीच द्वि-दिशात्मक नियम मैपिंग शामिल है। इसका उद्देश्य उपयोगकर्ताओं को प्रवासन में सहायता करना है।
* मिश्रा सी: 2012 - परिशिष्ट 2: मिश्रा सी का कवरेज: 2012 आईएसओ / आईईसी टीएस 17961: 2013 सी सुरक्षित के खिलाफ<ref>{{Cite web|url=https://www.misra.org.uk/LinkClick.aspx?fileticket=Ne5llHFRTtY%3d&tabid=57|title=MISRA C:2012 - Addendum 2: Coverage of MISRA C:2012 against ISO/IEC TS 17961:2013 "C Secure" (PDF)}}</ref>
* एमआईएसआरए सी: 2012 - परिशिष्ट 2: एमआईएसआरए सी का कवरेज: 2012 आईएसओ / आईईसी टीएस 17961: 2013 सी सुरक्षित के खिलाफ<ref>{{Cite web|url=https://www.misra.org.uk/LinkClick.aspx?fileticket=Ne5llHFRTtY%3d&tabid=57|title=MISRA C:2012 - Addendum 2: Coverage of MISRA C:2012 against ISO/IEC TS 17961:2013 "C Secure" (PDF)}}</ref>
* मिश्रा सी: 2012 - परिशिष्ट 3: मिश्रा सी का कवरेज: सीईआरटी सी के खिलाफ 2012<ref>{{Cite web|url=https://www.misra.org.uk/LinkClick.aspx?fileticket=PLS6_EzbAl0%3d&tabid=57|title=MISRA C:2012 - Addendum 3: Coverage of MISRA C:2012 against CERT C (PDF)}}</ref>
* एमआईएसआरए सी: 2012 - परिशिष्ट 3: एमआईएसआरए सी का कवरेज: सीईआरटी सी के खिलाफ 2012<ref>{{Cite web|url=https://www.misra.org.uk/LinkClick.aspx?fileticket=PLS6_EzbAl0%3d&tabid=57|title=MISRA C:2012 - Addendum 3: Coverage of MISRA C:2012 against CERT C (PDF)}}</ref>




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


== उपकरण ==
== उपकरण ==
{{See also|List of tools for static code analysis}}
{{See also|List of tools for static code analysis}}


जबकि कई सॉफ्टवेयर उपकरण मौजूद हैं जो MISRA अनुरूपता के लिए कोड की जांच करने का दावा करते हैं, कोई MISRA प्रमाणन प्रक्रिया नहीं है।<ref>[http://www.misra-c.com/MISRACFAQ/tabid/168/Default.aspx "MISRA C FAQ list."] ''MISRA Consortium''</ref>
जबकि कई सॉफ्टवेयर उपकरण मौजूद हैं जो एमआईएसआरए अनुरूपता के लिए कूट की जांच करने का दावा करते हैं, कोई एमआईएसआरए प्रमाणन प्रक्रिया नहीं है।<ref>[http://www.misra-c.com/MISRACFAQ/tabid/168/Default.aspx "MISRA C FAQ list."] ''MISRA Consortium''</ref>
स्थैतिक कोड विश्लेषण करने वाले उपकरणों का उपयोग करके अधिकांश दिशानिर्देशों की जाँच की जा सकती है। शेष दिशानिर्देशों के लिए डायनेमिक कोड विश्लेषण के उपयोग की आवश्यकता होती है।
स्थैतिक कूट विश्लेषण करने वाले उपकरणों का उपयोग करके अधिकांश दिशानिर्देशों की जाँच की जा सकती है। शेष दिशानिर्देशों के लिए डायनेमिक कूट विश्लेषण के उपयोग की आवश्यकता होती है।


MISRA अनुरूपता के लिए कोड की जाँच करने वाले उपकरणों में शामिल हैं:
एमआईएसआरए अनुरूपता के लिए कूट की जाँच करने वाले उपकरणों में शामिल हैं:
* Astrée (स्थैतिक विश्लेषण) | [[AbsInt]] द्वारा Astrée
* Astrée (स्थैतिक विश्लेषण) | [[AbsInt]] द्वारा Astrée
* एक्सिवियन जीएमबीएच द्वारा [[एक्सिवियन बॉहॉस सुइट]]। मिश्रा सी:2004, सी:2012, सी:2012 संशोधन 1, सी++:2008, अनुपालन:2016।
* एक्सिवियन जीएमबीएच द्वारा [[एक्सिवियन बॉहॉस सुइट]]। एमआईएसआरए सी:2004, सी:2012, सी:2012 संशोधन 1, सी++:2008, अनुपालन:2016।
* [[ग्रामाटेक]] द्वारा [[ कोड सोनार ]]
* [[ग्रामाटेक]] द्वारा [[ कोड सोनार | कूट सोनार]]
* [[Synopsys]] द्वारा [[ आवरण ]] [[स्थिर कोड विश्लेषण]]
* [[Synopsys]] द्वारा [[ आवरण ]] [[स्थिर कोड विश्लेषण|स्थिर कूट विश्लेषण]]
* [[Cppcheck]] - C/C++ के लिए ओपन सोर्स स्टेटिक एनालिसिस टूल
* [[Cppcheck]] - C/C++ के लिए ओपन सोर्स स्टेटिक एनालिसिस टूल
* बगसेंग एसआरएल द्वारा [[चमक]] मिश्रा सी:2004, सी:2012, सी:2012 संशोधन 1, सी++:2008।
* बगसेंग एसआरएल द्वारा [[चमक]] एमआईएसआरए सी:2004, सी:2012, सी:2012 संशोधन 1, सी++:2008।
* [[पर्सफोर्स सॉफ्टवेयर]] द्वारा [[हेलिक्स क्यूएसी]]। मिश्रा सी:1998, सी:2004, सी:2012, सी++:2008।<ref>{{Cite web|url=https://www.perforce.com/products/helix-qac|title = Helix QAC for C and C++ &#124; Perforce}}</ref>
* [[पर्सफोर्स सॉफ्टवेयर]] द्वारा [[हेलिक्स क्यूएसी]]। एमआईएसआरए सी:1998, सी:2004, सी:2012, सी++:2008।<ref>{{Cite web|url=https://www.perforce.com/products/helix-qac|title = Helix QAC for C and C++ &#124; Perforce}}</ref>
* [[दुष्ट लहर सॉफ्टवेयर]] द्वारा [[क्लॉकवर्क]] (अब परफोर्स सॉफ्टवेयर के स्वामित्व में है<ref>{{Cite web|url=https://www.roguewave.com/company/news/2019/perforce-software-acquires-rogue-wave-software|title=Clearlake Capital-Backed Perforce Software to Acquire Rogue Wave Software &#124; Perforce}}</ref>). मिश्रा सी:2012, सी:2012 संशोधन 1, सी++:2008।<ref>{{Cite web|url=https://www.perforce.com/products/klocwork|title=Klocwork for C, C++, C#, Java, and JavaScript &#124; Perforce}}</ref>
* [[दुष्ट लहर सॉफ्टवेयर]] द्वारा [[क्लॉकवर्क]] (अब परफोर्स सॉफ्टवेयर के स्वामित्व में है<ref>{{Cite web|url=https://www.roguewave.com/company/news/2019/perforce-software-acquires-rogue-wave-software|title=Clearlake Capital-Backed Perforce Software to Acquire Rogue Wave Software &#124; Perforce}}</ref>). एमआईएसआरए सी:2012, सी:2012 संशोधन 1, सी++:2008।<ref>{{Cite web|url=https://www.perforce.com/products/klocwork|title=Klocwork for C, C++, C#, Java, and JavaScript &#124; Perforce}}</ref>
* [[लिवरपूल डेटा रिसर्च एसोसिएट्स]] द्वारा [[एलडीआरए टेस्टबेड]]
* [[लिवरपूल डेटा रिसर्च एसोसिएट्स]] द्वारा [[एलडीआरए टेस्टबेड]]
* पैरासॉफ्ट द्वारा पैरासॉफ्ट सी/सी++ टेस्ट। MISRA C 1998, MISRA C 2004, MISRA C 2012 AMD1, AMD2 और AMD3, MISRA C++ 2008, MISRA C++ 202x का ड्राफ्ट संस्करण।<ref>{{cite web|url=https://docs.parasoft.com/display/CPPTESTPROEC20222/Built-in+Test+Configurations|title=C/C++ Built-in Test Configurations|publisher=Parasoft|date=17 October 2022|access-date=9 March 2023}}</ref>
* पैरासॉफ्ट द्वारा पैरासॉफ्ट सी/सी++ टेस्ट। एमआईएसआरए सी 1998, एमआईएसआरए सी 2004, एमआईएसआरए सी 2012 AMD1, AMD2 और AMD3, एमआईएसआरए सी++ 2008, एमआईएसआरए सी++ 202x का प्रारूप संस्करण।<ref>{{cite web|url=https://docs.parasoft.com/display/CPPTESTPROEC20222/Built-in+Test+Configurations|title=C/C++ Built-in Test Configurations|publisher=Parasoft|date=17 October 2022|access-date=9 March 2023}}</ref>
* जिम्पेल सॉफ्टवेयर द्वारा [[ पीसी-एक प्रकार का वृक्ष ]] (अब वेक्टर इंफॉर्मेटिक जीएमबीएच के स्वामित्व में)। मिश्रा सी:1998, सी:2004, सी:2012, सी++:2008।<ref>[http://www.gimpel.com/html/misra.htm MISRA conformance checking, PC-lint/FlexeLint, Gimpel Software.]</ref>
* जिम्पेल सॉफ्टवेयर द्वारा [[ पीसी-एक प्रकार का वृक्ष ]] (अब वेक्टर इंफॉर्मेटिक जीएमबीएच के स्वामित्व में)। एमआईएसआरए सी:1998, सी:2004, सी:2012, सी++:2008।<ref>[http://www.gimpel.com/html/misra.htm MISRA conformance checking, PC-lint/FlexeLint, Gimpel Software.]</ref>
* [[मैथवर्क्स]] द्वारा [[पॉलीस्पेस]]
* [[मैथवर्क्स]] द्वारा [[पॉलीस्पेस]]
* [[पीवीएस-स्टूडियो]] प्रोग्राम वेरिफिकेशन सिस्टम द्वारा
* [[पीवीएस-स्टूडियो]] प्रोग्राम वेरिफिकेशन सिस्टम द्वारा
Line 132: Line 132:
* SciTools द्वारा [[समझें (सॉफ्टवेयर)]]।
* SciTools द्वारा [[समझें (सॉफ्टवेयर)]]।


MISRA अनुरूपता का समर्थन करने वाले C/C++ कंपाइलर में शामिल हैं:
एमआईएसआरए अनुरूपता का समर्थन करने वाले C/C++ कंपाइलर में शामिल हैं:
* [[ग्रीन हिल्स सॉफ्टवेयर]]
* [[ग्रीन हिल्स सॉफ्टवेयर]]
* [[आईएआर सिस्टम]] - मिश्रा सी:1998, सी:2004, सी:2012, सी++:2008।<ref>[https://www.iar.com/iar-embedded-workbench/language-standards/ Languages and Standards; iar.com]</ref>
* [[आईएआर सिस्टम]] - एमआईएसआरए सी:1998, सी:2004, सी:2012, सी++:2008।<ref>[https://www.iar.com/iar-embedded-workbench/language-standards/ Languages and Standards; iar.com]</ref>
* [[उच्च]] - मिश्रा सी:1998, सी:2004, सी:2012।
* [[उच्च]] - एमआईएसआरए सी:1998, सी:2004, सी:2012।


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


MISRA C:1998 पर MISRA C:2004 के साथ पहले के काम की तुलना करने वाले एक पेपर में, [[ द हैटन ]] इस निष्कर्ष पर पहुंचे कि:<ref name="MISRA_comp_1105">[http://www.leshatton.org/Documents/MISRA_comp_1105.pdf एक औद्योगिक संदर्भ में भाषा सबसेटिंग: MISRA C 1998 और MISRA C की तुलना; लेस हैटन; किंग्स्टन विश्वविद्यालय; 2004.]</रेफरी>
एमआईएसआरए सी:1998 पर एमआईएसआरए सी:2004 के साथ पहले के काम की तुलना करने वाले एक पेपर में, [[ द हैटन ]] इस निष्कर्ष पर पहुंचे कि:<ref name="MISRA_comp_1105">[http://www.leshatton.org/Documents/MISRA_comp_1105.pdf एक औद्योगिक संदर्भ में भाषा सबसेटिंग: MISRA C 1998 और MISRA C की तुलना; लेस हैटन; किंग्स्टन विश्वविद्यालय; 2004.]</रेफरी>


{{bquote|In view of the apparent widening influence of the MISRA C standard, this paper attempts to assess whether important deficiencies in the original standard have been addressed satisfactorily. Unfortunately, they have not and the important real to false positive ratio is not much better in MISRA C 2004 than it was in MISRA C 1998 and it is unacceptably low in both.}}
{{bquote|In view of the apparent widening influence of the MISRA C standard, this paper attempts to assess whether important deficiencies in the original standard have been addressed satisfactorily. Unfortunately, they have not and the important real to false positive ratio is not much better in MISRA C 2004 than it was in MISRA C 1998 and it is unacceptably low in both.}}
Line 153: Line 153:


== यह भी देखें ==
== यह भी देखें ==
* [[प्रोग्रामिंग शैली]]
* [[प्रोग्रामिंग शैली|क्रमादेशन शैली]]


==संदर्भ==
==संदर्भ==

Revision as of 21:11, 24 June 2023

एमआईएसआरए सी, एमआईएसआरए कंसोर्टियम द्वारा विकसित 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


बाहरी संबंध