+ All Categories
Home > Documents > Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants...

Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants...

Date post: 28-Aug-2020
Category:
Upload: others
View: 3 times
Download: 0 times
Share this document with a friend
27
Transcript
Page 1: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

UPMC Paris Universitas � Master Informatique � STL

Cours Composant1. Introduction

c©2005-2008 Frédéric Peschanski

UPMC Paris Universitas

13 février 2008

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 2: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Point de vue du cours

Articulation entre :

Technologies � du moment �

Java � avancé �, XML (schémas), OSGi, Plugins Eclipse, etc.

Méthodes � scienti�ques � d'ingénierie

Spéci�cations algébriquesConception par contratLogique de Hoare

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 3: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Pourquoi des � maths � ?

Constat : méthodes formelles peu visibles

Conception logicielle : création ou construction ?

Informaticiens vs. non-informaticiens (ex. UML)

Méthodes � cadrées � mais empiriques, qualité = test ?

Mais . . .

Glissement progressif vers les outils d'aide au développement,basés sur des techniques formelles (ex. Spec#)

Rappel : le métier d'ingénieur (ex. ingénieur en BTP)

La sûreté et la sécurité du logiciel,notion plus générale dequalité logicielle

En Composant, nous nous intéressons aux méthodes formelles dites� légères � (lightweight formal methods), un bon compromis.

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 4: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Prérequis

Connaissances techniques :

Maîtrise des concepts objets (encapsulation, relations,héritage, designs patterns, etc.)Bonne pratique de Java - language de support du coursFamiliarité avec les technologies XML (notamment XSchema)

Plus fondamentalement :

Manipulation des structures discrètes (ensembles, relations,fonctions, etc.)Revoir ses cours de logique (pour la logique de Hoare)

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 5: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Fonctionnement du cours

Cours

Concepts fondamentauxMéthodologieCas particuliers : JavaBeans, OSGi et Plugins Eclipse

Travaux dirigés

Illustration des conceptsMise en ÷uvre de la méthodologie

Travaux sur machine encadrés

Acquisition de technologies récentes qui illustre le concept decomposant logiciel

JavaBeans, composants contractualisés (Tamago), OSGi,Plugins Eclipse, Web services

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 6: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Déroulement des TME

1 Préparation

Lecture d'un document de type TutorielImportant : les cours et TD ne préparent pas, en général, auxTME. Notamment concernant les technologies employées.

2 Séance de TME

exercice de � rapidité �à la �n des 2 heures : relevé des TME (formal jar normalisé)Remarque : préparation nécessaire (point 1)

3 Soumission : version 2

Remarque : en général, pas le temps de �nir en 2 heuresPossibilité de soumettre un TME complété envoyé au plus tardla veille de la prochaine séance

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 7: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Composant logiciel

