Since the dawn of the discipline of software engineering, one of the persistent mantras has been modularization. This structured design and functional decomposition approach breaks software down into clearly defined functional units, or modules, with unambiguous interfaces. The proven value of this approach is high quality software. In a modular, safety critical system it is necessary to examine the way that the modules come together and interact , and confirm that neither their data coupling nor their control coupling is defective .