---
title: "Principes SOLID et code propre - José DA COSTA"
description: "Appliquer les principes SOLID (responsabilité unique, ouvert/fermé, substitution de Liskov, ségrégation des interfaces, inversion de dépendances) et les pratiques de code propre pour un logiciel maintenable."
locale: "fr"
canonical: "https://portfolio.josedacosta.info/fr/competences/solid-principles-clean-code"
source: "https://portfolio.josedacosta.info/fr/competences/solid-principles-clean-code.md"
html_source: "https://portfolio.josedacosta.info/fr/competences/solid-principles-clean-code"
author: "José DA COSTA"
type: "skill"
slug: "solid-principles-clean-code"
generated_at: "2026-04-23T15:41:27.343Z"
---

# Principes SOLID et code propre

**Compétence technique** - master-software-engineering (Master) - Expert

## Description de la compétence

Appliquer les principes SOLID (responsabilité unique, ouvert/fermé, substitution de Liskov, ségrégation des interfaces, inversion de dépendances) et les pratiques de code propre pour un logiciel maintenable.

## Confiance personnelle

**Expert** - 5/5

Scale: 1. Fondamental · 2. En développement · 3. Opérationnel · 4. Avancé · 5. Expert

Cela reflète ma confiance personnelle dans l'application de cette compétence en situation professionnelle réelle, fondée sur l'expérience pratique, l'apprentissage continu et les résultats concrets obtenus.

## Details

- Domain: Hard skill (technical)
- Source: master-software-engineering (Master)
- Confidence level: 5/5 (Expert)
- Category: architecture

## Related curriculum topics

