{"id":7803,"date":"2025-11-29T06:10:24","date_gmt":"2025-11-29T05:10:24","guid":{"rendered":"https:\/\/web-dev-weissblau.de\/microconsult\/?p=7803"},"modified":"2026-02-13T16:04:39","modified_gmt":"2026-02-13T15:04:39","slug":"controlling-software-complexity-with-architectural-design","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/controlling-software-complexity-with-architectural-design\/","title":{"rendered":"Controlling Software Complexity with Architectural Design"},"content":{"rendered":"<h2>Keeping code and architecture consistent &#8211; approaches and benefits<\/h2>\n<p>Authors: Moritz Neukirchner, Guillaume Cordon, Elektrobit Automotive GmbH, Andreas Gaiser, Axivion GmbH<\/p>\n<h3>Beitrag &#8211; Embedded Software Engineering Kongress 2017<\/h3>\n<h2>Managing Software Complexity is Hard<\/h2>\n<p>Managing the complexity of a software project becomes increasingly difficult as the project grows and evolves over time. Software architectural design shall control this complexity by defining clear cut interfaces between components and permitted interactions among them.<\/p>\n<p>Still, ensuring that the code adheres to the architecture specification is hard, even in the presence of reviews and integration testing. This challenge is even aggravated if multiple software variants must be taken into consideration and when portions of the code are being generated.<\/p>\n<p>We show how this gap between architecture and code can be closed through automated checks. Complexity is managed at architecture level and the adherence to this architectural design enforced throughout the development process down to the code as deviations are automatically reported by a dedicated tool. As a result, the architecture can serve as a reliable documentation and as a discussion basis for design changes. Further, the automatic checks permit to evaluate the quality of design and implementation (i.e. their consistency), thus allowing to define a quality metric on designs beyond just simple review.<\/p>\n<p>We illustrate the results using an automotive project and show that the approach scales from checking interface connections of components down to validating global data accesses.<\/p>\n<h2>Example of an Architecture Model<\/h2>\n<p>In order to automate consistency checks between architecture and implementation, strong UML guidelines need to be used across the tested software modules. In the following we use a dedicated example module (referred to as \u201cdesign module\u201d) to illustrate the required UML model scheme and how it relates to the information provided by the used static analysis tool.<\/p>\n<p>Figure 1 (see\u00a0<a title=\"Controlling Software Complexity with Architectural Design (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/11\/fachinfo_ese_architekturdesign_controlling_safety_complexity_with_architectural_design_elektrobit_automotiveaxivion_neukirchnercordongaiser.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) shows a UML component diagram for the design module. It contains the adjacent modules and all required and provided interfaces which the design module uses.<\/p>\n<p>Figure 2 and Figure 3 (seei\u00a0<a title=\"Controlling Software Complexity with Architectural Design (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_architekturdesign_controlling_safety_complexity_with_architectural_design_elektrobit_automotiveaxivion_neukirchnercordongaiser.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) show how a UML component diagram is used to define UML Interfaces and the operations they implement with parameters and return values.<\/p>\n<p>UML representation of interfaces, operations and relationships between modules allows to detect whether the design module performs unspecified\/unwanted static function calls to a different module using a public interface. Based on the same UML methodology, it is possible to define internal interfaces and sub-components for composed modules (see Figure 4,\u00a0<a title=\"Controlling Software Complexity with Architectural Design (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_architekturdesign_controlling_safety_complexity_with_architectural_design_elektrobit_automotiveaxivion_neukirchnercordongaiser.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>).<\/p>\n<p>The previous diagram allows to model global volatile run-time data and their data accesses. Derived from the interfaces view of the model, it is possible to extract how the design module shall access global data and therefore to apply checks on the module source code.<\/p>\n<p>The file mapping view (Figure 5, see\u00a0<a title=\"Controlling Software Complexity with Architectural Design (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_architekturdesign_controlling_safety_complexity_with_architectural_design_elektrobit_automotiveaxivion_neukirchnercordongaiser.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) allows to model the declaration\/implementation relationship between the source code and interfaces.<\/p>\n<p>The architectural model based on these strong UML guidelines form the basis for two aspects:<\/p>\n<ol>\n<li>The automatic generation of the architectural documentation.<\/li>\n<li>The automatic checking of consistency between architectural model and implementation.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n<p>As a result we can ensure that architecture documentation and implementation stay in-sync. In the remainder we focus on the automatic consistency check rather than the automatic generation of documentation.<\/p>\n<h2>Checking Architecture Consistency Using Static Analysis<\/h2>\n<p>Our approach to automated architectural consistency checking via static analysis is split into the following three steps.<\/p>\n<p><em>1. Extraction of code dependencies and architecture dependencies.<\/em><br \/>\nStatic analysis tools generate a\u00a0<em>dependency graph<\/em>\u00a0from a code base. In\u00a0<em>Error! Reference source not found.<\/em>, a project consisting of four code files is shown. A matching dependency graph is depicted in\u00a0<em>Error! Reference source not found.<\/em>, upper part. It uses node and edge types to express different kinds of code entities and relations. Nodes can be e.g. files, routines, or global variables. Further, they can be nested. Edge types include:<\/p>\n<ul>\n<li>\u201cStatic Call\u201d: e.g. the call between API_1 and API_2,<\/li>\n<li>\u201cDeclare\u201d: e.g. the declaration of API_1 refers to the definition in Source.c,<\/li>\n<li>\u201cVariable Use\u201d: e.g. API_1, API_3 use the variable GlobalData.<\/li>\n<\/ul>\n<p>If its format is flexible enough, it is also possible to enrich the dependency graph with architecture entities and dependencies. In this project we have used the Axivion Bauhaus Suite\u00a9 for analysis. In Figure 9 (see\u00a0<a title=\"Controlling Software Complexity with Architectural Design (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_architekturdesign_controlling_safety_complexity_with_architectural_design_elektrobit_automotiveaxivion_neukirchnercordongaiser.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) lower part, an import of the UML component diagram for \u2018Design module\u2019 (Figure 1, see\u00a0<a title=\"Controlling Software Complexity with Architectural Design (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_architekturdesign_controlling_safety_complexity_with_architectural_design_elektrobit_automotiveaxivion_neukirchnercordongaiser.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) is shown.<\/p>\n<p><em>2. Create a semantic mapping between dependency graph and architecture model.<br \/>\n<\/em>For an automated check, we have to define how code components\u00a0<em>map<\/em>\u00a0to architectural entities. The names of operations of an interface are explicitly specified in the Interface View (see Figure 2, see\u00a0<a title=\"Controlling Software Complexity with Architectural Design (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_architekturdesign_controlling_safety_complexity_with_architectural_design_elektrobit_automotiveaxivion_neukirchnercordongaiser.pdf\">PDF<\/a>), which is used for mapping them to API functions. Similarly, global objects are mapped to global variables through naming patterns. Mapping between components and the files that implement them is extracted from explicit modelling as shown in Figure 6 (see\u00a0<a title=\"Controlling Software Complexity with Architectural Design (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_architekturdesign_controlling_safety_complexity_with_architectural_design_elektrobit_automotiveaxivion_neukirchnercordongaiser.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>).<\/p>\n<p>Further the\u00a0<em>semantic interpretation<\/em>\u00a0of dependencies has to be fixed: which code dependencies does a specific architecture dependency allow? In our project, we e.g. interpret the interface dependency \u2018Public Interface 1\u2019 between \u2018Design Module\u2019 and \u2018External module 1\u2019 as follows: each code entity mapped to \u2018External module 1\u2019 is allowed to call routines mapped to \u2018Public Interface 1\u2019.<\/p>\n<p>Both mapping and semantic interpretation are constructed automatically by Python scripts, which emit warnings if modelling errors or problems with the mapping occur. These provide valuable hints for the software architect.<\/p>\n<p><em>3. Architecture conformance check.<br \/>\n<\/em>The outcomes of steps 1) and 2) are used to perform the actual comparison between code and architectural model. We use the hierarchical reflexion model approach for the check (see [1,2]). The analysis detects the following three scenarios:<\/p>\n<ol>\n<li><em>Convergence<\/em>: a code dependency has a counterpart in the architecture model.<\/li>\n<li><em>Divergence<\/em>: a code dependency has\u00a0no\u00a0matching counterpart in the architecture model.<\/li>\n<li><em>Absence<\/em>: An architecture dependency is specified, but no convergences uses it.<\/li>\n<\/ol>\n<h2>Technical Setup<\/h2>\n<p>In the analysed project, each module to be tested exists in multiple versions depending on the configuration that is used for code generation. Each such variant typically has multiple separate test cases to verify correct functionality. Therefore, it is necessary to perform the analysis on an extensive set of test cases, which may use differing code bases depending on the generated code.<\/p>\n<p>For measuring the quality of both test case coverage and the architectural design, it is important to know whether<\/p>\n<ul>\n<li>Each interface dependency given in the architecture model is actually used in at least one of the test cases (<em>mandatory<\/em>). If an interface dependency is not used in any of the test cases, we call it a\u00a0<em>global absence<\/em>.<\/li>\n<li>Code mapped to a module calls a routine belonging to an interface, but no corresponding interface dependency has been specified in the architectural model.<\/li>\n<li>Each access of a global object in the code is backed up by a corresponding access permission defined in the model.<\/li>\n<\/ul>\n<p>Figure 1 (see\u00a0<a title=\"Controlling Software Complexity with Architectural Design (PDF)\" href=\"https:\/\/www.microconsult.de\/files\/fachinfo_ese_architektur+design_controlling_safety_complexity_with_architectural_design_elektrobit_automotive+axivion_neukirchner+cordon+gaiser.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>) shows the automated workflow for checking the questions from above:<\/p>\n<ol>\n<li>For each test case T1, T2, T3, a dependency graph is generated.<\/li>\n<li>The architecture model is imported into each dependency graph, mappings and semantic interpretation are created.<\/li>\n<li>The actual architecture check is performed. Each divergence encountered in one of these checks hints to a flaw in either the code or the architecture model and is reported, as are accesses to global variables which are not allowed by the architecture model.<\/li>\n<li>The architecture check results of the test cases are combined to detect\u00a0<em>global absences<\/em>.<\/li>\n<\/ol>\n<p>The concrete case of our design module depicted in\u00a0<em>Error! Reference source not found.<\/em>\u00a0is raising the following kind of findings (see Figure 11,\u00a0<a title=\"Controlling Software Complexity with Architectural Design (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_architekturdesign_controlling_safety_complexity_with_architectural_design_elektrobit_automotiveaxivion_neukirchnercordongaiser.pdf\" target=\"_blank\" rel=\"noopener\">PDF<\/a>).<\/p>\n<h2>Conclusion<\/h2>\n<p>We have shown how the management of complexity in software development can be assisted through automatic checking of software designs. Based on the requirements of a productive automotive software project, which includes the challenging aspects of a multitude of variants and a large degree of code generation, we have demonstrated that deviations in implementation from the design specification can be effectively detected in an automated way.<\/p>\n<p>This approach guarantees that implementation and design stay in sync such that the design can serve as a\u00a0reliable\u00a0documentation of software. Further, it permits to define quality metrics on design documents beyond just simple review results as deviations can be properly quantified. This allows to enhance quality control and to prevent that design and code diverge over time, i.e. that the quality of the design document deteriorates over time.<\/p>\n<p>The approach was tested on architectural properties such as interface definitions and their connections, file structure and global data accesses. Nonetheless, the approach is not limited to these aspects.<\/p>\n<p>The approach is in use in the qualification of productive code and is currently being used to detect undocumented dependencies between software components and undocumented global variable accesses.<\/p>\n<h2>References<\/h2>\n<p>[1]Rainer Koschke and Daniel Simon. \u201cHierarchical Reflexion Models\u201d. In\u00a0<em>Proceedings of the 10th Working Conference on Reverse Engineering<\/em>\u00a0(WCRE &#8217;03). IEEE Computer Society, Washington, DC, USA.<\/p>\n<p>[2] Rainer Koschke. \u201cIncremental reflexion analysis.\u201d In\u00a0<em>Journal of Software: Evolution and Process<\/em>\u00a0(2013), Volume 25, Issue 6.<\/p>\n<p><a title=\"Controlling Software Complexity with Architectural Design (PDF)\" href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/12\/fachinfo_ese_architekturdesign_controlling_safety_complexity_with_architectural_design_elektrobit_automotiveaxivion_neukirchnercordongaiser.pdf\" target=\"_blank\" rel=\"noopener\"><strong>Beitrag als PDF-Datei herunterladen<\/strong><\/a><\/p>\n<div>\n<hr \/>\n<h2>Architektur &#8211; MicroConsult Trainings &amp; Coachings<\/h2>\n<p><strong>Wollen Sie sich auf den aktuellen Stand der Technik bringen?<\/strong><\/p>\n<p>Dann informieren Sie sich\u00a0<a title=\"Alle Trainings und Termine\" href=\"https:\/\/www.microconsult.de\/alle-trainings-termine-komplettuebersicht\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>zu Schulungen\/ Seminaren\/ Trainings\/ Workshops und individuellen Coachings von MircoConsult zum Thema Architektur \/Embedded- und Echtzeit-Softwareentwicklung.<\/p>\n<p><strong>Training &amp; Coaching zu den weiteren Themen unseren Portfolios finden Sie\u00a0<a title=\"Training &amp; Beratung - alle Themen\" href=\"https:\/\/www.microconsult.de\/training-beratung\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n<hr \/>\n<h2>Architektur\u00a0&#8211; Fachwissen<\/h2>\n<p>Wertvolles Fachwissen zum Thema\u00a0Architektur \/Embedded- und Echtzeit-Softwareentwicklung steht\u00a0<a href=\"https:\/\/www.microconsult.de\/die-7-wichtigsten-tipps-fuer-ihre-embedded-software-architektur\/\" target=\"_blank\" rel=\"noopener\"><strong>hier<\/strong>\u00a0<\/a>f\u00fcr Sie zum kostenfreien Download bereit.<\/p>\n<p><a title=\"Embedded Software Architektur Fachwissen\" href=\"https:\/\/www.microconsult.de\/die-7-wichtigsten-tipps-fuer-ihre-embedded-software-architektur\/\" target=\"_blank\" rel=\"noopener\"><strong>Zu den Fachinformationen<\/strong><\/a><\/p>\n<p><strong>Fachwissen zu weiteren Themen unseren Portfolios finden Sie <a title=\"Fachinformationen\" href=\"https:\/\/www.microconsult.de\/fachwissen\/\" target=\"_blank\" rel=\"noopener\">hier<\/a>.<\/strong><\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Keeping code and architecture consistent &#8211; approaches and benefits Authors: Moritz Neukirchner, Guillaume Cordon, Elektrobit Automotive GmbH, Andreas Gaiser, Axivion GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2017 Managing Software Complexity is Hard Managing the complexity of a software project becomes increasingly difficult as the project grows and evolves over time. Software architectural design shall [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","inline_featured_image":false,"footnotes":""},"categories":[],"tags":[],"class_list":["post-7803","post","type-post","status-publish","format-standard","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Controlling Software Complexity with Architectural Design - MicroConsult Academy GmbH<\/title>\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.microconsult.de\/en\/controlling-software-complexity-with-architectural-design\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Controlling Software Complexity with Architectural Design - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"Keeping code and architecture consistent &#8211; approaches and benefits Authors: Moritz Neukirchner, Guillaume Cordon, Elektrobit Automotive GmbH, Andreas Gaiser, Axivion GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2017 Managing Software Complexity is Hard Managing the complexity of a software project becomes increasingly difficult as the project grows and evolves over time. Software architectural design shall [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/controlling-software-complexity-with-architectural-design\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-29T05:10:24+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-02-13T15:04:39+00:00\" \/>\n<meta name=\"author\" content=\"weissblau media\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"weissblau media\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/controlling-software-complexity-with-architectural-design\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/controlling-software-complexity-with-architectural-design\\\/\"},\"author\":{\"name\":\"weissblau media\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"headline\":\"Controlling Software Complexity with Architectural Design\",\"datePublished\":\"2025-11-29T05:10:24+00:00\",\"dateModified\":\"2026-02-13T15:04:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/controlling-software-complexity-with-architectural-design\\\/\"},\"wordCount\":1575,\"commentCount\":0,\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/controlling-software-complexity-with-architectural-design\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/controlling-software-complexity-with-architectural-design\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/controlling-software-complexity-with-architectural-design\\\/\",\"name\":\"Controlling Software Complexity with Architectural Design - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"datePublished\":\"2025-11-29T05:10:24+00:00\",\"dateModified\":\"2026-02-13T15:04:39+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/controlling-software-complexity-with-architectural-design\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/controlling-software-complexity-with-architectural-design\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/controlling-software-complexity-with-architectural-design\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Controlling Software Complexity with Architectural Design\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/\",\"name\":\"MicroConsult Academy GmbH\",\"description\":\"Professionelle Schulungen, Beratung und Projektunterst\u00fctzung\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.microconsult.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/b6d4c4ae959b068fbe8d9416ed019a0a\",\"name\":\"weissblau media\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g\",\"caption\":\"weissblau media\"},\"sameAs\":[\"https:\\\/\\\/www.microconsult.de\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Controlling Software Complexity with Architectural Design - MicroConsult Academy GmbH","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.microconsult.de\/en\/controlling-software-complexity-with-architectural-design\/","og_locale":"en_GB","og_type":"article","og_title":"Controlling Software Complexity with Architectural Design - MicroConsult Academy GmbH","og_description":"Keeping code and architecture consistent &#8211; approaches and benefits Authors: Moritz Neukirchner, Guillaume Cordon, Elektrobit Automotive GmbH, Andreas Gaiser, Axivion GmbH Beitrag &#8211; Embedded Software Engineering Kongress 2017 Managing Software Complexity is Hard Managing the complexity of a software project becomes increasingly difficult as the project grows and evolves over time. Software architectural design shall [&hellip;]","og_url":"https:\/\/www.microconsult.de\/en\/controlling-software-complexity-with-architectural-design\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2025-11-29T05:10:24+00:00","article_modified_time":"2026-02-13T15:04:39+00:00","author":"weissblau media","twitter_card":"summary_large_image","twitter_misc":{"Written by":"weissblau media","Estimated reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/controlling-software-complexity-with-architectural-design\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/controlling-software-complexity-with-architectural-design\/"},"author":{"name":"weissblau media","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"headline":"Controlling Software Complexity with Architectural Design","datePublished":"2025-11-29T05:10:24+00:00","dateModified":"2026-02-13T15:04:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/controlling-software-complexity-with-architectural-design\/"},"wordCount":1575,"commentCount":0,"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/controlling-software-complexity-with-architectural-design\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/controlling-software-complexity-with-architectural-design\/","url":"https:\/\/www.microconsult.de\/controlling-software-complexity-with-architectural-design\/","name":"Controlling Software Complexity with Architectural Design - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"datePublished":"2025-11-29T05:10:24+00:00","dateModified":"2026-02-13T15:04:39+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/controlling-software-complexity-with-architectural-design\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/controlling-software-complexity-with-architectural-design\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/controlling-software-complexity-with-architectural-design\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"Controlling Software Complexity with Architectural Design"}]},{"@type":"WebSite","@id":"https:\/\/www.microconsult.de\/#website","url":"https:\/\/www.microconsult.de\/","name":"MicroConsult Academy GmbH","description":"Professional training, consulting and project support","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.microconsult.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/b6d4c4ae959b068fbe8d9416ed019a0a","name":"weissblau media","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bbb409da4970da9446f6c49465d453cb8a0dae301e4d4f465b5c4e62408daa2e?s=96&d=mm&r=g","caption":"weissblau media"},"sameAs":["https:\/\/www.microconsult.de"]}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7803","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/comments?post=7803"}],"version-history":[{"count":8,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7803\/revisions"}],"predecessor-version":[{"id":11765,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/7803\/revisions\/11765"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=7803"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=7803"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=7803"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}