Concept

Coupling (computer programming)

In software engineering, coupling is the degree of interdependence between software modules; a measure of how closely connected two routines or modules are; the strength of the relationships between modules. Coupling is usually contrasted with cohesion. Low coupling often correlates with high cohesion, and vice versa. Low coupling is often thought to be a sign of a well-structured computer system and a good design, and when combined with high cohesion, supports the general goals of high readability and maintainability. The software quality metrics of coupling and cohesion were invented by Larry Constantine in the late 1960s as part of a structured design, based on characteristics of “good” programming practices that reduced maintenance and modification costs. Structured design, including cohesion and coupling, were published in the article Stevens, Myers & Constantine (1974) and the book Yourdon & Constantine (1979), and the latter subsequently became standard terms. Coupling can be "low" (also "loose" and "weak") or "high" (also "tight" and "strong"). Some types of coupling, in order of highest to lowest coupling, are as follows: A module here refers to a subroutine of any kind, i.e. a set of one or more statements having a name and preferably its own set of variable names. Content coupling (high) Content coupling is said to occur when one module uses the code of another module, for instance a branch. This violates information hiding – a basic software design concept. Common coupling Common coupling is said to occur when several modules have access to the same global data. But it can lead to uncontrolled error propagation and unforeseen side-effects when changes are made. External coupling External coupling occurs when two modules share an externally imposed data format, communication protocol, or device interface. This is basically related to the communication to external tools and devices. Control coupling Control coupling is one module controlling the flow of another, by passing it information on what to do (e.

About this result
This page is automatically generated and may contain information that is not correct, complete, up-to-date, or relevant to your search query. The same applies to every other page on this website. Please make sure to verify the information with EPFL's official sources.
Related publications (13)

Pocket guide to solve inverse problems with GlobalBioIm

Michaël Unser, Daniel Sage, Thanh-An Michel Pham, Laurène Donati, Emmanuel Emilien Louis Soubies, Ferréol Arnaud Marie Soulez, Michael Thompson McCann, Thomas Jean Debarre

GlobalBioIm is an open-source MATLAB (R) library for solving inverse problems. The library capitalizes on the strong commonalities between forward models to standardize the resolution of a wide range of imaging inverse problems. Endowed with an operator-al ...
IOP PUBLISHING LTD2019

MiMiC: A Novel Framework for Multiscale Modeling in Computational Chemistry

Ursula Röthlisberger, Simone Meloni, Martin Peter Bircher, Viacheslav Bolnykh, Paolo Carloni

We present a flexible and efficient framework for multiscale modeling in computational chemistry (MiMiC). It is based on a multiple-program multiple-data (MPMD) model with loosely coupled programs. Fast data exchange between programs is achieved through th ...
AMER CHEMICAL SOC2019

Real-time model-based plasma state estimation, monitoring and integrated control in TCV, ASDEX-Upgrade and ITER

Olivier Sauter, Stefano Coda, Jean-Marc Moret, Federico Alberto Alfredo Felici, Cristian Galperti, Anna Teplukhina

To maintain a high-performance, long-duration tokamak plasma scenario, it is necessary to maintain desired profiles while respecting operational limits. This requires real-time estimation of the profiles, monitoring of their evolution with respect to predi ...
2016
Show more
Related concepts (10)
Object-oriented programming
Object-Oriented Programming (OOP) is a programming paradigm based on the concept of "objects", which can contain data and code. The data is in the form of fields (often known as attributes or properties), and the code is in the form of procedures (often known as methods). A common feature of objects is that procedures (or methods) are attached to them and can access and modify the object's data fields. In this brand of OOP, there is usually a special name such as or used to refer to the current object.
Cohesion (computer science)
In computer programming, cohesion refers to the degree to which the elements inside a module belong together. In one sense, it is a measure of the strength of relationship between the methods and data of a class and some unifying purpose or concept served by that class. In another sense, it is a measure of the strength of relationship between the class's methods and data themselves. Cohesion is an ordinal type of measurement and is usually described as “high cohesion” or “low cohesion”.
Inheritance (object-oriented programming)
In object-oriented programming, inheritance is the mechanism of basing an object or class upon another object (prototype-based inheritance) or class (class-based inheritance), retaining similar implementation. Also defined as deriving new classes (sub classes) from existing ones such as super class or base class and then forming them into a hierarchy of classes. In most class-based object-oriented languages like C++, an object created through inheritance, a "child object", acquires all the properties and behaviors of the "parent object", with the exception of: constructors, destructors, overloaded operators and friend functions of the base class.
Show more

Graph Chatbot

Chat with Graph Search

Ask any question about EPFL courses, lectures, exercises, research, news, etc. or try the example questions below.

DISCLAIMER: The Graph Chatbot is not programmed to provide explicit or categorical answers to your questions. Rather, it transforms your questions into API requests that are distributed across the various IT services officially administered by EPFL. Its purpose is solely to collect and recommend relevant references to content that you can explore to help you answer your questions.