22
GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Embed Size (px)

Citation preview

Page 1: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

GEF 243BProgrammation informatique

appliquée

Génie logiciel avec composantes

Page 2: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Revue

• Nommez les différentes sortes d’architectures.

• Dans une architecture en couches, une couche qui est en dessous d’une autre couche fournit _________ à la couche supérieure

• Si nous disons qu’un référentiel a un locus de contrôle qui est implicite, que voulons nous dire?

Page 3: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Synopsis

• Réutilisation• Réutilisation – Les niveaux supérieurs• Composantes – définition• Composantes– utilisation• Communiquer vos designs• Réutilisation par niveau d’abstraction

Page 4: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation

• Quand nous avons discuté la décomposition, nous avons vue qu’un des ces bénéfices était la réutilisation de certaines parties d’une solution pour résoudre un autre problème.

• La réutilisation est un principe clé en génie logiciel, et elle s’applique à plusieurs niveaux d’abstraction

Page 5: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation

• Pour trouver l’origine de la réutilisation, en génie logiciel, nous retournons à la première conférence de L’OTAN qui a adressée la crise du logiciel (1968) On se rappel: C’est là où le terme génie logiciel a été

utilisé pour la première fois comme expression

• L’article de McIlroy: Mass-Produced Software Components est la première référence à la réutilisation à grand volume des produits logiciels

Page 6: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation

• La réutilisation apporte certains bénéfices:Une bonne réutilisation augmente la productivité des

programmeurs; ceci permet:• La réduction des coûts des projets

• Réduction des cédules

Il existe plusieurs algorithmes et solutions qui ont été codés et sont prouvés; la réutilisation de ces algorithmes peut augmenter la qualité et la fiabilité du logiciel et des systèmes

Outre la réduction des coûts, il existe un marché pour les composantes réutilisables; vous pourriez faire des profits dans ce marché…

Page 7: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation

• Au plus bas niveau du continuum de réutilisation, on trouve notre capacité d’utilisé des abstractions des langages de haut niveau (if, while, switch,…)

• Comme nous l’avons vue plus tôt dans le cours, les structures de langage furent les premières abstractions à être réutilisées par les informaticiens

• Avant les langages de haut niveau, les programmeurs devaient utiliser les langages machine ou les assembleurs et reproduire ces mécanismes plusieurs fois par programme

Page 8: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation

• Dans le cours 8, nous avons vue que les premières fonctions ont étés créées pour être capable de réutiliser les blocs de code dans le même programme

• La réutilisation d’une fonction dans un programme, au lieu d’utiliser les opérations de couper-et-coller pour réutiliser un bloc de code, permet au programmeur de produire des solutions plus vite et d’avoir un programme plus fiable

Page 9: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation

• Dans la réutilisation, les modules sont un niveau au dessus des fonctions, parce que vous pouvez former des bibliothèques de modules réutilisables

• Ces modules peuvent être des bibliothèques de langage:math.h, string.h, conio.h, stdio.h,…

• Les modules peuvent aussi être produits localement par les ateliers de logiciels243_lib or my_lib

• Les bibliothèques sont une grande source de réutilisation dans les langages à haut niveau

Page 10: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation

• Avant que nous soyons capable de réutiliser le code à grande échelle, nous devons résoudre ces problèmes:Recherche: Comme vous l’avez certainement

observés, il est difficile de savoir quelle bibliothèque(s) contient quelles fonctions et même de savoir si une fonction existe en premier lieu

• Les experts, les livres, et le Web sont des points de départCompréhension: La majorité des modules sur le

marché sont des boîtes noires qui doivent être utilisées en suivant une certaine spécification d’interface

• L’information suffisante doit être disponible dans un fichier entête pour fournir les détails d’utilisation, paramètres, messages d’erreur,…

Page 11: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation

Adaptation: taponner avec le code n’est pas souvent une option:

• Parce que le code/design n’est tout simplement pas disponible

• L’algorithme peut ne pas être compris suffisamment pour faire des changements locaux; les changements pourraient avoir des effets secondaires inconnus

• Parfois une enveloppe peut être utilisée pour changer l’interface d’un module pour les E/S, la tolérance des défaillances des boîtes noires (attrapage des erreurs), mais ceci doivent être les seuls changements faits avec un module

Composition: comment va-t-on joindre les composantes que l’on réutilise dans notre système?

