GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf ·...
Transcript of GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf ·...
![Page 1: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/1.jpg)
GLO-3001 Architecture logicielle
Luc LamontagneHiver 2010
![Page 2: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/2.jpg)
Plan� Définitions
� Architecte logiciel
� Architecture logicielle
Une bonne architecture logicielle ?� Une bonne architecture logicielle ?
� Architecture vs. conception
� Styles, patrons et idiomes
� Conception logicielle vs. architecture
� Historique
Luc Lamontagne 2
![Page 3: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/3.jpg)
Définitions
� Génie logiciel (Software engineering)
L’application systématique et disciplinée d’approches quantifiables
Luc Lamontagne 3
d’approches quantifiables de développement et de maintenance de logiciels, et l’étude de ces approches.
(IEEE 610.12)
Produit logicielBesoins
Processus & outils
Gestion de projet
![Page 4: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/4.jpg)
Définitions
� Architecture logicielle (Software architecture)
La structure ou les structures du système, comprenant: les composantes logicielles,
Luc Lamontagne 4
les composantes logicielles, les propriétés exposées de ces composantes, et les interactions entre celles-ci.
(Bass, Clements et Kazman 2003)
A B C
![Page 5: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/5.jpg)
Définitions� L’architecture logicielle = abstraction d’un logiciel
� Collection de composantes� Client, serveur, filtre, couche, contrôleur, agent
� Topologie de composantes (relations)� Topologie de composantes (relations)� Agrégation, classification, généralisation, association
� Interactions entre les composantes� Connecteurs
� Propriétés des composantes
� Mode d’interaction� Par ex. RPC, Partage de mémoire, synchronisation
Luc Lamontagne 5
![Page 6: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/6.jpg)
Définitions� Composantes
� Orientée objet � Un module (package, librairie)� Un groupe de classes� Encapsulation des méthodes
� Procédurale
� Connecteurs � La signature des
composantes
� Un groupe de fonctions et de structures de données
� Interfaces et services offerts par une composante
� Fonctions et propriétés des composantes.
Luc Lamontagne 6
![Page 7: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/7.jpg)
Pourquoi un architecte? (maison)
Luc Lamontagne 7
![Page 8: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/8.jpg)
Pourquoi un architecte? (maison)
� Satisfaire les besoins du propriétaire
� Assurer la longévité de la maison
� revente, charpente, catastrophe� revente, charpente, catastrophe
� Planifier pour permettre les extensions possibles
� Faciliter l’entretien et le confort
� Contenir les coûts
� Guider les travailleurs qui vont la construire
Luc Lamontagne 8
![Page 9: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/9.jpg)
Pourquoi un architecte? (maison)
� Besoins …
� Longévité de la maison …
� Extensions possibles …
Description du mandat
Robustesse
Modifiabilité
� Entretien …
� Confort…
� Contenir les coûts ..
� Guider les travailleurs…
Luc Lamontagne 9
Maintenabilité
Utilisabilité
Gestion du projet
Devis/plan du projet
![Page 10: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/10.jpg)
Pourquoi un architecte logiciel?� Assurer la stabilité et la robustesse du système
� Permettre une maintenance relativement facile
� Permettre les évolutions futures
� Contenir les coûts
� Minimiser les complications
� Guider les programmeurs dans leurs efforts de développement
Luc Lamontagne 10
![Page 11: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/11.jpg)
Une bonne architecture ?
Luc Lamontagne 11
![Page 12: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/12.jpg)
Une bonne architecture
� Partitionnement en sous parties
� Vision globale de la conception � Vision globale de la conception
� Vision partagée et comprise des différents intervenants du projet
� Moyens retenus pour atteindre les objectifs de qualité
� Communiquer aux développeurs ce qui doit être concrétisé
Luc Lamontagne 12
![Page 13: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/13.jpg)
Exemple – Construction d’horaire
Luc Lamontagne 13
![Page 14: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/14.jpg)
Une architecture ?
Luc Lamontagne 14
![Page 15: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/15.jpg)
Une architecture ?
Luc Lamontagne 15
![Page 16: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/16.jpg)
Une architecture ?
Luc Lamontagne 16
![Page 17: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/17.jpg)
Une architecture ?
Prioritisationdes cours
Allocationde plage horaire
Descriptiondes cours
Luc Lamontagne 17
Obtenir approbation de l’usager
horaire
Détection de conflits de
disponibilité
Détection de conflits
inter-coursHoraire
![Page 18: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/18.jpg)
Architecture vs. conception� L’architecture est une forme de conception � Les conceptions ne sont pas toutes architecturales
� Plusieurs détails de bas niveau ne sont pas spécifiés dans une architecture
Ex. Le choix d’une structure de données� Ex. Le choix d’une structure de données� Ex. Le choix d’un algorithme
� L’architecture ne définit pas une implémentation du logiciel
� Mise plutôt sur la structure et moins sur le domaine d’application � Les fonctionnalités sont orthogonales à la structure
Luc Lamontagne 18
![Page 19: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/19.jpg)
Styles, patrons et idiomes � Termes fréquemment utilisés pour décrire
� Les structures utilisées pour la conception de logiciel
� Des recettes éprouvées et reconnues des praticiens
� Des exemples de bonnes pratiques� Des exemples de bonnes pratiques� Par opposition aux mauvaises pratiques (anti-patterns)
� Des trucs et astuces
� Des spécificités utiles de certaines technologies
Luc Lamontagne 19
![Page 20: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/20.jpg)
Styles, patrons et idiomes� Styles (macro patterns)
� Structures de haut niveau pour décrire un logiciel d’un point de vue global
� Ex. Modèle par couche (layered), MVC, …
� Patrons (micro patterns) � Patrons (micro patterns) � Solutions abstraites applicables à différents contextes mais qui
offrent les mêmes avantages chaque fois� Correspond aux Design Patterns
� Idiomes� Décrit de bonnes pratiques liées
� à un formalisme de programmation � à un langage en particulier
Luc Lamontagne 20
![Page 21: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/21.jpg)
Documentation - UML� Notation préconisée en orienté objet� Utilise plusieurs diagrammes pour décrire une
composante ou un système� Ces diagrammes permettent de répondre rapidement et
de façon standardisée à plusieurs questionsde façon standardisée à plusieurs questions
Luc Lamontagne 21
![Page 22: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/22.jpg)
Architecture vs. approche OO
Luc Lamontagne 22
![Page 23: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/23.jpg)
Historique� Avant 1990 - Les intuitions
� Terme « Software Engineering » � NATO Software Engineering Conference (1968)
� Travaux de Parnas et Brooks (1972-1975)Développement modulaire: cohésion forte & Couplage faible� Développement modulaire: cohésion forte & Couplage faible
� Logiciel peut être décrit par plusieurs structures
� Pas uniquement une seule.
� Travaux de Christopher Alexander (1977) � Patrons de conception en architecture
� Travaux de Beck et Cunningham (1987)� Application de patrons en programmation
Luc Lamontagne 23
![Page 24: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/24.jpg)
Historique� Première moitié 1990 – Les fondements du domaine
� Travaux sur les Design Patterns par le Gang of Four (1994)
Travaux de Kruchten (1995) � Travaux de Kruchten (1995) � 4+1 Views
� Logical (Functionnal)
� Process (Concurrency)
� Deployment (Physical)
� Data
� Use case (Scenario-based) (+1)
Luc Lamontagne 24
![Page 25: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/25.jpg)
Historique� Première moitié 1990 – Les fondements du domaine
� Travaux de Shaw et Garlan (1996) � Identification et catégorisation des styles architecturaux� Langage de description de l’architecture (ADL)� Langage de description de l’architecture (ADL)
� Fin des années 90� Plusieurs livres portant principalement les patrons� Recommandations par le IEEE
� Méthode de conception basée sur les attributs de qualité� Vues architecturales + Documentation
� Implication importante du Software Engineering Institute (SEI)
Luc Lamontagne 25
![Page 26: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/26.jpg)
Historique (suite)
� Actuellement � Reconnaissance du rôle d’architecte logiciel� Prolifération de livres (Software Architecture)
� Attention le terme semble parfois galvaudé ! � Conférences scientifiques� Conférences scientifiques
� WIKSA (IEEE)� European Workshop on Software Architecture (EWSA)� QoSA
� Méthodes formelles � Langage de description architecturale (ADL) � Reverse engineering � Programmation orientée aspect (AOP)� Service oriented architecture (SOA)� Model driven architecture... (MDA)
Luc Lamontagne 26
![Page 27: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/27.jpg)
Conclusion� L’architecture est une conception de haut niveau
d’un logiciel
� Beaucoup de recettes sont déjà disponibles� Beaucoup de recettes sont déjà disponibles� Ne pas réinventer la roue!
� La conception architecturale est un élément important de l’approche orientée objet
� L’architecture repose moins sur les fonctions que sur la qualité du logiciel
Luc Lamontagne 27
![Page 28: GLO-3001 Architecture logicielle - Université Lavallamontagne/glo3001/introArchitecture.pdf · Partitionnement en sous parties ... Des exemples de bonnes pratiques Par opposition](https://reader036.fdocuments.fr/reader036/viewer/2022062505/5edf86dfad6a402d666ade21/html5/thumbnails/28.jpg)
La suite…� Préparation pour le projet de session� Étude des designs patterns
� Points importants� Programmation OO et Java � Programmation OO et Java
� Maîtrise des principales notions de Java
� Familiarité avec UML� Utilisé pour décrire les structures
� classe, séquence, composante, déploiement
� Éléments de contrôle de qualité� Tests unitaires - JUnit
Luc Lamontagne 28