17-03-2025, 09:01 AM
There has been a discrepancy between MISRA C and MISRA C++ for some years now* concerning the modal verbs used with respect to the guideline categorization. It would be informative for the user of these Guidelines to understand what were the original reasons behind that and why this is still the case. Is it only a matter of distinct Working Groups (which nevertheless share/d some common members), has it to do with maintaining legacy, or something else entirely?
But the more concerning question is, is it planned for future MISRA C editions to adopt the more nuanced wording of the MISRA C++ Guidelines with respect to the guideline categories of "Mandatory", "Required", "Advisory", and "Disapplied"?
Currently, established convention for each of the two documents is such that a guideline is introduced through their respective summary (requirement (MISRA C) / headline (MISRA C++) text) employing one of the following modal verbs, subject to the guideline category (M/R/A/D)†:
A possible equalization of phrase will ultimately provide for a greater consistency between both sets of documents for the benefit of their mutual user. It would also make it straightforward for the user to unambiguously associate a guideline with its category.
_____
(*) Since introducing the category of "mandatory" in MISRA C++:2023 (October 2023), after it had been introduced in MISRA C:2012, 3rd Edn, March 2013.
(†) Note that guideline re-categorization entails no special treatment in this regard (e.g. substituting one modal auxiliary for another) as it is concerned only with how a guideline are to be handled and applied in a given, concrete project: compliance level claimed for a guideline may be affected due to their revised category but the normative prescription of the guideline, reclassified or not, never alters.
(‡) MISRA C++:2008's category of "Document" ("shall") is not considered.
(§) Note that for the relatively new category of "Disapplied", introduced back in MISRA Compliance:2016 and subsequently added both in MISRA C++:2023 and recently in MISRA C:2025, only the latter actually provides any guideline with such a category. What modal expression will be adopted by future MISRA C++ editions for this fresh category is yet to be seen (could that be "ought (not) to" instead of "should (not)", to further discrimination between guidelines of different category?).
But the more concerning question is, is it planned for future MISRA C editions to adopt the more nuanced wording of the MISRA C++ Guidelines with respect to the guideline categories of "Mandatory", "Required", "Advisory", and "Disapplied"?
Currently, established convention for each of the two documents is such that a guideline is introduced through their respective summary (requirement (MISRA C) / headline (MISRA C++) text) employing one of the following modal verbs, subject to the guideline category (M/R/A/D)†:
- MISRA C : "shall", "shall", "should", "should"
- MISRA C++‡ : "must", "shall", "should", n/a§
A possible equalization of phrase will ultimately provide for a greater consistency between both sets of documents for the benefit of their mutual user. It would also make it straightforward for the user to unambiguously associate a guideline with its category.
_____
(*) Since introducing the category of "mandatory" in MISRA C++:2023 (October 2023), after it had been introduced in MISRA C:2012, 3rd Edn, March 2013.
(†) Note that guideline re-categorization entails no special treatment in this regard (e.g. substituting one modal auxiliary for another) as it is concerned only with how a guideline are to be handled and applied in a given, concrete project: compliance level claimed for a guideline may be affected due to their revised category but the normative prescription of the guideline, reclassified or not, never alters.
(‡) MISRA C++:2008's category of "Document" ("shall") is not considered.
(§) Note that for the relatively new category of "Disapplied", introduced back in MISRA Compliance:2016 and subsequently added both in MISRA C++:2023 and recently in MISRA C:2025, only the latter actually provides any guideline with such a category. What modal expression will be adopted by future MISRA C++ editions for this fresh category is yet to be seen (could that be "ought (not) to" instead of "should (not)", to further discrimination between guidelines of different category?).
Yordan Naydenov
Software Engineer
KOSTAL Bulgaria Automotive Ltd.
Software Engineer
KOSTAL Bulgaria Automotive Ltd.