In theory when programmers actually write the code for each module they will only be following the software module specifications.
In practise with Process Automation this is often not the case because the preceding documents were not complete enough.
A detailed Functional Requirements Model is good way to provide all the infromation required for programming.
Note - In Process automation, much of the 'code' is embedded in standard modules provided by the System supplier, so the 'coding' for these is a matter of choosing the correct modules and connecting them together. This applies to control loops for example.However the systems often do require actual coding - for example wherre ladder or or comparable languages are used. The applies as much to DCS and to PLC systems.