Loose coupling in SOA

Pour les articles homonymes, voir Couplage. Selon Pressman[1], il existe sept niveaux de couplage, du plus faible au plus fort : Une bonne architecture logicielle nécessite le couplage le plus faible possible.
Coupling and Cohesion: An SOA Challenge. Cohesion and coupling are two fundamental concepts in software development at least since Stevens, Myers and Constantine published their seminal article Structured Design in 1974.[1] Since then, however, there has been a great deal of metamorphosis, metastasis and other alterations to the basic definitions depending upon the context and the application.

Stevens, et al. defined coupling as the measure of the strength of association established by connection of one module to another. In the context of most current Service Oriented Architecture implementations, this is defined by the association between the services that make up the application itself. Since loose-coupling is often viewed as one of (if not the) fundamental values Service Oriented Architecture (SOA) brings to the enterprise, it is somewhat more well-defined in the SOA context than cohesion. In the realm of SOA the same cohesion principles still pertain, but they need to be applied in new ways.

Coupling and Cohesion: An SOA Challenge. Cohesion (computer science)
In computer programming, cohesion is a measure of how strongly related the responsibilities of a single module are.

As applied to object-oriented programming, if the methods that serve the given class tend to be similar in many aspects, then the class is said to have high cohesion. In a highly cohesive system, code readability and the likelihood of reuse is increased, while complexity is kept manageable. Cohesion is increased if: The functionalities embedded in a class, accessed through its methods, have much in common.Methods carry out a small number of related activities, by avoiding coarsely grained or unrelated sets of data.
Software metric. A software metric is a measure of some property of a piece of software or its specifications.

Since quantitative measurements are essential in all sciences, there is a continuous effort by computer science practitioners and theoreticians to bring similar approaches to software development. The goal is obtaining objective, reproducible and quantifiable measurements, which may have numerous valuable applications in schedule and budget planning, cost estimation, quality assurance testing, software debugging, software performance optimization, and optimal personnel task assignments.

Multiprocessing. According to some on-line dictionaries, a multiprocessor is a computer system having two or more processing units (multiple processors) each sharing main memory and peripherals, in order to simultaneously process programs.[4][5] A 2009 textbook defined multiprocessor system similarly, but noting that the processors may share "some or all of the system’s memory and I/O facilities"; it also gave tightly coupled system as a synonymous term.[6] In Flynn's taxonomy, multiprocessors as defined above are MIMD machines.[10][11] As they are normally construed to be tightly coupled (share memory), multiprocessors are not the entire class of MIMD machines, which also contains message passing multicomputer systems.[10] §Pre-history[edit] §Key topics[edit]

Plat de spaghetti Étymologie[modifier | modifier le code] L'origine de l'expression provient de l'analogie suivante : « Un système informatique désordonné c'est comme une assiette de spaghettis: il suffit de tirer sur un fil d'un côté de l'assiette pour que l'enchevêtrement des fils provoque des mouvements jusqu'au côté opposé[1]. »
Indépendance fonctionnelle. Couplage (informatique)
Service loose coupling principle. Within the service-orientation design paradigm, service loose coupling is a design principle[1] that is applied to the services[2] in order to ensure that the service contract is not tightly coupled to the service consumers and to the underlying service logic and implementation.

This results in service contracts that could be freely evolved without affecting either the service consumers or the service implementation.[3] Purpose[edit] The concept of loose coupling within SOA is directly influenced by the object-oriented design paradigm,[4] whereby the objective is to reduce coupling between classes in order to foster an environment where both the classes, although somehow related to each other, can be changed in a manner that such a change does not break the existing relationship, which is necessary for the working of a software program.