Guidelines for Developer Documentation according to Common Criteria Version 3.1
coupling the manner and degree of interdependence between software modules; types of
coupling include call, common and content coupling. These types of coupling are characterised
below, listed in the order of decreasing desirability
• call: two modules are call coupled if they communicate strictly through the use of their
documented function calls; examples of call coupling are data, stamp, and control, which are
defined below.
1. data: two modules are data coupled if they communicate strictly through the use of call
parameters that represent single data items.
2. stamp: two modules are stamp coupled if they communicate through the use of call parameters
that comprise multiple fields or that have meaningful internal structures.
3. control: two modules are control coupled if one passes information that is intended to influence
the internal logic of the other.
• common: two modules are common coupled if they share a common data area or a common system
resource. Global variables indicate that modules using those global variables are common coupled.
Common coupling through global variables is generally allowed, but only to a limited degree. For
example, variables that are placed into a global area, but are used by only a single module, are
inappropriately placed, and should be removed. Other factors that need to be considered in assessing
the suitability of global variables are:
1. The number of modules that modify a global variable: In general, only a single module should
be allocated the responsibility for controlling the contents of a global variable, but there may be
situations in which a second module may share that responsibility; in such a case, sufficient
justification must be provided. It is unacceptable for this responsibility to be shared by more than
two modules. (In making this assessment, care should be given to determining the module actually
responsible for the contents of the variable; for example, if a single routine is used to modify the
variable, but that routine simply performs the modification requested by its caller, it is the calling
module that is responsible, and there may be more than one such module). Further, as part of the
complexity determination, if two modules are responsible for the contents of a global variable,
there should be clear indications of how the modifications are coordinated between them.
2. The number of modules that reference a global variable: Although there is generally no limit on
the number of modules that reference a global variable, cases in which many modules make such
a reference should be examined for validity and necessity.
• content: two modules are content coupled if one can make direct reference to the internals of the
other (e.g. modifying code of, or referencing labels internal to, the other module). The result is that
some or all of the content of one module are effectively included in the other. Content coupling can be
thought of as using unadvertised module interfaces; this is in contrast to call coupling, which uses
only advertised module interfaces.
delivery the product life-cycle phase which is concerned with the transmission of the
finished TOE from the production environment into the hands of the customer. This may include
packaging and storage at the development site, but does not include transportations of the
unfinished TOE or parts of the TOE between different developers or different development
sites.
developer the organisation responsible for the development of the TOE.
development the product life-cycle phase which is concerned with generating the
implementation representation of the TOE. Throughout the ALC requirements, development
and related terms (developer, develop) are meant in the more general sense to comprise
development and production.
development environment the environment in which the TOE is developed.
Bundesamt für Sicherheit in der Informationstechnik 23