Glossary · Automation software engineering and architecture
Separation of concerns
Also known as: SoC principle
German: Trennung der Belange
In software and systems engineering, separation of concerns is the design principle of dividing a system into parts that each address a distinct concern, such as control logic, communication, visualization or safety, with minimal overlap.
- Software engineering
In one sentence
Separation of concerns divides a system into parts that each address one distinct concern, such as control, communication or safety.
Example
The machine software keeps safety functions in the safety program, sequence logic in the standard PLC program and operator guidance in the HMI, each with its own interfaces.
How it applies
- Engineering: Separating concerns makes parts easier to understand, test and change. In automation, separating safety-related from standard functions limits what must be verified to safety integrity requirements.
- Architecture: Layers, modules and services are all ways to separate concerns. Mixing them, for example HMI code that manipulates outputs directly, creates hidden dependencies.
- Documentation: The same principle applies to content: concept, task and reference information in separate topics, as in DITA, and separate documents for different audiences. Viewpoints and views in architecture descriptions apply it to models.
Separation of concerns vs. modularity
Separation of concerns is the principle; Modular programming is one way to implement it by structuring code into modules.