*** Welcome to piglix ***

Loose coupling


In computing and systems design a loosely coupled system is one in which each of its components has, or makes use of, little or no knowledge of the definitions of other separate components. Subareas include the coupling of classes, interfaces, data, and services. Loose coupling is the opposite of tight coupling.

Components in a loosely coupled system can be replaced with alternative implementations that provide the same services. Components in a loosely coupled system are less constrained to the same platform, language, operating system, or build environment.

If systems are decoupled in time, it is difficult to also provide transactional integrity; additional coordination protocols are required. Data replication across different systems provides loose coupling (in availability), but creates issues in maintaining consistency (data synchronization).

Loose coupling in broader distributed system design is achieved by the use of transactions, queues provided by message-oriented middleware, and interoperability standards.

Four types of autonomy, which promote loose copling, are: reference autonomy, time autonomy, format autonomy, and platform autonomy.

Loose coupling is an architecural principle and design goal in service-oriented architectures; eleven forms of loose coupling and their tight coupling counterparts are listed in:

Enterprise Service Bus (ESB) middleware was invented to achieve loose coupling in multiple dimensions; however, overengineered and mispositioned ESBs can also have the contrary effect and create undesired tight coupling and a central architectural hotspot.

Event-driven architecture also aims at promoting loose coupling.

Loose coupling of interfaces can be enhanced by publishing data in a standard format (such as XML or JSON).


...
Wikipedia

...