business:concepts:principle:loosely_coupled_highly_cohesive:home

Business:Concepts:Principle:PRINC-xxxx: Loosely Coupled, Highly Cohesive (LCHC)

<data principle #PRINC-xxxx>

Categories : Business, Data, Architecture

Title : Loosely Coupled, Highly Cohesive Statement : Minimize coupling between units so either party can change without breaking existing relationships. Reduce the number and diversity of tasks individual units are designed for.

Rationale : Loosely coupled units can adjust their processes without unecessary disruption to other units.

Cohesion is a measure of how focused the responsibilities of a given entity are. Cohesive units, responsible for a few related logical tasks, require no adjustments as long as their role is constant. This releases resources to focus on developing additional value instead of revisiting and adjusting previously developed solutions.

Impact : Maintenance is child’s play: we keep together things that need to be maintained together and things that are not directly related can be changed without affecting other components.

The Understandability of Components is greatly improved, due to their functionality focus. Code becomes more or less self-documenting.

Classes have well-defined responsibilities and code duplication is drastically reduced.

Agree on the Contract between components before designing or developing the internal procedures.

Loosely coupled components have fewer dependencies than tightly coupled components, improving the components maintainability. Whereas changes to tightly coupled components cause changes to the the tightly couple components, and so on and so forth.

Resources : * Principle * https://en.wikipedia.org/wiki/Service_loose_coupling_principle * http://www.jasoncoffin.com/cohesion-and-coupling-principles-of-orthogonal-object-oriented-programming/ * http://www.xyzws.com/scjp/SGS11/5/2

</data>


!includeurl http://skysigal.com/_media/resources/configuration/plantuml/minimalist.txt

package Qualities {
package Maintainability {
class Modularity
class Reusability
class Analysability
class Modifiability
class Testability
}
}

package Sector {
package Organisation {
class "Loosely Coupled, Highly Cohesive" as P1

class "Connect versus Contain" as P2
class "Contract before Implementation" as P3 #E0E0E0
class "Principle of Least Knowledge" as P4 #E0E0E0


P2 -[HIDDEN]RIGHT- P3
P3 <-UP- P1
P2 <-UP- P1

P1 <|-- P4


}
}

Maintainability <-LEFT- P1

  • /home/skysigal/public_html/data/pages/business/concepts/principle/loosely_coupled_highly_cohesive/home.txt
  • Last modified: 2023/11/04 22:51
  • by 127.0.0.1