Important : notion di�cilement réductible à une dé�nition(exercice : dé�nition d'� objet � ?)Quelques dé�nitions proposées :

C. Szyperski � Une unité de composition avec des interfaces

spéci�ées contractuellement et seulement des dépendances

vis-à-vis de son contexte. Un composant logiciel doit pouvoir

être déployé indépendamment et est l'objet de composition par

des tiers �B. Meyer � Un composant logiciel est un élément logiciel(unité de modularité) qui satisfait les trois conditionssuivantes :

1 il peut être utilisé par d'autres éléments logiciels, ses clients,2 il possède un mode d'emploi o�ciel, qui est su�sant pour que

ses clients puissent l'utiliser3 il n'est pas lié à un client unique �

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 8: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Mots-clés

Composition logicielle Conception et implémentation par assemblage(statique ou dynamique) de briques logicielles

Interface Spéci�cation du mode d'emploi associé à un élémentlogiciel : ce que fait le logiciel indépendamment decomment il le fait

Contrat logiciel Spéci�cation entre le fournisseur du logiciel (qui conçoitet implémente les composants) et ses clients (qui utiliseet/ou assemble les composants)

Context-awareness Conception du logiciel en intégrant en amont laspéci�cation explicite des dépendances externes

Architecture logicielle Conception et spéci�cation séparée del'architecture du logiciel, indépendamment de saconception et implémentation interne

Déploiement De la conception/implémentation à l'utilisation/exécution

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 9: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Trustable component

Cours CPS : vers le composant logiciel � de con�ance �

B. Meyer � Un trustable component est un élement logicielréutilisable qui spéci�e et garantit des propriétés liées à laqualité �

réutilisabilité Critère de qualité. Propriété d'un élément logiciel à êtreemployés dans plusieurs contextes di�érents,potentiellement pas des clients variés. Important : cecritère ne se décrète pas, on le constate à posteriori

spéci�cation logicielle Document plus ou moins formel qui décritprécisément ce que l'on attend du logiciel, tant en termesde conception que d'implémentation

garantie de qualité cf. cours 2

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 10: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Composants CPS

Dans ce cours, on retient principalement de ce vaste programme :

Check-list Composant logiciel

Les interfaces spéci�ent clairement ce que fait le composant

Interface interne : fonctionnalités du composantInterface externe : spéci�cation du contexte d'utilisation(dépendances explicites) : le composant a vocation à êtrecomposé avec d'autres composants

Garanties sur les implémentations

Relie la spéci�cation et ses possibles implémentationsApproche � légère � : conception par contratApproche � lourde � : logique de Hoare

Unité de déploiement : packaging, versioning, chargement,cycle de vie, etc.

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 11: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Remarque : objets vs. composants

Les objets sont des composants � minimaux � :

Encapsulation, cycle de vie minimal (création, utilisation,destruction)

Interface interne minimale : classe et/ou interface

Mais il manque (entre autre) :

des spéci�cations plus � sémantiques �

l'explicitation du contexte d'utilisation (interface externe)

les garanties sur la qualité (exception : conception par contrat)

la problématique du déploiement

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 12: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Plan des cours

1 Designs patterns pour les composants

2 Qualité logicielle, spéci�cations algébriques

3 Conception par contrat I

4 Conception par contrat II

5 Interlude 1 : déploiement avec OSGi

6 Logique de Hoare I

7 Logique de Hoare II

8 Interlude 2 : plugins Eclipse

9 Concurrence et coordination

10 Interlude 3 : services Web et processus métiers

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 13: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Le � noyau dur � du cours

Noyau dur

Méthodologie pour la conception et l'implémentation detrusted components

1 Analyse : spéci�cations algébriques (cours 2)

2 Conception : par contrat à partir des spéci�cations(cours 3 et 4)

3 Implémentation : garantie vis-à-vis des contrats

Conception par contrat : véri�cation � légère � en ligne(self-testing)Logique de Hoare : véri�cation � lourde � à priori(cours 6 et 7)

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 14: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Plan du cours 1

Designs patterns pour les composants

Patterns des Javabeans

Pattern : � Observable properties �Pattern : � Event-based communication connector �

Pattern : � Require/Provide connector �

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 15: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Propriétés javabeans

Motivation : Observabilité

Un composant doit être capable d'expliciter ce que l'on peutobserver sur son état interne. Un composant doit être égalementcon�gurable.

Sinon on ne peut rien spéci�er à l'avance sur l'état, et rien n'estvéri�able ensuite.

Pattern : � Observable properties � (Javabeans)

Propriété observable dé�nie par :

un nom

un type

un mode d'accès : lecture seule, lecture/écriture, écritureseule (con�guration)

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 16: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Structure du pattern

Exemple JavaBean

Propriété de nom prop de type Type en lecture/écriture

// Access : read

public Type getProp() ;

// Access : write

public void setProp(Type value) ;

«component»

Componenthidden attributesgetProp1() : Type1getProp2() : Type2setProp2(p2:Type2) : voidsetProp3(p3:Type3) : void

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 17: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Javabean : exemple

public class Interrupteur {public enum { ON, OFF } State ;private boolean internalState ;public Interrupteur() { internalState = false ; }

/* Propriétés */public State getState() {

if(internalState==true)return ON ;

else return OFF ;}

/* Fonctionalités */public boolean isOn() { return state==true ; }

public void switch() { state = !state ; }}

Autres exemples : composants Swingc©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 18: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Bilan pattern Observable properties

Intérêts

Observabilité : concept fondamental (plus qu'il n'y paraît)

Mise en ÷uvre simple

Limites

En lui-même le pattern ne fait pas grand chose, il faut desoutils pour l'exploiter

Di�cultés � cachées � : types observables

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 19: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Pattern : � Event-based communication connector �

Motivation

Un composant doit expliciter ses dépendances externes⇒ notion de connecteur logiciel

Javabeans : mode de communication évenementiel

Composant : source et/ou écouteur d'événements

Événement : objet passif et immuable

Constituants

Classes (types) d'événements : MyEvent

Interfaces d'écoute (listener : MyEventListener)

méthodes de réaction : dépend de l'événement

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 20: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Structure du pattern

java.util.EventObject

EventObject(source:Object)getSource():Object

«event»

MyActionEventdata1:Type1data2:Type2MyActionEvent(data1:Type1,data2:Type2)getData1():Type1getData2():Type2

«source»

MySourcelisteners:ArrayList<MyActionListener>addMyActionListener(l:MyActionListener):voidsend(event:MyActionEvent):void

send(MyActionEvent event) { for(MyActionListener l : listeners) { l.action1(event); }}

«interface»

java.util.EventListener

«interface»

MyActionListeneraction1(event:MyActionEvent):Type1action2(event:MyActionEvent):Type2

«listener»

MyReceiver

action1(event:MyActionEvent):Type1action2(event:MyActionEvent):Type2

«emits»

«listens»

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 21: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Evénement : exemple d'occurence

Préalabe : les deux écouteurs sont enregistrés auprès de la source

source.addMyActionListener(dest1) ;

source.addMyActionListener(dest2) ;

client source: MySourcelisteners={dest1,dest2}

dest1:Receiver

dest2:Receiver

send(event)

action1(event)

action1(event)

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 22: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Bilan pattern Event-based communication

Intérêts

Découple structurellement les émetteurs et récepteursd'événementsPermet la communication � 1 (émetteur) vers N(récepteurs) �Explicite la dépendance du récepteur (interface d'écoute)Evénements multiples et sélection par typageBranchements dynamiques (si nécessaires)