- **Droit des contrats informatiques** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Principes relatifs à l'exécution des contrats
- **Animer et encadrer une équipe** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Les principes de la communication
- **Leadership et Management** (Bloc 2 - Pilotage de projet d'ingénierie logiciel): Travailler son propre style - Exercices pour démarrer, Travailler son propre style un arbre pour continuer
- **Développer vos applications web avec TypeScript** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Documenter le code avec JSDoc
- **Développer en Java avec Spring et Hibernate** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Rappels sur le protocole HTTP et ses codes retour
- **Maîtriser Docker et le DevOps** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Infrastructure As Code avec Docker Compose
- **Déploiement d'une application** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Les workflows de versionnement de code, Les principes de la conteneurisation, Signature de code
- **Principes SOLID en JAVA** (Bloc 4 - Conception avancée de l'architecture du logiciel): La problématique de la qualité du code, Les principes Solid, une réponse aux enjeux d'un code maintenable, Impact du Single Responsability Principle sur la gestion de version du code
- **Conception d'application complexe avec UML** (Bloc 4 - Conception avancée de l'architecture du logiciel): Traduction du diagramme de classe en code(classe et héritage), Traduction du diagramme de classe en code(relation et multiplicité), Traduction du diagramme de classe en code (interface et énumération), Traduction du diagramme de séquence en code
- **Sécurité des applications web** (Bloc 4 - Conception avancée de l'architecture du logiciel): Créer votre propre filtre de sécurité basé sur les jetons
- **Plans de tests d'une application** (Bloc 4 - Conception avancée de l'architecture du logiciel): Couverture du code par les tests, Analyse statique de code
- **Anglais des Ressources Humaines** (Bloc 6 - Modules de mise à niveau préparatoire et de renforcement): Comprendre et utiliser les codes professionnels de communication (hiérarchie, distance, formel-informel)

## Broader curriculum context

Other modules from the same training program that provide complementary context:

- **Analyse fonctionnelle d'un projet SI** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Introduction - Définition, Les types d'analyses fonctionnelles, Le cahier des charges fonctionnelles, Les étapes de l'AF, L'analyse du besoin
- **Initier efficacement un projet SI** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Qu'est-ce qu'un projet SI ?, Typologie de projet SI, Projets et produits, Rôle du MOE, Rôle du MOA
- **UX et Wireframing** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Qu'est-ce que l'UX design, La gestion de projet UX design, Les lois de la Gestalt, Recherches utilisateurs, 5W
- **Design Thinking** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): Définition et origines du Design Thinking, La philosophie et l'approche Design Thinking, La méthodologie en 5 étapes, Exemple de cas d'usage, L'immersion - comment mener des interviews utilisateurs
- **Management transversal** (Bloc 1 - Gestion de la relation client en ingénierie du logiciel): La transversalité dans l'entreprise, Management transversal vs hiérarchique, Se positionner dans un rôle transversal, Les 3 leviers du management transversal, Piloter l'activité
- **Exécuter et piloter la réalisation d'un projet Génie logiciel** (Bloc 2 - Pilotage de projet d'ingénierie logiciel): À quoi sert le management de projet ?, Différences entre projets et opérations, Découvrir le contexte du projet, Définir le périmètre du projet, Établir la charte projet
- **Méthodes Agiles avancées / Scrum** (Bloc 2 - Pilotage de projet d'ingénierie logiciel): L'histoire de la gestion de projet, Les différents modèles de gestion de projet, Démarrer avec le pourquoi, Les OKR, Connaître nos utilisateurs finaux
- **Communiquer en mode projet** (Bloc 2 - Pilotage de projet d'ingénierie logiciel): Qu'est-ce qu'un projet ?, Définir la communication, Les différents types de communication, À quelles étapes du projet communiquer, Pourquoi communiquer dans un projet
- **Javascript : initiation et programmation orientée objet** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Le langage du web, Environnement de travail, Les variables, Les opérateurs, Les structures conditionnelles
- **Javascript : programmation événementielle et asynchrone** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): JavaScript et le DOM, L'objet global window, Sélectionner des éléments, Créer et supprimer des éléments, Gérer les règles CSS
- **Fondamentaux du développement Front-end avec Angular** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Il était une fois.. Angular !, Installation, Édition de notre application, Introduction aux composants, Création d'un composant
- **Approfondissement du développement Front-end avec Angular** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Introduction, Mise en place du projet de base, Les routes, Navigation, Passer des paramètres aux routes
- **Maîtriser Java SE** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Présentation et historique du microcosme Java, Présentation et installation du JDK 17, Présentation et installation d'Eclipse 2022-12, Première classe, la classe HelloWorld, Les types primitifs, les objets et les tableaux
- **Git avancé - GitHub et GitLab** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Quelques rappels sur GIT, Ponctionner un commit (cherry-pick), Retrouver des commits disparus (reflog), Ajouter des notes, Importer un dépôt SVN
- **Kubernetes pour orchestrer ses conteneurs** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Introduction, Docker, les bases, Volumes, Dockerfile et Registry, Docker les bases : démonstration, Docker Compose
- **Maîtriser le langage Kotlin** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Présentation, HelloWorld, Les différents typages, Optimiser son IDE, Fonction et fonction expression
- **Développer des applications mobiles Android en Kotlin** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): Présentation, HelloWorld, Maîtriser l'architecture du projet, Créer une interface graphique, Internationaliser son application
- **Construire une API REST avec Spring Boot** (Bloc 3 - Intégration, industrialisation et déploiement du logiciel): C'est quoi une API REST ?, Présentation de spring boot, Modéliser son API avec draw.io, Mettre en place son environnement de travail, Découvrir l'arborescence et démarrer l'application
- **Architecture logicielle** (Bloc 4 - Conception avancée de l'architecture du logiciel): La nécessité de l'architecture logicielle, Panorama des architectures logicielles, Introduction à l'architecture monolithique, Cas d'usage de l'architecture monolithique, Mise en œuvre de l'architecture monolithique en Java
- **Design Pattern en Java** (Bloc 4 - Conception avancée de l'architecture du logiciel): Introduction Design Pattern du GoF, la légende, Description des Design Pattern de création, Description du Design Pattern Singleton, Implémentation de Singleton, Description du Design Pattern Factory Method
- **Algorithmie avancée** (Bloc 4 - Conception avancée de l'architecture du logiciel): Optimiser, par où commencer ?, Rechercher, une tâche complexe ?, Améliorer la recherche avec un tri, Complexité du tri, Amélioration du tri dans le meilleur cas
- **Programmation fonctionnelle en Scala** (Bloc 4 - Conception avancée de l'architecture du logiciel): Introduction à la programmation fonctionnelle, Règles et lois sur les fonctions, Introduction à Scala, Installation d'IntelliJ IDEA / Utilisation de SBT, Un aperçu de Scala
- **Architecture distribuée et Big Data** (Bloc 4 - Conception avancée de l'architecture du logiciel): Introduction au big data, Architecture distribuée, Implications business du big data et de l'architecture distribuée, Système de gestion de bases de données, NoSQL
- **NoSQL** (Bloc 4 - Conception avancée de l'architecture du logiciel): Introduction au stockage, Le modèle relationnel, Les bases du relationnel, OLAP vs OLTP, Agrégations, transactions et optimiseur
- **Structure des données** (Bloc 4 - Conception avancée de l'architecture du logiciel): La bonne structure, Que contient un graphe ?, Graphe orienté et graphe non orienté, Graphe pondéré, Structure de données graphe
- **Introduction au Machine Learning** (Bloc 4 - Conception avancée de l'architecture du logiciel): Le Machine Learning en pleine expansion, Découvrir les concepts du machine learning, Appréhender l'apprentissage supervisé, Visualiser le cycle de vie d'un projet de Machine Learning, Mettre en place son environnement de travail
- **Anglais commercial** (Bloc 5 - Préparation à votre niveau d'anglais): Dépasser les fausses croyances courantes dans l'apprentissage de l'anglais, Comment gérer les interactions professionnelles de base, Comment utiliser le vocabulaire commun à l'anglais et au français dans les interactions professionnelles, Identifier et éviter les pièges les plus courants dans la communication professionnelle en anglais, Comment créer le cadre pour augmenter votre aisance dans les situations professionnelles
- **Anglais Commercial Niveau Avancé** (Bloc 5 - Préparation à votre niveau d'anglais): Vocabulary Expansion for Professional Contexts, Speaking Skills for Business Meetings and Présentations, Writing Skills for Business Emails and Reports, Business Negotiations, Professional Présentations and Public Speaking
- **Anglais Commercial Niveau Intermédiaire** (Bloc 5 - Préparation à votre niveau d'anglais): Professional English Communication in Sales, Professional English Communication in Sales, Communication via Phone and Email, Managing Misunderstandings and Expressing Disagreement in English Conversations, Differences between French and Anglo-Saxon Cultures
- **Anglais : préparation au TOEIC** (Bloc 5 - Préparation à votre niveau d'anglais): Introduction au TOEIC®, Les types de TOEIC®, Focus sur le TOEIC® : listening and reading, Le nouveau TOEIC®, Comment se préparer

## Autres compétences techniques du même diplôme

- [Patterns d'architecture logicielle](https://portfolio.josedacosta.info/fr/competences/software-architecture-patterns.md) - Concevoir des systèmes logiciels évolutifs en utilisant des patterns architecturaux tels que l'architecture en couches, l'architecture hexagonale, les
- [Design Patterns (Gang of Four)](https://portfolio.josedacosta.info/fr/competences/design-patterns-gof.md) - Implémenter les design patterns du Gang of Four (créationnels, structurels, comportementaux) pour résoudre des problèmes de conception récurrents et c
- [Stratégie de tests et qualité logicielle](https://portfolio.josedacosta.info/fr/competences/testing-strategy-quality.md) - Définir et exécuter des stratégies de tests complètes incluant les tests unitaires, les tests d'intégration, les tests de bout en bout, les pratiques
- [Sécurité des applications web (OWASP)](https://portfolio.josedacosta.info/fr/competences/web-application-security-owasp.md) - Sécuriser les applications web en appliquant les recommandations OWASP Top 10, en implémentant l'authentification/autorisation, en prévenant les attaq
- [Programmation JavaScript (POO, événementiel, asynchrone)](https://portfolio.josedacosta.info/fr/competences/javascript-programming.md) - Maîtriser les paradigmes de programmation JavaScript incluant la programmation orientée objet, l'architecture événementielle, les patterns asynchrones
- [Développement TypeScript](https://portfolio.josedacosta.info/fr/competences/typescript-development.md) - Développer des applications type-safe avec TypeScript en exploitant les systèmes de types avancés, les génériques, les décorateurs, les interfaces et
- [Programmation Java SE](https://portfolio.josedacosta.info/fr/competences/java-se-programming.md) - Programmer des applications robustes en Java SE en maîtrisant les concepts fondamentaux tels que les collections, les génériques, les streams, le mult
- [Java Spring et Hibernate](https://portfolio.josedacosta.info/fr/competences/java-spring-hibernate.md) - Développer des applications d'entreprise avec le framework Spring (Boot, MVC, Security, Data) et Hibernate ORM pour la persistance des données, la ges
- [Conception et implémentation d'API REST](https://portfolio.josedacosta.info/fr/competences/rest-api-design.md) - Concevoir et implémenter des API RESTful selon les bonnes pratiques incluant la modélisation des ressources, les méthodes HTTP, les codes de statut, l
- [Docker et pratiques DevOps](https://portfolio.josedacosta.info/fr/competences/devops-cicd.md) - Conteneuriser les applications avec Docker, créer des images optimisées, gérer des environnements multi-conteneurs avec Docker Compose et intégrer les

## Acquired during: Master Expert en Ingénierie du Logiciel

Master Expert en Ingénierie du Logiciel à l'ESIEA (2023-2026). Diplôme de niveau RNCP 7, spécialisation en génie logiciel et architecture.

[See full journey entry](https://portfolio.josedacosta.info/fr/parcours/master-software-engineering.md)

Full interactive page with navigation: https://portfolio.josedacosta.info/fr/competences/solid-principles-clean-code
