📘

Conception

Objectifs —> qualitĂ©, Ă©volutivitĂ©, maintenance, rĂ©utilisabilitĂ© des composants

Diagramme d’activitĂ© d’un projet informatique

Diagramme d’activitĂ© d’une itĂ©ration

Architecture logicielle / Conception de haut niveau


Architecture client-serveur

client —requĂȘte—> serveur

<—rĂ©ponse—

  • ex : client lourd — serveur de base de donnĂ©es

= applications monolithiques (obsolĂšte)

Architecture N-Tiers

  • ex : architecture 3-tiers avec des clients lĂ©gers, un serveur d’application middle tiers, un serveur de base de donnĂ©es

= applications monolithiques (obsolĂšte)

SOA (Service-Oriented Architecture)

Architecture orientée services

= un modÚle de conception qui rend des composants logiciels réutilisables, grùce à des interfaces de services qui utilisent un langage commun pour communiquer via un réseau.

Des applications Ă©crites dans des langages diffĂ©rents peuvent appelĂ©s les mĂȘmes interfaces de services (web-services), qui comprennent tous les requĂȘtes HTTP.

📌
Pour aller plus loin :

https://www.redhat.com/fr/topics/cloud-native-apps/what-is-service-oriented-architecture

Notions de service (un seul objectif, mutualisation), d’interopĂ©rabilitĂ© (composants agnostiques, couplage faible), d’implĂ©mentations (bus de services, web services)

⚠
Un service renvoie directement le résultat du traitement métier (pas une page web).
  • ex : diffĂ©rents types de client communiquent avec diffĂ©rents services qui eux passent par un “bus” pour communiquer avec diffĂ©rentes infrastructures (bases de donnĂ©es et applications)

â„č
bus applicatifs (java : kafka) = comme des boites aux lettres (systĂšme de messages) sur la base du design pattern Observable

La SOA est Ă  l’échelle de l’entreprise.

Les micro-services se dĂ©veloppent de plus en plus car ils offrent plus de tolĂ©rance et de flexibilitĂ© : stratĂ©gie de mise en Ɠuvre au sein des Ă©quipes de dĂ©veloppement des applications. Ils peuvent communiquer entre eux sans Ă©tat, Ă  l'aide d'API indĂ©pendantes de tout langage.

Principes de conceptions / Design patterns


Principes SOLID

â„č
Principes de base pour la POO, donc appliqués notamment aux classes.
  • Single Responsability Principle ou principe de responsabilitĂ© unique

    “Un bout de code fait une et une seule chose.”

  • Open / Closed Principle ou principe d’ouverture/fermeture

    “Une entitĂ© logicielle doit ĂȘtre ouverte aux extensions, fermĂ©e aux modifications.”

    On ne touche pas Ă  ce qui fonctionne : on corrige les erreurs, on peut amĂ©liorer l’entitĂ© (hĂ©ritage, surcharge, design patterns de structure) mais on crĂ©e de nouvelles entitĂ©s pour ajouter des fonctionnalitĂ©s.

  • Liskov Substitution Principle ou principe de substitution de Liskov

    “Une sous-classe doit pouvoir se substituer à sa super-classe.”

    Une mĂ©thode doit ĂȘtre applicable Ă  toutes les sous-classes.

  • Interface Segregation Principle ou principe de sĂ©grĂ©gation des interfaces

    “Une interface ne comporte que des mĂ©thodes en rapport avec elle-mĂȘme et utiles aux classes qui l’implĂ©mentent.”

    Une interface est un contrat qui permet d’obliger un objet Ă  utiliser certaines fonctionnalitĂ©s.

  • Dependency Inversion Principle ou principe d’inversion des dĂ©pendances

    “Les composants de haut niveau ne dĂ©pendent pas des modules de bas niveau mais d’abstractions.”

    Les classes abstraites et interfaces permettent d’avoir des couplages faibles entre les composants.

📌
Pour aller plus loin : https://essential-dev-skills.com/poo/principe-solid

Patrons de conception (Design Pattern)

Solutions classiques à des problÚmes récurrents de la conception de logiciels. Chaque patron est une sorte de plan ou de schéma personnalisables.

Patrons de crĂ©ation ~ mĂ©canismes de crĂ©ation d’objets qui augmentent la flexibilitĂ© et la rĂ©utilisation du code

Patrons structurels ~ assemblage des objets et des classes en de plus grandes structures tout en gardant celles-ci flexibles et efficaces

Patrons comportementaux ~ algorithmes et gestion de la répartition des responsabilités entre les objets

Patterns et anti-patterns :

Si les patterns sont basĂ©s sur les bonnes pratiques de la POO, les anti-patterns sont des erreurs courantes de conception de logiciels (“fausses bonnes idĂ©es”).

  • ex : copier-coller, code spaghetti, blob,

📌
Pour aller plus loin : https://refactoring.guru/fr/design-patterns https://fr.wikipedia.org/wiki/Antipattern

Conception détaillée : passer des exigences au code


(ObsolĂšte)

On s’est rendu compte que, pour passer d’un diagramme Ă  du code, le niveau de dĂ©tail dans les modĂšles Ă©tait tel qu’ils en devenaient illisibles : contraire Ă  l’objectif d’avoir des modĂšles faciles Ă  comprendre.