Exploring functional and non-functional aspects in automotive software to drive digital twin-based HW/SW co-design for early estimation and resource optimization

Abstract - PhD candidate Muhammet USLU, part of the TwinSpace consortium and working with industry partner CARIAD SE, focuses on automotive software. His research explores how to separate functional and non-functional aspects of automotive software. The goal is to improve runtime performance, increase energy efficiency, and streamline the development process.
AI-generated image on the topic of automotive software

In large automotive software systems, non-functional concerns such as platform specifications, timing requirements, resource usage, implementation details, and error handling are often scattered across the codebase and interwoven with core functional logic. This tight coupling creates significant challenges throughout the development process. It makes the software harder to understand, maintain, and evolve, especially as vehicles become more complex and software-driven.

When non-functional requirements are embedded directly into functional code, even small changes like porting software to a new hardware platform or adjusting performance parameters can lead to widespread ripple effects. This slows down development, increases the risk of introducing bugs, and complicates testing and verification. Moreover, it limits the reusability of components, since each module is tailored not just to a specific function, but also to a specific execution environment or set of system constraints.

As vehicles move toward a software-defined architecture, this kind of entanglement becomes a serious barrier to scalability and innovation. To keep pace with increasing demands for efficiency, safety, and adaptability, automotive software must evolve towards modular, decoupled architectures that treat non-functional concerns as first-class, separable elements, not hidden side effects buried in procedural code.

To address the challenges posed by tightly coupled software architectures, TwinSpace focuses on identifying and modularizing non-functional concerns in automotive systems. The approach is inspired by aspect mining; a technique traditionally concerned with a broad range of cross-cutting concerns. Unlike traditional aspect mining, however, TwinSpace specifically targets software and system aspects that influence performance, energy efficiency, and platform compatibility.

This method enables development teams to analyze existing codebases and pinpoint where non-functional logic is entangled with core functional behavior. Once isolated, these concerns are refactored into well-defined, modular components or layers that can be managed, analyzed, and optimized independently of the application logic.

This modularization has several important benefits:

Improved Traceability Across the Stack

One of the first benefits of isolating non-functional concerns is better traceability. When system level behaviors like timing, resource use, or platform constraints are buried within core logic, it’s difficult to understand where and how they influence system behavior. By extracting these concerns into dedicated components, teams can more clearly see how such behaviors are implemented and how they interact with core functionality, making the codebase easier to navigate and reason about.

Separation of Concerns That Actually Works

With a modular structure, functional logic can finally focus on what the system is meant to do, such as processing sensor data or triggering a control response, without being tangled up with how the system meets real-time deadlines or manages power consumption. Non-functional elements, like scheduling policies or communication protocols, are moved into separate layers or modules. This separation brings clarity to the architecture and sets the stage for clean interfaces between logic and execution environments.

Optimizing System-Level Behavior in Isolation

Another major advantage of this approach is the ability to tune and optimize non-functional aspects, for example runtime performance or energy efficiency, without affecting core functionality. Developers can simulate and validate system-level constraints on their own terms, without needing to dive back into application code or re-verify logic that hasn’t changed. This isolation reduces risk, saves time, and supports a more iterative approach to fine-tuning the system.

Reusability That Scales with the Platform

When non-functional concerns are decoupled from core software logic, they become much easier to reuse. For example, a timing strategy developed for one ECU can be reused across multiple modules or even different vehicles with similar constraints. Platform-specific wrappers, memory management strategies, or diagnostic behaviors can all be modularized and plugged into new projects as needed, accelerating development and improving consistency across the software stack.

Streamlined Testing and Verification

Testing of non-functional properties such as timing and fault tolerance becomes notoriously difficult when such concerns are deeply embedded within the system. However, when they are isolated, opportunities for targeted simulation and co-verification are enabled. When combined with digital twin environments, these modular components can be tested virtually, well before deployment, allowing issues to be identified early and system performance to be validated under realistic conditions. As a result, confidence in the system is increased, and development feedback loops are significantly shortened.