-
Notifications
You must be signed in to change notification settings - Fork 2
/
index.qmd
132 lines (95 loc) · 11.1 KB
/
index.qmd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# {.unnumbered .unlisted}
<!-- remonter sur la page (sur le nom blanc du chapitre) -->
\vspace{-5.2cm}
{{< include _deuxieme_page.qmd >}}
\clearpage
## Préface {.unnumbered}
Ce manuel a commencé comme notes de cours pour le cours _Analyse et conception de logiciels (LOG210)_ dans les programmes de baccalauréat en génie logiciel (LOG) et en génie des technologies de l'information (GTI) de l'École de technologie supérieure (ÉTS) à Montréal, au Québec.
À l'origine, la communauté étudiante dans ces programmes provenait des collèges d'enseignement général et professionnel (cégeps), ayant donc déjà reçu un diplôme d'études collégiales (DEC) dans un programme technique.
Ainsi, ces personnes ont déjà appris à programmer dans un langage orienté objet.
En effet, cette démarche correspond à l'approche "computer science first" (CS-first) pour enseigner le génie logiciel [@SE_Curriculum_ACM_2014].
LOG210 a été mis sur pied au début des années 2000, et le livre obligatoire a toujours été le fameux _Applying UML and Patterns_ de Craig Larman, qui en était à sa 2^e^ édition [-@larman_applying_2001] à l'époque.
En 2005, la 3^e^ édition a été publiée avec plusieurs traductions, notamment celle en français [-@craig_uml_2005].
Pendant plus de dix ans, le livre de Larman a été fort apprécié par la communauté étudiante.
Mais pour le corps enseignant donnant le cours, le manque d'exercices dans le livre a toujours été un gros inconvénient.
En plus, certains sujets (comme les cas d'utilisation, les préconditions des contrats d'opération et les diagrammes de communication) dans le livre de Larman sont moins pertinents en industrie aujourd'hui, puis d'autres sujets (comme le développement piloté par les tests, le travail en équipe et les cadriciels Web) sont devenus plus importants.
Une 4^e^ édition n'a jamais été publiée.
Finalement, la traduction française du livre est en rupture de stock depuis 2019.
Le présent manuel essaie de pallier tous ces problèmes, sous forme de ressource éducative libre (REL).
## Pourquoi une ressource éducative libre? {.unnumbered}
Aujourd'hui, les logiciels libres sont très répandus.
Dans le cadre de l'enseignement, nous utilisons les dépôts de code source libre comme GitHub et GitLab, car ces plateformes permettent d'évaluer et de valider des logiciels ainsi que de collaborer dans les communautés de logiciel libre.
Il est donc naturel d'imaginer une forme analogue pour le contenu de ce manuel, soit une **ressource éducative libre (REL)**, qui est également développée à travers un dépôt libre (GitHub dans ce cas).
Pour favoriser la réutilisation, nous avons utilisé plusieurs logiciels libres:
- Quarto [-@noauthor_quarto_2023] (le langage source du texte est [Markdown](https://quarto.org/docs/authoring/markdown-basics.html));
- Pandoc [-@noauthor_pandoc_2022] et LaTeX [-@noauthor_latex_2022], et plusieurs filtres de traitement qui font partie des composantes exploitées par Quarto;
- PlantUML [-@noauthor_plantuml_2022] pour les figures sous forme de texte (faciles à actualiser).
Nous soulignons les retombées sur le plan de logiciels libres lors de la rédaction de ce manuel, car il est important de contribuer aux communautés de logiciels libres.
Nous avons fourni une rétroaction à des développeurs et développeuses de plusieurs projets utilisés.
Par exemple, nous avons identifié plusieurs bogues dans les versions préliminaires de Quarto (qui ont été corrigés rapidement, parfois le lendemain même!).
Nous avons même créé de nouveaux projets libres, tels qu'un [filtre Pandoc](https://github.com/fuhrmanator/pandoc-filter-fr-nbsp) pour faciliter la bonne utilisation d'espaces insécables selon les règles de typographie en français.
Autant que possible, les figures du manuel sont créées dans une forme vectorielle (comme SVG) plutôt que matricielle (comme JPEG ou PNG) afin que le texte dans les figures soit "indexable" par les moteurs de recherche et aussi accessible aux personnes non-voyantes.
Finalement, il y a une tendance à faire des REL pour favoriser l'accès à l'information et pour permettre une meilleure inclusivité des personnes apprenantes et enseignantes.
Nous avons donc essayé de suivre les directives du [Guide de l'écriture inclusive de l'ÉTS](https://www.etsmtl.ca/docs/ets/a-propos/documents/guide-ecriture-inclusive-complete) lors de la rédaction de ce manuel.
## Prérequis
Le contenu de ce manuel est organisé pour les personnes ayant déjà une base et une expérience avec:
- la programmation dans un langage orienté objet (Java, C#, C++, Python, TypeScript, etc.);
- les concepts de modélisation orientée objet (les classes, les interfaces, les instances, l'héritage, la composition, le polymorphisme, etc.);
- les tests unitaires (avec un cadriciel comme JUnit);
- l'application des patterns de la "Bande des quatre" (*Gang of Four* ou GoF): @GoF1994.
La notation UML (*Unified Modeling Language*) est utilisée partout dans ce manuel.
Nous faisons l'hypothèse que les personnes suivant ce manuel ont déjà vu cette notation avant, mais la familiarité avec l'UML n'est pas un préalable.
<!-- Voici le descriptif du cours, selon le plan de cours:
::: {.callout-important icon="false" appearance="simple"}
À la suite de ce cours, l'étudiant sera en mesure:
- de maîtriser et appliquer des patrons de conception logicielle;
- de concevoir un logiciel orienté objet en appliquant un ensemble de principes et des méthodes heuristiques de génie logiciel;
- de réaliser un logiciel en suivant un processus itératif et évolutif incluant les activités d'analyse et de conception par objets.
Méthodes et techniques de modélisation orientés objet, langage de modélisation, cas d'utilisation, analyse orientée objet, modèle du domaine, conception et programmation orientées objet, principes GRASP, patrons de conception, processus itératif et évolutif.
Séances de laboratoire axées sur l'application des notions d'analyse, de conception et de programmation orientées objet vues en classe. Mise en œuvre d'un modèle d'objet à partir d'une spécification de logiciel et à l'aide d'un langage orienté objet contemporain. Conception d'applications utilisant les outils UML ainsi que des techniques et des outils utiles au génie logiciel, tels qu'un environnement de développement intégré, la compilation automatique et les tests automatiques.
::: -->
## Livre complémentaire
Ce manuel suit la méthodologie d'analyse et de conception proposée par Craig Larman dans son livre _UML 2 et les design patterns_ [@craig_uml_2005].
Le livre est encore populaire et pertinent, mais, malheureusement, il n'a pas été actualisé depuis sa 3^e^ édition (en 2005).
De plus, la traduction française du livre n'est plus en stock au Québec depuis plusieurs années, et beaucoup de choses ont évolué depuis bientôt vingt ans!
::: {.callout-note}
Au besoin, des références au livre de Larman sont indiquées par l'icône du livre\ {{< fa solid book >}}.
Puisqu'il est disponible en français et en anglais, et qu'il y a des différences avec les numéros de chapitres, nous indiquons une référence avec **F** et **A** pour signifier la langue du livre.
Par exemple, la matière sur les principes GRASP est dans le chapitre 17 dans la version en anglais.
Cependant, à cause des fusions de contenu lors de la traduction, la matière sur GRASP est dans le chapitre 16 dans la version en français.
Dans ce cas, à cause des différences de chapitres, **F16.10/A17.10** indique la section **16.10 du livre en français** et la section **17.10 du livre en anglais.**
Toutes les références sont données pour la 3^e^ édition du livre.
:::
::: {.callout-caution}
Si vous avez une autre édition, comme la 2^e^ du livre en anglais ou même une des premières impressions de la 3^e^ du livre en anglais, les chapitres ne sont pas toujours les mêmes, et vous devrez chercher le sujet dans la table des matières.
:::
Cependant, dans ce manuel, vous trouverez également d'autres sujets importants pour une personne qui étudie en génie: les notions de complexité, le contexte industriel qui affecte les décisions de conception, l'impact de la conception sur d'autres qualités d'un logiciel, le travail en équipe, etc.
<!-- ## Remerciements {.unnumbered}
Comme beaucoup de ressources libres, ce manuel existe grâce à une collaboration avec de nombreuses personnes.
La [fabriqueREL](https://fabriquerel.org) (ressources éducatives libres) a soutenu financièrement et pédagogiquement l'élaboration du manuel lors de la période 2022-2023.
Les conseils avec la dimension _Creative Commons_ de la licence du contenu ont été fort utiles.
Nous remercions les membres du suivi du projet dans le cadre de ce travail pris en charge par la fabriqueREL de leur soutien:
- Marianne Dubé, conseillère pédagogique à l'Université de Sherbrooke et coordonnatrice de la fabriqueREL;
- Mouna Moumene, bibliothécaire à l'École de technologie supérieure;
- Marjolaine Lewis, conseillère pédagogique et technopédagogique à l'École de technologie supérieure;
- Claude Potvin, conseiller en formation à l'Université Laval;
- Stéphane Roux, directeur général du service de soutien à la formation à l'Université de Sherbrooke;
- Serge Allary, vice-recteur adjoint aux études de l'Université de Sherbrooke.
La fabriqueREL est également une vitrine de rayonnement importante pour les REL au Québec.
Elle permet de valoriser le travail réalisé par un personne du corps professoral dans la rédaction d'un manuel libre pour un cours universitaire.
Cela favorise une évolution positive dans la culture universitaire au Québec.
Nous remercions chaleureusement les auxiliaires d'enseignement et les personnes ayant suivi le cours _Analyse et conception de logiciels (LOG210)_ des programmes de baccalauréat en génie logiciel et en génie des technologies de l'information à l'ÉTS.
Leurs suggestions et leurs commentaires constructifs ont permis d'améliorer les versions antérieures de ce manuel qui ont été utilisées dans le cadre de ce cours.
Nous remercions également l'École de technologie supérieure pour son soutien au projet.
Nous remercions les membres du comité de révision (2023) pour leurs rétroactions constructives:
- Taki Eddine Seghiri, étudiant à la maîtrise en génie logiciel à l'ÉTS;
- Olivier Brochu, étudiant à la maîtrise en technologies de l'information à l'ÉTS;
- Clyde Vianney Omog Ntap, étudiant à la maîtrise en génie logiciel à l'ÉTS;
- Mouna Moumene, bibliothécaire à l'École de technologie supérieure (ÉTS);
- Roberto Erick Lopez-Herrejon, professeur au département de génie logiciel et des technologies de l'information à l'ÉTS.
Finalement, nous remercions Katerine Robert, réviseure linguistique à K. R. Révision, pour la révision du manuel. -->
## Sources du manuel
Ce manuel est écrit en Markdown, et le code source est sur GitHub à <https://github.com/fuhrmanator/log210-ndc-quarto>.
Les versions Web, PDF et EPUB ont été générées par le logiciel Quarto.
Pour en savoir plus sur Quarto, visitez <https://quarto.org/docs/books>.
<!-- On a supprimé l'info sur la licence, puisqu'elle est sur la 2e page. -->