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

Architecture logicielle / Conception de haut niveau
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.
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)
- 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)
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 de conceptions / Design patterns
Principes SOLID
- 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.
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,âŠ
Conception détaillée : passer des exigences au code
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.
