{"id":3242,"date":"2018-10-22T21:17:44","date_gmt":"2018-10-22T19:17:44","guid":{"rendered":"https:\/\/zen-cori.138-201-132-86.plesk.page\/?p=3242"},"modified":"2022-09-28T16:32:34","modified_gmt":"2022-09-28T07:32:34","slug":"what-developing-software-and-building-a-house-have-in-common","status":"publish","type":"post","link":"https:\/\/www.btc-embedded.jp\/ja\/what-developing-software-and-building-a-house-have-in-common\/","title":{"rendered":"What developing software and building a house have in common"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"3242\" class=\"elementor elementor-3242\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-3b5f0493 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"3b5f0493\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-559a247a\" data-id=\"559a247a\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element-234bcca2 elementor-widget elementor-widget-text-editor\" data-id=\"234bcca2\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.20.0 - 26-03-2024 *\/\n.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:#69727d;color:#fff}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap{color:#69727d;border:3px solid;background-color:transparent}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap{margin-top:8px}.elementor-widget-text-editor:not(.elementor-drop-cap-view-default) .elementor-drop-cap-letter{width:1em;height:1em}.elementor-widget-text-editor .elementor-drop-cap{float:left;text-align:center;line-height:1;font-size:50px}.elementor-widget-text-editor .elementor-drop-cap-letter{display:inline-block}<\/style>\t\t\t\t<p>A vast amount of the innovation in today\u2019s automotive industry is driven by software. While it is obvious that the complexity and size of software in a vehicle is growing, the actual growth rate is really astonishing. According to a <a href=\"http:\/\/plattform-maerkte.de\/wp-content\/uploads\/2015\/10\/Gabriel-Seiberth-Accenture.pdf\" target=\"_blank\" rel=\"noopener\">study by Accenture<\/a>, we saw a growth from 50.000 lines of code in the 1980s to up to 10 million lines in 2008 to up to 100 million lines today. At the same time, the software share of the total value of a vehicle grew from 8% to 40% and will reach over 80% in the future.<\/p><p>This dramatic shift in value creation from hardware to software is in particular a challenge for companies with a strong history in hardware development and production, which now need to start developing software. Due to the somehow \u201cvirtual\u201d nature of being just bits &amp; bytes on a hard drive, the impact of software complexity on the development and test process is often not that obvious.<\/p><p>So, let\u2019s try to compare it to an example from a different domain: Building a house.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-7c099a8 elementor-widget elementor-widget-heading\" data-id=\"7c099a8\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.20.0 - 26-03-2024 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">Small Project<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a34f39d elementor-widget elementor-widget-image\" data-id=\"a34f39d\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.20.0 - 26-03-2024 *\/\n.elementor-widget-image{text-align:center}.elementor-widget-image a{display:inline-block}.elementor-widget-image a img[src$=\".svg\"]{width:48px}.elementor-widget-image img{vertical-align:middle;display:inline-block}<\/style>\t\t\t\t\t\t\t\t\t\t<img fetchpriority=\"high\" decoding=\"async\" width=\"586\" height=\"586\" src=\"https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/06\/1-house-pics.001-586x-951-1.png\" class=\"attachment-large size-large wp-image-3253\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a1ff07f elementor-widget elementor-widget-text-editor\" data-id=\"a1ff07f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Let\u2019s imagine we want to build a little doghouse to put in the yard. We would probably decide, that we can mostly do it by ourselves. We wouldn\u2019t need too much planning, as the impact of making a mistake in the process would be small. We would go directly to a hardware store to buy the material and some small tools like a hammer. And we might do the \u201ctesting\u201d just at the end of the project: As the whole thing is not that much effort, we can easily go back to the beginning if we did something wrong.<\/p><p>\u00a0<\/p><p>To translate this type of project to the world of embedded software, let\u2019s assume we only need a couple of 100 lines of code (not sure if those types of projects exist today). We wouldn\u2019t hire a large team of different people with different roles, we would maybe just open a text editor and start typing, as we can easily keep the small set of requirements in our head. For testing, we might just flash the code to the target processor and do a system test.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-30b3c92 elementor-widget elementor-widget-heading\" data-id=\"30b3c92\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Medium Size Project<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-94e0f50 elementor-widget elementor-widget-image\" data-id=\"94e0f50\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"586\" height=\"586\" src=\"https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/06\/1-house-pics.002-586x-68c-1.png\" class=\"attachment-large size-large wp-image-3256\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-934b48a elementor-widget elementor-widget-text-editor\" data-id=\"934b48a\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>Now let\u2019s look at something slightly bigger: If we want to build a house to live in, we would obviously first decide that there should be some more people with different roles involved. We\u2019d have an architect, a structural engineer and different people to work on dedicated tasks on the outside and the inside of the house. Instead of immediately starting the construction, we would first make sure to have a detailed plan for the design, the project timeline and the cost. The project will also require some bigger tools (e.g. a power shovel), as not everything can be done by hand. The \u201ctesting\u201d would not just happen when everything is ready, we\u2019d rather check the work product of each construction step before going on the next one. When we already have the roof finished, we might not be able to go back and change the whole basement.<\/p><p>\u00a0<\/p><p>Translated into software, we will first start with identifying different roles like requirement engineer, function developer or test engineer. We will also have some process planning and some requirements documents, so that everybody has the same understanding of what should be done. Regarding tools, we might use a model-based development approach with Matlab\/Simulink, a code generator like dSPACE TargetLink and a test management tool like BTC EmbeddedTester. While some professional tools will clearly be needed, we might still use a basic SVN for file and version management and maybe also use Excel for some tasks. When it comes to testing, we will test each software unit independently with sufficient code coverage before doing any kind of integration. While a nice thing about software is the possibility to still do bugfixes in a late stage of a project, it is not very efficient as the cost for finding and fixing software problems dramatically increases the closer we get to the final product.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a7461cd elementor-widget elementor-widget-heading\" data-id=\"a7461cd\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Large Project<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-ff4a163 elementor-widget elementor-widget-image\" data-id=\"ff4a163\" data-element_type=\"widget\" data-widget_type=\"image.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t\t\t\t\t\t\t<img decoding=\"async\" width=\"586\" height=\"586\" src=\"https:\/\/www.btc-embedded.jp\/wp-content\/uploads\/2022\/06\/1-house-pics.002-586x-68c-1.png\" class=\"attachment-large size-large wp-image-3256\" alt=\"\" \/>\t\t\t\t\t\t\t\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-3ed2944 elementor-widget elementor-widget-text-editor\" data-id=\"3ed2944\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>A large project like a skyscraper is in general not that different from the previous example, except that everything is again one order of magnitude larger. We\u2019ll see more people, more powerful tools and even more planning and preparation to avoid surprises towards the end of the project.<\/p><p>\u00a0<\/p><p>For a software project, it would mean that in addition to what we had before, we\u2019ll need some professional tool support for things like data management, variant management, issue tracking, system architecture and software architecture. This could involve toipcs and tools like SysML\/UML\/Autosar tools, PTC Integrity, dSPACE SYNECT or JIRA.\u00a0 We\u2019ll also need to make sure that the work products created by different developers are consistent and compliant with project or company guidelines. This would in particular require tools that look at modeling guidelines (like MAAB) and coding guidelines (like MISRA).<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-a527060 elementor-widget elementor-widget-heading\" data-id=\"a527060\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<h2 class=\"elementor-heading-title elementor-size-default\">Conclusion<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-25dbd23 elementor-widget elementor-widget-text-editor\" data-id=\"25dbd23\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<p>While the impact of project size and complexity is usually obvious for hardware related projects, it is a bit more difficult to see for software projects, as the difference in the final product is \u201conly\u201d the size of some files on the hard drive. But the challenges in both types of projects are actually not that different. For embedded software, standards like ISO 26262 give guidelines that help to pick the right combination of development and test methodologies. For any kind of project, be it building a house or developing embedded software, there is no one-size-fits-all solution regarding tools and processes.<\/p>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>A vast amount of the innovation in today\u2019s automotive industry is driven by software. While it is obvious that [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"elementor_theme","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"product":[],"use_cases":[43],"class_list":["post-3242","post","type-post","status-publish","format-standard","hentry","category-uncategorized","use_cases-best-practices"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts\/3242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/comments?post=3242"}],"version-history":[{"count":7,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts\/3242\/revisions"}],"predecessor-version":[{"id":3561,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/posts\/3242\/revisions\/3561"}],"wp:attachment":[{"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/media?parent=3242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/categories?post=3242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/tags?post=3242"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/product?post=3242"},{"taxonomy":"use_cases","embeddable":true,"href":"https:\/\/www.btc-embedded.jp\/ja\/wp-json\/wp\/v2\/use_cases?post=3242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}