A technique of system or program decomposition in which the primary criterion is that each identified module should contain only elements that all contribute to the achievement of a single goal. Thus each module should perform a single function in the broad sense of an identified job of work (the definition of which is both subjective and dependent upon the level of consideration). The technique is often associated with a general approach, termed structured design, that was developed by IBM in the early 1970s.