Histoire
Petite Histoire de la programmation et des bonnes pratiques.
On peut distinguer trois grandes phases dans l’histoire de la programmation :
- La Naissance du code en tant que discipline
- Le “Golden Age” qui nous donne les bases indiscutables
- Les dérives de l’agilité et de l’architecture
La Naissance du code en tant que discipline
Le fondateur est Alan Turing qui s’illustra durant la seconde guerre mondiale dans la cryptologie.
Naissance du code
- Il conçoit l’informatique théorique avec la machine de Turing
- Il construit l’Automatic Computing Engin (ACE)

Paradigmes de programmation
Paradigme | Année de naissance | Inventeur | Avantage | Inconvenient |
---|---|---|---|---|
Programmation Procédurale | 1950 | John Backus (Fortran) | Ordre et structure - Contrôle fin des opérations - Efficace pour les tâches simples | Peut devenir complexe - Manque de modularité |
Programmation Fonctionnelle | 1950 | Alonzo Church John McCarthy (LISP) | Immuabilité et fonctions pures - Raisonnement facile sur le code - Hautement modulaire | Peut être difficile à comprendre - Pas toujours optimise pour la performance |
Programmation Orientée Objet | 1960 | Ole-John Gale Kristen Nygaard (Simula) Alan Kay (Smalltalk) | Modélise le monde naturellement - Réutilisable et extensible (encapsulation des données | Peut être excessivement complexe - Pas toujours nécessaire pour tous les projets |
Conférence de Garmisch (1968)
Le terme « ingénierie logicielle
» a été inventé lors d’une conférence de l’OTAN tenue du 7 au 11 octobre 1968
à Garmisch, en AllemagneLien. La conférence a été organisée en réponse à l’impression que la programmation
informatique n’avait pas suivi les progrès du matériel informatique.
L’objectif était d’identifier les bonnes pratiques dans la cadre de développement de projet et de logiciels.
Le “Golden Age” qui nous donne les bases indiscutables
En 1990, le principe SOLID

En 1996 le gang of Four(GoF) et les design pattern :
4 ingénieurs ont catégorisé tous les problèmes récurrents quand on produit du logiciel en programmation objet.
Ces pattern sont un fondement de la programmation moderne.

En 1999, l’extreme programming
L’idée, c’est de ne faire que des bonnes pratiques et d’éviter la dette technique.
- Pousser le test driven development TDD
- Refactoriser en permanence son code
Le flou de l’agilité et de l’architecture
En 2001
Conférence de Snowbird dans l’Utah, crée les bases du développement agile, signé par 17 développeurs.
En 2003
Le domain driven design : les gens utilisent le logiciel car il procure de la valeur. Il faut se concentrer sur ce domaine de valeur Les utilisateurs n’ont aucune idée, ni aucun intérêt, à connaitre la technique utilisée.
Puis la couche en oignon . La règle d’or de l’architecture est que :
Rien dans un cercle intérieur ne peut savoir quoi que ce soit sur quelque chose dans un cercle extérieur. Cela inclut les fonctions, les classes, les variables ou toute autre entité logicielle nommée.
Synthèse
- Pas de règles business(métier) dans la vue
- Tous les éléments qui appartiennent à une couche franchisent les autres couches dns une seule direction
- Les dépendances pointes toutes vers une couche au niveau (les règles business(métier) ne dependent jamais d’une version technique, mysql ou bootstrap par exemple)
- L’architecture ne depend pas de la technique
- Il faut choisir l’architecture adaptée à son projet