Dynamic Symbolic Execution for Semantic Difference Analysis of Component and Connector Architectures

This paper proposes and evaluates a Dynamic Symbolic Execution approach enhanced with runtime data collection to perform semantic difference analysis on MontiArc component-and-connector architectures, finding it promising for identifying execution traces while noting scalability as a primary limitation for larger systems.

Johanna Grahl, Bernhard Rumpe, Max Stachon, Sebastian Stüber

Published 2026-03-10
📖 5 min read🧠 Deep dive

The Big Picture: The "Architectural Detective"

Imagine you are an architect designing a complex building made of Lego blocks. These blocks are components (like walls, windows, or elevators) connected by connectors (like hallways or pipes). In the world of software, this is called a Component-and-Connector Architecture.

Now, imagine you have two versions of this building blueprint: Version A (the old one) and Version B (the new one you just tweaked). You want to know: "Did I accidentally break something? Did I change how the building behaves in a way I didn't intend?"

This paper is about building a super-smart detective that can walk through both blueprints, try every possible scenario, and tell you exactly where they differ.

The Problem: The "Infinite Maze"

The authors use a language called MontiArc to design these systems. The tricky part is that these systems are like mazes with infinite possibilities.

  • The Maze: A student voting system where students can vote for "Course A" or "Course B."
  • The Twist: The system has rules like, "If the student ID is over 350,000, the vote counts as 1.5 points; otherwise, it's 1 point." But sometimes, it's random!
  • The Challenge: If you try to check every single possible combination of student IDs and votes, the number of paths explodes. It's like trying to taste every single grain of sand on a beach to see if one is different. Traditional methods get stuck in the sand.

The Solution: Dynamic Symbolic Execution (DSE)

The authors created a tool that uses a technique called Dynamic Symbolic Execution (DSE). Here is how it works, using a metaphor:

1. The "Ghost" and the "Real Person"

Imagine you are testing a video game level.

  • Symbolic Execution (The Ghost): Instead of playing with a real character, you play with a "Ghost" that represents every possible move at once. The Ghost asks, "What if I go left? What if I go right?" It maps out the whole maze theoretically.
    • Problem: The Ghost gets confused by complex math or secret codes (like encryption) and sometimes gets stuck in impossible paths (like a door that is both locked and unlocked at the same time).
  • Concrete Execution (The Real Person): This is a normal player who picks a specific path (e.g., "I will go left") and sees what happens.
    • Problem: The Real Person only sees one path. They might miss a secret door because they never tried the right combination.

DSE is the best of both worlds. It starts with a "Real Person" walking a path. When they hit a fork in the road (a decision point), the tool pauses, looks at the "Ghost" map to see what other paths exist, and then forces the Real Person to try a new path they haven't taken yet. It keeps doing this until it finds the differences.

How the Tool Works (The "Diff-Witness")

The goal is to find a "Diff-Witness." Think of this as a "Smoking Gun."

  • Scenario: You feed the same input (e.g., "Student ID 500,000 votes for 'Math'") into both Version A and Version B.
  • The Result:
    • Version A says: "Okay, that's 1.5 points."
    • Version B says: "Wait, that's 2.0 points!"
  • The Witness: That specific input is the "witness" that proves the two models behave differently. The tool hunts for these witnesses automatically.

The Experiment: The "Student Vote" System

The authors tested their tool on a fake university voting system.

  • The Setup: Students vote for courses. Older students get their votes weighted higher.
  • The Change: They created a "Version B" where students could vote for both courses at once, and the counters reset differently.
  • The Test: They fed the tool a list of inputs (Student IDs and votes).
    • With 1 or 2 inputs, the tool couldn't tell the difference.
    • With 3 inputs, the tool found the "Smoking Gun": A specific sequence of votes that caused the new system to crash or count differently than the old one.

The Catch: The "Time Trap"

The paper admits a major flaw: It's slow.

Because the tool tries to be thorough, it sometimes gets stuck in a "Time Trap."

  • The Analogy: Imagine trying to find a needle in a haystack. The tool is so thorough that it checks every single piece of hay. As the haystack gets bigger (more complex software), the time it takes to check grows exponentially.
  • The Math: Checking a small system takes seconds. Checking a slightly bigger one might take days.
  • The Fix: The authors tried adding a "Time Limit" (a timeout). If the tool takes too long to solve a specific puzzle, it gives up and moves on. This makes it faster but means it might miss some tiny differences (a trade-off between speed and perfection).

The Verdict

What they achieved:
They built a powerful engine that can compare two complex software blueprints and find hidden behavioral differences that humans might miss. It's like having a robot that can read two different instruction manuals and point out exactly where the instructions lead to different outcomes.

What's next:
The tool is currently a "prototype." It works well for small to medium systems but struggles with massive, industrial-scale systems because it runs out of time. The authors plan to make it faster by:

  1. Running multiple checks at the same time (parallel processing).
  2. Being smarter about which paths to check first.
  3. Adding support for more types of data (currently, it only understands simple numbers and text).

Summary in One Sentence

The authors built a "smart robot detective" that uses a mix of theoretical guessing and real-world testing to find hidden bugs and differences between two versions of complex software designs, though it sometimes gets too slow when the designs become too huge.