hiver 2005maj jga beaulieu & capt mwp lesauvage gef 243b programmation informatique appliquée...
TRANSCRIPT
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
GEF 243BProgrammation informatique
appliquée
Architecture du logiciel I
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Revue
• Nommez les 5 phases du cycle de vie du logiciel
• Quelle est la différence entre la vérification et la validation?
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Synopsis
• Qu’est-ce qu’est l’architecture?• L’architecture du logiciel• Pipes et filtres• Architecture en couches
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Qu’est-ce qu’est l’architecture?
• Les ingénieurs doivent être capable de communiquer leurs designs et idées tôt dans un projet pour être effectifs
• Dans la plus part des disciplines d’ingénierie, les designs sont communiqués avec des bleus
• Au plus haut niveau des bleus, les dessins montrent une abstraction de haut niveau pour le projet dans son ensemble
• Ces abstractions de haut niveau montre le style d’architecture pour le projet
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Qu’est-ce qu’est l’architecture?
• Les dessins d’architecture montrent plus que le produit fini; ils communiquent l’intention de l’ingénieur et de l’architecte
• Par exemple, l’architecture d’un pont montre l’image du pont final et montre aussi comment le pont va être supporté, (suspension, compression, cantilever,…) sans montrer les détails de comment cela va être accomplit
• Les mots comme pont cantilever décrivent un style architectural ou un idiome architectural que les ingénieurs civils étudient et comprennent
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Architecture du logiciel
• En génie logiciel, il n’y a pas de bleus• Cependant, les ingénieurs en logiciel ont besoin
d’une façon de communiquer leurs designs et leurs intentions
• L’étude de l’architecture des logiciels est couramment dans son enfance Shaw et Garland, 1996
• Même si l’architecture du logiciel n’est pas encore une science mature, il y a plusieurs idées qui peuvent être utiles pour nous aider à communiquer nos designs
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Architecture du logiciel
• Dans les quelques décennies où nous avons produits des produits logiciels, plusieurs idiomes architecturales ont été identifiés parce qu’ils reviennent souvent et ont été prouvé par le temps
• Ces idiomes sont:Pipes et filtresEn couchesAbstractions de donnéesRéférentiels Client-serveurContrôle de processus
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Architecture du logiciel
• L’architecture des logiciels nous aide:À identifier comment les composantes vont interagir
entre ellesEn montrant comment les données et informations sont
échangés entre les composantesEn nous donnant un ensemble de symboles et un
vocabulaire pour décrire nos systèmesEn nous donnant les règles pour l’utilisation des
symboles et du vocabulaire
• Quand nous spécifions un style architectural, le design et l’implémentation doivent respecter ce style
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Architecture du logiciel
• Jusqu’à date, nous avons vus deux types de diagrammes qui nous permettent de décrire et communiquer nos designs:Les hiérarchies fonctionnelles: montrent les fonctions
d’un système et leurs relations les unes aux autres (relation d’appel et réponse)
Organigrammes: Représentation de bas niveau pour la logique d’un algorithme
• Les diagrammes architecturales sont à un plus haut niveau d’abstraction que les hiérarchies fonctionnelles
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Architecture du logiciel
• Nous avons aussi parlés des modules; qui nous permettent d’appliquer le principe du masquage de l’information
• Ces modules peuvent aussi être représentés dans une hiérarchie similaire à celle des fonctions pour montrer les relations de dépendance
• Cependant, les modules peuvent aussi être utilisés comme blocs ou composantes dans la construction des styles architecturales
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Pipes et filtres
• Possiblement un des styles architecturales les plus simples nous provient des systèmes de traitement en lots: L’architecture de pipes et filtres
• Ce style est grandement utilisé pour les programmes écrits en Unix shell
• Dans une architecture de pipes et filtres, les données sont vues comme un flot continue qui est transformé par des filtres
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Pipes et filtres
• Les filtres sont indépendants les uns des autres; l’état de chaque filtre est inconnu aux autres
• Un filtre ne ‘sait’ pas quels autres filtres sont avant ou après lui
• La sortie des données à un filtre peut commencer avant que l’entrée soit terminée (flot continue)
• Les connecteurs dans un P&F représentent les données qui sont fournies aux filtres et collectées des filtres de façon continue; de là le nom pipe
• Les pipes et les filtres peuvent avoir un type ou pas en avoir
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Pipes et filtres
Filtres
Pipes
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Pipes et filtres
• L’architecture de pipes et filtres est utile pour les ingénieurs électriques qui utilisent du logiciel dans leurs solutions
• Plusieurs composantes utilisées dans l’acquisition de données, le traitement des signaux, les systèmes de communication, les radars, la gestion de la puissance et plusieurs autres implémentations, utilisent les filtres logiciels parce qu’ils sont hautement flexibles
• Le flot continu de données par pipes et les transformations par les filtres s’adaptent bien au signaux digitaux
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Pipes et filtres
• Une fois développées, les filtres peuvent être réutilisés: i.e. un filtre passe-bas qui a été écrit peut être réutilisé en changeant les constantes du filtre
• Les compilateurs de première génération suivaient l’architecture des P&F
• Une des compagnies qui utilisent ce type d’architecture souvent dans ses produits est Tektronix – oscilloscopes
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Architectures en couches
• Un autre style architectural qui a été grandement utilisé au travers des années est l’architecture en couches
• Dijkstra a introduit l’architecture en couches quand il fait le design du système d’exploitation T.H.E.
• Dijkstra a proposé que les systèmes d’exploitation devraient être une hiérarchie de couches
• Chaque niveau a ses responsabilités et fournit des services aux niveau plus haut.
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Architectures en couches
Couche 1
Couche 2
…
Couche n-1
Couche n
Couche 1Couche 2
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Architectures en couches• Les architectures en couches devraient être utilisées
quand:Vous avez identifié que votre système doit isoler des
classes de servicesVous devez fournir des mécanismes de contrôle pour des
niveaux de sécuritésVous avez besoin de cacher le matériel ou le logiciel de
bas niveau pour réduire la complexité du logiciel de haut niveau
Vous voulez augmenter la portabilité du logiciel en remplaçant les niveaux inférieurs qui touchent à la plate forme
Besoin de traiter les signaux asynchrones ou une haute variation dans les temps de réponse
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Architectures en couches
• Le type de hiérarchie dans les architectures en couches diffèrent des hiérarchies modulaires ou fonctionnelles parce que chaque couche redéfinit les relations
• Les relations dans une hiérarchie fonctionnelle identifient quelles fonctions sont utilisées par les autres
• Les relations dans une architecture en couches identifient les fonctions qui fournissent les services et les fonctions qui appellent ces services
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Architectures en couches
• Les fonctions dans une couche fournissent des services aux fonctions dans la couche supérieure; et sont des clientes pour la couche inférieure.
Fctn 1 Fctn 2 Fctn 3
Fctn A Fctn B
My_prog
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Architectures en couches
• Les architectures en couches peuvent être utilisées pour:Les projets qui implémentent des protocoles
(communication, transformation,…)Les systèmes Interface Utilisateur Graphique (IUG)
pour séparer les fonctions d’interface de la solutionSystèmes robotiques, pour séparer les responsabilités
dans des couches – Prise de décision, Navigation de haut niveau, Production de mappe, intégration des senseurs, lecture des senseurs, contrôle du robot.
Hiver 2005 Maj JGA Beaulieu & Capt MWP LeSauvage
Quiz Time
• Pourquoi utilise-t-on des idiomes architecturales (styles) en génie logiciel?
• Est-ce que les filtres dans une architecture de P&F sont dans une hiérarchie?
• Quelle est la différence entre une hiérarchie fonctionnelle et une hiérarchie dans une architecture en couches?