Program modules that are designed to interoperate with each other at runtime. Components can be large or small. They can be written by different programmers using different development ...