Coupling and Cohesion - Software Engineering - GeeksforGeeks
Coupling and Cohesion - Software Engineering - GeeksforGeeks
Types of Coupling:
https://www.geeksforgeeks.org/software-engineering-coupling-and-cohesion/ 3/13
19/02/2024, 16:21 Coupling and Cohesion - Software Engineering - GeeksforGeeks
Content Coupling: In a content coupling, one module can modify the data
of another module, or control flow is passed from one module to the
other module. This is the worst form of coupling and should be avoided.
Temporal Coupling: Temporal coupling occurs when two modules
depend on the timing or order of events, such as one module needing to
execute before another. This type of coupling can result in design issues
and difficulties in testing and maintenance.
Sequential Coupling: Sequential coupling occurs when the output of one
module is used as the input of another module, creating a chain or
sequence of dependencies. This type of coupling can be difficult to
maintain and modify.
Communicational Coupling: Communicational coupling occurs when two
or more modules share a common communication mechanism, such as a
shared message queue or database. This type of coupling can lead to
performance issues and difficulty in debugging.
Functional Coupling: Functional coupling occurs when two modules
depend on each other’s functionality, such as one module calling a
function from another module. This type of coupling can result in tightly-
coupled code that is difficult to modify and maintain.
Data-Structured Coupling: Data-structured coupling occurs when two or
more modules share a common data structure, such as a database table
or data file. This type of coupling can lead to difficulty in maintaining the
integrity of the data structure and can result in performance issues.
Interaction Coupling: Interaction coupling occurs due to the methods of a
class invoking methods of other classes. Like with functions, the worst
form of coupling here is if methods directly access internal parts of other
methods. Coupling is lowest if methods communicate directly through
parameters.
Component Coupling: Component coupling refers to the interaction
between two classes where a class has variables of the other class. Three
clear situations exist as to how this can happen. A class C can be
component coupled with another class C1, if C has an instance variable of
type C1, or C has a method whose parameter is of type C1,or if C has a
method which has a local variable of type C1. It should be clear that
whenever there is component coupling, there is likely to be interaction
coupling.
https://www.geeksforgeeks.org/software-engineering-coupling-and-cohesion/ 4/13
19/02/2024, 16:21 Coupling and Cohesion - Software Engineering - GeeksforGeeks
Types of Cohesion:
https://www.geeksforgeeks.org/software-engineering-coupling-and-cohesion/ 5/13
19/02/2024, 16:21 Coupling and Cohesion - Software Engineering - GeeksforGeeks
for these functions is in the same component. Operations are related, but
the functions are significantly different.
Coincidental Cohesion: The elements are not related(unrelated). The
elements have no conceptual relationship other than location in source
code. It is accidental and the worst form of cohesion. Ex- print next line
and reverse the characters of a string in a single component.
Procedural Cohesion: This type of cohesion occurs when elements or
tasks are grouped together in a module based on their sequence of
execution, such as a module that performs a set of related procedures in a
specific order. Procedural cohesion can be found in structured
programming languages.
Communicational Cohesion: Communicational cohesion occurs when
elements or tasks are grouped together in a module based on their
interactions with each other, such as a module that handles all
interactions with a specific external system or module. This type of
cohesion can be found in object-oriented programming languages.
Temporal Cohesion: Temporal cohesion occurs when elements or tasks
are grouped together in a module based on their timing or frequency of
execution, such as a module that handles all periodic or scheduled tasks
in a system. Temporal cohesion is commonly used in real-time and
embedded systems.
Informational Cohesion: Informational cohesion occurs when elements or
tasks are grouped together in a module based on their relationship to a
specific data structure or object, such as a module that operates on a
specific data type or object. Informational cohesion is commonly used in
object-oriented programming.
Functional Cohesion: This type of cohesion occurs when all elements or
tasks in a module contribute to a single well-defined function or purpose,
and there is little or no coupling between the elements. Functional
cohesion is considered the most desirable type of cohesion as it leads to
more maintainable and reusable code.
Layer Cohesion: Layer cohesion occurs when elements or tasks in a
module are grouped together based on their level of abstraction or
responsibility, such as a module that handles only low-level hardware
interactions or a module that handles only high-level business logic.
Layer cohesion is commonly used in large-scale software systems to
organize code into manageable layers.
https://www.geeksforgeeks.org/software-engineering-coupling-and-cohesion/ 6/13
19/02/2024, 16:21 Coupling and Cohesion - Software Engineering - GeeksforGeeks
Get paid for your published articles and stand a chance to win tablet, smartwatch
and exclusive GfG goodies! Submit your entries in Dev Scripter 2024 today.
Participate in Three 90 Challenge! Enroll in any GeeksforGeeks course and get 90%
refund by completing 90% course. Explore offer now.
Previous Next
Similar Reads
https://www.geeksforgeeks.org/software-engineering-coupling-and-cohesion/ 8/13