{"id":23451,"date":"2017-01-12T10:00:49","date_gmt":"2017-01-12T18:00:49","guid":{"rendered":"https:\/\/www.jamasoftware.com\/?p=23451"},"modified":"2023-01-12T16:54:40","modified_gmt":"2023-01-13T00:54:40","slug":"how-to-develop-safety-critical-system-software-requirements","status":"publish","type":"post","link":"https:\/\/www.jamasoftware.com\/legacy\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/","title":{"rendered":"Best Practices for Developing Safety-Critical System Software Requirements"},"content":{"rendered":"<p>What do you call a system that has never-changing requirements? An obsolete system. Systems that are healthy and growing are always evolving or changing in some way.<\/p>\n<p>Avionics, automotive and medical systems require airtight requirements. For the customers and users of these complex systems\u2014and the companies building them\u2014safety and security is critical.<\/p>\n<p>Getting safety-critical requirements right is a surefire step in the right direction.<\/p>\n<p>But too often, the requirements for these systems\u2019 components invite more questions than they answer, and requirements management turns into a process of trying to pick out the bits of data you need, when you need them, while everything churns together in a roiling, boiling stew.<\/p>\n<p>Safety-critical systems developers working with regulations and compliance standards know that opting for speed over safety, or safety over speed, adds risk. To succeed, both must be prioritized.<\/p>\n<p><strong>The majority of product, version and variant failures stem from weak requirements. <\/strong><\/p>\n<p>According to Vance Hilderman, CEO of the safety-critical systems and software engineering company AFuzion, \u201cSafety-critical requirements include safety aspects, but not exclusively. There\u2019s a grey area between functional, performance and safety requirements because if the system doesn\u2019t function, it can\u2019t be safe. If it doesn\u2019t meet performance criteria it might not achieve safety aspects, but then there are explicit safety requirements as well. The problem is that most safety-critical requirement specifications are incomplete. They lack complete hazard-prevention mitigation. They can all be improved.\u201d<\/p>\n<p><strong>\u201cAlmost all accidents related to software components in the past 20 years can be traced to flaws in the requirement specifications such as unhandled cases.\u201d<\/strong> &#8211; <em>Software Engineering, Safety-Critical Requirements &amp; Specification<\/em><\/p>\n<p>The challenge is to prevent those accidents in the first place and try to make tomorrow\u2019s unhandled case be a handled case today. Knowing the right procedures for developing safety-critical requirements is the key. But what are these best practices, why are they the \u201cbest,\u201d and how do teams utilize them? Vance offers some tips, below:<\/p>\n<ul>\n<li><strong>Good requirements should be mandatory.<\/strong> That means not a goal, not if you have time but truly mandatory.<\/li>\n<li><strong>Requirements must be consistent.<\/strong> Meaning, they don\u2019t conflict with other requirements. Systems engineers must be able to manage and analyze requirements; with complex systems you need tools for that.<\/li>\n<li><strong>Requirements must be uniquely identified.<\/strong> They must state what we do, not how. The \u201chow\u201d is design and architecture.<\/li>\n<li><strong>Requirements need to be complete and unambiguous.<\/strong> That means full concurrence among developers as to what a requirement means, with no need for interpretation, because the requirement has sufficient detail to know exactly what the developer of that requirement intended.<\/li>\n<li><strong>Requirements must be consistent, with no conflicting characteristics.<\/strong> We know the priority, the timing aspects and we know the performance attributes. We cannot have conflicting logic. A or B, or A and B when C is not valid. We avoid different terms. For example, \u201ctrigger, assign, prompt, display, cue.\u201d Those five words could be interchangeable but they\u2019re different. We must be consistent.<\/li>\n<li><strong>Requirements must be traceable.<\/strong> That\u2019s an essential part of good requirements management activities\u2014to trace up to a system-level requirement and trace down to the implementation and the test. Traceability is also used during the code review to assess, \u201cDoes this logic fully implement all it should\u201d?<\/li>\n<li><strong>Requirements must be testable.<\/strong> Each requirement is defined in quantifiable terms. For each requirement, can a test be formulated that will unambiguously answer the question, \u201cHas the requirement been met?\u201d Some things are that simple.<\/li>\n<li><strong>Requirements must be verifiable.<\/strong> For example, take this requirement, \u201cThe system shall support autonomous driving or flying.\u201d All of us in the automotive world, we\u2019re leaning towards that, from aviation to new AVs.<\/li>\n<\/ul>\n<p>To learn more about how to build, maintain and reuse a rock-solid requirements foundation, please watch <a href=\"https:\/\/www.jamasoftware.com\/resource\/developing-safety-critical-system-software-requirements-webinar\/\">Developing Safety-Critical System &amp; Software Requirements.<\/a><\/p>\n<input class=\"fooboxshare_post_id\" type=\"hidden\" value=\"23451\"\/>","protected":false},"excerpt":{"rendered":"<p>What do you call a system that has never-changing requirements? An obsolete system. Systems that are healthy and growing are always evolving or changing in some way. Avionics, automotive and medical systems require airtight requirements. For the customers and users of these complex systems\u2014and the companies building them\u2014safety and security is critical. Getting safety-critical requirements [&hellip;]<\/p>\n","protected":false},"author":73,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[851],"tags":[49,287,318],"industry":[582,581],"class_list":["post-23451","post","type-post","status-publish","format-standard","hentry","category-systems-engineering","tag-best-practices","tag-complex-product-development","tag-functional-safety","industry-aerospace-defense","industry-automotive"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.1 (Yoast SEO v28.1) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Safety-Critical Requirements | Avionics Requirements | Jama Software<\/title>\n<meta name=\"description\" content=\"In this post, transcribed from a webinar with avionics engineering expert Vance Hilderman, learn best practices on safety-critical requirements.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Best Practices for Developing Safety-Critical System Software Requirements\" \/>\n<meta property=\"og:description\" content=\"In this post, transcribed from a webinar with avionics engineering expert Vance Hilderman, learn best practices on safety-critical requirements.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/\" \/>\n<meta property=\"og:site_name\" content=\"Jama Software\" \/>\n<meta property=\"article:published_time\" content=\"2017-01-12T18:00:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-01-13T00:54:40+00:00\" \/>\n<meta name=\"author\" content=\"Marc Oppy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Marc Oppy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2017\\\/01\\\/12\\\/how-to-develop-safety-critical-system-software-requirements\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2017\\\/01\\\/12\\\/how-to-develop-safety-critical-system-software-requirements\\\/\"},\"author\":{\"name\":\"Marc Oppy\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#\\\/schema\\\/person\\\/ffd91dd4997dd02d59bdbdbe37ef37ea\"},\"headline\":\"Best Practices for Developing Safety-Critical System Software Requirements\",\"datePublished\":\"2017-01-12T18:00:49+00:00\",\"dateModified\":\"2023-01-13T00:54:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2017\\\/01\\\/12\\\/how-to-develop-safety-critical-system-software-requirements\\\/\"},\"wordCount\":644,\"keywords\":[\"best practices\",\"Complex Product Development\",\"Functional Safety\"],\"articleSection\":[\"Systems Engineering\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2017\\\/01\\\/12\\\/how-to-develop-safety-critical-system-software-requirements\\\/\",\"url\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2017\\\/01\\\/12\\\/how-to-develop-safety-critical-system-software-requirements\\\/\",\"name\":\"Safety-Critical Requirements | Avionics Requirements | Jama Software\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#website\"},\"datePublished\":\"2017-01-12T18:00:49+00:00\",\"dateModified\":\"2023-01-13T00:54:40+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#\\\/schema\\\/person\\\/ffd91dd4997dd02d59bdbdbe37ef37ea\"},\"description\":\"In this post, transcribed from a webinar with avionics engineering expert Vance Hilderman, learn best practices on safety-critical requirements.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2017\\\/01\\\/12\\\/how-to-develop-safety-critical-system-software-requirements\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2017\\\/01\\\/12\\\/how-to-develop-safety-critical-system-software-requirements\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/2017\\\/01\\\/12\\\/how-to-develop-safety-critical-system-software-requirements\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.jamasoftware.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Best Practices for Developing Safety-Critical System Software Requirements\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#website\",\"url\":\"https:\\\/\\\/www.jamasoftware.com\\\/\",\"name\":\"Jama Software\",\"description\":\"Jama Connect\u00ae #1 in Requirements Management\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.jamasoftware.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.jamasoftware.com\\\/#\\\/schema\\\/person\\\/ffd91dd4997dd02d59bdbdbe37ef37ea\",\"name\":\"Marc Oppy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bd447ebac0126d7424634c1e9593e9670f0b61ccd91436786fa2436e8d602251?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bd447ebac0126d7424634c1e9593e9670f0b61ccd91436786fa2436e8d602251?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bd447ebac0126d7424634c1e9593e9670f0b61ccd91436786fa2436e8d602251?s=96&d=mm&r=g\",\"caption\":\"Marc Oppy\"},\"description\":\"Marc Oppy writes about requirements management, requirements traceability, developing safety-critical system and software requirements, systems engineering, and tips on how to write better requirements.\",\"url\":\"https:\\\/\\\/www.jamasoftware.com\\\/blog\\\/author\\\/moppy\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Safety-Critical Requirements | Avionics Requirements | Jama Software","description":"In this post, transcribed from a webinar with avionics engineering expert Vance Hilderman, learn best practices on safety-critical requirements.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/","og_locale":"en_US","og_type":"article","og_title":"Best Practices for Developing Safety-Critical System Software Requirements","og_description":"In this post, transcribed from a webinar with avionics engineering expert Vance Hilderman, learn best practices on safety-critical requirements.","og_url":"https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/","og_site_name":"Jama Software","article_published_time":"2017-01-12T18:00:49+00:00","article_modified_time":"2023-01-13T00:54:40+00:00","author":"Marc Oppy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Marc Oppy","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/#article","isPartOf":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/"},"author":{"name":"Marc Oppy","@id":"https:\/\/www.jamasoftware.com\/#\/schema\/person\/ffd91dd4997dd02d59bdbdbe37ef37ea"},"headline":"Best Practices for Developing Safety-Critical System Software Requirements","datePublished":"2017-01-12T18:00:49+00:00","dateModified":"2023-01-13T00:54:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/"},"wordCount":644,"keywords":["best practices","Complex Product Development","Functional Safety"],"articleSection":["Systems Engineering"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/","url":"https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/","name":"Safety-Critical Requirements | Avionics Requirements | Jama Software","isPartOf":{"@id":"https:\/\/www.jamasoftware.com\/#website"},"datePublished":"2017-01-12T18:00:49+00:00","dateModified":"2023-01-13T00:54:40+00:00","author":{"@id":"https:\/\/www.jamasoftware.com\/#\/schema\/person\/ffd91dd4997dd02d59bdbdbe37ef37ea"},"description":"In this post, transcribed from a webinar with avionics engineering expert Vance Hilderman, learn best practices on safety-critical requirements.","breadcrumb":{"@id":"https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.jamasoftware.com\/blog\/2017\/01\/12\/how-to-develop-safety-critical-system-software-requirements\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.jamasoftware.com\/"},{"@type":"ListItem","position":2,"name":"Best Practices for Developing Safety-Critical System Software Requirements"}]},{"@type":"WebSite","@id":"https:\/\/www.jamasoftware.com\/#website","url":"https:\/\/www.jamasoftware.com\/","name":"Jama Software","description":"Jama Connect\u00ae #1 in Requirements Management","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.jamasoftware.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.jamasoftware.com\/#\/schema\/person\/ffd91dd4997dd02d59bdbdbe37ef37ea","name":"Marc Oppy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/bd447ebac0126d7424634c1e9593e9670f0b61ccd91436786fa2436e8d602251?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bd447ebac0126d7424634c1e9593e9670f0b61ccd91436786fa2436e8d602251?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bd447ebac0126d7424634c1e9593e9670f0b61ccd91436786fa2436e8d602251?s=96&d=mm&r=g","caption":"Marc Oppy"},"description":"Marc Oppy writes about requirements management, requirements traceability, developing safety-critical system and software requirements, systems engineering, and tips on how to write better requirements.","url":"https:\/\/www.jamasoftware.com\/blog\/author\/moppy\/"}]}},"_links":{"self":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/posts\/23451","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/users\/73"}],"replies":[{"embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/comments?post=23451"}],"version-history":[{"count":0,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/posts\/23451\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/media?parent=23451"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/categories?post=23451"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/tags?post=23451"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.jamasoftware.com\/legacy\/wp-json\/wp\/v2\/industry?post=23451"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}