{"id":3483,"date":"2026-01-30T05:48:00","date_gmt":"2026-01-30T04:48:00","guid":{"rendered":"https:\/\/kunden.weissblaumedia.de\/microconsult\/2024\/03\/20\/tb_embedded-software-manager-pattern-2\/"},"modified":"2026-06-17T13:14:08","modified_gmt":"2026-06-17T11:14:08","slug":"tb_embedded-software-manager-pattern-2","status":"publish","type":"post","link":"https:\/\/www.microconsult.de\/en\/tb_embedded-software-manager-pattern-2\/","title":{"rendered":"Embedded Software Manager Pattern \u2013 Part 2: The Managers and their Functionalities"},"content":{"rendered":"<p><strong>In practice, every embedded software must perform a multitude of distributed and centrally coordinated tasks. Software patterns not only ensure conceptual integrity but also enable scalability across different projects. In the second part of our series, we focus on the managers and their diverse functions. <\/strong><\/p>\n<p><!--more--><\/p>\n<h4>Initialization (procedural approach)<\/h4>\n<p>In procedural environments, manager modules are used, symbolized by the &quot;m&quot; before their names. Within the AEn architectural element, the mAEnManager is responsible for its modules m1\u2026mN.<\/p>\n<p>`main()` calls `init()` from the `mSoftwareManager`. This function, in turn, calls the `initAEn()` functions of all `mAEnManagers` in the required order (delegations). These functions initialize the modules according to their respective responsibilities. <strong>The principle of delegation is applicable to most other managerial functions.<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2491 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild5-1024x302.png\" alt=\"\" width=\"660\" height=\"195\" \/><\/p>\n<p><em>Figure 5: Manager Pattern for a Procedural Approach<\/em><\/p>\n<p>In contrast to an object-oriented approach, procedural programming often does not require object instantiation. Therefore, the `create()` function could potentially be omitted. The constructors and destructors of classes, familiar from object-oriented programming, can be replaced in procedural programming by manually called functions `construct()` and `destruct()`.<\/p>\n<h4>Object instantiation and initialization (object-oriented approach)<\/h4>\n<p>`main()` instantiates a `cSoftwareManager` object. This instantiates all `cAEnManager` objects, which in turn instantiate all objects of classes `c1`... `cN` under their respective responsibility. Depending on the applied relationships (association, aggregation), the `createX()` functions dynamically create their objects on the heap, depending on the implementation. With composition applied throughout, all objects are automatically created on the stack, eliminating the need for the `createX()` functions.<\/p>\n<p>The `initX()` function allows for additional initializations besides the constructor call. Alternatively, the constructor can call the respective `initX()` function.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2492 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild6-1024x302.png\" alt=\"\" width=\"660\" height=\"195\" \/><\/p>\n<p><em>Figure 6: Manager Pattern for an object-oriented approach<\/em><\/p>\n<p>If the architectural hierarchy is deeper than the one shown here, the process described above extends across the entire hierarchy.<\/p>\n<p>As a result of this step, all objects are instantiated and initialized.<\/p>\n<h4>Initializing the relations<\/h4>\n<p>The `buildXRelations()` function initializes the relationships (association, aggregation) between objects internally, but also across architectural element boundaries. This includes callback registrations. Typically, pointers with the corresponding object address are initialized.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2493 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild7-1024x415.png\" alt=\"\" width=\"660\" height=\"267\" \/><\/p>\n<p><em>Figure 7: Manager Pattern supplemented with relation initialization<\/em><\/p>\n<p>This often requires object addresses from adjacent architectural elements. If these AEnManagers are aware of each other, they can exchange object addresses.<\/p>\n<h4>Configuration, parameterization, database access<\/h4>\n<p>Once initialization is complete, the software detects, for example, the hardware on which the execution is taking place. Depending on the result, the SoftwareManager reads the corresponding parameters from a local or cloud-based database.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2494 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild8-1024x354.png\" alt=\"\" width=\"660\" height=\"228\" \/><\/p>\n<p><em>Figure 8: Manager Pattern supplemented with configuration<\/em><\/p>\n<p>The `configX()` function of the AEnManager passes the parameters to the classes\/modules to be configured. It&#039;s possible that `configX()` can be executed before `initX()` and passes the parameters via the `initX()` function.<\/p>\n<h4>Resource allocation<\/h4>\n<p>The individual architectural elements may require additional individual resources for continued operation. Especially in functionally safety-critical embedded software, it is recommended to fully allocate the necessary resources at the start of software execution. This ensures that all resources are available at runtime and simultaneously improves runtime performance.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2495 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild9-1024x415.png\" alt=\"\" width=\"660\" height=\"267\" \/><\/p>\n<p><em>Figure 9: Manager Pattern supplemented with resource allocation<\/em><\/p>\n<p>Resources include, for example, memory or, in the case of an operating system, operating system components such as mailboxes, event groups, semaphores, mutexes, and timers. This requires that the operating system allows this before the boot process. If not, the order of function calls can be changed, or the `allocateXResources()` function call can be moved to the architecture-element-specific `taskInit()`.<\/p>\n<h4>Operational phase: Without operating system<\/h4>\n<p>A bare-metal application executes one or more functions continuously. Here, the `run()` function contains this central `while(true)` loop and executes the `runAEn()` functions continuously in a predefined order.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2496 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild10-1024x396.png\" alt=\"\" width=\"660\" height=\"255\" \/><\/p>\n<p><em>Figure 10: Manager Pattern supplemented with operational phase<\/em><\/p>\n<h4>Boot, startup and operational phase: With operating system<\/h4>\n<p>The SoftwareManager&#039;s `start()` function boots the operating system. The operating system then schedules `taskInit()` as its first task. This creates `taskOperation()` and all `taskAEnInit()` tasks of the AEnManager. It then terminates itself. `taskAEnInit()` creates `taskARnOperation()` and, if necessary, other architecture element-specific tasks. It also then terminates. Now the actual operational phase begins with the scheduling of the remaining tasks.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2497 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild11-1024x396.png\" alt=\"\" width=\"660\" height=\"255\" \/><\/p>\n<p><em>Figure 11: Manager Pattern for Startup and Operational Phase<\/em><\/p>\n<p>The manager task functions `taskXOperation()` contain a state machine that represents the current state of the software or its individual architectural elements. This state machine is presented later in this chapter.<\/p>\n<h4>diagnosis<\/h4>\n<p>The `executeDiagnostics()` function of the SoftwareManager starts the diagnostic execution and collects all diagnostic data via the calls to the `executeAEnDiagnostics()` functions contained in the AEnManagers.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2498 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild12-1024x445.png\" alt=\"\" width=\"660\" height=\"287\" \/><\/p>\n<p><em>Figure 12: Manager Pattern supplemented with diagnosis<\/em><\/p>\n<p>The Diagnostics element stores or enables the output of the stored data.<\/p>\n<h4>Restart<\/h4>\n<p>The restart() function of the SoftwareManager triggers the software restart by restarting the individual architectural elements through calls to the restartAEn() functions contained in the AEnManagers.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2499 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild13-1024x396.png\" alt=\"\" width=\"660\" height=\"255\" \/><\/p>\n<p><em>Figure 13: Manager Pattern supplemented with restart<\/em><\/p>\n<p>To further subdivide the restart, but also the shutdown explained below, the functions that are opposite to those performed by the managers during the startup process are used.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2512\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Tabelle2.jpg\" alt=\"\" width=\"600\" height=\"139\" \/><\/p>\n<h4>Shutdown<\/h4>\n<p>The shutdown() function of the SoftwareManager triggers the shutdown of the software by shutting down the individual architectural elements through calls to the shutdownAEn() functions contained in the AEnManagers.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2500 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild14-1024x408.png\" alt=\"\" width=\"660\" height=\"263\" \/><\/p>\n<p><em>Figure 14: Manager Pattern extended to include shutdown<\/em><\/p>\n<h4>Central error handling<\/h4>\n<p>The classes c1\u2026cN and modules m1\u2026mN detect their errors and report them to their AEnManager. The AEnManager then forwards these errors directly to the higher-level SoftwareManager. The SoftwareManager centrally handles error management, including for any errors that may occur within the AEnManagers themselves.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2501 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild15-1024x506.png\" alt=\"\" width=\"660\" height=\"326\" \/><\/p>\n<p><em>Figure 15: Manager Pattern supplemented with central error handling<\/em><\/p>\n<p>In addition to handling errors correctly, e.g. using handleError() and recoverError(), the SoftwareManager also records the error in its ErrorLogbook.<\/p>\n<h4>Decentralized error handling<\/h4>\n<p>The classes c1\u2026cN and modules m1\u2026mN detect their errors and report them to their AEnManager. If the AEnManager can resolve the error, it does so and records the error in its local ErrorLogbook.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2502 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild16-1024x506.png\" alt=\"\" width=\"660\" height=\"326\" \/><\/p>\n<p><em>Figure 16: Manager Pattern extended to include decentralized error handling<\/em><\/p>\n<p>Fatal errors that the AEnManager cannot handle itself are forwarded to the higher-level SoftwareManager. The SoftwareManager then takes over the fatal error handling and records it in its ErrorLogbook.<\/p>\n<h4>Manager State Sequence Automaton<\/h4>\n<p>The SoftwareManager state sequence machine represents the possible states of the entire software or system. The AEnManager state sequence machine represents the possible states of the individual architectural element.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2503 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild17-1024x408.png\" alt=\"\" width=\"660\" height=\"263\" \/><\/p>\n<p><em>Figure 17: Manager state sequence automaton<\/em><\/p>\n<h4>Manager execution flow<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2504 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild18-1024x566.png\" alt=\"\" width=\"660\" height=\"365\" \/><\/p>\n<p><em>Figure 18: Manager execution flow at the top level<\/em><\/p>\n<p>As an interim summary, the execution flow of the individual functions at the SoftwareManager level is shown here. Behind this are the delegating calls of the AEnManager. This is just one of many possible execution patterns.<\/p>\n<h4>Discussion points and improvements<\/h4>\n<p>The Manager Pattern presented so far can be modified and expanded through further design and implementation details, as well as variations. A more detailed basic concept and a more detailed extended concept are presented below.<\/p>\n<h4>Detailed basic concept with error notification<\/h4>\n<p>In Common::Management, this is the error notification interface icbcErrorHandler (icbc == <strong>I<\/strong>interface <strong>C<\/strong>all<strong>b<\/strong>ack <strong>C<\/strong>(let) and other classes for diagnostics and error handling. These elements are used equally in all managers.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2505 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild19-1024x633.png\" alt=\"\" width=\"660\" height=\"408\" \/><\/p>\n<p><em>Figure 19: Detailed basic concept with error notification<\/em><\/p>\n<p>The application element cN notifies the cAEnManager of errors via the notifyError() function of the icbcErrorHandler interface. The cAEnManager, in turn, notifies the cSoftwareManager of its errors via the same interface.<\/p>\n<p>When applying composition, object instantiation occurs as embedded elements\/attributes:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2507 size-full\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Pic1.jpg\" alt=\"\" width=\"566\" height=\"200\" \/><\/p>\n<p>The calls to the delegated functions must be made individually here, as no common types are defined:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-2508\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Pic2.jpg\" alt=\"\" width=\"273\" height=\"92\" \/><\/p>\n<p>The sample C++ program code of the detailed basic concept is included in the download for this article (see below).<\/p>\n<h4>Detailed extended concept with error notification and manager interface<\/h4>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2506 size-large\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Bild20-1024x627.png\" alt=\"\" width=\"660\" height=\"404\" \/><\/p>\n<p><em>Figure 20: Detailed extended concept with error notification and manager interface<\/em><\/p>\n<p>When using association\/aggregation, object instantiation occurs dynamically and access is via pointers:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2509 size-full\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Pic3.jpg\" alt=\"\" width=\"570\" height=\"220\" \/><\/p>\n<p>The delegated functions are called in a loop (easily extensible) because all cAEnManagers implement the common interface type icAEnManager (ic == Interface Class) and the cSoftwareManager accesses it via a pointer array:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-2510 size-full\" src=\"https:\/\/www.microconsult.de\/blog\/wp-content\/uploads\/2024\/02\/Pic4.jpg\" alt=\"\" width=\"607\" height=\"383\" \/><\/p>\n<p>The exemplary C++ program code of the detailed extended concept is included in the download for this post (see below).<\/p>\n<h4>Summary<\/h4>\n<p>In practice, every embedded software must perform the distributed and centrally coordinated tasks presented here. Depending on the requirements, more or fewer of these tasks need to be performed. To maintain conceptual integrity across multiple projects, the use of software patterns is recommended. As with any pattern, the software architect, software developer, or software team must adapt the structures and processes presented here to the specific circumstances of the software.<\/p>\n<p>The <a href=\"https:\/\/www.microconsult.de\/en\/tb_embedded-software-manager-pattern-1\/\" target=\"_blank\" rel=\"noopener\">Part 1 of the article<\/a> It illuminates the fundamentals of the Manager Pattern for coordinating various central tasks of the software.<\/p>\n<p><strong>Gain the right knowledge about how to apply the Embedded Software Manager Pattern in your software architectures and software design.<\/strong> This allows the concept to grow continuously with the ever-increasing complexity of the software, regardless of the programming language and programming approach (procedural\/object-oriented). MicroConsult offers you professional support for this. <a href=\"https:\/\/www.microconsult.de\/en\/all-training-dates-complete-overview\/\" target=\"_blank\" rel=\"noopener\">Training and coaching<\/a> all about the topics <a href=\"https:\/\/www.microconsult.de\/en\/training-consulting\/trainings\/analyse-design-und-architektur\/aaaakbl\/\" target=\"_blank\" rel=\"noopener\">Analysis, design and architecture<\/a> and much more.<\/p>\n<h3>Further information<\/h3>\n<p><a href=\"https:\/\/www.microconsult.de\/en\/tb_embedded-software-manager-pattern-1\/\" target=\"_blank\" rel=\"noopener\"><strong>Part 1 of the article<\/strong><\/a><\/p>\n<p><a href=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2024\/03\/manager-pattern.zip\" target=\"_blank\" rel=\"noopener\"><strong>MicroConsult download for this article, complete and up-to-date (zip)<\/strong><\/a><\/p>\n<p><a href=\"https:\/\/www.microconsult.de\/en\/embedded-and-real-time-software-development\/\" target=\"_blank\" rel=\"noopener\"><strong>MicroConsult expertise in embedded software development<\/strong><\/a><\/p>\n<p><strong>MicroConsult training on the topic:<\/strong><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong><a href=\"https:\/\/www.microconsult.de\/en\/training-consulting\/training\/requirements-engineering-schulung-requirements-engineering-und-requirements-management-fuer-embedded-systeme\/aaaacav\/\" target=\"_blank\" rel=\"noopener\">Requirements engineering and management for embedded systems<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/www.microconsult.de\/en\/training-consulting\/training\/software-architektur-schulung-fuer-embedded-systeme-und-echtzeitsysteme\/aaaadez\/\" target=\"_blank\" rel=\"noopener\">Software architectures for embedded and real-time systems<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/www.microconsult.de\/en\/training-consulting\/training\/embedded-c-schulung-programmiermethoden-und-tools-fuer-embedded-anwendungen\/aaaacja\/\" target=\"_blank\" rel=\"noopener\">Embedded C++: Object-oriented programming for microcontrollers with C++\/EC++<\/a><\/strong><\/li>\n<li><strong><a href=\"https:\/\/www.microconsult.de\/en\/training-consulting\/training\/embedded-c-schulung-programmiermethoden-und-tools-fuer-embedded-anwendungen\/aaaacja\/\" target=\"_blank\" rel=\"noopener\">Embedded C++ for Advanced Users<\/a><\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><strong><a href=\"https:\/\/www.microconsult.de\/en\/training-consulting\/training\/embedded-software-design-und-patterns-mit-c\/aaaadte\/\" target=\"_blank\" rel=\"noopener\">Embedded software design and patterns with C<\/a><\/strong><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<ul>\n<li><strong><a href=\"https:\/\/www.microconsult.de\/en\/training-consulting\/trainings\/analyse-design-und-architektur\/aaaakbl\/\" target=\"_blank\" rel=\"noopener\">Interface design \u2013 analysis, design and architecture<\/a><\/strong><\/li>\n<\/ul>\n<p><strong><a href=\"https:\/\/www.microconsult.de\/en\/all-training-dates-complete-overview\/\" target=\"_blank\" rel=\"noopener\">All training courses &amp; dates at a glance<\/a><\/strong><\/p>","protected":false},"excerpt":{"rendered":"<p>In practice, every embedded software must perform a multitude of distributed and centrally coordinated tasks. Software patterns not only ensure conceptual integrity but also enable scalability across different projects. In the second part of our series, we focus on the managers and their diverse functions.<\/p>","protected":false},"author":10,"featured_media":3477,"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":[9,15],"tags":[376,117,377,217,378,379,14,164,103,87,45],"class_list":["post-3483","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-embedded_und_echtzeit-softwareentwicklung","category-softwareentwicklung_windows_linux_mobile","tag-embedded-software-manager-pattern","tag-ese-kongress","tag-objektorientiert","tag-programmierung","tag-prozedural","tag-skalierbarkeit","tag-software-architektur","tag-software-design","tag-software-entwicklung","tag-softwarearchitektur","tag-softwareentwicklung"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.9 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Embedded Software Manager Pattern - Teil 2: Die Manager und ihre Funktionalit\u00e4ten - 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\/tb_embedded-software-manager-pattern-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Embedded Software Manager Pattern - Teil 2: Die Manager und ihre Funktionalit\u00e4ten - MicroConsult Academy GmbH\" \/>\n<meta property=\"og:description\" content=\"Jede Embedded-Software muss in der Praxis eine Vielzahl von verteilten und zentral koordinierten Aufgaben ausf\u00fchren. Software Patterns stellen dabei nicht nur die konzeptionelle Integrit\u00e4t sicher, sondern erm\u00f6glichen auch die Skalierbarkeit \u00fcber verschiedene Projekte hinweg. Im zweiten Teil unserer Beitragsreihe r\u00fccken wir die Manager mit ihren vielf\u00e4ltigen Funktionen in den Fokus.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.microconsult.de\/en\/tb_embedded-software-manager-pattern-2\/\" \/>\n<meta property=\"og:site_name\" content=\"MicroConsult Academy GmbH\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-30T04:48:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-17T11:14:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/emb-sw-manager-patterns-scaled.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1307\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Thomas Batt\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thomas Batt\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/\"},\"author\":{\"name\":\"Thomas Batt\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/344ea687ec9637d76b9f570373cae5eb\"},\"headline\":\"Embedded Software Manager Pattern &#8211; Teil 2: Die Manager und ihre Funktionalit\u00e4ten\",\"datePublished\":\"2026-01-30T04:48:00+00:00\",\"dateModified\":\"2026-06-17T11:14:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/\"},\"wordCount\":1514,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.microconsult.de\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/emb-sw-manager-patterns-scaled.jpeg\",\"keywords\":[\"Embedded Software Manager Pattern\",\"ESE Kongress\",\"objektorientiert\",\"Programmierung\",\"prozedural\",\"Skalierbarkeit\",\"Software-Architektur\",\"Software-Design\",\"Software-Entwicklung\",\"Softwarearchitektur\",\"Softwareentwicklung\"],\"articleSection\":[\"Embedded- und Echtzeit-Softwareentwicklung\",\"Softwareentwicklung (Windows, Linux)\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/\",\"name\":\"Embedded Software Manager Pattern - Teil 2: Die Manager und ihre Funktionalit\u00e4ten - MicroConsult Academy GmbH\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.microconsult.de\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/emb-sw-manager-patterns-scaled.jpeg\",\"datePublished\":\"2026-01-30T04:48:00+00:00\",\"dateModified\":\"2026-06-17T11:14:08+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/#\\\/schema\\\/person\\\/344ea687ec9637d76b9f570373cae5eb\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.microconsult.de\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/emb-sw-manager-patterns-scaled.jpeg\",\"contentUrl\":\"https:\\\/\\\/www.microconsult.de\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/emb-sw-manager-patterns-scaled.jpeg\",\"width\":2560,\"height\":1307,\"caption\":\"Embedded Software Manager Pattern\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.microconsult.de\\\/tb_embedded-software-manager-pattern-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.microconsult.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Embedded Software Manager Pattern &#8211; Teil 2: Die Manager und ihre Funktionalit\u00e4ten\"}]},{\"@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\\\/344ea687ec9637d76b9f570373cae5eb\",\"name\":\"Thomas Batt\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6e2cfb0fb9027df3be0b60804d3dd07e5061a84cf3a0fc3a5adcc8c5f114e6b9?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6e2cfb0fb9027df3be0b60804d3dd07e5061a84cf3a0fc3a5adcc8c5f114e6b9?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6e2cfb0fb9027df3be0b60804d3dd07e5061a84cf3a0fc3a5adcc8c5f114e6b9?s=96&d=mm&r=g\",\"caption\":\"Thomas Batt\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Embedded Software Manager Pattern - Part 2: The Managers and their Functionalities - 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\/tb_embedded-software-manager-pattern-2\/","og_locale":"en_GB","og_type":"article","og_title":"Embedded Software Manager Pattern - Teil 2: Die Manager und ihre Funktionalit\u00e4ten - MicroConsult Academy GmbH","og_description":"Jede Embedded-Software muss in der Praxis eine Vielzahl von verteilten und zentral koordinierten Aufgaben ausf\u00fchren. Software Patterns stellen dabei nicht nur die konzeptionelle Integrit\u00e4t sicher, sondern erm\u00f6glichen auch die Skalierbarkeit \u00fcber verschiedene Projekte hinweg. Im zweiten Teil unserer Beitragsreihe r\u00fccken wir die Manager mit ihren vielf\u00e4ltigen Funktionen in den Fokus.","og_url":"https:\/\/www.microconsult.de\/en\/tb_embedded-software-manager-pattern-2\/","og_site_name":"MicroConsult Academy GmbH","article_published_time":"2026-01-30T04:48:00+00:00","article_modified_time":"2026-06-17T11:14:08+00:00","og_image":[{"width":2560,"height":1307,"url":"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/emb-sw-manager-patterns-scaled.jpeg","type":"image\/jpeg"}],"author":"Thomas Batt","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Thomas Batt","Estimated reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/#article","isPartOf":{"@id":"https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/"},"author":{"name":"Thomas Batt","@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/344ea687ec9637d76b9f570373cae5eb"},"headline":"Embedded Software Manager Pattern &#8211; Teil 2: Die Manager und ihre Funktionalit\u00e4ten","datePublished":"2026-01-30T04:48:00+00:00","dateModified":"2026-06-17T11:14:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/"},"wordCount":1514,"commentCount":0,"image":{"@id":"https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/emb-sw-manager-patterns-scaled.jpeg","keywords":["Embedded Software Manager Pattern","ESE Kongress","objektorientiert","Programmierung","prozedural","Skalierbarkeit","Software-Architektur","Software-Design","Software-Entwicklung","Softwarearchitektur","Softwareentwicklung"],"articleSection":["Embedded- und Echtzeit-Softwareentwicklung","Softwareentwicklung (Windows, Linux)"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/","url":"https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/","name":"Embedded Software Manager Pattern - Part 2: The Managers and their Functionalities - MicroConsult Academy GmbH","isPartOf":{"@id":"https:\/\/www.microconsult.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/#primaryimage"},"image":{"@id":"https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/#primaryimage"},"thumbnailUrl":"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/emb-sw-manager-patterns-scaled.jpeg","datePublished":"2026-01-30T04:48:00+00:00","dateModified":"2026-06-17T11:14:08+00:00","author":{"@id":"https:\/\/www.microconsult.de\/#\/schema\/person\/344ea687ec9637d76b9f570373cae5eb"},"breadcrumb":{"@id":"https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/"]}]},{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/#primaryimage","url":"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/emb-sw-manager-patterns-scaled.jpeg","contentUrl":"https:\/\/www.microconsult.de\/wp-content\/uploads\/2025\/07\/emb-sw-manager-patterns-scaled.jpeg","width":2560,"height":1307,"caption":"Embedded Software Manager Pattern"},{"@type":"BreadcrumbList","@id":"https:\/\/www.microconsult.de\/tb_embedded-software-manager-pattern-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.microconsult.de\/"},{"@type":"ListItem","position":2,"name":"Embedded Software Manager Pattern &#8211; Teil 2: Die Manager und ihre Funktionalit\u00e4ten"}]},{"@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\/344ea687ec9637d76b9f570373cae5eb","name":"Thomas Batt","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/6e2cfb0fb9027df3be0b60804d3dd07e5061a84cf3a0fc3a5adcc8c5f114e6b9?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/6e2cfb0fb9027df3be0b60804d3dd07e5061a84cf3a0fc3a5adcc8c5f114e6b9?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6e2cfb0fb9027df3be0b60804d3dd07e5061a84cf3a0fc3a5adcc8c5f114e6b9?s=96&d=mm&r=g","caption":"Thomas Batt"}}]}},"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/3483","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\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/comments?post=3483"}],"version-history":[{"count":3,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/3483\/revisions"}],"predecessor-version":[{"id":11462,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/posts\/3483\/revisions\/11462"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media\/3477"}],"wp:attachment":[{"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/media?parent=3483"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/categories?post=3483"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.microconsult.de\/en\/wp-json\/wp\/v2\/tags?post=3483"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}