Analyse et conception de logiciels

Auteurs

Christopher Fuhrman

Yvan Ross

Date de publication

05 janvier 2023 à 05:32:17 +00:00

Préface

Cet ouvrage a commencé comme notes de cours pour le cours Analyse et conception de logiciel (LOG210) dans les programmes de baccalauréat en génie logiciels (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 (Ardis et coll., 2015).

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 2e édition (2001) à l’époque. En 2005, la 3e édition a été publiée avec plusieurs traductions, notamment celle en français (2005). Pendant plus de dix ans, le livre de Larman a été fort apprécié par les personnes étudiantes.

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 4e é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 ?

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 analogique 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 (2022) (le langage source du texte est Markdown) ;
  • Pandoc (2022) et LaTeX (2022), qui font partie des composantes exploitées par Quarto ;
  • PlantUML (2022) pour les figures sous forme de texte (faciles à actualiser).

Autant que possible, les figures sont créées dans une forme vectorielle (comme SVG) plutôt que matricielle (comme JPEG) afin que le texte dans les figures soit « indexable » par les moteurs de recherche.

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.

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 patrons de conception de la « bande des quatre » (Gang of Four) : Gamma, Helm, Johnson et Vlissides Gamma, Helm, Johnson, & Vlissides (1994).

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 UML n’est pas un préalable.

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 (Larman, 2005). Le livre est encore populaire et pertinent, mais, malheureusement, il n’a pas été actualisé depuis sa 3e é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 !

Note

Au besoin, des références au livre de Larman sont indiquées par l’icône du livre . 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 3e édition du livre.

Mise en garde

Si vous avez une autre édition, comme la 2e du livre en anglais ou même une des premières impressions de la 3e 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 un ingénieur : 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

Comme beaucoup de ressources libres, ce manuel existe grâce à une collaboration avec de nombreuses personnes. La fabriqueREL (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 (ÉTS) ;
  • Marjolaine Lewis, conseillère pédagogique et technopédagogique à l’École de technologie supérieure (ÉTS) ;
  • 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 membre 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 tenons aussi à remercier 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 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 ;
  • 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 TI à 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 les sources sont 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.

Licence

À déterminer (le texte est toujours un brouillon)