Um diagrama de componentes pode ser usado para ilustrar a relação entre as classes que especificam os requisitos para o componente, e os artefatos que implementam o componente. Os artefatos representam qualquer tipo de código que pode residir na memória do computador, arquivos binários, scripts, arquivos executáveis, bancos de dados ou aplicações.
A relação entre um componente e um artefato pode parecer confusa. O componente é a definição de um tipo de execução física. Um artefato é a implementação real. A mesma notação de componente pode ser usada para representar os artefatos também.
Cada componente tem que definir uma ou mais interfaces que permita com que outros componentes possam comunicar com ele. Os requisitos para a implementação interna do componente são especificados por classes. A implementação real é encapsulada no artefato que o implementa, por exemplo, classes Java, .NET, PHP, HTML e XML.