//////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2010, 2026 Contributors to the Eclipse Foundation
//
// See the NOTICE file(s) distributed with this work for additional
// information regarding copyright ownership.
//
// This program and the accompanying materials are made available
// under the terms of the MIT License which is available at
// https://opensource.org/licenses/MIT
//
// SPDX-License-Identifier: MIT
//////////////////////////////////////////////////////////////////////////////

include::_part_attributes.asciidoc[]

indexterm:[engineering, synthesis-based]

:leveloffset: -2

[[sbe-chapter-index]]
== Synthesis-based engineering

CIF supports synthesis-based engineering (SBE), an engineering approach to design and implement supervisory controllers.
The engineering approach combines model-based engineering with computer-aided design to produce correct-by-construction controllers.
It does so by automating as many steps as possible in the development process.

Supervisory controller synthesis is a main element of synthesis-based engineering, and a key feature of CIF.
It involves the automatic generation of supervisory controller models.
Implementation of the controller is achieved through (implementation language) code generation, improving speed and reducing the number of errors introduced at this stage.
Combined, they allow engineers to focus on _what_ the controller should do, rather than _how_ it should do it, and how this is to be implemented.

Synthesis-based engineering has many more benefits.
As the engineering approach uses well-defined models, designs can be discussed, analyzed, model-checked, or simulated.
That allows finding and correcting issues early in the development process, rather than during later stages where correcting them is more costly.
It also supports a comprehensive modular design and efficient incremental engineering.
Ultimately, this reduces development time and improves the quality of the resulting supervisory controllers.

<<sbe-supervisory-controllers>>::
Explains what supervisory controllers are, in what types of systems you can find them, and where they are located within such systems.

<<sbe-approaches>>::
Discusses synthesis-based engineering of supervisory controllers, its benefits, and its relation to other engineering approaches.

<<sbe-example>>::
Demonstrates the value of synthesis-based engineering through an example.

<<sbe-in-practice>>::
Explains concretely how to use the CIF language and toolset to apply synthesis-based engineering of supervisory controllers.

<<sbe-challenges>>::
Explains the challenges of embedding a synthesis-based engineering approach into industrial practice.

To learn how to use SBE, you can also follow the Eclipse ESCET online link:https://eclipse.dev/escet/{escet-deploy-folder-name}/sbe-course/[SBE course].
