L D A rchitecture escription anguages. Introduzione ADLs : uno stato dellarte Non esiste pieno consenso su cosa è un ADL Per iniziare, in assenza di definizioni.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Survey su ADL XML-Based
Progettazione dei Sistemi Interattivi (A.A. 2004/05) - Lezione 2 1 Progettazione e Sviluppo di Software ad Oggetti 4 OBJECT-ORIENTED ANALYSIS Processo.
Progettazione concettuale
Unified Modeling Language
Recupero debito quarto anno Secondo incontro
Informatica Recupero debito quarto anno Terzo incontro.
1 Quale spazio per uneducazione plurilingue nella scuola di oggi? Firenze, 30 settembre 2011 Silvia Minardi.
Le gerarchie di tipi.
Principi di Programmazione Object-Oriented
Basi di Dati prof. A. Longheu
4 – Progettazione – Introduzione e Modello E-R
Basi di Dati prof. A. Longheu 4 – Progettazione – Introduzione e Modello E-R Cap. 5 Basi di dati Atzeni – Ceri – Paraboschi - Torlone.
Maria Teresa PAZIENZA a.a
Distributed Object Computing
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Testing e Debugging.
Overriding.
Algoritmi e Strutture Dati
UML: Extension Mechanism Corso IS I /03 Gianna Reggio Versione 0.0.
INTRODUZIONE AD OMNET++
© CEFRIEL Ricettario dei principali pattern GoF Docente: Gabriele Lombardi
nome: sequenza di caratteri usata per denotare un oggetto
XML e la generazione di cataloghi multimediali F. Garzotto, L. Mainetti, P. Paolini Politecnico di Milano HOC - Hypermedia Open Center Dipartimento di.
Sistemi Operativi GESTIONE DEI PROCESSI.
Modello Relazionale Definisce tipi attraverso il costruttore relazione, che organizza i dati secondo record a struttura fissa, rappresentabili attraverso.
Modello E-R Generalizzazioni
Progettazione di una base di dati
Modello E-R Generalizzazioni
Java concetti A.Natali Marzo Java Dai concetti ai costrutti.
Introduzione alla modellazione di sistemi interattivi
Rappresentazione della Conoscenza
D.E.I.S. Universita di Bologna VHDL come strumento CAD allinterno di flussi di progetto per dispositivi Digitali VHDL come strumento CAD allinterno di.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
L’ingegneria del software
Introduzione alla programmazione Object Oriented
Introduzione a Oracle 9i
1 Astrazioni sui dati : Ragionare sui Tipi di Dato Astratti dispense prof. G. Levi.
Enumerazioni e Classi 1. Enumerazioni Permettono di definire nuovi tipi che consistono in un insieme di valori costanti (ognuno con un nome) – Migliorano.
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
VHDL per FPGA Courtesy of S. Mattoccia.
Whole-body dynamic behavior and control of human-like robots. Analisi di un articolo del dipartimento di scienze informatiche dell’università di Stanford.
1 How to generate testing models into MDA approach to software development. A beginner’s point of view. Università degli Studi dell’Aquila Facoltà di Scienze.
Progettazione di dati e applicazioni per il Web S. Ceri, P. Fraternali, A. Bongio, M. Brambilla, S. Comai, M. Matera Copyright © The McGraw-Hill.
Programmazione ad oggetti
WP4 – Software Infrastructures. How it was Overall goal “The outcome of WP4 is the design, implementation and evaluation of software components that will.
Survey sugli ADLs odierni Antonio Labella Matr Corso di Laurea Specialistica in Informatica Corso di Analisi e testing di sistemi basati su compomenti.
Diagramma delle Classi
Prog. applicazioni Web- 1 - Processo di sviluppo: Visione d’insieme.
Ereditarieta’. Contenuti Introduciamo un meccanismo fondamentale di Java: l’ereditarieta’ Permette di estendere classi gia’ definite (ovvero di definire.
4/20/20151 Metodi formali dello sviluppo software a.a.2013/2014 Prof. Anna Labella.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
ANNUNCIO DI SEMINARIO Il giorno Venerdi' 21 Maggio 2004 alle ore 11:30 presso l'Aula C3.4 della Facolta' di Scienze Matematiche Fisiche e Naturali dell'Universita'
Specifiche. Scopo e significato delle specifiche (1) Lo scopo di una specifica è di definire il comportamento di un ’ astrazione. Gli utenti si baseranno.
Un problema multi impianto Un’azienda dispone di due fabbriche A e B. Ciascuna fabbrica produce due prodotti: standard e deluxe Ogni fabbrica, A e B, gestisce.
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Programmazione in Java. Classi I programmi in Java consistono di classi. Le classi consentono di definire: collezioni di procedure (metodi statici) tipi.
Cose nuove di Java (prima a chiacchiera, poi formalmente)
Corso di Analisi e Testing basato su componenti Acme e ArchJava: Studio e Integrazione Anna Lucia e Giuseppe Paoletti.
UML: Introduzione Corso IS I /03 Gianna Reggio Versione 0.0.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
ArchJava e AcmeStudio Studio delle tecnologie e case study Studente: Marco Di Sabatino Di Diodoro Esame: Analisi e Testing di sistemi a componenti Professore:
Università degli Studi di Firenze Facoltà di Ingegneria Dipartimento di Sistemi e Informatica Corso di Laurea in Ingegneria Informatica Modelli e strumenti.
Cloud informatica V anno.
Simple Sentences in Italian
Corso di “Teorie e pratiche della traduzione” “La scrittura accademica attraverso le lingue e le culture: studio su corpus della voce autoriale” Dott.ssa.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Introduzione alle Classi e agli Oggetti in Java 1.
X. Specifications (IV).
Transcript della presentazione:

L D A rchitecture escription anguages

Introduzione ADLs : uno stato dellarte Non esiste pieno consenso su cosa è un ADL Per iniziare, in assenza di definizioni esatte, come prima e generica connotazione possiamo assumere (almeno) questo: ADL result from a linguistic approach to the formal representation of architectures, and as such they address the shortcomings of informal representations

Struttura ACriteri di valutazione Individuazione di un insieme di categorie logiche in funzione delle quali strutturare la valutazione. BLinguaggi considerati Individuazione dei linguaggi esaminati, breve presentazione di alcuni tra questi. CRisultati Valutazione comparativa. DConsiderazioni conclusive

.: fase A Approccio adottato (1) Domande possibili… … considerando loggetto (descrizione architetturale)… Vogliamo indagare la bontà di un ADL… Q1: Cosa dovrebbe comunque essere possibile inserire nella descrizione? Q2: Cosa dovrebbe, in funzione di esigenze particolari, essere possibile inserire nella descrizione?

.: fase A Approccio adottato (2) … considerando il soggetto (utilizzatore del linguaggio)… Q3(a): … inteso come lettura? Q3(b): … inteso come scrittura? Q3: Quali meccanismi dovrebbero essere presenti, in modo da agevolare lutilizzo del linguaggio… … ed in ogni caso… Q4: Attraverso il supporto di quali strumenti dovrebbe essere possibile utilizzare il linguaggio?

Categorie.: fase A Q1 Espressività Q2 Applicabilità Q3 Usabilità Q4 Efficacia Q3(a) Modularità, Evolvibilità Q3(b) Comprensibilità cosa? come? attraverso quali strumenti?

Espressività (1).: fase A descrizione SA = specifica strutturale ed extra-strutturale Il linguaggio dovrebbe permettere di esprimere unontologia architetturale di base + componenti, dotate di interfacce + connettori, dotati di interfacce + configurazioni + comportamento + proprietà non funzionali

Usabilità.: fase A Dovrebbe essere possibile, per unutenza ragionevolmente esperta, accedere alla specifica Accesso in scrittura: write & draw Accesso in lettura: read & look soggetto:architectsoggetto:reader oggetto:modello Comprensibilità + configurazione esplicita + notazione grafica + annotazioni Modularità + componenti composte + connettori composti Evolvibilità + tipi e stili, con relazioni + vincoli

Applicabilità (1).: fase A Il linguaggio dovrebbe permettere di esprimere una modifica architetturale che si verifica mentre il sistema è in esecuzione (high- availability) riconfigurazione dinamica: tipo di cambiamento e variabilità Creazione istanza + componente + connettore Eliminazione istanza + componente + connettore Riconfigurazione + programmata + ad hoc

Applicabilità (2) Il linguaggio dovrebbe permettere di rappresentare il concetto di variabilità proprio di una famiglia di architetture (product line) product line: punti di variazione.: fase A Entità architetturali + come opzioni + come alternative + associate a versione

Efficacia.: fase A Lutilizzo del linguaggio dovrebbe realizzarsi attraverso il ricorso a tool di supporto The usefulness of an ADL is directly related to the kinds of tools it provides to support architectural design, evolution, refinement, constraints, analysis, and executable system generation Scopo: comunicazione, analisi, generazione sistema statica e dinamica punti di vista multipli visualizzazione grafica animazione

Linguaggi.: fase B ABC/ADL Rapide MetaH Darwin Koala xADL 2.0 Jacal DAOP-ADL Acme C2 ADML ArTek Wright Resolve XADL 1.0 Adage Aesop GenVoca LILEANNA Little-JIL SADL Weaves UniCon considerati ABC/ADL ACME/Armani DAOP-ADL Darwin Jacal Koala MetaH Rapide xADL 2.0 Ne vedremo alcuni…

ABC/ADL (1).: fase B An ADL supporting component composition In sintesi Descrizione strutturale Component, Connector, provide player, request player, Config Descrizione extra-strutturale Properties SemanticDescription: { descrizione } Gerarchie di astrazione Componenti e connettori composti ESEMPI > 2002, Università di Pechino

ABC/ADL (2).: fase B Tipi, meccanismi di estensione e riuso: Distinzione tra tipo ed istanza, concetto di stile Sistema di tipi estensibile Relazioni di subtyping Relazioni di refinement Comprensibilità: Notazione testuale e grafica Configurazione esplicita 2002, Università di Pechino

ACME/Armani (1).: fase B The primary purpose of ACME is to provide an interchange format for architectural development tools and environments Armani is a FOPL-based sub-language that is used to express architectural constraints over ACME architectures In sintesi: Descrizione strutturale Component, Connector, Port, Role, System Descrizione extra-strutturale Properties list Gerarchie di astrazione Componenti e connettori composti (Representation) 1995/1998, Carnegie Mellon University ESEMPI >

ACME/Armani (2).: fase B Tipi, meccanismi di estensione e riuso: Sistema di tipi estensibile Design elements types, properties types, styles Concetto di subtype e di subfamily: costrutto extends … with Possibilità di specificare vincoli non predefiniti: Linguaggio Armani Distinzione tra Invariant ed Euristic Comprensibilità: Notazione testuale e grafica Configurazione esplicita 1995/1998, Carnegie Mellon University

Darwin/FSP (1).: fase B Darwin has features which permit the description of dynamic structures which evolve as execution progresses In sintesi Descrizione strutturale: Component, require, provide, bind, (configurazione) Descrizione extra-strutturale: Comportamento espresso tramite Finite State Process Gerarchie di astrazione: Componenti composte 1991, Londons Imperial College ESEMPI >

Darwin/FSP (2).: fase B Tipi, meccanismi di estensione e riuso Sistema di tipi estensibile Tipi parametrici Subtyping tramite derivazione Comprensibilità Notazione testuale e grafica Riconfigurazione dinamica Tipologia programmata Creazione istanza componente (lazy instatiation, direct dynamic instantiation) 1991, Londons Imperial College

Jacal.: fase B Our goal has been to build a tool that could be used to edit a systems architecture and then graphically simulate its behavior Descrizione strutturale Component, link, socket, (configurazione) Descrizione extra-strutturale Place-transition net, specificate solo per le componenti (il comportamento di un connettore è da considerarsi implicitamente definito nel tipo di appartenenza) Tipi, meccanismi di estensione e riuso Tipi predefiniti Relazioni di ereditarietà tra componenti Comprensibilità Configurazione esplicita Notazione grafica 1997, University of Buenos Aires ESEMPI >

Koala (1).: fase B With an architectural description language, you can make an explicit description of a configurations structure in terms of its components. This description makes both the diversity of the product family and the complexity of the individual products visible; thus, it serves as valuable tool for software architects In sintesi: Descrizione strutturale Component, provides, requires, (configurazione) Descrizione extra-strutturale Attributi di componenti inseriti nella clausola specials Gerarchie di astrazione Struttura interna introdotta dalla clausola contains 1997, Philips Consumer Electronics ESEMPI >

Koala (2).: fase B Tipi, meccanismi di estensione e riuso Sistema di tipi estensibile Interface subtyping Comprensibilità Notazione grafica Riconfigurazione dinamica Tipologia programmata Creazione istanza componente (limitatamente alle alternative di uno switch) Product line Interfacce opzionali Componenti alternative (tramite switch) 1997, Philips Consumer Electronics

Rapide (1).: fase B Rapide allows the simulation and behavioral analysis of architectures of such systems at an early stage in the system development process In sintesi: Descrizione strutturale Interface, public action, extern action, connect, (configurazione) Descrizione extra-strutturale Comportamento di componente: regole di transizione Gerarchie di astrazione Struttura interna implicitamente realizzata tramite encapsulation Comprensibilità Notazione testuale e grafica 1990, University of Stanford ESEMPI >

Rapide (2).: fase B Tipi, meccanismi di estensione e riuso Sistema di tipi estensibile Tipi parametrici Relazione di ereditarietà tramite il costrutto include Possibilità di specificare vincoli non predefiniti Pattern constraints (Rapide Constraint Language) Riconfigurazione dinamica Tipologia programmata, ad hoc(?) Creazione istanza componente Eliminazione istanza componente 1990, University of Stanford

xADL 2.0 (1).: fase B An architect in need of a unique set of modeling features must either develop a new architecture description language from scratch or undertake the daunting task of modifing an existing language. […] To remedy this situation, we have developed an infrastructure for the rapid development of new architecture description languages In sintesi: Descrizione strutturale,,, Gerarchie di composizione 2000, University of California

xADL 2.0 (2).: fase B Tipi, meccanismi di estensione e riuso Sistema di tipi estensibile Comprensibilità Configurazione esplicita Notazione testuale e grafica Product line Opzione: Alternativa: Versione: 2000, University of California

Risultati: espressività.: fase C = in parte

Risultati: usabilità (1).: fase C n.a. = non applicabile

Risultati: usabilità (2).: fase C = in un certo senso…

Risultati: applicabilità.: fase C = esternamente

Risultati: efficacia.: fase C -> = progetto proposto e correntemente assegnato (-> ) = progetto proposto * = non built-in

Osservazioni conclusive (1) Tutti i linguaggi prevedono la distinzione tra tipo ed istanza; alcuni consentono di stabilire delle relazioni tra tipi (tipicamente in termini di ereditarietà). Si potrebbe fare di più? Potrebbe essere utile accrescere linsieme di suddette relazioni, così da fornire maggiori possibilità nella scelta della direzione verso la quale far evolvere unentità. Abbiamo parlato di riconfigurazione dinamica (non di architettura dinamica…), ed abbiamo visto come, quasi sempre, si realizzi in forma programmata. Si potrebbe pensare di estendere la possibilità di evoluzione a runtime al concetto di tipo, ovvero non vincolare la creazione di nuove istanze ai tipi definiti in fase di design..: fase D

Osservazioni conclusive (2) Parlando di comprensibilità, abbiamo detto dellimportanza di poter ricorrere ad una rappresentazione grafica. Sarebbe interessante strutturare meglio la valutazione di questo aspetto, capire quali caratteristiche potrebbero contribuire a rendere più attraente un diagramma. Un ulteriore punto da considerare (per ovvie ragioni) è quello relativo alla capacità di un ADL di coesistere e di integrarsi con il linguaggio UML. Per quanto riguarda Acme, ad esempio, è presente la proposta di un plugin per la generazione di documentazione UML. Similmente, il prototipo ABC Tool permette di realizzare il mapping di una descrizione architetturale (in ABC/ADL) nel framework UML..: fase D

Osservazioni conclusive (3) Parlando di descrizione strutturale, lassunzione è stata quella di identificare in componenti e connettori le entità architetturali di base. Ma è proprio così? In realtà alcuni ritengono che sia necessario aggiungere un elemento ulteriore, un aspetto. Abbiamo scelto di non considerare, nella classificazione, questo nuovo termine: è comunque opportuno renderne conto, quantomeno in questa fase conclusiva. In particolare ne abbiamo riscontrato la presenza in due linguaggi, ABC/ADL e DAOP-ADL..: fase D

Esempi

ABC/ADL: componente Component DatingManager is BLACKBOARD.BlackBoard { Interfaces{ provide player DatingManager is BlackBoard.Entry {…} request player Agenda is BlackBoard.Notification {…} } Attributes {…} Properties {…} Dependencies {…} SemanticDescription {…} Definizione del tipo DatingManager: Indicazione dello stile di appartenenza: is.

ABC/ADL: configurazione Architecture DS_Architecture { uses { Component datingManager : DatingManager ; … } Config main { datingManager.Agenda connects datingManagerToAgenda.Callee } nome istanzanome tipo interfaccia componente interfaccia connettore Prima sezione dichiarativa: istanze di componenti e connettori (ed aspetti) Seconda sezione dichiarativa: topologia

ABC/ADL: composizione Component Dating_System is System { Structure { architecture DS_Architecture } Mapping { self.makeMeeting to datingManager.makeMeeting } } Definizione della componente composta Dating_System: Connessione tra linterfaccia della componente composta e linterfaccia della componente interna <<

ACME/Armani: connettore Definizione del tipo MessagePath: Connector Type MessagePath = { Roles {source; sink } Property expectedThroughput : float = 512; Invariant (queueBufferSize >= 512) and (queueBufferSize <= 4096); Euristic expectedThroughput <= (queueBufferSize / 2); } Condizioni che devono o che possono essere osservate Informazione non interpretata dal linguaggio: annotazione

ACME/Armani: configurazione System SimplePF : PipeFilterFam = { Component detectErrors : FilterT; Connector firstPipe : PipeT; Attachments { detectErrors.stdin to firstPipe.sink;} } Dichiarazione di unistanza di una famiglia (precedentemente definita) Dichiarazione delle istanze, di componenti e connettori, corrispondenti ai tipi definiti nella famiglia di appartenenza

ACME/Armani: composizione Component Server = { Port receiveRequest; Representation serverDetails = { System serverDetailsSys = { Component {…} … Connector {…} … Attachment {…} … } Bindings { connectionManager.externalSocket to server.receiveRequest } } Definizione della componente composta Server: Connessione tra linterfaccia della componente composta e linterfaccia della componente interna <<

Darwin: comportamento KOALA = (wake -> AWAKE), AWAKE = (eucalyptus -> sleep -> KOALA | sleep -> KOALA) Definizione del processo Koala: … allautoma LTS Dalla specifica FSP … 012 wakeeucalyptus sleep The FSP process algebra-like notation is used as a concise way of describing the Labelled Transition System (LTS) of the component for analysis purposes

Darwin: istanze dinamiche Struttura lazy inst a : atype; inst b : dyn btype; bind a.send -- b.wait; Struttura dinamica inst a : atype; bind a.createB -- dyn B; In condizioni normali listanziazione di una componente avviene in concomitanza della creazione di unentità parente. Sono possibili le seguenti due eccezioni: Inizialmente è presente solo listanza a : listanziazione di b avverrà quando a proverà ad accedere al servizio wait Replicazione: ogni volta che si verificherà una chiamata ad a.createB verrà istanziata una nuova componente B <<

Jacal: connettori (predefiniti) kill read write call fork Il comportamento di un link non prevede una specifica esplicita, essendo implicitamente definito nel tipo di appartenenza: call trasferisce il controllo e resta in attesa di un risultato

Jacal: componenti (predefinite) reentrant passive non reentrant Non può essere connessa a link di tipo read o write Non può essere connessa a link di tipo read, write, call o fork Può essere connessa solo a link di tipo read o write <<

Koala: componente Definizione del tipo CTvPlatform: component CTvPlatform { provides IProgram pprg; requires II2c slow, fast; contains component CFrontEnd cfre; component CTunerDriver ctun; connects pprg – cfre.pprg; cfre.rtun – ctun.ptun; ctun.ri2c – fast; } struttura interna: componente composta dettagli di connessione (non esiste un connettore esplicito)

Koala: connessioni A A B1 B2 B B A A m component C { provides … requires … contains … connects switch div.Fast in { a.r } out { b1.p } on false, { b2.p } on true; } 123 Interface = Interface Interface = Module Module = Interface 1,2: connessione tramite cable 3: connessione tramite switch <<

Rapide: componente Definizione del tipo Application: type Application is interface extern action Request (p : params); public action Results (p : params); behavior (?M in String) Receive(?M) => Results(?M); end Application Regola di transizione: Quando si osserva un evento di tipo Receive si genera in risposta un evento di tipo Results Lutilizzo del placeholder ?M indica la presenza dello stesso parametro nei due eventi

Rapide: tipi derivati Derivazione del tipo Colored Point dal tipo Point type Colored_Point is interface provides include Point; Color function() return Color_Map; end Interface Il meccanismo di derivazione, tramite il costrutto include, consente di copiare un insieme di dichiarazioni, quelle contenute nel tipo sorgente, nella definizione del tipo derivato Possibilità di aggiungere, nella derivazione, ulteriori opzioni: only except replace… by… << type Point is interface provides X_val : Integer; Y_val : Integer; Distance function(P : Point) return Integer; end Interface