Updated June 7, 2023
Introduction to Coupling in Software Engineering
Coupling in Software Engineering is a part of Software Requirement Specification (SRS) documentation. It defines the factors of dependency and independence of each software module with other modules. It serves as an indicator of interdependency among the modules. The lower the coupling value will be, the higher the quality of the software will be. The name coupling is applied for this process, as it is typically deliberated between two modules at a time. The first step in the coupling process is to evaluate the association between the two modules and define the functionally dependent areas in the modules.
Types of Coupling
Coupling between any two modules is identifiable from the number and types of resources the modules share with other modules. This resource can be a functional behavior, a common interface, a common field in a user interface, the data picked from a field and shared between two modules, a transaction shared between two modules, etc. Based on these possible dependencies, the coupling in software engineering is classified into six different types:
- Common Coupling
- Content Coupling
- Data Coupling
- Control Coupling
- Stamp Coupling
Every software requirement specification documentation process should have a classification of these coupling between the dependent modules, whichever is applicable after a brief evaluation of the requirements from the client.
1. Common Coupling
Common Coupling consists of the modules that share the overall constraints in the midst of any two software system modules. This also can be a sign that any change made in the common constraint will reflect in the modules that share the common coupling scenario. As with any other process, this common coupling also allows space for characterizing the advantages and disadvantages involved in the process. One should evade this type of dependency, as it calls for more maintenance activities and lesser control over the modules. A fine example of this kind of coupling is the login page, where the login and backend modules are interdependent, as the login validation happens both at the login page and backend database levels.
2. Content Coupling
Content coupling, as the name says, is a case where two modules share their contents, and when a change occurs in one module, the other module needs updation as well. When the modules are not in synch, it leads to a higher level of functional misbehavior. For instance, when two modules share the same data, the primary key columns for both modules’ databases should be related. Otherwise. the content of the modules will reflect non-synch data due to the dependency.
3. Data Coupling
Data coupling occurs when two software system modules have only one type of interaction between them, and if that interaction is in the form of data. Other than the form of data, the modules have no other commonly shared resources like functionality or other system components. An example of data coupling is that two user interfaces, which share data in terms like module 1, pass data for processing to module 2 and receive the processed data back from module 2. Though all the coupling needs minimization, this type of coupling is tolerable as it does not affect any other functional behavior of the software.
4. Control Coupling
Control coupling is a functional flow of the software where the two software modules network by provisioning the shared control involving the modules’ functional activities. The impact of this type of coupling on the software application can be either positive or negative, as it can be defined only based on the type of control being shared by the said modules. It is seen as a positive impact when the functionality is allowed for reusability. This type of coupling is usually observed at the code level when the arguments are reused in more than one place in the functional part of the code.
5. Stamp Coupling
Stamp coupling occurs between any two modules that share a compilation of an already structured intricate data set. As the data and elements are pre-organized and well-placed beforehand, no junk or unused data will be shared between the two coupling modules. This helps in improving the general efficiency of the software and its performance. At the same time, the system designer should know the limitations to what extent stamp coupling can be allowed.
6. External Coupling
External coupling can be described as a situation where the modules are interrelated with common external influencing factors. They can be:
- an external legacy application that sends the same set of data or contents to both modules
- a hardware requirement common for both modules
- a common file/ folder in use by both modules
- when both use same switch/router in the network for communication
Advantages of Coupling in Software Engineering
In the Software Engineering process, as a part of the Software Development Lifecycle, the Design phase has ‘coupling’ as one of its essential steps.
Below are the key advantages of performing the coupling process:
- Helps in identifying the dependencies of each module with other modules in the
- Mainly used for increasing the quality and performance of the software application, as the analysis aids in keeping the coupling value to the
- Coupling supports the reusability of the functionality amongst the
- When the dependency between the modules is less, the changes done in one unit will not affect the
- Provides room for better methods for the maintenance of the
Coupling in Software Engineering is a crucial process, as it is significant in recognizing and limiting the connection among the various modules of the software. In addition, coupling plays a major role in holding the quality and performance of the software system to a maximum level by keeping in check the link amidst all the elements in the software.
This is our guide to Coupling in Software Engineering. Here are some further articles for expanding understanding: