Des langages d’assemblagesperso.ens-lyon.fr/christian.perez/_media/160317/160317...Des langages...

25
Des langages d’assemblages dans les modèles à composants logiciels Christian Perez Avalon, LIP, Lyon, France Journée Langages @ LIP, Lyon 17 mars 2016 [email protected]

Transcript of Des langages d’assemblagesperso.ens-lyon.fr/christian.perez/_media/160317/160317...Des langages...

  • Des langages d’assemblages

    dans les modèles à

    composants logiciels

    Christian Perez

    Avalon, LIP, Lyon, France

    Journée Langages @ LIP, Lyon

    17 mars [email protected]

  • Contenu

    Du besoin de composants logiciels

    Des composants logiciels

    Concepts de base via le diner des philosophes

    Langage de description d’assemblage

    Des assemblages plus abstraits Hiérarchie, généricité, squelettes algorithmiques

    Notion de connecteurs

    Composants logiciels et gestion de ressources

    Exemple via un cas d’utilisation « cloud »

    Conclusion

    2/25

  • De la réalisation d’une application

    Développement sur mesure

    Avantage

    Très spécifique, très bien adapté …

    Inconvénients

    … quand cela marche

    Très coûteux en temps

    Solution sous-optimale par manque de spécialistes

    Manque d’interopérabilité

    Exemples

    Logiciels pour les administrations ou les grands comptes

    Logiciels standard Avantages

    Temps de mise sur le marché plus court

    Juste à configurer Produit acquis

    maintenance, évolution à la charge du « vendeur »

    Inconvénients Réorganisation locale du

    « business » (adaptation) Les concurrents ont aussi

    accès aux fonctionnalités Adaptabilité aux besoins

    limitée Exemple

    Excel

    Acquérir ce qui est disponible et

    développer ce qui est spécifique 3/25

  • Le chaînon manquant ?

    La notion de composant est très largement répandue...

    Composants électroniques

    Composants d’une voiture (depuis Henry FORD)

    Composants d’un meuble, d’une construction

    On fait même de la cuisine « d’assemblage »

    Des composants partout ... sauf en informatique !

    On reste ainsi au stade artisanal …

    Et pourtant …c’est un ancien rêve de l’informatique

    Les premiers travaux datent de la fin des années 60

    4/25

  • A global view of software engineering

    evolution

    procedural

    technology

    component

    technology

    object

    technology

    Objects,

    Classes,

    Smalltalk, C++,

    ...

    Procedures,

    Pascal,

    C,

    ...

    Packages,

    Frameworks,

    Patterns,

    1980 1995 2000

    procedural

    refinement

    model

    technology

    Models,

    Metamodels,

    UML, OCL, MOF,

    XMI, SPEM, CWM

    object

    composition

    model

    transformation

    From Jean Bézivin presentation, ATLAS group (Inria & LINA), Nantes, France 5/25

  • NOTION DE COMPOSANTS

    LOGICIELS

  • (Une) définition d’un composant logiciel

    Un composant logiciel est une unité de composition qui a , par contrat, spécifié uniquement ses interfaces et ses dépendances explicites de contextes. Un composant logiciel peut être déployé indépendamment et est sujet à composition par des tierces entités.

    Définition de Szyperski et Pfister, 1997.

    Exemple « Composants Logiciels »

    fonctions dans une DLL Canevas

    un processus Supports d’interaction

    registre/mémoire

    Contre exemple: les macros en C

    …F(ptr)...

    F(ptr){…}

    DLLDLL

    Processus

    7/25

  • Un composant CORBA

    Mon

    composant

    composant interface

    facettes

    Sources

    d’évènementsPuits

    d’évènement

    Attributs

    réceptacles

    FO

    UR

    NI

    RE

    QU

    IS

    8/25

  • Construction d’une application CCM =

    Assemblage d’instances de composants

    9/25

  • Exemple: le dîner des philosophes

    ThinkingHungryStarvingEatingDead

    Kant

    ThinkingHungryStarvingEatingDead

    Descartes

    ThinkingHungryStarvingEatingDead

    Aristotle

    Fork

    Fork

    Fork

    10/25

  • Le dîner des philosophes (CCM)

    Philosopher

    name = Kant

    Philosopher

    name = Aristotle

    Philosopher

    name = Descartes

    Fork

    Fork

    Fork

    Component

    Base ref.

    Facet

    Receptacle

    Event Source

    Event Sink

    Observer

    11/25

  • Langage de description

    d’assemblage (ADL)

    Les ADL permettent de décrire une telle

    structure

    Les ADL ne sont pas restreints aux composants

    Description d’une sorte de graphe

    Composant: nœud avec des points de connections

    nommées (les ports)

    Connection: lien entre 2 ports

    12/25

  • Le modèle FRACTAL

    Modèle hiérarchique

    Composants primitives

    Composants composites

    Modèle à membrane

    Emplacement pour les contrôleurs

    (composants)

    A

    B

    C

    C

    D

    A

    13/25

  • Fractal ADL

    Primitive component

    14/25

  • Fractal ADL

    Composite component

    15/25

  • FileSelectInputSplitter

    Pull

    FileSliceSelect

    Push Push

    Map

    WordCountMap

    Push Pull Push

    Push

    Reduce

    FileSelect

    Go FileSelect

    Go

    GoMaster

    Go

    Runner SplitterMerging

    BufferRunner

    Wordcount

    Reduce

    Mapper

    Wordcount

    Writer

    Reducer

    Push

    Merging

    Buffer

    Runner

    PullPush

    Push

    User

    Push

    Provider

    Pull Push Push

    RunnerWordReader SplitterMerging

    BufferRunner

    Push Pull Push

    Map

    WordCountMap

    Mapper

    Push

    ProviderMerging

    Buffer

    Runner

    Pull

    Push

    User

    GoUser

    GoUserGoUser

    Go

    Provider

    GoProvider

    Reduce

    GoProvider

    FileSliceSelect

    User

    PushResult

    User

    Demux

    Wordcount

    Reduce

    Reducer

    PushResult

    Provider

    IOstream

    Word

    Count

    2 processes

    FileSliceSelect

    Provider

    WordReader

  • Vers des ADL plus abstraits

    Support de la généricité (à la C++) Introduit au niveau du composite

    aComposite

    Squelettes algorithmiques Pipe, farm, etc.

    Introduit comme construction d’un ADL

    Par exemple, via un méta-type Farm au lieu de meta-type Component (Spécialisation)

    Transformation en un ADL « simple » possible

    pipe ppfarm f [ worker: w ]

    w

    w

    emitter collector

    17/25

  • Des liens aux connecteurs

    Modèle de liens Connection directe entre ports via

    les modèles d’interactions fournis par le modèle de composant

    Modèle à connecteurs Réification des connections

    Un nom

    Un ensemble de rôles

    Connecteur primitive/«composite » Fourni par le modèle à l’exécution

    Définissable par l’utilisateur

    Exemple Consensus, Data sharing

    MxN communications

    ConnectorComponent Component

    roles

    Component Component

    ports

    connector UseProvide< role user, role provider >;

    18/25

  • Vers un squelette MapReduce

    - 19

    Reducer Output

    Component MapReduceexposes { In, Out}

    Mapper

    Mapper

    InputIn

    Out

    MapReduce

    #reducer?

    #mapper?

    Self-*?

    BlobSeer?

    BitDew?

    Both?

    Shuffle?

    19/25

  • DESCRIPTION D’APPLICATIONS

    ET DE RESSOURCES « CLOUD »

  • VM: Virtual machine

    SC: Servlet container

    MultiCloud application

    deployment and provisioning(cloudml.org)

    CloudML abstract model (CPIM)

    Notifier

    SC

    Admin

    SC

    Dispatcher

    SC MongoDB

    21/25

  • VM: Virtual machine

    SC: Servlet container

    MultiCloud application

    deployment and provisioning(cloudml.org)

    CloudML abstract model (CPIM)

    Notifier

    SC

    VM

    Admin

    SC

    VM

    Dispatcher

    SC

    VM

    MongoDB

    22/25

  • Amazon [location: EU] Flexiant [location: UK]

    SINTEF (OpenStack) [location: NO]

    Notifier

    Tomcat:SC

    SL:VM[compute cores: 2..4,

    memory: 2..4 GiB]

    Admin

    Jetty:SC

    ML:VM[compute cores: 4..8,

    memory: 4..8 GiB]

    Dispatcher

    Tomcat:SC

    LL:VM

    MongoDB

    [compute cores: 8..16,

    memory: 16..32 GiB]

    VM: Virtual machine

    SC: Servlet container

    LB: Load balancer

    SL: Small GNU/Linux

    ML: Medium GNU/Linux

    LL: Large GNU/Linux

    [scalability: 1..4]

    [scalability: 1..8]

    [scalability: 1..8]

    Adding platform specific constraints (CPSM)

    23/25

  • Amazon [location: EU] Flexiant [location: UK]

    SINTEF (OpenStack) [location: NO]

    LB

    LB

    LB

    1:Notifier

    2:Tomcat

    2:Notifier

    4:Tomcat

    1:SL[compute cores: 4,

    memory: 4 GiB]

    1:Admin

    1:Jetty

    1:ML[compute cores: 4,

    memory: 4 GiB]

    1:Dispatcher

    1:Tomcat

    2:Dispatcher

    3:Tomcat

    1:LL

    1:MongoDB 2:MongoDB

    [compute cores: 12,

    memory: 24 GiB]

    VM: Virtual machine

    SC: Servlet container

    LB: Load balancer

    SL: Small GNU/Linux

    ML: Medium GNU/Linux

    LL: Large GNU/Linux

    Snapshot CloudML@run-time

    24/25

  • Conclusion

    Motivation pour les modèles à composant Faciliter la ré-utilisation du code

    Gestion des dépendances

    Exprimer/manipuler la structure de l’application Via des ADL et/ou des interfaces d’introspection

    Langage de description d’assemblage De simples descriptions de graphes

    à des modèles plus abstrait Hiérarchie, généricité, squelette algorithmique, etc

    De la transformation d’ADL pour la gestion de ressources Statique

    Calculer un déploiement pour cloud

    Dynamique / reconfiguration

    ADL et modèle de data/workflow (grain fin & gros)

    25/25