Coupling: Coupling can be low (loose) or high (tight). Types of coupling: 1. Content coupling (high): In this type of coupling the module refers to the inside of other module and changes the internal working of another module. Example: Accessing local data of another module. 2. Common coupling: Common coupling occurs when two modules share the same global data (global variable). Changing the shared resource may change all the modules using it. 3. External coupling: This coupling occurs when two modules share an externally imposed data format, communication protocol, or device interface. This is generally related to the communication to external tools and devices. 4. Control coupling: Control coupling is one module controlling the flow of another, by passing information on the task to be performed. Example: passing a \'what-to-do\' flag. 5. Stamp coupling: In this composite data is passed between modules. The modification in a field that a module does not need may lead to change the way the module reads the record. Example: passing a whole record to a function that only needs one field of it. 6. Data coupling: In this coupling it is difficult to understand the interface due to many parameters. Therefore, there is a possibility of error to occur. Example: passing an integer to a function that computes a square root 7. Message coupling: This is the loosest type of coupling and can be obtained by state transfer as in objects Solution Coupling: Coupling can be low (loose) or high (tight). Types of coupling: 1. Content coupling (high): In this type of coupling the module refers to the inside of other module and changes the internal working of another module. Example: Accessing local data of another module. 2. Common coupling: Common coupling occurs when two modules share the same global data (global variable). Changing the shared resource may change all the modules using it. 3. External coupling: This coupling occurs when two modules share an externally imposed data format, communication protocol, or device interface. This is generally related to the communication to external tools and devices. 4. Control coupling: Control coupling is one module controlling the flow of another, by passing information on the task to be performed. Example: passing a \'what-to-do\' flag. 5. Stamp coupling: In this composite data is passed between modules. The modification in a field that a module does not need may lead to change the way the module reads the record. Example: passing a whole record to a function that only needs one field of it. 6. Data coupling: In this coupling it is difficult to understand the interface due to many parameters. Therefore, there is a possibility of error to occur. Example: passing an integer to a function that computes a square root 7. Message coupling: This is the loosest type of coupling and can be obtained by state transfer as in objects.