Upload
ambroise-soulie
View
106
Download
0
Embed Size (px)
Citation preview
GEF 243BProgrammation 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?
Synopsis
• Réutilisation• Réutilisation – Les niveaux supérieurs• Composantes – définition• Composantes– utilisation• Communiquer vos designs• Réutilisation par niveau d’abstraction
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
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
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é…
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
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
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
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,…
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?
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
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
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
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
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
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
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
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
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
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?