{"id":197143,"date":"2025-09-23T14:40:00","date_gmt":"2025-09-23T14:40:00","guid":{"rendered":"https:\/\/innovationspace.ansys.com\/knowledge\/?post_type=topic&#038;p=197143"},"modified":"2025-09-24T10:57:06","modified_gmt":"2025-09-24T10:57:06","slug":"elevate-your-software-modeling-with-scade-design-rules","status":"publish","type":"topic","link":"https:\/\/innovationspace.ansys.com\/knowledge\/forums\/topic\/elevate-your-software-modeling-with-scade-design-rules\/","title":{"rendered":"Elevate your software modeling with SCADE Design Rules"},"content":{"rendered":"<p style=\"text-align: center\">\n    <img decoding=\"async\" src=\"https:\/\/innovationspace.ansys.com\/knowledge\/wp-content\/uploads\/sites\/4\/2025\/09\/scade-050-banner-scaled.jpeg\" style=\"max-height: 700px !important\" \/><br \/>\n    <em><\/em>\n<\/p>\n<h3  id=\"INTRODUCTION\">Introduction<\/h3>\n<p>Producing quality software is hard; doing it as a team is harder. Engineers must be able to review, understand and maintain software produced by other team members. One useful practice to ease collaboration is linting: using a dedicated tool to flag unwanted patterns, enforce consistent style, and keep complexity under control across a software project.<\/p>\n<p>In the world of safety-critical software, adopting a modeling standard is important. It is even mandatory for systems with high criticality levels, e.g. EN 50716 SIL 3 &amp; 4 or DO-178C\/DO-331 levels A &amp; B. In this context, automatically verifying compliance with said standard improves both efficiency and model quality.<\/p>\n<p>In this article, we will take a look at <a href=\"https:\/\/design-rules.scade.docs.pyansys.com\/\">Ansys SCADE Design Rules<\/a>, an open-source database of metrics and rules to enforce consistent modeling practices for a team working with SCADE Suite.<\/p>\n<p>We will first look at how SCADE enables consistent modeling through the Rules &amp; Metrics feature. We will then explore the catalog of rules, showcasing its use with an example.<\/p>\n<h3  id=\"METRICS-RULES-CHECKER\">Metrics &amp; Rules Checker<\/h3>\n<p>In the world of textual programming languages, there are many linting tools. At their heart, they are all rule-based, static code analyzers. They detect undesirable patterns in the code and raise warnings or errors based on configurable rules. This can be used to discourage the use of some coding patterns, to enforce naming conventions or project structure, and to encourage a consistent style across the codebase.<\/p>\n<p>There are many benefits to linting. It promotes readability, easing maintenance and evolutions; it improves collaboration and onboarding of new team members; it facilitates compliance with safety regulations.<\/p>\n<p>In the model-based software engineering world, SCADE comes with its own <strong>integrated linting feature<\/strong>, called the Metrics &amp; Rules checker.<\/p>\n<p style=\"text-align: center\">\n    <img decoding=\"async\" src=\"https:\/\/innovationspace.ansys.com\/knowledge\/wp-content\/uploads\/sites\/4\/2025\/09\/scade-050-rule-settings-example-1.png\" style=\"max-height: 400px !important\" \/><br \/>\n    <em><em>A sample set of rules on a SCADE Suite model<\/em><\/em>\n<\/p>\n<p>As its name suggests, it allows users to define two kinds of items:<\/p>\n<ul>\n<li><strong>Metrics<\/strong>, that produce a value measured over the currently-open model &#8211; <em>e.g. maximum number of nested state machines in the current model<\/em>.<\/li>\n<li><strong>Rules<\/strong>, that verify a property on the model &#8211; <em>e.g. enforce that no state machine goes beyond 5 levels of nesting, to ease readability<\/em>.<\/li>\n<\/ul>\n<p>Both metrics and rules are implemented as <strong>Python scripts<\/strong> that use the SCADE API to walk through the model. As seen in the examples above, rules may rely on metrics to gather data on the model as part of their evaluation. Since metrics and rules are written in Python, users can easily customize them or write their own.<\/p>\n<p>Checking rules produces a human-readable report. <strong>Mandatory<\/strong> rules must be observed; <strong>Required<\/strong> rules may be violated if a justification is provided<a href=\"https:\/\/innovationspace.ansys.com\/knowledge\/wp-content\/uploads\/sites\/4\/2025\/09\/scade-050-break-the-rules.gif\">;<\/a> <strong>Advisory<\/strong> rules may be broken with no justification. This loosely matches an Error \/ Warning \/ Info levels on other linters. Rule severity can be customized by the user.<\/p>\n<p style=\"text-align: center\">\n    <img decoding=\"async\" src=\"https:\/\/innovationspace.ansys.com\/knowledge\/wp-content\/uploads\/sites\/4\/2025\/09\/scade-050-rule-checker-report-1.png\" style=\"max-height: 700px !important\" \/><br \/>\n    <em><em>SCADE IDE overview after running a rule check. The central report and bottom left output window show that a required rule is violated.<\/em><\/em>\n<\/p>\n<h3  id=\"RULE-CATALOG\">Rule catalog<\/h3>\n<p>SCADE Suite comes installed with a short list of predefined rules. However, the Metrics &amp; Rules Checker is <strong>built to be extended<\/strong>, accommodating new metrics and rules written as Python scripts.<\/p>\n<p>This is exactly what Ansys SCADE Design Rules proposes: a public, open-source catalog of <a href=\"https:\/\/design-rules.scade.docs.pyansys.com\/version\/stable\/rules\/index.html\">more than 100 rules<\/a> and their corresponding <a href=\"https:\/\/design-rules.scade.docs.pyansys.com\/version\/stable\/metrics\/index.html\">metrics<\/a>. They are based on modeling best practices from Ansys customers across many industries. The catalog is open source, under MIT license, and contributions are welcome.<\/p>\n<p>Note that, since modeling practices are subjective, some of the catalog&#8217;s rules are contradictory. The intent is not to select them all; rather, users should select which rules they want to use, then instantiate them with custom parameters to describe their own modeling practices. We will walk through how to do this in the rest of this article.<\/p>\n<h3  id=\"INSTALLING-THE-RULE-CATALOG\">Installing the rule catalog<\/h3>\n<p>The first step to use SCADE Design Rules is to install the package. If you&#8217;re comfortable with Python, the <a href=\"https:\/\/design-rules.scade.docs.pyansys.com\/version\/stable\/getting-started\/index.html\">Getting Started<\/a> page contains instructions to install it, on the Python installation distributed with SCADE, using the <code>pip<\/code> utility.<\/p>\n<p>Alternatively, you may use the <em>Tools &gt; Manage Extensions&#8230;<\/em> menu to install it through a graphical interface:<\/p>\n<p style=\"text-align: center\">\n    <img decoding=\"async\" src=\"https:\/\/innovationspace.ansys.com\/knowledge\/wp-content\/uploads\/sites\/4\/2025\/09\/scade-050-extension-mgr-1.png\" style=\"max-height: 300px !important\" \/><br \/>\n    <em><em>SCADE Suite extension manager with <\/em><code>ansys-scade-design-rules<\/code><em> installed<\/em><\/em>\n<\/p>\n<p>Now that the package is installed, the catalog of rules is ready to be used.<\/p>\n<p>Using metrics and rules on a SCADE model is a multi-step process:<\/p>\n<ul>\n<li><strong>Instantiate<\/strong> a set of metrics &amp; rules in a Python script, optionally overriding some of their parameters to fit your own modeling guidelines.<\/li>\n<li><strong>Register<\/strong> the Python script with your SCADE Suite model.<\/li>\n<li><strong>Select<\/strong> metrics &amp; rules that apply to your model, optionally tweaking their parameters.<\/li>\n<li><strong>Run<\/strong> the checker on your model.<\/li>\n<\/ul>\n<h3  id=\"INSTANTIATING-METRICS-RULES\">Instantiating metrics &amp; rules<\/h3>\n<p>The first step, instantiation, allows <strong>describing metrics &amp; rules that apply to your organization<\/strong>. In this process, you should override default properties, such as rule identifiers, to match naming conventions specific to your organization.<\/p>\n<p>This step takes the form of a <strong>Python script<\/strong> that imports and creates an instance of each desired metric or rule.<\/p>\n<p>Let&#8217;s say that you wish to follow the Ansys Design Standard document, distributed with the SCADE product under <code>%SCADE_INSTALL%\\help\\Common Help Resources\\Design Standard\\DesignStandard-SCS-SDS.pdf<\/code>.<\/p>\n<p>In section <em>2.6. DATA TYPING AND DATA FLOW STRUCTURING<\/em>, the standard lists a rule that discourages the use of literal values, also known as <a href=\"https:\/\/en.m.wikipedia.org\/wiki\/Magic_number_(programming)\">magic numbers<\/a>, in the model:<\/p>\n<table style=\"max-width: 1000px\">\n<tr>\n<td style=\"padding: 0px 10px;min-width: 150px;text-align: center\">\n<p><strong>Ansys Rule ID<\/strong><\/p>\n<\/td>\n<td style=\"padding: 0px 10px;min-width: 150px;text-align: center\">\n<p><strong>Rule<\/strong><\/p>\n<\/td>\n<td style=\"padding: 0px 10px;min-width: 150px;text-align: center\">\n<p><strong>Verification Method<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 0px 10px;min-width: 150px;text-align: center\">\n<p>SDR-52<\/p>\n<\/td>\n<td style=\"padding: 0px 10px;min-width: 150px\">\n<p>Literals shall only be used in constant values.<\/p>\n<p><em>Exceptions may be added to this rule to authorize usage of simple literal values directly in models.<br \/>\nExample:<br \/>\n1, 0, -1, true, false, 1.0, -1.0, 0.0<\/em><\/p>\n<p>Rationale: Using named constants increases maintainability.<\/p>\n<\/td>\n<td style=\"padding: 0px 10px;min-width: 150px\">\n<p>Design Review<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p>This rule is available in the catalog under the name <a href=\"https:\/\/design-rules.scade.docs.pyansys.com\/version\/stable\/rules\/modelling\/no_literals.html\">No Literals<\/a>. You may instantiate it in Python as follows:<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff;overflow:auto;width:auto;background:none;border:none;padding:.2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span><\/span>NoLiterals(<span style=\"color: #999999\">id<\/span><span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;RULE-1&#039;<\/span>, category<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;Data typing&#039;<\/span>, label<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;No magic numbers&#039;<\/span>)\r\n<\/pre>\n<\/div>\n<p>In the above snippet, we overloaded the <code>id<\/code> and <code>category<\/code> fields to match those of your organization&#8217;s design policies. We also overloaded the <code>label<\/code> field to customize the rule&#8217;s name.<\/p>\n<p>Some rules also have a parameter. For instance, another rule, highlighted in <strong>bold<\/strong> in the Ansys Design Standard excerpt below, deals with limiting the number of graphical diagrams associated to a model element:<\/p>\n<table style=\"max-width: 1000px\">\n<tr>\n<td style=\"padding: 0px 10px;min-width: 150px;text-align: center\">\n<p><strong>Ansys Rule ID<\/strong><\/p>\n<\/td>\n<td style=\"padding: 0px 10px;min-width: 150px;text-align: center\">\n<p><strong>Rule<\/strong><\/p>\n<\/td>\n<td style=\"padding: 0px 10px;min-width: 150px;text-align: center\">\n<p><strong>Verification Method<\/strong><\/p>\n<\/td>\n<\/tr>\n<tr>\n<td style=\"padding: 0px 10px;min-width: 150px;text-align: center\">\n<p>SDR-30<\/p>\n<\/td>\n<td style=\"padding: 0px 10px;min-width: 150px\">\n<p>The complexity of a SCADE Model shall be in the scope of the following limits:<\/p>\n<ul>\n<li><strong>Number of diagrams defining an operator, a state, or an action: 7<\/strong><\/li>\n<li>Number of graphical user-operator instances within a single diagram: 7<\/li>\n<li>Number of graphical primitive operator instances within a diagram. This metric also includes textual equations: 15<\/li>\n<li>Number of hierarchical levels of nested state machines: 5<\/li>\n<li>Number of hierarchical levels of conditional blocks (&#8220;If Block&#8221;, &#8220;When Block&#8221;): 7<\/li>\n<li>Number of outgoing transitions for a given state (counting forks as multiple transitions): 7<\/li>\n<\/ul>\n<p>Rationale: Manage models complexity.<\/p>\n<\/td>\n<td style=\"padding: 0px 10px;min-width: 150px\">\n<p>Design Review<\/p>\n<\/td>\n<\/tr>\n<\/table>\n<p>This rule is available in the catalog under the name <a href=\"https:\/\/design-rules.scade.docs.pyansys.com\/version\/stable\/rules\/structure\/maximum_diagrams_per_element.html\">Maximum diagrams per element<\/a>. Its implementation relies on metric <a href=\"https:\/\/design-rules.scade.docs.pyansys.com\/version\/stable\/metrics\/number_of_diagrams_per_element.html\">Number of diagrams per element<\/a> and uses a parameter (default value: <code>7<\/code>) to verify that model elements don&#8217;t have too many diagrams.<\/p>\n<p>Let&#8217;s say that, in your case, you typically use no more than two or three diagrams per model element. You may instantiate the metric, then the rule with a more restrictive parameter, as follows:<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff;overflow:auto;width:auto;background:none;border:none;padding:.2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span><\/span>NumberOfDiagramsPerElement()\r\nMaximumDiagramsPerElement(<span style=\"color: #999999\">id<\/span><span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;RULE-2&#039;<\/span>, category<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;Complexity&#039;<\/span>, parameter<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;3&#039;<\/span>)\r\n<\/pre>\n<\/div>\n<p>Note that this describes your organization&#8217;s modeling policy. There will be an opportunity to fine-tune parameter values before applying the rules to a specific model.<\/p>\n<p>Finally, let&#8217;s add a couple of rules to enforce naming conventions on model items. Depending on the SCADE model, you may want to use the <a href=\"https:\/\/design-rules.scade.docs.pyansys.com\/version\/stable\/rules\/naming\/pascal_case_naming.html\">Pascal case name<\/a> rule, which enforces <code>NamesLikeThisOne<\/code> on multiple model elements including data types, or the <a href=\"https:\/\/design-rules.scade.docs.pyansys.com\/version\/stable\/rules\/naming\/name_structure_type.html\">Type name structure<\/a> rule, which enforces a <code>_t<\/code> suffix on data types.<\/p>\n<p>Note that these two rules are contradictory: both cannot be satisfied at the same time. You&#8217;ll have to pick the correct rule depending on the model you are working with. You may overload the <code>description<\/code> field of these rules to remind yourself of that.<\/p>\n<p>With all the above rules instantiated, your final Python script looks as follows:<\/p>\n<p><!-- HTML generated using hilite.me --><\/p>\n<div style=\"background: #ffffff;overflow:auto;width:auto;background:none;border:none;padding:.2em .6em\">\n<pre style=\"margin: 0;line-height: 125%\"><span><\/span><span style=\"font-weight: bold\">from<\/span> <span style=\"color: #555555\">ansys.scade.design_rules.modelling.no_literals<\/span> <span style=\"font-weight: bold\">import<\/span> NoLiterals\r\n<span style=\"font-weight: bold\">from<\/span> <span style=\"color: #555555\">ansys.scade.design_rules.metrics.number_of_diagrams_per_element<\/span> <span style=\"font-weight: bold\">import<\/span> NumberOfDiagramsPerElement\r\n<span style=\"font-weight: bold\">from<\/span> <span style=\"color: #555555\">ansys.scade.design_rules.structure.maximum_diagrams_per_element<\/span> <span style=\"font-weight: bold\">import<\/span> MaximumDiagramsPerElement\r\n<span style=\"font-weight: bold\">from<\/span> <span style=\"color: #555555\">ansys.scade.design_rules.naming.pascal_case_naming<\/span> <span style=\"font-weight: bold\">import<\/span> PascalCaseNaming\r\n<span style=\"font-weight: bold\">from<\/span> <span style=\"color: #555555\">ansys.scade.design_rules.naming.name_structure_type<\/span> <span style=\"font-weight: bold\">import<\/span> NameStructureType\r\n\r\nNoLiterals(<span style=\"color: #999999\">id<\/span><span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;RULE-1&#039;<\/span>, category<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;Data typing&#039;<\/span>, label<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;No magic numbers&#039;<\/span>)\r\nNumberOfDiagramsPerElement()\r\nMaximumDiagramsPerElement(<span style=\"color: #999999\">id<\/span><span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;RULE-2&#039;<\/span>, category<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;Complexity&#039;<\/span>, parameter<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;3&#039;<\/span>)\r\nPascalCaseNaming(<span style=\"color: #999999\">id<\/span><span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;RULE-3A&#039;<\/span>, category<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;Naming&#039;<\/span>, description<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;This rule should only apply to models like so-and-so.&#039;<\/span>)\r\nNameStructureType(<span style=\"color: #999999\">id<\/span><span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;RULE-3B&#039;<\/span>, category<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;Naming&#039;<\/span>, description<span style=\"font-weight: bold\">=<\/span><span style=\"color: #bb8844\">&#039;This rule should only apply to models like such-and-such.&#039;<\/span>)\r\n<\/pre>\n<\/div>\n<p>Note that the above rule selection does not reflect a real-life modeling scenario. A selection of rules matching the Ansys Design Standard document is pre-installed with the product.<\/p>\n<h3  id=\"REGISTERING-A-SET-OF-METRICS-RULES\">Registering a set of metrics &amp; rules<\/h3>\n<p>Now that you have assembled a Python script that lists and configures rules pertaining to your organization, you must <strong>register this script with your SCADE Suite model<\/strong>.<\/p>\n<p>To do so, open your SCADE Suite model and go to <em>Project &gt; Metrics and Rules Checker &gt; Manage Metrics and Rules&#8230;<\/em> In the pop-up window, use the &#8220;x&#8221; button to remove the default metrics and rules, then use the &#8220;+&#8221; button to add your custom script:<\/p>\n<p style=\"text-align: center\">\n    <img decoding=\"async\" src=\"https:\/\/innovationspace.ansys.com\/knowledge\/wp-content\/uploads\/sites\/4\/2025\/09\/scade-050-register-rules-1.png\" style=\"max-height: 500px !important\" \/><br \/>\n    <em><em>Custom Metrics &amp; Rules registered with a SCADE Suite model<\/em><\/em>\n<\/p>\n<p>Note that the script can be anywhere on your local computer &#8211; the SCADE project will just save a path to the Python file. If you are maintaining your SCADE project under configuration management (which you should!), we recommend picking one of these approaches:<\/p>\n<ul>\n<li>If your metrics &amp; rules apply to a <strong>single model<\/strong>, store the script in the <strong>same folder<\/strong> as your model and reference it as a relative path. This is illustrated in the screenshot above.<\/li>\n<li>If your metrics &amp; rules apply to a <strong>set of models<\/strong> living in the same repository, you may want to store the script in the <strong>parent folder<\/strong> of your models, and reference it locally. In the screenshot above, it would be <code>..\/CustomMetricsAndRules.py<\/code>.<\/li>\n<li>If your metrics &amp; rules apply to your <strong>whole organization<\/strong>, you may want to store the script in its own repository and reference its <strong>path using an environment variable<\/strong>, e.g. <code>$(METRICS_RULES_REPO)\/CustomMetricsAndRules.py<\/code>. Alternatively, you may package your custom metrics and rules as a Python package, to be distributed and installed directly from the SCADE Suite extension mechanism. More information in <a href=\"https:\/\/ansyshelp.ansys.com\/public\/Views\/Secured\/SCADE\/v251\/en\/PDFS\/Common%20Help%20Resources\/SCADE%20APIs\/Python%20API%20Guide\/PythonAPIGuide_SCF-APG-25.pdf#G9.1143281\">Section 6<\/a> of the SCADE Python API Guide.<\/li>\n<\/ul>\n<p>This way, all team members working with SCADE Suite can seamlessly use an up-to-date version of the same metrics and rules.<\/p>\n<h3  id=\"SELECTING-AND-APPLYING-METRICS-RULES\">Selecting and applying metrics &amp; rules<\/h3>\n<p>Your metrics and rules are now defined and registered with your model. Under <em>Project &gt; Metrics and Rules Checker &gt; Settings&#8230;<\/em>, you can now see them appear in their respective tabs:<\/p>\n<p style=\"text-align: center\">\n    <img decoding=\"async\" src=\"https:\/\/innovationspace.ansys.com\/knowledge\/wp-content\/uploads\/sites\/4\/2025\/09\/scade-050-rule-settings-1.png\" style=\"max-height: 400px !important\" \/><br \/>\n    <em><em>Custom rules registered with the current model. Note the customized labels and descriptions.<\/em><\/em>\n<\/p>\n<p>In this dialog, you can make some final tweaks to rule application on the current model:<\/p>\n<ul>\n<li>The <em>Model<\/em> tab allows you to restrict rule application to some parts of the model only.<\/li>\n<li>The <em>Metrics<\/em> and <em>Rules<\/em> tabs allow you to selectively enable metrics or rules for the current model. In the image above, we have ticked <em>RULE-3A Pascal Case Name<\/em> for this model, and unticked <em>RULE-3B Type name structure<\/em>.<\/li>\n<li>For rules that have a parameter under the <em>Rules<\/em> tab, you may overload the parameter value by double-clicking it or using the <em>F2<\/em> keyboard shortcut.<\/li>\n<\/ul>\n<h3  id=\"RUNNING-THE-CHECKER\">Running the checker<\/h3>\n<p>You are finally ready to run the checker against your current model.<\/p>\n<p>To trigger a <strong>manual check<\/strong>, go to <em>Project &gt; Metrics and Rules Checker &gt; Check Rules<\/em>. You are then presented with a <strong>report<\/strong> that displays any rule violations. Depending on rule severity, these violations may need to be fixed to adhere to the modeling standard, or a justification may be provided for cases where the rule should not apply. More information in <a href=\"https:\/\/ansyshelp.ansys.com\/public\/Views\/Secured\/SCADE\/v251\/en\/PDFS\/SCADE%20Suite%20Help%20Resources\/Manuals\/User%20Manual\/UserManual_SCS-UM-25.pdf#G12.1149557\">Section 7<\/a> of the SCADE Suite user manual.<\/p>\n<p>If you are keeping your SCADE model under configuration management (which, again, you should!), you may be interested in triggering the rule checker in <strong>batch mode<\/strong>, as part of your <strong>pre-commit<\/strong> actions or as an <a href=\"https:\/\/actions.scade.docs.pyansys.com\/version\/stable\/suite-actions\/index.html#check-model\">action<\/a> in your <strong>CI\/CD<\/strong> <a href=\"https:\/\/innovationspace.ansys.com\/knowledge\/forums\/topic\/automating-ansys-scade-suite-workflows-with-github-actions\/\">pipeline<\/a>.<\/p>\n<h3  id=\"EXPLORE-FURTHER\">Explore further<\/h3>\n<p>Are you ready to try this out? Head over to our <a href=\"https:\/\/design-rules.scade.docs.pyansys.com\/\">SCADE Design Rules<\/a> docs and follow the &#8220;Getting Started&#8221; page to install the extension and select the rules you&#8217;d like to start using.<\/p>\n<p>You may also start a <a href=\"https:\/\/www.ansys.com\/products\/embedded-software\/ansys-scade-suite\/scade-trial\">30-day free trial<\/a> of SCADE Suite. If you&#8217;d like to know more about how Ansys SCADE can improve your software development workflow, you may contact us from the <a href=\"https:\/\/www.ansys.com\/products\/embedded-software\">Ansys Embedded Software page<\/a>.<\/p>\n<p>Finally, remember that the metrics &amp; rules catalog is open source; we welcome <a href=\"https:\/\/design-rules.scade.docs.pyansys.com\/version\/stable\/contributing\/index.html\">contributions<\/a> from industry players to grow it!<\/p>\n<h3  id=\"ABOUT-THE-AUTHOR\">About the author<\/h3>\n<table style=\"max-width: 1000px;border: none !important\">\n<tr>\n<td style=\"padding: 0px 10px;min-width: 150px;border: none !important\">\n<p style=\"text-align: center\">\n    <img decoding=\"async\" src=\"https:\/\/innovationspace.ansys.com\/knowledge\/wp-content\/uploads\/sites\/4\/2025\/09\/scade-050-author-1.png\" style=\"max-height: 150px !important\" \/><br \/>\n                <em><\/em>\n<\/p>\n<\/td>\n<td style=\"padding: 0px 10px;min-width: 150px;border: none !important\">\n<p><strong>Fran\u00e7ois Couadau<\/strong> (<a href=\"https:\/\/www.linkedin.com\/in\/fcouadau\/\">LinkedIn<\/a>) is a Senior Product Manager at Ansys. He works on embedded HMI software aspects in the SCADE and Scade One products. His past experience includes distributed systems and telecommunications.<\/p>\n<\/td>\n<\/tr>\n<\/table>\n","protected":false},"template":"","class_list":["post-197143","topic","type-topic","status-publish","hentry","topic-tag-extension","topic-tag-github","topic-tag-metrics","topic-tag-rules","topic-tag-scade","topic-tag-suite"],"aioseo_notices":[],"acf":[],"custom_fields":[{"0":{"_edit_lock":["1758826310:30"],"_edit_last":["1769"],"_aioseo_title":[null],"_aioseo_description":[null],"_aioseo_keywords":["a:0:{}"],"_aioseo_og_title":[null],"_aioseo_og_description":[null],"_aioseo_og_article_section":[""],"_aioseo_og_article_tags":["a:0:{}"],"_aioseo_twitter_title":[null],"_aioseo_twitter_description":[null],"filter_by_optics_product":["Lumerical"],"_filter_by_optics_product":["field_64fb192ba3121"],"application_name":[""],"_application_name":["field_64a80903c8e15"],"family":[""],"_family":["field_64a809229a857"],"siebel_km_number":[""],"_siebel_km_number":["field_63ecbffce60db"],"salesforce_km_number":[""],"_salesforce_km_number":["field_63ecc018e60dc"],"km_published_date":[""],"_km_published_date":["field_64c77704499dd"],"product_version":[""],"_product_version":["field_64c776cb4fd2e"],"_bbp_forum_id":["27825"],"_bbp_topic_id":["197143"],"_bbp_author_ip":["20.82.84.9"],"_bbp_last_reply_id":["0"],"_bbp_last_active_id":["197144"],"_bbp_last_active_time":["2025-09-23 14:40:00"],"_bbp_reply_count":["0"],"_bbp_reply_count_hidden":["0"],"_bbp_voice_count":["0"],"_btv_view_count":["974"],"_bbp_likes_count":["4"]},"test":"solution"}],"_links":{"self":[{"href":"https:\/\/innovationspace.ansys.com\/knowledge\/wp-json\/wp\/v2\/topics\/197143","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/innovationspace.ansys.com\/knowledge\/wp-json\/wp\/v2\/topics"}],"about":[{"href":"https:\/\/innovationspace.ansys.com\/knowledge\/wp-json\/wp\/v2\/types\/topic"}],"version-history":[{"count":8,"href":"https:\/\/innovationspace.ansys.com\/knowledge\/wp-json\/wp\/v2\/topics\/197143\/revisions"}],"predecessor-version":[{"id":197160,"href":"https:\/\/innovationspace.ansys.com\/knowledge\/wp-json\/wp\/v2\/topics\/197143\/revisions\/197160"}],"wp:attachment":[{"href":"https:\/\/innovationspace.ansys.com\/knowledge\/wp-json\/wp\/v2\/media?parent=197143"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}