Glossary · Engineering, integration and validation
Modular software design
Also known as: Modular programming, Software modularization
German: Modularer Softwareentwurf
In software engineering, modular software design structures a program into self-contained modules with defined interfaces, each responsible for one function or equipment unit. In automation, modules are often function blocks or equipment modules that are reused across machines and plants.
- Validation
In one sentence
Modular software design structures control software into self-contained modules with defined interfaces that can be tested and reused.
Example
Each conveyor section is controlled by the same tested function block instance, so a new line only needs configuration, not new code.
How it applies
- Engineering: Modules encapsulate equipment such as valves, motors or axes, with defined inputs, outputs and states. Libraries of tested modules reduce effort and errors. ISA-88 equipment and control modules and IEC 61131-3 function blocks support this structure.
- Testing: Modules can be unit-tested in isolation, for example in Software-in-the-loop (SIL) setups and Continuous integration (CI) pipelines.
- Safety: Functional safety standards such as IEC 61508 recommend a modular approach for safety-related software, among other techniques; modularity supports, but does not replace, the required verification.
- Documentation: The documentation team can mirror the module structure in reference documentation, one topic per module type, and reuse module descriptions across machine manuals.
Modular design vs. copy-and-paste reuse
In modular design, one module version is instantiated many times; a fix is made once. Copy-and-paste reuse creates independent copies that drift apart and have to be maintained one by one.