---
type: archive
area: archive
status: archived
date: 2026-05-03
created: 2026-05-03
updated: 1980-01-01
tags:
  - archive
---
L’architecture d’un logiciel décrit la manière d’organiser les différents
composants d’une application ainsi que leurs interactions.

**SOLID** est un acronyme qui regroupe cinq principes de conception de
logiciels qui visent à améliorer la qualité et la maintenabilité du
code

**S Principe de responsabilité unique** :
- Chaque classe doit avoir une seul responsabilité.
- unique 

**O Ouvert/Fermé**
- Les classes doivent etre ouvert à la extension.
- Fermeé a la modification.

**L Principe de Substitution de Liskov (Liskov Substitution Principle - LSP)**
- Les objets de la classe de base peuvent être remplacés par les objets des sous-classes sans altérer la cohérence du programme.

**I Principe de Ségrégation de l'Interface (Interface Segregation Principle - ISP)**
- une classe cliente ne doit pas être forcée de dépendre (implémenter) de méthodes d’interface qu'elle n'utilise pas
- Diviser une interface volumineuse en plusieur interface
**D Principe d'Inversion de Dépendance (Dependency Inversion Principle - DIP) :**
- Les composants de haut niveau ne doivent pas dépendre des composants de bas niveau, les deux devraient dépendre d’abstractions.
- Au lieu de dépendre directement de classes spécifiques, les composants devraient dépendre d'interfaces ou d'abstractions.
### Structure de dossier Application JEE:

- **src/main/java:**  
  - Code source de l'application Java.

- **src/main/resources:**  
  - Fichiers de configuration, fichiers de propriétés, fichiers XML, etc.

- **src/test:**  
  - Code source des tests unitaires.

- **pom.xml:**  
  - Fichier de configuration Maven.

- **src/main/webapp:**  
  - Ressources web (HTML, JSP, images, feuilles de style, scripts).

  - **WEB-INF:**  
    - Fichiers de configuration spécifiques à l'application web.

- **target:**  
  - Fichiers générés lors de la compilation et de l'emballage du projet.

- **lib:**  
  - Bibliothèques externes (JAR) nécessaires au projet mais non fournies par Maven.

- **src/main/webapp/WEB-INF/web.xml:**  
  - Configuration de l'application web.

- **target/classes:**  
  - Fichiers compilés (classes).

- **target/generated-sources:**  
  - Sources générées automatiquement.

- **target/test-classes:**  
  - Fichiers compilés pour les tests unitaires.

- src
  - main
    - java
    - resources
    - webapp
      - WEB-INF
        - web.xml
  - test
- target
  - classes
  - generated-sources
  - test-classes
- lib
pom.xml


