Analyse et conception de logiciels

Édition fabriqueREL 2023

Auteurs

Christopher Fuhrman

Yvan Ross

Date de publication

13 mars 2024 à 19:20:26 +00:00

Ce manuel a été utilisé dans le cadre du cours Analyse et conception de logiciels (LOG210) à l’École de technologie supérieure (ÉTS).

Les auteurs sont Christopher Fuhrman et Yvan Ross.
Christopher Fuhrman (page GitHub, Google Scholar et ORCID) est professeur à l’ÉTS depuis 2001. Son domaine de recherche est la conception de logiciels.
Yvan Ross (page GitHub) est chargé de cours à l’ÉTS depuis 2013. Il a enseigné LOG210 de nombreuses fois et a contribué à la création d’exercices et de travaux de laboratoire utilisés dans le cadre de ce cours.

Remerciements aux personnes suivantes : Conversion Markdown : Clyde Vianney Omog Ntap, Taki Eddine Seghiri ; Création d’exercices : Olivier Brochu, Clyde Vianney Omog Ntap ; Révision : Katerine Robert ; Relecture : Olivier Brochu, Roberto Erick Lopez-Herrejon, Mouna Moumene, Taki Eddine Seghiri.

Ce manuel a été réalisé avec le soutien de la fabriqueREL. Fondée en 2019, la fabriqueREL est portée par divers établissements d’enseignement supérieur du Québec et agit en collaboration avec les services de soutien pédagogique et les bibliothèques. Son but est de faire des ressources éducatives libres (REL) le matériel privilégié en enseignement supérieur au Québec.

 

Sauf indications contraires, le contenu de ce manuel électronique est disponible en vertu des termes de la Licence Creative Commons Attribution 4.0 International.

Vous êtes autorisé à :
Partager – copier, distribuer et communiquer le matériel par tous moyens et sous tous formats.
Adapter – remixer, transformer et créer à partir du matériel pour toute utilisation, y compris commerciale.

Selon les conditions suivantes :
Attribution – Vous devez créditer l’Œuvre, intégrer un lien vers la licence et indiquer si des modifications ont été effectuées à l’Œuvre. Vous devez indiquer ces informations par tous les moyens raisonnables, sans toutefois suggérer que l’Offrant vous soutient ou soutient la façon dont vous avez utilisé son Œuvre.
Pas de restrictions complémentaires – Vous n’êtes pas autorisé à appliquer des conditions légales ou des mesures techniques qui restreindraient légalement autrui à utiliser l’Œuvre dans les conditions décrites par la licence.

ISBN-13 : 978-2-921145-90-9
Dépôt légal, Bibliothèque et Archives nationales du Québec, 2023.
Dépôt légal, Bibliothèque et Archives Canada, 2023.
© Christopher Fuhrman et Yvan Ross (2023)
Pour citer ce manuel : Christopher Fuhrman et Yvan Ross. (2023). Analyse et conception de logiciels. École de technologie supérieure. Sous licence CC BY.

 

 

 

Préface

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 (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 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 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 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 (2023) (le langage source du texte est Markdown) ;
  • Pandoc (2022) et LaTeX (2022), et plusieurs filtres de traitement qui font partie des composantes exploitées par Quarto ;
  • 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 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 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) : Gamma, Helm, Johnson, et 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 l’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 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.

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.