cours/content/projet_programmation/7_architecture_logicielle/index.md

57 lines
1.5 KiB
Markdown

---
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
* <cf slide>
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