Code Shipping - Dependency (Coupling)

Card Puncher Data Processing


Logical Data Modeling - Dependency (Coupling) in code.

A (module|package|library) often requires other (packages|module) to be installed to function correctly. Such a relation is called a dependency.

Coupling or dependency is the degree to which each program module relies on each one of the other modules.

Dependencies are not only dynamic with modules, there is also static one such as:

A library dependency define an an abstraction layer in your code.



If you need to add a dependency in your project, you may:

  • include it as package (archive file containing the whole code and published) from a shared library
  • or copy the source code into your own project tree.

The issue with:

  • including the library, It’s difficult
    • to customize the library in any way
    • to deploy it (because you need to make sure every client has that library available)
  • copying the code into your own project is:
    • any custom changes you make are difficult to merge when upstream changes become available.

This is a trade-off. Git try to address this issue with submodules (see also git sub-project)



A dependency of a dependency is a transitive dependency.


Same as Code Shipping - Transitive Dependency (External ?)


An exported dependency is a library that will be found in the compile classpath of the consumer (ie exported to the consumer)



see dependency graph

Death Star

Services relationship (ie dependency).

All component are placed on a circle and if they have a dependency you will draw a line between this components. And as you see, you got a sort of big planet of death … Beautiful.

Death Stars Architecture Diagram

Dependency indirection

One reason people use symbolic references (like semantic versioning) is so that we can refer to “anything greater than 2.3.4” and not worry about the specific thing that’s used.

As numerous incidents have demonstrated late-binding in production is evil and no sane Ops person would ever do this. How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript



Possible solution is called package relocation


  • Renovate - Automated dependency updates. Multi-platform and multi-language.


Phantom Dependency


Doppelgangers is the same dependency installed twice at two differents location.

Documentation / Reference

Discover More
Card Puncher Data Processing
Code Deployment - Shared library

A shared library is used to share a set of code sources across applications. You define an application's dependency on a shared library when deploying the application.
Card Puncher Data Processing
Code Shipping - (Library|Package)

A library is a component meant to be consumed either by: another library or an application. A library is also known as a package. ( scope/directory ) Library are reusable software components...
Card Puncher Data Processing
Code Shipping - (Library|Package) (Distribution|Publication)

Distribution is the process of uploading a library into a repository via a packaging system in order to make it available for reuse. A library or an application could then reuse it by declaring it as...
Card Puncher Data Processing
Code Shipping - (Module|Component)

Module are several source scripts (compiled or not) bundled together as a mean to: group code that can be: reused. The component is then called: a library or package when distributed or a dependency...
Card Puncher Data Processing
Code Shipping - (Package|Library|Dependency) Manager

(Package|Library|Dependency) Manager are a framework and distribution system for archive that takes into account dependency between them. Debian's “apt-get” package management utility. apt...
Card Puncher Data Processing
Code Shipping - Installation

installation refers to the process of: deploying a application on a computer or installing a library declared as dependency in a project
Card Puncher Data Processing
Code Shipping - Project

A project is a structure meant to facilitate the building of a component. It will group all artifact (file, code, data,...) generally inside a directory alongside a metadata file that will declare all...
Card Puncher Data Processing
Code Shipping - Transitive Dependency (External ?)

A transitive dependency is a dependency of a dependency. They form a transitive relationship in the dependency tree. . This is the default type of dependency relationship in a package manager. Your...
Git - SubProject

How to integrate subproject into a main project. (ie code dependency) sub-module creates a link to a repository (no file, no commit, no history is saved within the main project repository) sub-tree...
Gradle - Dependency

dependency management in Gradle of module Type Module...

Share this page:
Follow us:
Task Runner