{"id":2502,"date":"2026-06-28T08:12:45","date_gmt":"2026-06-28T08:12:45","guid":{"rendered":"https:\/\/www.pickplace.de\/?post_type=projekt&#038;p=2502"},"modified":"2026-06-28T08:16:43","modified_gmt":"2026-06-28T08:16:43","slug":"embedded-software-rhapsody","status":"publish","type":"projekt","link":"https:\/\/www.pickplace.de\/en\/projekte\/embedded-software-rhapsody\/","title":{"rendered":"Embedded Software &amp; Rhapsody"},"content":{"rendered":"<div class=\"wp-block-rank-math-toc-block\" id=\"rank-math-toc\"><h2>Content<\/h2><nav><ul><li class=\"\"><a href=\"#das-wichtigste-in-kurze\">The most important information in brief<\/a><\/li><li class=\"\"><a href=\"#warum-entwickelt-man-software-mit-modellen-statt-nur-mit-quellcode\">Why develop software with models instead of just source code?<\/a><\/li><li class=\"\"><a href=\"#wann-ist-rhapsody-fur-ein-steuergerat-oder-eine-maschine-sinnvoll\">When is Embedded Software &amp; Rhapsody a suitable combination?<\/a><\/li><li class=\"\"><a href=\"#wie-kann-modellbasierte-entwicklung-tests-und-dokumentation-unterstutzen\">How can model-based development support testing and documentation?<\/a><\/li><li class=\"\"><a href=\"#technische-einordnung-von-forward-und-reverse-engineering\">Technical Classification of Forward and Reverse Engineering<\/a><\/li><li class=\"\"><a href=\"#typ\">Typical setup<\/a><\/li><li class=\"\"><a href=\"#unsere-leistungen\">Our Services<\/a><\/li><\/ul><\/nav><\/div>\n\n\n\n<h2 id=\"das-wichtigste-in-kurze\" class=\"wp-block-heading\">The most important information in brief<\/h2>\n\n\n\n<div class=\"wp-block-stackable-icon-list stk-block-icon-list stk-block stk-0407607\" data-block-id=\"0407607\"><svg style=\"display:none\"><defs><g id=\"stk-icon-list__icon-svg-def-0407607\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 190 190\"><polygon points=\"173.8,28.4 60.4,141.8 15.7,97.2 5.1,107.8 60.4,163 184.4,39 173.8,28.4\"\/><\/svg><\/g><\/defs><\/svg><ul class=\"stk-block-icon-list__ul stk-block-icon-list--column\">\n<li class=\"wp-block-stackable-icon-list-item stk-block-icon-list-item stk-block stk-0f3f20f\" data-block-id=\"0f3f20f\"><div class=\"stk-block-icon-list-item__content\"><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg aria-hidden=\"true\" width=\"32\" height=\"32\"><use xlink:href=\"#stk-icon-list__icon-svg-def-0407607\"><\/use><\/svg><\/div><\/span><span class=\"stk-block-icon-list-item__text\">Rhapsody for model-based development of <a href=\"https:\/\/www.pickplace.de\/en\/software-development\/\" data-type=\"page\" data-id=\"907\">Embedded Software<\/a> used, especially for state machines, sequence models, interfaces, and code generation.<\/span><\/div><\/li>\n\n\n\n<li class=\"wp-block-stackable-icon-list-item stk-block-icon-list-item stk-block stk-1add6b0\" data-block-id=\"1add6b0\"><div class=\"stk-block-icon-list-item__content\"><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg aria-hidden=\"true\" width=\"32\" height=\"32\"><use xlink:href=\"#stk-icon-list__icon-svg-def-0407607\"><\/use><\/svg><\/div><\/span><span class=\"stk-block-icon-list-item__text\">The method supports complex, safety-critical, or real-time systems and guides from modeling to implementation through structured development.<\/span><\/div><\/li>\n\n\n\n<li class=\"wp-block-stackable-icon-list-item stk-block-icon-list-item stk-block stk-500aa80\" data-block-id=\"500aa80\"><div class=\"stk-block-icon-list-item__content\"><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg aria-hidden=\"true\" width=\"32\" height=\"32\"><use xlink:href=\"#stk-icon-list__icon-svg-def-0407607\"><\/use><\/svg><\/div><\/span><span class=\"stk-block-icon-list-item__text\">Fields of application include control units, vehicles, machinery, defense systems, and technical devices, especially when software behavior needs to be clearly described and tested.<\/span><\/div><\/li>\n<\/ul><\/div>\n\n\n\n<div class=\"wp-block-stackable-image stk-block-image stk-block stk-21253e3\" data-block-id=\"21253e3\"><figure><span class=\"stk-img-wrapper stk-image--shape-stretch\"><img loading=\"lazy\" decoding=\"async\" class=\"stk-img wp-image-1569\" src=\"https:\/\/www.pickplace.de\/wp-content\/uploads\/2026\/03\/embedded-software-support-hardware-support-pickplace-1200.jpg\" width=\"1200\" height=\"800\" alt=\"Embedded Software and Rhapsody are a suitable combination for electronics development\"\/><\/span><\/figure><\/div>\n\n\n\n<h2 id=\"warum-entwickelt-man-software-mit-modellen-statt-nur-mit-quellcode\" class=\"wp-block-heading\">Why develop software with models instead of just source code?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Source code describes how a system is technically implemented. For embedded software, this view is often insufficient in many projects because the actual behavior is distributed across states, events, time conditions, interfaces, and reactions. For example, a control unit does not just react to individual inputs, but exists in operating states, switches between modes, processes error situations, and communicates with other components. If these interrelationships are only documented in the source code, dependencies quickly arise that are difficult to oversee.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Models make these relationships explicit. State machines show which states a system can occupy, which events trigger state changes, and which actions are executed during these changes. Process models describe the order in which functions, checks, or communication steps take place. Interface models define which signals, data structures, or calls are exchanged between components. This creates a layer on which business logic, software architecture, and implementation can be reconciled.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Projects with Rhapsody are therefore not about replacing source code, but about connecting it with a precise description of the software's behavior. The model can serve as a starting point for implementation, for example, when code is generated from it. It can also be used as an analysis tool when existing software needs to be understood, documented, or restructured. In both cases, modeling helps to make assumptions visible: What states exist? Which transitions are allowed? What happens with invalid inputs? Which interface is responsible for a specific reaction?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For PICKPLACE, this way of working is particularly useful when a project consists not only of programming but also requires initial functional and technical clarification. This includes questions about the distribution of functions, dependencies between software modules, timing specifications, or how to handle error cases. The model serves as a common working basis for development, review, testing, and documentation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another reason for model-based development lies in its ability to handle changes. Embedded software is frequently adapted across multiple development stages. New variants, additional signals, modified sensor technology, or different operating modes alter the system's behavior. When behavior is described in models, the impact of a change can be examined more precisely. A modified state transition, a new condition, or an additional interface is visible in the model and can be verified against the implementation.<\/p>\n\n\n\n<h2 id=\"wann-ist-rhapsody-fur-ein-steuergerat-oder-eine-maschine-sinnvoll\" class=\"wp-block-heading\">When is Embedded Software &amp; Rhapsody a suitable combination?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Rhapsody is useful in projects where software behavior can no longer be reliably described by individual functions or simple program flows. This applies to control units and machines that have multiple operating modes, react to events, must adhere to timing sequences, or handle various interfaces simultaneously. When a system switches between startup, normal operation, diagnosis, error states, shutdown, and service functions, a state model is often more suitable than a purely textual description.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Interfaces play a central role in control units. Inputs from sensors, communication data, user inputs, and internal status information influence the system's outputs and reactions. Rhapsody can help model these relationships. This clarifies which component processes which data, which events are triggered, and which function reacts to which condition. This clarification is particularly useful when multiple developers are working on different parts of the software.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The mapping of operating procedures is a typical use case for machines. A machine often has defined sequences: initialization, homing, enables, process steps, stops, faults, and restarts. Such sequences can be described using state machines or activity models. The model then shows which conditions must be met before a step is executed and what reaction occurs in case of interruption, error, or operator input.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rhapsody can also be used in near-real-time systems when the order and reaction logic of the software must be clearly described. The model does not replace the technical testing of runtimes, memory requirements, or platform behavior. However, it creates a basis for organizing reactions, events, and responsibilities. On this basis, it can then be checked whether the intended architecture fits the target hardware, operating system, communication cycles, or existing software components.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another project context involves the further development of existing software. In many embedded projects, source code already exists, but its behavior is only partially documented. Reverse engineering can then be used to reconstruct structures and processes from the existing state. The resulting model does not serve as an end in itself, but as a working tool: It supports the evaluation of which parts of the software can be reused, where dependencies exist, and which areas should be cleaned up before an expansion.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rhapsody is less helpful when a system is very small, has few states, or when the requirements are already directly understandable in the code with little effort. Its use must also be considered for projects where model maintenance is not planned. A model only provides benefits if it remains connected to the architecture, code, and documentation. PICKPLACE therefore considers not only the tool but also the project workflow: Who maintains the model? How are changes incorporated? Which model parts are used for code generation, which for documentation, and which for analysis?<\/p>\n\n\n\n<h2 id=\"wie-kann-modellbasierte-entwicklung-tests-und-dokumentation-unterstutzen\" class=\"wp-block-heading\">How can model-based development support testing and documentation?<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Tests require a clear description of expected behavior. Models can provide this description because they make states, transitions, conditions, and actions visible. From a state machine, it can be derived which operating states need to be tested, which events trigger state changes, and which cases lead to error reactions. This makes test planning more concrete than with a purely general list of requirements.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This connection between model and test is particularly useful for embedded software because many errors only occur in specific combinations. A system may behave correctly during normal operation, but not after a prior error state or during a transition between two modes. A model helps to identify such paths. This leads to test cases for allowed state changes, disallowed transitions, boundary conditions, timeout situations, or reactions to missing input data.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Interfaces can also be better tested from models. If a model describes which component expects which signals and what outputs arise from them, test cases can specifically cover the data flows. For communicating components, it can be checked whether messages, parameters, or status information are processed in the correct place. The model thus supports both component tests and integration tests.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For documentation, model-based development provides a technical description that is closer to the architecture than a post-written narrative. State diagrams, flow models, and interface overviews show how the software is structured and how it should behave. This documentation can be used for reviews, handovers, maintenance, and troubleshooting. It also helps new project participants shorten their onboarding into existing embedded software because central relationships do not have to be read exclusively from source code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this context, Rhapsody can serve as a tool for model documentation. This involves not only creating diagrams but also consistently describing software components, relationships, and behavioral rules. When models are maintained, changes to states, interfaces, or processes can be comprehensibly documented. This creates a connection between development decisions, the model's status, and the implementation's status.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">During code generation, the model can also become part of the implementation. It then needs to be clarified which parts of the model are directly converted into code and which will be supplemented manually. This boundary must be clearly defined in the project so that generated code, handwritten code, and the model do not diverge. Tests must subsequently demonstrate on the actual target system or in a suitable test environment that the implemented behavior corresponds to the model.<\/p>\n\n\n\n<h2 id=\"technische-einordnung-von-forward-und-reverse-engineering\" class=\"wp-block-heading\">Technical Classification of Forward and Reverse Engineering<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In Rhapsody projects, two directions of work often occur: Forward Engineering and Reverse Engineering. In Forward Engineering, the model is used as the starting point for development. Architecture, states, interfaces, and workflows are modeled and then translated into implementation. Depending on the project, this can be done partly through code generation or as a basis for manually written code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Reverse engineering focuses on existing source code. The goal is to understand existing structures and transfer them into models. This is particularly helpful when documentation is missing, when software has grown over a long period of time, or when a migration is to be prepared. The model then shows which dependencies exist in the code, which components are coupled with each other, and which areas need to be examined more closely before an expansion.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Both directions can be combined in a project. An existing software state is first analyzed and modeled. Then, new functions, changed processes, or a revised architecture are described in the model and transferred to implementation. This requires determining which elements from the old state are adopted, which are rebuilt, and where new interfaces are created.<\/p>\n\n\n\n<h2 id=\"typ\" class=\"wp-block-heading\">Typical setup<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Modeling tool <a href=\"https:\/\/www.ibm.com\/products\/systems-design-rhapsody\" target=\"_blank\" rel=\"noopener\">IBM Rhapsody<\/a> <\/li>\n\n\n\n<li>Requirements Tool <a href=\"https:\/\/www.ibm.com\/products\/requirements-management\" target=\"_blank\" rel=\"noopener\">IBM DOORS<\/a> <\/li>\n\n\n\n<li>RTOS <a href=\"https:\/\/www.freertos.org\/\" target=\"_blank\" rel=\"noopener\">FreeRTOS<\/a> <\/li>\n\n\n\n<li>IDE <a href=\"https:\/\/www.iar.com\/products\/architectures\/arm\/iar-embedded-workbench-for-arm\/\" target=\"_blank\" rel=\"noopener\">IAR Embedded Workbench<\/a> <\/li>\n\n\n\n<li>Static Analysis <a href=\"https:\/\/www.mathworks.com\/products\/polyspace.html\" target=\"_blank\" rel=\"noopener\">Polyspace<\/a><\/li>\n<\/ul>\n\n\n\n<h2 id=\"unsere-leistungen\" class=\"wp-block-heading\">Our Services<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">PICKPLACE supports projects related to embedded software and Rhapsody in technical clarification, modeling, and preparation for implementation. The focus is on traceable models that integrate architecture, behavior, interfaces, and implementation.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Our services include setting up forward engineering. Together with the project, we structure the model base, describe software components, states, processes, and interfaces, and clarify which model parts are to be used for code generation or implementation. We ensure that the modeling depth, project goal, and existing development environment are compatible.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In reverse engineering, we analyze existing embedded software and translate relevant structures into a model. This includes state logic, functional partitioning, data flows, and interface relationships. The result serves as a basis for evaluation, expansion, redesign, or documentation of existing software states.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Another area of performance is model documentation. PICKPLACE creates and maintains models so that they can be used for development, review, testing, and handover. This includes state diagrams, process descriptions, interface overviews, and architectural views, as far as they are needed for the specific project.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In architectural development, we support the breakdown of software functions, the definition of component responsibilities, and the coordination between model, code, and target system. We clarify technical dependencies, such as on hardware, operating systems, communication interfaces, or existing software modules. This creates a robust foundation for implementation, test planning, and further development steps.<\/p>","protected":false},"excerpt":{"rendered":"<p>Embedded Software &#038; Rhapsody beschreibt die modellbasierte Entwicklung eingebetteter Software, bei der Verhalten, Zust\u00e4nde, Abl\u00e4ufe, Schnittstellen und Architektur nicht nur im Quellcode, sondern in Modellen abgebildet werden. PICKPLACE arbeitet in solchen Projekten an der Strukturierung von Softwareverhalten, an der \u00dcberf\u00fchrung bestehender Implementierungen in nachvollziehbare Modelle und an der Vorbereitung von Codegenerierung oder manueller Umsetzung. Typische Projektkontexte sind Steuerger\u00e4te, Maschinen, Fahrzeuge, technische Ger\u00e4te und Systeme, bei denen Abl\u00e4ufe eindeutig beschrieben, gepr\u00fcft und weiterentwickelt werden m\u00fcssen.<\/p>","protected":false},"featured_media":1569,"template":"","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-2502","projekt","type-projekt","status-publish","has-post-thumbnail","hentry"],"blocksy_meta":[],"_links":{"self":[{"href":"https:\/\/www.pickplace.de\/en\/wp-json\/wp\/v2\/projekt\/2502","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.pickplace.de\/en\/wp-json\/wp\/v2\/projekt"}],"about":[{"href":"https:\/\/www.pickplace.de\/en\/wp-json\/wp\/v2\/types\/projekt"}],"version-history":[{"count":3,"href":"https:\/\/www.pickplace.de\/en\/wp-json\/wp\/v2\/projekt\/2502\/revisions"}],"predecessor-version":[{"id":2535,"href":"https:\/\/www.pickplace.de\/en\/wp-json\/wp\/v2\/projekt\/2502\/revisions\/2535"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.pickplace.de\/en\/wp-json\/wp\/v2\/media\/1569"}],"wp:attachment":[{"href":"https:\/\/www.pickplace.de\/en\/wp-json\/wp\/v2\/media?parent=2502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.pickplace.de\/en\/wp-json\/wp\/v2\/categories?post=2502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.pickplace.de\/en\/wp-json\/wp\/v2\/tags?post=2502"}],"curies":[{"name":"WP","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}