Coupling generally refers to the act of joining two things together, such as the links in a chain. But in software development, coupling typically refers to the degree to which software components/modules depend upon each other. The degree to which components are linked defines whether they operate in a tightly coupled relationship or in a loosely coupled relationship. With tightly coupled components, each component and any auxiliary dependent objects must be present at execution time as well as compile time. On the other hand, loosely coupled components can operate independently from one another.
Compile-time coupling
Couplings are creating in software development when a developer uses normal programming techniques to relate one or more components to each other. For example, when a C or C++ developer includes an external source file in another source file, a coupling is created. Every import or include statement represents a coupling between the current class or file and the class or file being imported. The following snippet demonstrates this.