{"id":822,"date":"2014-09-10T19:06:01","date_gmt":"2014-09-11T02:06:01","guid":{"rendered":"https:\/\/blogs.plm.automation.siemens.com\/t5\/Polarion-Blog\/8-Best-Practices-for-Building-Quality-Automotive-Software\/ba-p\/380906"},"modified":"2026-03-26T05:31:15","modified_gmt":"2026-03-26T09:31:15","slug":"8-best-practices-for-building-quality-automotive-software-applications-guest-blog","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/polarion\/8-best-practices-for-building-quality-automotive-software-applications-guest-blog\/","title":{"rendered":"8 Best Practices for Building Quality Automotive Software Applications (Guest Blog)"},"content":{"rendered":"<p>Are you confident that your safety-critical automotive software applications are working as intended?<\/p>\n<p>If the answer is &#8220;no&#8221;, you are not alone. And you have good reason to be apprehensive: in the past year, we\u2019ve seen very public software-related recalls from automotive powerhouses like Toyota, Nissan and GM. &#8220;This is just the beginning of software recalls,&#8221; Roger Lanctot, associate director of Strategy Analytics says. &#8220;In the past it was all about mechanical failures.&#8221;&nbsp;<!--more--><br \/>\n<H2><A href=\"http:\/\/community.plm.automation.siemens.com\/legacyfs\/online\/siemensplm_blogs\/2014\/07\/recall-on-those.jpg\" rel=\"nofollow noopener noreferrer\"><IMG class=\"alignright  wp-image-6021\" src=\"http:\/\/community.plm.automation.siemens.com\/legacyfs\/online\/siemensplm_blogs\/2014\/07\/recall-on-those.jpg\" alt=\"Old photo: car wrecked in water. Wasn't there a recall?\" width=\"302\" height=\"242\" \/><\/A><STRONG>Why were there so many automotive recalls in 2014?<\/STRONG><\/H2><br \/>\nThe short answer is that automotive recalls are on the upsurge because of an increase in software as a percentage of these systems, which in turn means more malfunctioning electronic systems. This surge in recalls signals a crisis in quality that is affecting the entire software industry, from the healthcare.gov web site to applets on your mobile phone.<br \/>\n<H3>How can you&nbsp;minimize the&nbsp;risk?<\/H3><br \/>\nWhat can your organization do about the automotive <A href=\"https:\/\/www.vectorcast.com\/quality\" rel=\"nofollow noopener noreferrer\">software quality<\/A> crisis? A good first step is to create a culture focused on quality. Some best practices for engineering high quality applications include:<br \/>\n<OL><br \/>\n\t<LI><STRONG>Build High Quality Requirements:<\/STRONG> During the design phase it is critical to build high quality and consistent requirements that do not just address the nominal features, but also edge cases, functional data ranges, and error handling.<\/LI><br \/>\n\t<LI><STRONG>Prototype While Building Requirements:<\/STRONG> Ensure that the design is valid by creating prototypes of critical functionality. Will your algorithm scale from 10 data items to 10 million?<\/LI><br \/>\n\t<LI><STRONG>Build Testable Software:<\/STRONG>&nbsp; No one would design a widget that could not be manufactured and tested efficiently, but engineers consistently build software that is hard to test. Small modules with well-defined pre and post conditions make testing easier.<\/LI><br \/>\n\t<LI><STRONG>Coding Style:<\/STRONG> Adhere to organization standards for consistency, industry standards for dependability.<\/LI><br \/>\n\t<LI><STRONG>Build Complete Test Cases:<\/STRONG> Correctness tests that map to requirements, robustness tests that stresses functional ranges, completeness tests that stress combinations of values.<\/LI><br \/>\n\t<LI><STRONG>Meaningful Peer Review:<\/STRONG>&nbsp; Focused on the architecture, edge cases, and test cases.<\/LI><br \/>\n\t<LI><STRONG>Automated Testing Infrastructure:<\/STRONG> Any test, run any time, by any user.<\/LI><br \/>\n\t<LI><STRONG>A Culture of Quality:<\/STRONG> Quality is everyone\u2019s responsibility \u2013 not just the QA department.<\/LI><br \/>\n<\/OL><br \/>\n<H2>Tools of the trade<\/H2><br \/>\nThe good news is that with an investment in a handful of software development tools, you can greatly reduce the effort of implementing the best practices described above. Regardless of the tools selected, the work-flow implemented must be practical and repeatable. Here are the key tools for your toolbox, and some critical features they should support:<br \/>\n<UL><br \/>\n\t<LI><STRONG><A href=\"https:\/\/www.vectorcast.com\/software-testing-products\/requirement-management-tools\" rel=\"nofollow noopener noreferrer\">Requirements Management<\/A><\/STRONG><br \/>\n<UL><br \/>\n\t<LI>Author, edit, and share requirements<\/LI><br \/>\n\t<LI>Cross-reference of requirements to code to tests<\/LI><br \/>\n<\/UL><br \/>\n<\/LI><br \/>\n\t<LI><STRONG><A href=\"https:\/\/www.vectorcast.com\/software-testing-products\/unit-and-integration-testing\" rel=\"nofollow noopener noreferrer\">Module, and Unit and Integration Testing<\/A><\/STRONG><br \/>\n<UL><br \/>\n\t<LI>Support for Agile, and Test-Driven Development<\/LI><br \/>\n\t<LI>Support for embedded target test execution<\/LI><br \/>\n\t<LI>Integration with compilers, debuggers, and emulators<\/LI><br \/>\n<\/UL><br \/>\n<\/LI><br \/>\n\t<LI><STRONG><A href=\"https:\/\/www.vectorcast.com\/software-testing-products\/vectorcast-code-coverage-tools\" rel=\"nofollow noopener noreferrer\">Code Coverage Analysis<\/A>&nbsp;<\/STRONG><br \/>\n<UL><br \/>\n\t<LI>Low memory and CPU overhead for coverage data capture<\/LI><br \/>\n\t<LI>Flexible data retrieval from target environments<\/LI><br \/>\n<\/UL><br \/>\n<\/LI><br \/>\n\t<LI><STRONG><A href=\"https:\/\/www.vectorcast.com\/software-testing-products\/test-management\" rel=\"nofollow noopener noreferrer\">Test Automation Platform<\/A>&nbsp;&nbsp;<\/STRONG><br \/>\n<UL><br \/>\n\t<LI>Automated test execution and reporting<\/LI><br \/>\n\t<LI>Continuous Testing: run all tests all the time<\/LI><br \/>\n\t<LI>Change based testing: only re-run tests affected by source code changes<\/LI><br \/>\n<\/UL><br \/>\n<\/LI><br \/>\n<\/UL><br \/>\n<H2>Where to learn more<\/H2><br \/>\nWith embedded software playing a growing role in today\u2019s automobiles, addressing the software quality challenge is a critical engineering task. To learn more about this topic, take a look at this Vehicle Electronics Newsletter article I wrote. Titled &#8220;<A href=\"https:\/\/www.vectorcast.com\/news\/vectorcast-in-the-news\/2014\/software-quality-crisis\" rel=\"nofollow noopener noreferrer\">The Software Quality Crisis<\/A>&#8220;, the article offers commentary about the current state of software quality in the automotive industry, insights about how to create a culture of software quality within the automotive industry, and best practices for driving high quality applications.<br \/>\n<DIV style=\"margin: 24px 3em; border: 1px solid #ccc; background-color: #eee; padding: 1em; font-style: italic;\"><\/p>\n<p>EDITOR&#8217;S NOTE: Lynda Gaines&nbsp;is the Director of Product Marketing and Sales Operations&nbsp;at Vector Software. The company helps people tackle the complexities of testing safety- and business-critical embedded software.<\/p>\n<p>Vector Software has partnered with Polarion to create a <STRONG><A href=\"http:\/\/extensions.polarion.com\/extensions\/183-integration-of-requirements-management-in-polarion-with-vectorcast-rgw\" rel=\"nofollow noopener noreferrer\">Polarion extension<\/A><\/STRONG> that allows requirements tracked in Polarion to be imported into the VectorCAST toolset for mapping to software unit and integration test cases.<\/p>\n<p><\/DIV><\/p>\n<p><HR \/><\/p>\n<p><A href=\"http:\/\/www.polarion.com\/products\/automotive\/functional-safety-iso-26262-automotive-spice-cmmi.php\" rel=\"nofollow noopener noreferrer\"><IMG class=\"size-full wp-image-5659 aligncenter\" src=\"http:\/\/community.plm.automation.siemens.com\/legacyfs\/online\/siemensplm_blogs\/2014\/05\/polarion-automotive-solutions-lg.jpg\" alt=\"Polarion Software Automotive Solutions\" width=\"700\" height=\"295\" \/><\/A><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Are you confident that your safety-critical automotive software applications are working as intended?<\/p>\n<p>If the answer is &#8220;no&#8221;, you are not alone. And you have good reason to be apprehensive: in the pa&#8230;<\/p>\n","protected":false},"author":52563,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1],"tags":[],"industry":[],"product":[],"coauthors":[],"class_list":["post-822","post","type-post","status-publish","format-standard","hentry","category-news"],"_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/822","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/users\/52563"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/comments?post=822"}],"version-history":[{"count":1,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/822\/revisions"}],"predecessor-version":[{"id":823,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/posts\/822\/revisions\/823"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/media?parent=822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/categories?post=822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/tags?post=822"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/industry?post=822"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/product?post=822"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/polarion\/wp-json\/wp\/v2\/coauthors?post=822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}