Limites

Pas de découplage du contrôle : la source doit contrôler lacommunicationDépendances explicitées seulement dans un sens : le récepteurest identi�é comme tel, mais pas la sourcePattern un peu � lourd �

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 23: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Pattern : � Require/Provide connector �

Motivation

Un composant doit expliciter ses dépendances externes (bis)Description séparées des fonctionalités implémentées par lescomposants ⇒ notion d'interface ou de servicea

aNe pas confondre � interface de composant � et � interface java �.

Principes

Un service regroupe des fonctionnalités

Client du service : interface de liaison � require �

Fournisseur de service : implémente le service

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 24: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Structure du pattern

«binder»

RequireMyServicebind(service:MyService)

«component»

Clients:MyServiceClient()bind(service:MyService)use()

use() { if(service==null) throw new Error(’Missing required service’); else { service.funct1(); service.funct2(); }}

«service»

MyServicefunct1()funct2()

«component»

Provider

Provider()funct1()funct2()

«requires»

«provides»

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 25: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Modèle de composition

Composition d'une architecture :

Client client = new Client() ;Provider provider = new Provider() ;client.bind(provider) ;client.use() ;

client:Client provider:ProviderMyService

«requires» «provides»

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 26: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Javabeans : propriétés observablesJavabeans : communication événementielleServices requis/fournis

Bilan pattern Require/Provide

Intérêts

Découple structurellement les fournisseurs et clients de service

Dépendances explicitées dans les deux sens (client etfournisseur)

Métaphore du service et client/fournisseur (cf. conception parcontrat)

Limites

Pas de découplage du contrôle : le client gère la liaison

Pattern un peu � lourd � (beaucoup d'interfaces en Java)(mode actuelle : code java simple mais XML pour décrire lesliaisons. cf. plugins eclipse)

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction

Page 27: Cours Composant 1. Introduction - sorbonne-universite€¦ · JavaBeans, composants contractualisés (Tamago), OSGi, Plugins Eclipse, Web services c 2005-2008 Frédéric Peschanski

IntroductionNotion de composant logiciel

Design patterns pour les composantsConclusion

Questions ?

c©2005-2008 Frédéric Peschanski Cours Composant1. Introduction


Recommended