Skip to Main Content

What Is Model-Based Software Development? A Quick Guide With the Scade One Solution

May 13, 2026

READ ALOUD

PAUSE READ

Cédric Pasteur | Product Management, Senior Staff, Ansys, part of Synopsys
c-code-banner

If you’ve been knee-deep in C code for years, you know the drill: endless lines of manual code, bugs popping up at the worst possible time (usually during integration or target testing), and complexity that grows like weeds. Sound familiar? Well, there’s a better way, and it’s called model-based software development.

So what’s the big deal? Why are the aerospace, rail, automotive, and even nuclear industries swearing by it? And more importantly, how can you make it work for your projects without losing your mind? Let’s dive in, exploring the topic with insights from real-world experience, lessons learned, and practical advice from the field.

What Exactly is Model-Based Software Development, and why Does it Work so Well?

With model-based software development, you start with models — formal, unambiguous representations of your software. These aren’t just pretty diagrams; they define the behavior of your embedded system completely. From these models, you can automatically generate C code.

Why does it work? Here’s the magic: shift-left testing. Instead of finding bugs during target testing, you catch them early on the model. The Ansys Scade One model-based embedded software development solution provides a complete development and validation environment to simulate, debug, and test models directly in the integrated development environment (IDE). What sets apart the Scade One solution is that since the behavior of models is well defined, you can be confident that the behavior on the target will be the same. There is no need to run costly back-to-back testing activities, and the behavior will not change when you install a new release. That means fewer surprises, less rework, and way less stress.

For safety-critical systems like planes or nuclear plants, any bug can be catastrophic. Safety standards demand tons of verification, and model-based software development helps automate that. That's why the Ansys SCADE Suite model-based development environment for critical embedded software has become the standard for safety-critical embedded applications, with a proven record and more than 25 years of experience. But even if you’re building something less critical, late bugs still cost time and money. With the Scade One solution, this technology is now accessible for any embedded system, such as robotics systems, industrial or construction equipment, or even home appliances. Faster time to market and lower costs — what’s not to love?

What are Scade One/Swan Models?

With the Scade One solution, you get a modeling language called Swan. You can think of it as a high-level programming language tailored for embedded software, a so-called domain-specific language. Note that Swan is used to develop only the applicative part, not low-level code like drivers or middleware that needs close interaction with hardware. Let’s give a better sense of what a Swan model is and what it looks like using simple examples.

reactive-systems-in-swan

Reactive systems in Swan: modeling continuous interaction as discrete signal sequences

Swan is designed for reactive systems — that is, systems that continuously interact with their environments. To implement this kind of behavior on a computer, you need to adopt a discrete view of signals. Instead of seeing signals as continuous values, you treat them as sequences in the mathematical sense.

Swan lets you define mutually recurrent sequences, which we call flows. These flows naturally express sequential logic: functions whose outputs depend not only on the current inputs but on the history of inputs.

Here is what a simple proportional-integral (PI) controller looks like in Swan: 

block-diagram-in-swan

A block diagram in Swan: defining outputs from inputs using connected flows and wires

The output “m” is defined from the inputs "target" and "current." This graphical notation is based on a standard block diagram notation: A block consumes input flows and/or produces output flows. These flows are carried by wires connected to other blocks. The My First Model with the Swan Language tutorial is a good start if you want to learn more about Swan.

discrete-reactive-system

This is exactly how reactive embedded software behaves: Read inputs from sensors, compute new outputs, and send them to actuators.

To actually run such a model, we need more operational representation. That’s where the code generator comes in. It translates the model into a reaction or step function. At each execution cycle, it reads the nth inputs, computes the nth outputs, and updates the internal state for the next cycle.

Below is the C code generated from this model. (Notice how clean and readable the code is and how it’s not that far from manual C code.)

integrating-a-swan-model-on-hardware

Integrating a Swan model on hardware: a periodic step function layer enabling portability across platforms

To run this model on real hardware, the final step is to add a small integration layer. This layer periodically calls the generated step function and connects it to the actual hardware or a middleware layer. Because the behavior is cleanly separated from the hardware, the same model can be reused across applications or easily ported to another platform.

Managing complex states and transitions is a notorious source of bugs when using traditional imperative programming languages. With Swan, you can specify such complex behaviors in a natural way by mixing block diagrams with hierarchical state machines. Then you can use the Scade One debugger to visualize what’s happening step by step with just a click of a button.

simulating-a-hierarchical-state-machine-with-scade-one-debugger

Simulating a hierarchical state machine with the Scade One debugger

How Should a User Embrace Model-Based Software Development Like a Pro?

If the concept resonates, the next question is how to implement it effectively. The following tips can help guide the process:

