CSC/ECE 517 Fall 2007/wiki2 7 an: Difference between revisions

From Expertiza_Wiki
Jump to navigation Jump to search
Line 7: Line 7:


Thus the design goal is to minimize coupling and improve reusability. Coupling is broadly divided into two types-low coupling and high coupling. Low coupling refers to a relationship in which one module interacts with another module through a stable interface and does not need to be concerned with the other module's internal implementation  With low coupling, a change in one module will not require a change in the implementation of another module. Low coupling is often a sign of a well-structured computer system, and when combined with high cohesion, supports the general goals of high readability and maintainability.
Thus the design goal is to minimize coupling and improve reusability. Coupling is broadly divided into two types-low coupling and high coupling. Low coupling refers to a relationship in which one module interacts with another module through a stable interface and does not need to be concerned with the other module's internal implementation  With low coupling, a change in one module will not require a change in the implementation of another module. Low coupling is often a sign of a well-structured computer system, and when combined with high cohesion, supports the general goals of high readability and maintainability.


On the other hand, systems with high coupling face the following problems
On the other hand, systems with high coupling face the following problems
Line 15: Line 16:


• Modules are difficult to reuse or test because dependent modules must be included.
• Modules are difficult to reuse or test because dependent modules must be included.


Thus it is evident that low coupling tends to produce reusable methods. But it is also not possible to write completely decoupled methods since the program will not work.
Thus it is evident that low coupling tends to produce reusable methods. But it is also not possible to write completely decoupled methods since the program will not work.

Revision as of 01:39, 24 October 2007

Cohesion and coupling. Cohesion and coupling are concepts that are reasonably easy to understand, but nonetheless, it is challenging to find good examples that are succinct. Browse the hundreds of Web pages that attempt to explain these concepts, picking your favorite examples. Many of these pages mention related concepts; list some of them and explain how they relate to cohesion and coupling. Be sure to mention the metrics that can be used to measure how well a program conforms to the principles of high cohesion and low coupling.

What is coupling?

Coupling is the degree to which each program module relies on each one of the other modules. Unnecessary object coupling needlessly decreases the reusability of the coupled objects and also increases the chances of system corruption when changes are made to one or more of the coupled objects.

Thus the design goal is to minimize coupling and improve reusability. Coupling is broadly divided into two types-low coupling and high coupling. Low coupling refers to a relationship in which one module interacts with another module through a stable interface and does not need to be concerned with the other module's internal implementation With low coupling, a change in one module will not require a change in the implementation of another module. Low coupling is often a sign of a well-structured computer system, and when combined with high cohesion, supports the general goals of high readability and maintainability.


On the other hand, systems with high coupling face the following problems

• Change in one module forces a ripple of changes in other modules.

• Modules are difficult to understand in isolation.

• Modules are difficult to reuse or test because dependent modules must be included.


Thus it is evident that low coupling tends to produce reusable methods. But it is also not possible to write completely decoupled methods since the program will not work.

Examples of coupling

High coupling

Low coupling

Types of coupling

Content coupling

Common coupling

Control coupling

Stamp coupling

Data coupling

What is cohesion?

Examples of cohesion

Low cohesion

High cohesion

Types of cohesion

Logical cohesion

Temporal cohesion

Procedural cohesion

Communicational cohesion

Sequential cohesion

Functional cohesion

Cohesion v/s Coupling

Metrics to measure cohesion and coupling

Depth of Inheritance Tree

Number of Children

Coupling between objects

Response for a Class

Weighted Methods per Class

Lack of Cohesion in Methods (LCOM) metrics

References

External Links