Catalog
concept#Architecture#Software Engineering#Development Principles#Software Architecture

Coupling & Cohesion

Coupling and cohesion are fundamental principles of software architecture that affect the interaction between modules.

Coupling describes how strongly modules are interconnected, while cohesion refers to the internal consistency of a module.
Established
Medium

Classification

  • Medium
  • Technical
  • Architectural
  • Intermediate

Technical context

DatabasesAPIsCloud platforms

Principles & goals

High CohesionLow CouplingModular Structure
Build
Enterprise, Domain, Team

Use cases & scenarios

Compromises

  • Dynamic in the architecture
  • Faulty interactions between modules
  • High dependencies
  • Regular review of the architecture
  • Involve the entire team
  • Design simple interfaces

I/O & resources

  • Requirements for the software
  • Architecture diagrams
  • Resource allocation
  • Functional software
  • Improved architecture
  • High cohesion values

Description

Coupling describes how strongly modules are interconnected, while cohesion refers to the internal consistency of a module. High cohesion and low coupling are desirable properties that enhance the maintainability and flexibility of software.

  • Improved Maintainability
  • Increased Flexibility
  • Better Testing

  • Can be complex
  • Requires careful planning
  • Can lead to overhead

  • Customer Satisfaction Ratings

    Measurement of customer satisfaction with the software.

  • Turnaround Times for Changes

    Time taken to implement changes in the application.

  • Error Rates

    Number of errors that occurred and their impact.

E-commerce Platform

A modular e-commerce platform that provides various services through microservices.

Finance Application

A finance application that offers an improved user experience through high cohesion and low coupling.

Content Management System

A module-based system for managing digital content.

1

Create architecture diagrams

2

Document the modules

3

Train the team

⚠️ Technical debt & bottlenecks

  • Outdated dependencies
  • Technical debts in modularization
  • Insufficient test coverage
Integration bottleneckLack of documentationComplex dependencies
  • Neglecting module boundaries
  • Excessive use of global variables
  • Poor documentation of modules
  • Creating too many dependencies
  • Implementing untested modules
  • Implementing change requests without analysis
Knowledge of software architectureExperience with agile methodologiesSkills in testing
Changes in business requirementsTechnological innovationsCompetitive pressure
  • Budget constraints
  • Time constraints
  • Technological constraints