Development processes are the basis of modern software development.
It has now become widely known that the VHIT (from brain to terminal) method is no longer compatible with the current and future increasing complexity of embedded and real-time software/real-time systems.
Professional Software Engineering This means that in software development, you go through further important development/process steps even before the software implementation. From development processes, such as the V-Model XT or the industry-specific V-Model Automotive, terms like software analysis and software design, or high-level software design and detailed software design, are used to describe these steps.
The following is a brief description of important activities in embedded software analysis, embedded software design, and SW engineering that you perform for software engineering.
Requirements engineering is at the start of the project.
As a basis for software development, you, in the role of Software requirements analysts First, the requirements. As part of requirements engineering (requirements development, requirements analysis), you gather the requirements of the stakeholders.
They distinguish between functional and non-functional requirements (including software quality characteristics) and formulate high-quality requirements. As part of requirements management, they manage and maintain these requirements using appropriate requirements management tools.
The software architect defines the software architecture.
In the role of Software architects Do you have extensive experience in software development and are you proficient in the subject? Software architecture In practice, considering aspects of reusability, interchangeability, extensibility, and portability, you ideally develop a non-monolithic software architecture (SW architecture) that best fulfills the identified software architecture requirements and influencing factors.
Software architecture describes the overall structure and the interactive behavior (communication) based upon it. Software components, software layers (layered architecture), software subsystems, interfaces and their functions (operations/methods), and optionally the most important modules/classes represent typical architectural building blocks.
You use architectural guidelines, architectural principles, architectural patterns, and software architecture examples for architecture development. As a software architect, you make important decisions. For example, you determine whether to develop a synchronous architecture, an asynchronous architecture, or a hybrid of both.
You decide whether it is a real-time system or "only" an embedded system. You determine the middleware components used, such as fieldbus and communication stacks, flash file systems, and graphics libraries. These software components are available as free software, open-source software, and commercial software.
For the runtime architecture, you select a suitable real-time/embedded operating system based on selection criteria. (Real-Time Operating System RTOS) In multicore and multiprocessor systems, you distribute the software across different computing nodes and, if necessary, implement virtualization and a hypervisor. The software architect creates the embedded software architecture documentation (software architecture document or software architecture specification).

Image: Embedded software architecture example – software layer representation
The software designer refines the software architecture.
You as Software designer You will refine the software architecture so that the software developer can later implement it in the specified programming language, C or C++. This involves developing concrete modules/classes with all data and functions, as well as their connections/relations. You will master your tasks and challenges using proven methods. Design patterns (Design patterns) for embedded software. In algorithm design, you describe the precise behavior, for example, using state machines. You adapt the software architecture to your specific hardware and its peripherals via drivers.
The software designer creates the Embedded software design documentation (software design document, software design specification).
During the following embedded programming, strict adherence to the architectural and design specifications must be continuously monitored.
Software development with UML – Unified Modeling Language
Regardless of whether you program software procedurally, structurally, object-based, or object-oriented, UML (Unified Modeling Language) is a helpful notation for analysis, design, and software documentation. UML specifies various diagrams: Use Case Diagram, Package Diagram, Component Diagram, Deployment Diagram, Class Diagram, Object Diagram, Composite Structure Diagram, Activity Diagram, State Machine Diagram, Sequence Diagram, Communication Diagram, Timing Diagram, Interaction Overview Diagram, and Profile Diagram.
These diagrams are also excellent for requirements analysis and software development. By applying the UML Practice model-driven software development. From the UML design models With the right UML CASE tool support, you can generate program code in C and/or C++. Depending on the tool, automatic code generation supports creating software for simulation on the development host or target, as well as directly generating production code.
In medium-sized and smaller companies and businesses, as a software developer you represent all of the above roles or a part of them in one person: requirements analyst, software architect and software designer.
Embedded software: Analysis, design and architecture – our training courses & coaching
Do you want to bring yourself up to date with the latest technology?
Then find out more here Regarding training courses/seminars/workshops and individual coaching sessions offered by MircoConsult on the topic Embedded Software: Analysis, Design and Architecture.
We deliver our content to you through both in-person and live online training sessions.
Software architectures for embedded systems and real-time systems
They are familiar with the terminology and meaning of software architecture; the tasks and responsibilities of software architects and their role in the project; and state-of-the-art methods and techniques for developing software architectures. They have the ability to coordinate, document, and communicate software architectures with project stakeholders, as well as to independently carry out the essential steps of software architecture design.
Training topic: Software architectures for embedded systems and real-time systems
Embedded software design and patterns with C
You will learn the programming principles and design patterns essential for embedded software development, be able to program them in C, and apply them in your projects. You will master object-oriented programming and the implementation of state machines in C. You will be familiar with the mechanisms of an embedded/real-time operating system and implement hardware drivers, interrupt concepts, and callback structures in C – taking "Design for Test" into account. Through refactoring, you will improve the quality of existing C program code (legacy code).
Training – Embedded Software Design and Patterns with C
Design patterns (not only) for embedded systems
You will learn under what conditions classic design patterns can be profitably used in resource-constrained embedded systems. Patterns particularly suitable for this purpose will be explained using hardware-related or other applications typical of embedded systems. Special emphasis will be placed on evaluating storage space and runtime costs.
For training purposes: Design patterns (not only) for embedded systems
UML basics and introduction to model-based software development
In the UML training you will learn how to competently use analysis and design methods as well as the representation format of the Unified Modeling Language (UML).
Training: UML basics
UML Practical Workshop: Practical Application of Model-Based Software Development for Embedded and Real-Time Systems
You know how to use UML for typical projects in the embedded and real-time environments. You are able to customize and optimize the application of UML for your projects and your company.
Training: UML Practical Workshop
OOP Basics: A Language-Independent Introduction to Object-Oriented Programming
They are proficient in the concepts of object-oriented programming. They possess the essential prerequisites for working with object-oriented programming languages such as C++, C#, or Java.
Training: OOP basics
Develop clean, efficient, and robust C++ software using classic object orientation and modern C++ language features – the path to clean code
Software development as a craft – 'Software Craftsmanship' – The path to 'Clean Code'‚
Training: Develop clean, efficient and robust C++ software using classic object orientation and modern C++ language features.
Coaching on software analysis, design, and architecture
MicroConsult's coaching services offer the significant advantage that our experts directly contribute their knowledge and experience to your solution process, thereby directly impacting project success. Together, for example, we analyze the potential applications and benefits of new software engineering or management methods, develop concrete implementation measures, and then put them into practice.
Learn more about coaching for software analysis, software design, and software architecture.
Training & coaching on the other topics in our portfolio can be found here. here.
We deliver our content to you through both in-person and live online training sessions.
Embedded Software: Analysis, Design and Architecture – Expertise
Valuable expertise on the topic Embedded software: Analysis, design and architecture stands here Available for you to download free of charge.
Expertise – Embedded and Real-Time Software Development
You can find expert knowledge on the other topics in our portfolio here. here.