Model-Based Development (MBD) is widely used for embedded controls
development, with Matlab Simulink being one of the most used modelling
environments in industry. As with all software, Simulink models are subject to
evolution over their lifetime and must be maintained. Modularity is a
fundamental software engineering principle facilitating the construction of
complex software, and is used in textual languages such as C. However, as
Simulink is a graphical modelling language, it is not currently well understood
how modularity can be leveraged in development with Simulink, nor whether it
can be supported with current Simulink modelling constructs. This paper
presents an effective way of achieving modularity in Simulink by introducing
the concept of a Simulink module. The effectiveness of the approach is measured
using well-known indicators of modularity, including coupling and cohesion,
cyclomatic complexity, and information hiding ability. A syntactic interface is
defined in order to represent all data flow across the module boundary. Four
modelling guidelines are also presented to encourage best practice. Also, a
custom tool that supports the modelling of Simulink modules is described.
Finally, this work is demonstrated and evaluated on a real-world example from
the nuclear domain.