{"id":3724,"date":"2018-10-25T06:44:18","date_gmt":"2018-10-25T13:44:18","guid":{"rendered":"https:\/\/blogs.plm.automation.siemens.com\/t5\/Simcenter-Blog\/Software-architecture-to-the-rescue-of-Jenga-lifecycle\/ba-p\/537020"},"modified":"2026-03-26T05:53:51","modified_gmt":"2026-03-26T09:53:51","slug":"software-architecture-to-the-rescue-of-jenga-lifecycle","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/simcenter\/software-architecture-to-the-rescue-of-jenga-lifecycle\/","title":{"rendered":"Software architecture to the rescue of Jenga lifecycle"},"content":{"rendered":"<p><P><span class=\"lia-inline-image-display-wrapper lia-image-align-right\" style=\"width: 400px;\"><img decoding=\"async\" src=\"http:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2019\/09\/GettyImages-1050482460-2.jpg\" alt=\"GettyImages-1050482460.jpg\" title=\"GettyImages-1050482460.jpg\" \/><\/span>You have probably heard this analogy already. Let me explain for those who haven&#8217;t. The game Jenga involves removing one block at a time from a tower constructed of 54 blocks. Each block removed is then placed on top of the tower, creating a progressively taller and unstable structure until someone&#8217;s misstep (e<SPAN>ither on removing a block or on placing it unsteadily on top of the destabilizing structure) leads to it crashing down.<\/SPAN><\/P><\/p>\n<p><P><SPAN>This to me is the perfect analogy for complex embedded software development projects. The interesting thing to notice is that many embedded software projects seem to go through the Jenga game lifecycle. Changes are easy at first in both cases but become increasingly difficult and risky as the game or project goes on and your structure (your Jenga tower or project code base) becomes cumbersome.<\/SPAN><\/P><\/p>\n<p><P><SPAN>Now for sure, both the Jenga and embedded software project cannot be compared one-on-one. One is just a game while the other finds its use in sophisticated electronics items, automobiles, and what not, where instability or crashing down can&nbsp;mean&nbsp;breaching a thin line between life-death, profit-loss and in effect survival of the company itself.<\/SPAN><\/P><\/p>\n<p><P><SPAN>So, how can you keep your software ecosystem healthy, without too many &#8220;uh-oh, I messed up!&#8221; moments before the whole software stack collapses like a game of Jenga? <\/SPAN><\/P><\/p>\n<p><P>The answer to the above is to <STRONG>architect&nbsp;<\/STRONG>your software&nbsp;in order to <STRONG>visualize<\/STRONG>, <STRONG>frontload<\/STRONG> and <STRONG>analyze,<\/STRONG>&nbsp;before you start writing your first line of code.<\/P><\/p>\n<p><P><STRONG>Visualize<\/STRONG>.<\/P><br \/>\n<P>Again visualize! requirements, specifications, compatibility lists, test requirements, advisories, etc. Do not just look for changes in the product itself, but also for changes to parameters, APIs or peripheral components (input\/output). A logical drawing (software architecture) of your software product helps: visualize which systems talk with other systems, both horizontally and vertically. Break-down your complexity and create nested hierarchy of software architecture.<span class=\"lia-inline-image-display-wrapper lia-image-align-center\" style=\"width: 999px;\"><img decoding=\"async\" src=\"http:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2019\/09\/visualise-1.png\" alt=\"visualise.png\" title=\"visualise.png\" \/><\/span><\/P><\/p>\n<p><P><STRONG>Frontload<\/STRONG>.&nbsp;<\/P><br \/>\n<P>As soon as you find the ideal combination of software subsystems and systems, create an even enriched architecture out of it. <a href=\"https:\/\/community.plm.automation.siemens.com\/t5\/Simcenter-Blog\/Extending-the-digital-twin-to-on-board-software\/ba-p\/413435\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">Contracts <\/A>can help: it is a lightweight and adaptable framework for specifying requirements or specification on top of architecture elements in form of executable test cases. You can tailor it to your specific needs and capabilities.<span class=\"lia-inline-image-display-wrapper lia-image-align-center\" style=\"width: 701px;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2019\/09\/contract-1.png\" width=\"701\" height=\"490\" alt=\"contract.png\" title=\"contract.png\" \/><\/span>You don&#8217;t need to enrich all of the architecture components before you can reap the benefits: you can pick the components you like. Some components in your architecture could need careful specification. For example,&nbsp;<EM>iEVtemperatureControl<\/EM> in the above example. Others can be more loosely specified.<\/P><\/p>\n<p><P><STRONG>Analyze<\/STRONG>.<\/P><br \/>\n<P>Once you have the enriched architecture, you will need to test&nbsp;the architecture for compatibility and completeness.&nbsp;Check proper decomposition of the embedded software system architecture at the design stage through assume-guarantee analysis.<\/P><\/p>\n<p><P>The assume-guarantee analysis is a horizontal as-well-as vertical compatibility check among the data-flow blocks connected in an architecture.&nbsp;The analysis works totally on top of the enriched architecture, thus this analysis can be performed very early in the design and identify potential compatibility issues long before any implementation is started.&nbsp;<\/P><br \/>\n<P><span class=\"lia-inline-image-display-wrapper lia-image-align-center\" style=\"width: 786px;\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2019\/09\/analyse-1.png\" width=\"786\" height=\"400\" alt=\"analyse.png\" title=\"analyse.png\" \/><\/span><\/P><\/p>\n<p><P>Now before you start your next game of Jenga (wait, I mean your software project),&nbsp;make use of the&nbsp;<STRONG>visualize, frontload and analyze<\/STRONG> <STRONG>principle<\/STRONG> in your software development approach.&nbsp;It&nbsp;helps make your design right the first time by meeting the timing and budget constraints.&nbsp;Architecture&nbsp;analysis with the help of contract helps detect design errors and to perform virtual integration scenario before the first line of code is written.<\/P><\/p>\n<p><P>In the <a href=\"https:\/\/community.plm.automation.siemens.com\/t5\/Simcenter-Blog\/How-software-architecture-can-secure-your-software-development\/ba-p\/539932\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">next blog<\/A> post, we track the lifecycle of these software architecture building blocks during the coding and integration phase. After the coding phase is done, we test the implementation against the architecture contract: does your architecture analysis still pass? No errors? By doing the necessary legwork in the architecture phase, and by using contracts, later phases in software development lifecycle should become less of game of Jenga where one small change brings down the entire stack.<\/P><\/p>\n<p><P><EM><STRONG>Simcenter Embedded Software Designer<\/STRONG> offers perfectly coordinated solutions for a holistic software development: rich software architecture is used as a central platform to efficiently support the entire value chain for embedded software development and using the design-by-contract methodology to support integrated model-based software engineering. With a contract-based architecture design approach, Simcenter Embedded Software Designer allows for the development of complex software systems with architecture analysis, frontloading of test and verification, closed-loop simulation and interoperability with other development tools and platforms.<\/EM><\/P><\/p>\n<p><P><SPAN>Want to learn more about Simcenter Embedded Software Designer? Discover&nbsp;<\/SPAN><a href=\"https:\/\/community.plm.automation.siemens.com\/t5\/Simcenter-Blog\/bg-p\/Simcenter_blog\/label-name\/simcenter%20embedded%20software%20designer\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">other blog posts<\/A><SPAN>.&nbsp;<\/SPAN><\/P><\/p>\n","protected":false},"excerpt":{"rendered":"<p>You have probably heard this analogy already. Let me explain for those who haven&#8217;t. The game Jenga involves removing one block at a time from a tower constructed of 54 blocks. Each block removed is t&#8230;<\/p>\n","protected":false},"author":48808,"featured_media":3737,"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":[579],"coauthors":[],"class_list":["post-3724","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news","product-simcenter-embedded-software-designer"],"featured_image_url":"https:\/\/blogs.sw.siemens.com\/wp-content\/uploads\/sites\/6\/2019\/09\/analyse-1.png","_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/posts\/3724","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/users\/48808"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/comments?post=3724"}],"version-history":[{"count":5,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/posts\/3724\/revisions"}],"predecessor-version":[{"id":3738,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/posts\/3724\/revisions\/3738"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/media\/3737"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/media?parent=3724"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/categories?post=3724"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/tags?post=3724"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/industry?post=3724"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/product?post=3724"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/simcenter\/wp-json\/wp\/v2\/coauthors?post=3724"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}