Migrate Step by Step

Adopting model-based software development does not mean that you must throw away everything and start from scratch. Swan can easily coexist and integrate in your existing C application. C code generated from Swan models is portable, without any external dependencies or runtime. Swan can also reuse existing C functions and types.

A good way to start is from the high-level parts of the application. Swan block diagrams are useful to better visualize the software architecture: the different components and the data communicated between each other. Parts of the application that are managing states can immediately benefit from using Swan hierarchical state machines.

Think Bigger: Link With Digital Engineering

Don’t just model your controller; model your requirements, system architecture, and software architecture too. Good software starts with good requirements and good architecture. This creates a centralized source of truth for analysis and design. The Ansys System Architecture Modeler (SAM) capability, based on the standard SysML v2 language, can help you with that. It connects with the wider Ansys digital engineering ecosystem for analysis and simulation workflows and of course with the Scade One solution for a smooth workflow from system and software architecture into software design and verification.

Prototype Early

The Scade One solution is not used just to create embedded software. With it, you can create abstractions of your controller to validate behavior and requirements as soon as possible. The sooner that you find issues, the cheaper they are to fix. By using the same language and tool from the start, you can reuse existing assets and have a solid foundation from the beginning.

prototyping-a-controller-with-successive-refinements

Prototyping a controller with successive refinements

Invest in Simulation

Verify as much as possible on the model. You receive bonus points if you simulate the physical system and hardware/software environment so you can build a virtual prototype of your system. Your Scade One models can easily be exported as a functional mock-up unit (FMU), a standard for exchange of simulation models supported by most simulation tools. You can also export them to Python to enable simulation and testing workflows.

Build Demos With Graphical Panels

The Scade One Studio feature includes the SCADE Rapid Prototyper tool so you can create graphical panels to set inputs and visualize outputs. These panels can be used to create demos that mimic real-life interfaces and help validate behavior with system experts or operators.

graphical-control-panel-for-a-smart-boiler

A graphical control panel for a smart boiler

Be Agile, and Learn Best Practices

Swan is a programming language, so treat it like one. The Scade One solution integrates easily in your existing continuous integration/continuous delivery (CI/CD) pipelines. Scade One tools can be used in batch mode on Windows and Linux to automatically check models or run test procedures. PyScadeOne, the Python library for all scripting needs related to the Scade One solution, can also be used to automate workflows and access all assets. Soon, we will even will provide “scadeone-actions” to easily set up CI/CD in Github for Scade One projects. If you are new to this, learn the best practices for Agile development and adopt them.

Connect Your Teams

In a traditional process, system and control engineers work on models of the controller, which are used as a specification for software engineers who implement the embedded software. With its familiar graphical notations, Swan is a language that is accessible to both control engineers and software engineers. (See Scade One – Bridging the Gap between Model-Based Design and Traditional Programming.) With the Scade One solution, the model is the embedded software. Using a common language results in fewer communication issues and more efficiency.

Stay Curious

Keep up with new features and automation tricks. Every new release of the Scade One solution brings new features and automation opportunities. The blogs published here can help you learn more about the product and how to be even more efficient.

Ready To Make the Leap?

Model-based software development isn’t just a buzzword — it’s a game changer enabling teams to move beyond the limits of traditional graphical design while preserving continuity, stability, and the ability to scale with growing software complexity, as Liebherr explains in the video below.

With the Scade One solution, you can bring the power of model-based software development to your embedded software.

If you’d like to learn more about the Scade One solution, we’d love to hear from you. Get in touch on our product page, and join this webinar session.

So what’s stopping you? Your future self (and your project deadlines) will thank you.


Just for you. We have some additional resources you may enjoy.

TAKE A LOOK



Recommendations

What Is Model-Based Software Development? A Quick Guide With the Scade One Solution

What Is Model-Based Software Development? A Quick Guide With the Scade One Solution

Learn why model-based software development isn’t just a buzzword — it’s a game changer enabling teams to move beyond the limits of traditional graphical design.

Advancing Embedded Software With 2026 R1 SCADE and Scade One Solutions

Advancing Embedded Software With 2026 R1 SCADE and Scade One Solutions

The robust features of this release are for empowering engineers to innovate at scale while navigating the demands of safety-critical software development.

Meeting the Needs of Modern Embedded Systems With Ansys Scade One Software

Meeting the Needs of Modern Embedded Systems With Ansys Scade One Software

Learn why, for the foreseeable future, the robust, user-friendly Ansys Scade One platform will remain at the forefront of embedded software development.

The Advantage Blog

The Ansys Advantage blog, featuring contributions from Ansys and other technology experts, keeps you updated on how Ansys simulation is powering innovation that drives human advancement.