Skip to content

Commit

Permalink
Lien vers plantuml.com pour diagrammes UML
Browse files Browse the repository at this point in the history
  • Loading branch information
fuhrmanator committed Mar 13, 2024
1 parent 1ca330f commit f5abe30
Show file tree
Hide file tree
Showing 16 changed files with 51 additions and 51 deletions.
8 changes: 4 additions & 4 deletions AnalyseConception.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ La **conception** sous-entend l'élaboration d'une solution conceptuelle répond

<!-- Pour plus de détails, vous pouvez consulter le chapitre 1\ {{< fa solid book >}}. -->

```{.plantuml #fig-mddDes caption="Diagramme de *classes conceptuelles* décrivant (modélisant) le *problème* d'un jeu de dés (figure 1.3\ {{< fa solid book >}}) avec des statistiques. Ceci est élaboré lors d'une activité d'analyse."}
```{#fig-mddDes .plantuml genurl="true" caption="Diagramme de *classes conceptuelles* décrivant (modélisant) le *problème* d'un jeu de dés (figure 1.3\ {{< fa solid book >}}) avec des statistiques. Ceci est élaboré lors d'une activité d'analyse. "}
@startuml
!include ecriture.pumlinclude
'left to right direction
Expand All @@ -43,7 +43,7 @@ Joueur "*" -l- "1" JeuDeDés : joue >
@enduml
```

```{.plantuml #fig-ddcDes caption="Diagramme de *classes logicielles* décrivant une *solution* au problème du jeu de dés. La conception s'inspire du modèle du problème, afin de faciliter sa compréhension."}
```{.plantuml genurl="true" #fig-ddcDes caption="Diagramme de *classes logicielles* décrivant une *solution* au problème du jeu de dés. La conception s'inspire du modèle du problème, afin de faciliter sa compréhension."}
@startuml
!include ecriture.pumlinclude
'left to right direction
Expand Down Expand Up @@ -160,7 +160,7 @@ Cette forme de complexité comprend des aspects d'une solution qui ne sont pas s
Dans un environnement d'exécution, il y a des dimensions comme le ramasse-miettes (*garbage collection*), l'ordonnancement des fils d'exécution (*threads*) sur un serveur, l'utilisation de *conteneurs* (à la Docker), etc. qui peuvent affecter la qualité d'un logiciel.
Les ingénieures et ingénieurs doivent gérer ces formes de complexité, mais il n'y a pas beaucoup de stratégies évidentes face aux technologies qui évoluent à grande vitesse.

```{.plantuml #fig-complexitySources caption="Sources de complexité (inhérente, circonstancielle et environnementale) par rapport au processus de développement (analyse, conception et implémentation)."}
```{.plantuml genurl="true" #fig-complexitySources caption="Sources de complexité (inhérente, circonstancielle et environnementale) par rapport au processus de développement (analyse, conception et implémentation)."}
@startuml
scale 0.8
!include normal.pumlinclude
Expand Down Expand Up @@ -223,7 +223,7 @@ Avec la rétroaction du client et l'adaptation, le système à développer conve
Cette instabilité peut être particulièrement prononcée dans un contexte d'entreprise en démarrage.
- Dans une itération, la modélisation (par exemple avec l'UML) se fait au début et devrait prendre beaucoup moins de temps (quelques heures) que la programmation, qui n'est pas triviale (voir la @fig-AnalyseConceptionDansLesIterations). Selon le contexte du projet (voir le [Spectre de la conception](#sec-SpectreDeLaConception)), on peut décider de ne pas faire de modélisation. Cependant, en fonction de la complexité du projet à réaliser, cela peut amener des risques, ce que l'on appelle la [dette technique](#sec-DetteTechnique).

```{.plantuml #fig-Modèle_processus_itératif caption="Un processus itératif permet de gérer les complexités, car la planification d'une itération peut viser une partie du système et le système évolue à mesure que les itérations avancent."}
```{.plantuml genurl="true" #fig-Modèle_processus_itératif caption="Un processus itératif permet de gérer les complexités, car la planification d'une itération peut viser une partie du système et le système évolue à mesure que les itérations avancent."}
@startuml Iteration
!include normal.pumlinclude
skinparam defaultTextAlignment center
Expand Down
4 changes: 2 additions & 2 deletions Annexe_Cas_utilisation_Ouvrir_caisse.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ En effet, ce cas d'utilisation n'est pas présenté en détail par @craig_uml_20
Alors, nous proposons pour cet exercice des modifications au modèle du domaine présenté par Larman afin de modéliser cette fonctionnalité additionnelle du logiciel.
:::

```{.plantuml #fig-DCU_ouvrir_la_caisse caption='Diagramme de cas d\'utilisation pour le système NextGen.'}
```{.plantuml genurl="true" #fig-DCU_ouvrir_la_caisse caption='Diagramme de cas d\'utilisation pour le système NextGen.'}
@startuml
!include normal.pumlinclude
scale 1.0
Expand Down Expand Up @@ -121,7 +121,7 @@ Les associations en rouge sont celles qui sont affectées par la dynamique de ce

La @fig-DSS_ouvrir_la_caisse est le diagramme de séquence système (DSS) pour le scénario _Ouvrir la caisse_.

```{.plantuml #fig-DSS_ouvrir_la_caisse caption='Diagramme de séquence système (DSS) pour le scénario _Ouvrir la caisse_.'}
```{.plantuml genurl="true" #fig-DSS_ouvrir_la_caisse caption='Diagramme de séquence système (DSS) pour le scénario _Ouvrir la caisse_.'}
@startuml
!include normal.pumlinclude
skinparam SequenceMessageAlign center
Expand Down
4 changes: 2 additions & 2 deletions Annexe_Cas_utilisation_Traiter_vente.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ Voici des artefacts en PlantUML proposés pour le cas d'utilisation *Traiter une

## DSS {#sec-DSS_traiter_vente}

```{.plantuml caption="DSS pour le scénario _Traiter une vente_ de @craig_uml_2005."}
```{.plantuml genurl="true" caption="DSS pour le scénario _Traiter une vente_ de @craig_uml_2005."}
@startuml
!include normal.pumlinclude
skinparam SequenceMessageAlign center
Expand All @@ -25,7 +25,7 @@ c<<--s : remise de la monnaie, du reçu

## MDD partiel

```{.plantuml caption="MDD pour le scénario _Traiter une vente_ de @craig_uml_2005."}
```{.plantuml genurl="true" caption="MDD pour le scénario _Traiter une vente_ de @craig_uml_2005."}
@startuml
!include normal.pumlinclude
hide methods
Expand Down
2 changes: 1 addition & 1 deletion CasUtilisation.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ Sur la @fig-uc, le cas d'utilisation "..." signifie qu'il y a d'autres cas d'uti
Le cas d'utilisation *Démarrer* n'est pas normalement indiqué dans un diagramme.
C'est une astuce pédagogique proposée par @craig_uml_2005, car il faudra concevoir et coder ce scénario, bien qu'il ne soit pas une fonctionnalité connue par l'utilisateur.

```{.plantuml #fig-uc caption="Diagramme de cas d'utilisation." }
```{.plantuml genurl="true" #fig-uc caption="Diagramme de cas d'utilisation." }
@startuml
!include ecriture.pumlinclude
skinparam usecase<<blah>> {
Expand Down
2 changes: 1 addition & 1 deletion ConceptionPackages.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Les points importants sont les suivants (les détails se trouvent dans le livre)

La @fig-DiagrammePackage est un exemple d'un diagramme de packages.

```{.plantuml #fig-DiagrammePackage caption="Diagramme de packages (tiré de la figure F12.6\ {{< fa solid book >}})." }
```{.plantuml genurl="true" #fig-DiagrammePackage caption="Diagramme de packages (tiré de la figure F12.6\ {{< fa solid book >}})." }
@startuml
!include ecriture.pumlinclude
scale 0.8
Expand Down
12 changes: 6 additions & 6 deletions DSS.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ La requête HTTP contient l'URI vers la routine à accéder, la [méthode de req
Les interfaces humain-machine (IHM), dont les interfaces graphiques, ne sont pas une interface API puisqu'elles ne peuvent être utilisées de manière logicielle.
Elles permettent de faire le pont entre les utilisateurs et utilisatrices (qui communiquent par les gestes, par exemple un clic avec une souris) et l'interface API du logiciel afin d'en faciliter l'utilisation.

```{.plantuml #fig-apiclasse caption="Les méthodes publiques d'une classe sont un exemple d'interface API." }
```{.plantuml genurl="true" #fig-apiclasse caption="Les méthodes publiques d'une classe sont un exemple d'interface API." }
@startuml
!include normal.pumlinclude
Expand Down Expand Up @@ -96,7 +96,7 @@ Il y a d'autres bénéfices de cette séparation, mais elle impose certaines rè

::: {#fig-separation_couches layout-ncol=2}

```{.plantuml caption="Sans séparation, les éléments de l'IHM sont fortement couplés aux éléments de la logique de l'application. Ce genre de solution peut être créé rapidement. Cependant, si le code de l'IHM doit changer pour accommoder une nouvelle technologie, ces changements peuvent affecter le reste du système." #fig-sans_separation}
```{.plantuml genurl="true" caption="Sans séparation, les éléments de l'IHM sont fortement couplés aux éléments de la logique de l'application. Ce genre de solution peut être créé rapidement. Cependant, si le code de l'IHM doit changer pour accommoder une nouvelle technologie, ces changements peuvent affecter le reste du système." #fig-sans_separation}
@startuml
!include normal.pumlinclude
hide empty members
Expand Down Expand Up @@ -139,7 +139,7 @@ P3 -d- D6
@enduml
```

```{.plantuml caption="La définition et la séparation des couches présentation et domaine permettent de minimiser l'impact des changements dus aux évolutions dans les technologies liées à l'IHM et d'avoir une conception plus cohésive. Cependant, cette séparation requiert un respect de l'architecture par les développeurs et développeuses." #fig-avec_separation}
```{.plantuml genurl="true" caption="La définition et la séparation des couches présentation et domaine permettent de minimiser l'impact des changements dus aux évolutions dans les technologies liées à l'IHM et d'avoir une conception plus cohésive. Cependant, cette séparation requiert un respect de l'architecture par les développeurs et développeuses." #fig-avec_separation}
@startuml
!include normal.pumlinclude
hide empty members
Expand Down Expand Up @@ -233,7 +233,7 @@ La @fig-dssattaquerunpays est un exemple de DSS pour le cas d'utilisation *Attaq
Dans cet exemple, il y a quatre opérations système (avec les arguments de type primitif, sauf la dernière qui n'a aucun argument) et un message de retour.
Vous pouvez noter tous les détails (titre, arguments, types).

```{.plantuml #fig-dssattaquerunpays caption="Diagramme de séquence système pour le scénario *Attaquer un pays*." }
```{.plantuml genurl="true" #fig-dssattaquerunpays caption="Diagramme de séquence système pour le scénario *Attaquer un pays*." }
@startuml
!include ecriture.pumlinclude
scale 1
Expand All @@ -259,7 +259,7 @@ Le "Système" est modélisé comme une boîte noire.
Par exemple, sur la @fig-dssabstraction, il y a l'acteur, le Système et une opération système.
On ne rentre pas dans les détails, bien qu'ils existent et soient importants.

```{.plantuml #fig-dssabstraction caption="Une opération système dans un DSS. C'est une abstraction." }
```{.plantuml genurl="true" #fig-dssabstraction caption="Une opération système dans un DSS. C'est une abstraction." }
@startuml
!include ecriture.pumlinclude
scale 1.3
Expand All @@ -279,7 +279,7 @@ Par exemple, la @fig-dssdetails rentre dans les détails de ce qui se passe rée
- Un routeur transforme l'appel REST en une opération système envoyée à un contrôleur GRASP. Notez que c'est un **objet du domaine qui reçoit l'opération système** -- c'est l'essence du principe GRASP Contrôleur;
- Le contrôleur GRASP dirige la suite, selon la solution proposée dans la réalisation de cas d'utilisation (RDCU).

```{.plantuml #fig-dssdetails caption="Une opération système est envoyée par la couche présentation et elle est reçue dans la couche domaine par son contrôleur GRASP. Ceci est un exemple avec un navigateur Web, mais d'autres possibilités existent pour la couche présentation."}
```{.plantuml genurl="true" #fig-dssdetails caption="Une opération système est envoyée par la couche présentation et elle est reçue dans la couche domaine par son contrôleur GRASP. Ceci est un exemple avec un navigateur Web, mais d'autres possibilités existent pour la couche présentation."}
@startuml
!include normal.pumlinclude
scale 1
Expand Down
4 changes: 2 additions & 2 deletions DiagrammesActivites.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Voici les éléments importants d'un diagramme d'activités:

La @fig-ActivityDiagramExampleGitCommit présente un exemple de diagramme d'activité décrivant de manière générale une partie du processus de travail d'une personne utilisant `git` pour la gestion de code source.

```{.plantuml #fig-ActivityDiagramExampleGitCommit caption="Diagramme d'activité pour un processus simple avec Git." }
```{.plantuml genurl="true" #fig-ActivityDiagramExampleGitCommit caption="Diagramme d'activité pour un processus simple avec Git." }
@startuml
!include normal.pumlinclude
skinparam DefaultTextAlignment center
Expand Down Expand Up @@ -53,7 +53,7 @@ Il ne s'agit pas de l'UML, mais cette notation est encore utilisée (depuis les
Un exemple de diagramme d'activités dans le cadre d'un cours de programmation utilisant GitHub Classroom est illustré sur la @fig-GitHubClassroomActivities.
Ce diagramme explique comment GitHub Classroom permet à l'étudiant ou étudiante qui accepte un devoir (*assignment* en anglais) sur GitHub Classroom de choisir son identité universitaire (activité en couleur rose), mais seulement si l'enseignant ou enseignante a téléversé la liste de classe (activité en couleur rose) *avant* d'envoyer les invitations à la communauté étudiante.

```{.plantuml #fig-GitHubClassroomActivities caption="Diagramme d'activités pour les activités séquentielles de GitHub Classroom (contexte de l'ÉTS avec Moodle)." }
```{.plantuml genurl="true" #fig-GitHubClassroomActivities caption="Diagramme d'activités pour les activités séquentielles de GitHub Classroom (contexte de l'ÉTS avec Moodle)." }
@startuml
!include normal.pumlinclude
skinparam DefaultTextAlignment center
Expand Down
4 changes: 2 additions & 2 deletions DiagrammesDeploiement.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ Voici les éléments importants:
La @fig-DiagrammeDeploiement est un exemple de diagramme de déploiement (laboratoire).
La @fig-iTunesDiagrammeDeploiement est un exemple de diagramme de déploiement pour le logiciel iTunes d'Apple.

```{.plantuml #fig-DiagrammeDeploiement caption="Diagramme de déploiement du système à développer pour le laboratoire." }
```{.plantuml genurl="true" #fig-DiagrammeDeploiement caption="Diagramme de déploiement du système à développer pour le laboratoire." }
@startuml
!include normal.pumlinclude
skinparam componentStyle uml2
Expand Down Expand Up @@ -75,7 +75,7 @@ NP1 .up. SGB
@enduml
```

```{.plantuml #fig-iTunesDiagrammeDeploiement caption="Diagramme de déploiement pour iTunes d'Apple avec un ordinateur, un iPad et le service Web d'Apple, selon [ce modèle UML](https://www.uml-diagrams.org/apple-itunes-uml-deployment-diagram-example.html) de Kirill Fakhroutdinov (utilisé avec permission)."}
```{.plantuml genurl="true" #fig-iTunesDiagrammeDeploiement caption="Diagramme de déploiement pour iTunes d'Apple avec un ordinateur, un iPad et le service Web d'Apple, selon [ce modèle UML](https://www.uml-diagrams.org/apple-itunes-uml-deployment-diagram-example.html) de Kirill Fakhroutdinov (utilisé avec permission)."}
@startuml
scale 0.7
left to right direction
Expand Down
6 changes: 3 additions & 3 deletions GRASP-GoF.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ L'objet Vente a une visibilité de paramètre.

Dans le contexte du projet NextGen POS, Larman propose l'utilisation de ce pattern pour plusieurs dimensions où des services externes ont plusieurs possibilités (l'inventaire, la comptabilité, etc.).

```{.plantuml #fig-AdapterGoF caption="Le diagramme de classes du pattern Adaptateur [@GoF1994]."}
```{.plantuml genurl="true" #fig-AdapterGoF caption="Le diagramme de classes du pattern Adaptateur [@GoF1994]."}
@startuml
!include normal.pumlinclude
hide empty members
Expand All @@ -60,7 +60,7 @@ Client -r-> Target
```


```{.plantuml #fig-Fig23_1 caption="Le pattern Adaptateur appliqué pour les services externes de calculateurs de taxes. Chaque service externe a une interface API distincte et immuable. Les adaptateurs concrets permettent de normaliser l'accès à ces interfaces API à travers une interface `IAdaptateurCalculTaxes`."}
```{.plantuml genurl="true" #fig-Fig23_1 caption="Le pattern Adaptateur appliqué pour les services externes de calculateurs de taxes. Chaque service externe a une interface API distincte et immuable. Les adaptateurs concrets permettent de normaliser l'accès à ces interfaces API à travers une interface `IAdaptateurCalculTaxes`."}
@startuml
!include normal.pumlinclude

Expand Down Expand Up @@ -112,7 +112,7 @@ Lorsqu'une classe prend plus de responsabilités, ça porte atteinte à sa cohé
Le pattern Adaptateur comprend les principes GRASP Faible Couplage, Forte Cohésion, Polymorphisme, Indirection, Fabrication Pure et Protection des variations.
La @fig-Fig23_3 démontre la relation entre ces principes dans le cas d'Adaptateur.

```{.plantuml #fig-Fig23_3 caption="Adaptateur et principes GRASP (figure F23.3/A26.3\ {{< fa solid book >}})."}
```{.plantuml genurl="true" #fig-Fig23_3 caption="Adaptateur et principes GRASP (figure F23.3/A26.3\ {{< fa solid book >}})."}
@startuml Adaptateur_GRASP
!include normal.pumlinclude
hide empty members
Expand Down
10 changes: 5 additions & 5 deletions GRASP.qmd
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ Une fois que vous aurez l'habitude d'utiliser les GRASP, vous serez encore rapid
Neal Ford [-@Ford2009] a proposé la notion d'effort pour la conception qu'il a nommée le "Spectre de la conception".
La @fig-SpectreConception illustre le principe.

``` {#fig-SpectreConception .plantuml caption="Spectre de la conception [@Ford2009]."}
``` {#fig-SpectreConception .plantuml genurl="true" caption="Spectre de la conception [@Ford2009]."}
@startuml
!include ecriture.pumlinclude
scale 1.2
Expand Down Expand Up @@ -152,7 +152,7 @@ On peut voir les principes GRASP comme des généralisations (principes de base)

Soit le diagramme de classe sur la @fig-GRASP_polymorphisme_ex modélisant l'exemple de @Fowl18a à [*Replace Conditional with Polymorphism*](https://refactoring.com/catalog/replaceConditionalWithPolymorphism.html).

```{.plantuml #fig-GRASP_polymorphisme_ex caption='Classe "Bird" à laquelle on peut appliquer le principe GRASP Polymorphisme.'}
```{.plantuml genurl="true" #fig-GRASP_polymorphisme_ex caption='Classe "Bird" à laquelle on peut appliquer le principe GRASP Polymorphisme.'}
@startuml
!include normal.pumlinclude
class Bird {
Expand Down Expand Up @@ -194,7 +194,7 @@ L'utilisation d'une classe abstraite `Bird` permet de garder un faible couplage
Par le principe de polymorphisme, les oiseaux concrets sont aussi considérés comme des `Bird`.
Puisque les oiseaux ne partagent pas de propriétés ou d'implémentation, il aurait aussi été possible d'utiliser une interface pour la classe `Bird`.

```{.plantuml #fig-GRASP_polymorphisme_sol caption='Classes "Bird" auxquelles on a appliqué le principe GRASP Polymorphisme.'}
```{.plantuml genurl="true" #fig-GRASP_polymorphisme_sol caption='Classes "Bird" auxquelles on a appliqué le principe GRASP Polymorphisme.'}
@startuml
!include normal.pumlinclude
hide empty members
Expand Down Expand Up @@ -273,7 +273,7 @@ Cet exercice est inspiré d'un exemple donné dans le livre *Head First Design P
- Quelles classes sur la @fig-GRASP_cohesion_ex1 ont de multiples responsabilités?
- Déterminez si les classes sur la @fig-GRASP_cohesion_ex2 ont une cohésion forte ou faible.
```{.plantuml #fig-GRASP_cohesion_ex1 caption="Quelles classes ont de multiples responsabilités?"}
```{.plantuml genurl="true" #fig-GRASP_cohesion_ex1 caption="Quelles classes ont de multiples responsabilités?"}
@startuml
!include normal.pumlinclude
class Jeu {
Expand Down Expand Up @@ -325,7 +325,7 @@ class Iterator {
@enduml
```
```{.plantuml #fig-GRASP_cohesion_ex2 caption="Quelles classes ont une cohésion forte? Une cohésion faible?"}
```{.plantuml genurl="true" #fig-GRASP_cohesion_ex2 caption="Quelles classes ont une cohésion forte? Une cohésion faible?"}
@startuml
!include normal.pumlinclude
class Jeu {
Expand Down
Loading

0 comments on commit f5abe30

Please sign in to comment.