Page 12: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation – Les niveaux supérieurs

• Le continuum de réutilisation n’est pas limité par les structures de langage, blocs de code, fonction, modules et bibliothèques

• Quand nous avons discuté des architectures logiciels nous avons vue que les idiomes peuvent être réutilisés d’une solution à une autre Ces abstractions architecturales peuvent aussi être combinées pour

former des architectures hybrides

• Les idiomes architecturaux sone au plus haut niveau de la réutilisation dans le génie logiciel

Page 13: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation – Les niveaux supérieurs

• En dessous de la réutilisation architecturale, nous avons la réutilisation des designs

• Plusieurs problèmes partagent des solutions de design communes: Avoir besoin d’une seule copie (instance) d’un serveur. Vérifie si

un serveur existe déjà; si oui, on l’utilise, sinon, on en crée un. Attacher plusieurs fonctions pour écouter pour un événement

(référentiels implicites) Permettre la création de gadgets logiciel indépendamment des

plate formes Masquage de modules derrière un module principal (façade) Et plusieurs autres

Page 14: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation – Les niveaux supérieurs

• La réutilisation des designs est une discipline plus mature que la réutilisation architecturale

• Plusieurs livres ont étés publiés sur le sujet de la réutilisation des designs et réfèrent normalement à motifs de design ou principes de design

• Les motifs de design ne sont pas dépendants des langages, mais sont ils sont basés la méthodologie de design utilisée (orientée-objet ou structurelle)

• Les motifs de design sont normalement représentés avec des diagrammes ou du pseudo code

Page 15: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Composante - définition

• Entre le design et les modules nous avons un autre niveau de réutilisation

• Il est possible de prendre des solutions entières qui peuvent se tenir par elles mêmes et de les utiliser dans des systèmes que l’on construit

• Le terme composante a souvent été utilisé pour décrire de petits blocs de code, des fonction ou des modules

• Les composantes sont en fait des programmes qui sont entièrement fonctionnels et autonomes qui peuvent fournir un service complet

Page 16: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Composante - utilisation

• La réutilisation des composantes est reliée de proche avec l’architecture des logiciel

• L’architecture fournit un contexte pour développer et/ou réutiliser des blocs de construction de logiciel avec des interfaces bien définies

• Par exemple, si nous avons besoin d’un référentiel (architecture de référentiel) pour faire partie d’une solution pour un robot qui est implémenté avec une architecture en couches, nous pouvons écrire notre propre référentiel, ou en prendre un qui est disponible commercialement comme composante dans notre système

Page 17: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Composante - utilisation

• Il existe plusieurs produits commerciaux qui fournissent une interface interne (interface d’usager) et une Interface de Programmeur d’Application (IPA) externe qui leurs permettent d’être utilisés comme composantes

• Ces produits peuvent donc être utilisés de façon autonome, ou être programmé à partir de la périphérie en utilisant l’IPA MS-Access Visio Excel MySQL,…

• Ce que nous avons besoin est une IPA bien définit

Page 18: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Composante - utilisation

• L’utilisation des composantes pour construire des systèmes est une pratique qui est émergente et est connue comme Génie logiciel avec composantes (Component-Based Software Engineering - CBSE)

• Une conférence internationale annuelle est dédiée à ce sujet de recherche: International Conference on COTS-Based Systems - ICCBSS

Page 19: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Communiquer vos designs

• Quand vous utilisez des composantes dans vos systèmes, vous pouvez utiliser un diagramme de composantes pour montrer quelles composantes vous utilisez, et les dépendances entre elles

• Une composante est normalement indiqué avec l’icône suivante:

Component x

Page 20: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes
Page 21: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Réutilisation par niveau d’abstraction - Continuum de la réutilisation

Idiomes architecturaux

Motifs de design

Composantes

Bibliothèques/modules

Fonctions

Structures de langage

Impacte de la

réutilisation sur les coûts

et les cédules

Complexité apportée par la réutilisation

et sa spécification

Page 22: Hiver 2005Maj JGA Beaulieu & Capt MWP LeSauvage GEF 243B Programmation informatique appliquée Génie logiciel avec composantes

Quiz Time

• Nommez certains bénéfices de la réutilisation dans le génie logiciel.

• Nommez les problèmes auxquels nous faisons face en réutilisant le code

• Qu’est-ce qu’une composante?