De plus en plus, les logiciels sont considérés comme des assemblages de composants, chaque composant étant lui-même considéré comme un logiciel indépendant. Ce type d'approche permet de simplifier les étapes de conception, de développement et de maintenance des logiciels tout en garantissant de manière plus aisée leur qualité, leur fiabilité et leur sûreté. Dans ce contexte, nous proposons un cadre formel pour la définition de composants et de systèmes de composants avec une syntaxe orientée UML et une sémantique opérationnelle puis dénotationelle. La sémantique opérationnelle nous permet de simuler automatiquement un système à peu de frais grâce à l'outil AGATHA, en vue de générer des tests. La sémantique dénotationnelle nous permet, quant à elle, la définition d'un formalisme de spécifications de composants et de systèmes de composants ainsi que de divers mécanismes tel que l'exécution symbolique, que nous redéfinissons et que nous prouvons correct pour notre formalisme.