--- title: "PdP: Architecture loficielle" date: 2024-03-14 tags: ["besoins", "UML", "developpement logiciel"] categories: ["Projet de programmation", "Cours"] --- ### Dépendances et utilisation des interfaces spécification d'un composant -> description abstraite et rigoureuse de ses qualités, de sa manière de se comporter, des services qu'il est censé rendre. Un composant qui satisfait une spécification S est dit réaliser S Utilisation de l'interface au lieu d'une classe ```c++ class C2 { IC1 obj; // ... } interface IC1 { } class C1 implement IC1 { // ... } ``` Ainsi `C2` ne dépends pas de `C1` mais de l'interface `IC1`. En plus de décrire abstraitement les composants à implémenter, elles servent d'intermédiaire dans les dépendances. > Dans une architecture logicielle, il est préférable de faire dépendre les > ocmposants d'interfaces et non les composants implémentés. Principe d'inversion des dépendances. Une dependance implicite -> qui ne se voit pas directement dans le source d;un programme pas ses appels et ses annotations. Elle est toujours forte par rapport au chamgement qui la détermine. Elles peuvent prendre des formes très différentes des dépendances explicite par * la duplication de code * les similarité de services * LEs archilogicielles sont généralement des structures hiérarchisées. ## Granularité de structure, cohésion et couplage niveau de granularité défini par Gq et G2 deux niveau de granilarité alirs couplage : ensemble des dépendances entre les composants de G2