Maybe you have at least heard something about building decoupled things in the software world— decoupled classes, decoupled modules, and decoupled services.
But what does it mean for a software unit being decoupled from another?
Practically, 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 of the methods calling that method are required to be changed.
There are levels of coupling. For example, you could have all of 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 of the other ones into the new language.
Another thing...