Maybe you have, at least heard something about building decoupled things in the software world: decoupled classes, decoupled modules, and also decoupled services.
But what does it mean for a software unit being decoupled from another?
In a practical way, two things are coupled when any changes made to one of them requires you to also change the other one. For example, if you have a method that returns a String and changes it to return a Double, all the methods calling that one are required to be changed.
There are levels of coupling. For example, you could have all your classes and methods very well designed for loose coupling, but they are all written in Java. If you change one of them to .NET and would like to keep all of them together (in the same deployment package), you need to change all the other ones to the new language.
Another thing to mention...