Interaction Coupling is the measure of the number of message types an Inheritance Coupling is the degree to which a subclass actually needs the Operation Cohesion is the degree to which an operation focuses on a single Class Cohes

J.E.D.I the number of links an object has and by the degree of interaction it has with other objects. For object-oriented design, two types of coupling are used.

1. Interaction Coupling is the measure of the number of message types an

object sends to another object, and the number of parameters passed with these message types. Good interaction coupling is kept to a minimum to avoid possible change ripples through the interface.

2. Inheritance Coupling is the degree to which a subclass actually needs the

features attributes and operations it inherits from its base class. One minimize the number of attributes and operations that are unnecessarily inherited. Cohesion is the measure to which an element attribute, operation, or class within a package contributes to a single purpose. For object-oriented design, three types of cohesion are used.

1. Operation Cohesion is the degree to which an operation focuses on a single

functional requirement. Good design produces highly cohesive operations.

2. Class Cohesion is the degree to which a class is focused on a single

requirement.

3. Specialization Cohesion address the semantic cohesion of inheritance.

Inheritance definition should reflect true inheritance rather than sharing syntactic structure. Refinement Refinement is also known as the process of elaboration. Abstraction complements refinement as they enable a software engineer to specify the behavior and data of a class or module yet suppressing low levels of detail. It helps the software engineer in creating a complete design model as the design evolves. Refinement helps the software engineer to uncover the details as the development progresses. Refactoring Refactoring is a technique that simplifies the design of the component without changing its function and behavior. It is a process of changing the software so that the external behavior remains the same and the internal structures are improved. During refactoring, the design model is checked for redundancy, unused design elements, inefficient or unnecessary algorithms, poorly constructed or inappropriate data structures or any other design failures. These are corrected to produce a better design.

4.1.2 The Design Model