Coupon Accepted Successfully!


Input/Output Design


Design Phases

  • Architectural design: Identify sub-systems.
  • Abstract specification: Specify sub-systems.
  • Interface design: Describe sub-system interfaces.
  • Component design: Decompose sub-systems into components.
  • Data structure design: Design data structures to hold problem data.
  • Algorithm design: Design algorithms for problem functions.


It is the measure of the strength of the inter-connections between system components. Loose coupling means component changes are unlikely to affect other components.Shared variables or control information exchange lead to Tight coupling. Loose coupling can be achieved by state decentralization (as in objects) and component communication via parameters or message passing. Coupling and Inheritance.

  • Types of Coupling

– Content coupling (high)

Content coupling is when one module modifies or relies on the internal workings of another module (e.g., accessing local data of another module). Therefore changing the way the second module produces data (location, type, timing) will lead to changing the dependent module.

Common coupling

Common coupling is when two modules share the same global data (e.g., a global variable). Changing the shared resource implies changing all the modules using it.

– External coupling

External coupling occurs when two modules share an externally imposed data format, communication protocol, or device interface.

– Control coupling

Control coupling is one module controlling the flow of another, by passing it information on what to do (e.g., passing a what-to-do flag). Stamp coupling (Data-structured coupling). Stamp coupling is when modules share a composite data structure and use only a part of it, possibly a different part (e.g., passing a whole record to a function that only needs one field of it). This may lead to changing the way a module reads a record because a field, which the module doesn’t need, has been modified.

– Data coupling

Data coupling is when modules share data through, for example, parameters. Each datum is an elementary piece, and these are the only data shared (e.g., passing an integer to a function that computes a square root).

– Message coupling (low)

This is the loosest type of coupling. It can be achieved by state decentralization(as in objects)and component communication is done via parameters or message passing.(see Message passing).

No coupling

Modules do not communicate at all with one another.

Test Your Skills Now!
Take a Quiz now
Reviewer Name