La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

ArchJava e AcmeStudio Studio delle tecnologie e case study Studente: Marco Di Sabatino Di Diodoro Esame: Analisi e Testing di sistemi a componenti Professore:

Presentazioni simili


Presentazione sul tema: "ArchJava e AcmeStudio Studio delle tecnologie e case study Studente: Marco Di Sabatino Di Diodoro Esame: Analisi e Testing di sistemi a componenti Professore:"— Transcript della presentazione:

1 ArchJava e AcmeStudio Studio delle tecnologie e case study Studente: Marco Di Sabatino Di Diodoro Esame: Analisi e Testing di sistemi a componenti Professore: Henry Muccini

2 Introduzione Definizione di Architettura Software: L’architettura di un sistema software è la struttura del sistema, costituita dalle parti del sistema, dalle relazioni tra le parti e dalle loro proprietà visibili. ArchJava Jonathan Aldrich, Craig Chambers, and David Notkin AcmeStudio ABLE Group School of Computer Science Carnegie Mellon University

3 ArchJava Obiettivo: Connecting Software Architecture to Implementation Motivo: L’utilizzo di ADL per la modellazione di architetture spesso possono causare problemi di inconsistenza tra le specifiche e l’implementazione. Aumento dei problemi quando il software si evolve.

4 Le funzionalità di ArchJava La possibilità di specificare l’architettura dentro al codice del sistema Verificare la comunicazione tra i componenti - Controllo statico - Il codice e l’architettura evolvono insieme Flessibilità - Ha la possibilità di effettuare cambiamenti dinamici dell’architettura - Permette di adottare qualsiasi tecnica di programmazione

5 Linguaggio di ArchJava ArchJava ha aggiunto dei nuovi costrutti al linguaggio Java: Componenti - Classi con vincoli architetturali Porte - Definiscono l’interfaccia di comunicazione del componente - Specificano i metodi forniti e richiesti per la comunicazione Connessioni - Collegano le porte - I componenti possono comunicare solamente con i componenti a cui sono connessi e ai sottocomponenti.

6 Componente public component class Parser { public port in { requires Token nextToken(); } public port out { provides AST parse(); } AST parse() { Token tok=in.nextToken(); return parseExpr(tok); } AST parseExpr(Token tok) {... }... } - Rappresenta un oggetto nell’architettura - Deve rispettare i vincoli - Può comunicare attraverso le porte con la definizione dei metodi forniti e quelli richiesti. - Componenti possono spedire e ricevere oggetti Java attraverso le porte. - Nelle classi componenti può essere presente anche normale codice Java.

7 Le connessioni Le connessioni vengono usate per connettere le porte public component class Compiler { private final Scanner scanner = new Scanner(); private final Parser parser = new Parser(); private final CodeGen codegen = new CodeGen(); connect scanner.out, parser.in; connect parser.out, codegen.in; } Parser in out Codegen in Scanner out Compiler

8 Communication Integrity (1/2) Un programma che implementa la specifica di un’architettura deve far rispettare la communication integrity: - Communication Integrity significa che ogni componente può comunicare direttamente con il componente a cui è connesso nell’architettura. ArchJava garantisce questa proprietà attraverso l’architettura e la sua implementazione.

9 Communication Integrity (2/2) –ArchJava permette Chiamate tra componenti connessi Chiamate tra un componente è un suo sottocomponente Chiamate ad oggetti condivisi –ArchJava vieta Chiamate esterne di un sottocomponente Chiamate tra sottocomponenti non connessi

10 Domande Può ArchJava modellare l’architettura di un sistema complesso? E’ difficile trasformare un programma scritto in Java nel linguaggio ArchJava? La realizzazione di un programma in ArchJava aiuta lo sviluppo del software? ?

11 Caso di studio: Calcolatrice L’applicazione considerata è una calcolatrice che permette attraverso la riga di comando di effettuare calcoli matematici. Passo 1 Analisi dell’applicazione e comprensione della struttura. Passo 2 Classificazione dei vari componenti con modifica di alcuni metodi. Passo 3 Trasformazione del linguaggio Java in linguaggio ArchJava.

12 Caso di studio: Calcolatrice public component class Calculator { public static void main(String args[]) { new Calculator().run(); } public void run() { i.run(); } private final CalculatorInterface i = new CalculatorInterface(); private final Scanner s = new Scanner(); private final Parser p = new Parser(); private final Evaluator e = new Evaluator(); connect i.request, e.out; connect i.data, s.in; connect s.out, p.in; connect p.out, e.in; } Calculator Interface ScannerParser Evaluator o o o o i i i i Dichiarazione delle connessioni Instanzazione dei componenti Calculator Definizione di un classe componente

13 AcmeStudio AcmeStudio è un tool grafico per lo sviluppo di architetture software. Caratteristiche di AcmeStudio: -Si basa sul linguaggio Acme -Plugin di Eclipse -Ottimo framework -Possibilità di utilizzare molteplici tool per effettuare diverse analisi

14 Linguaggio Acme Componenti Connettori Sistema Porte Ruoli Rappresentazioni Mappe Il linguaggio Acme utilizza sette tipi di entità:

15 Definizione delle proprietà Comportamento a runt-time Protocolli di comunicazione Vincoli di scheduling Risorse utilizzate Le sette entità elencate in precedenza sono sufficienti per definire la struttura del sistema. Oltre alla descrizione della struttura esistono altre informazioni ausiliari (proprietà) che determinano:

16 Vincoli di progettazione Acme fornisce una sintassi speciale per la definizione dei vincoli di progettazione. I vincoli di progettazione vengono utilizzati dal tool per effettuare la verifica semantica del sistema sviluppato. Esempio: connected(client, server) Questo è un vincolo associato al sistema. La funzione restituisce vero se i componenti client e server sono connessi direttamente attraverso un connettore.

17 Utilizzo di AcmeStudio a run-time AcmeStudio permette anche l’analisi a run-time del sistema grazie cooperazione con altri tool. AcmeStudio è molto adatto come framework per includere altri tool per due motivi. Permette in modo facile la definizione dell’architettura e la creazione di nuovi elementi. Possiede ottime funzioni per osservare ed elaborare le informazioni provenienti dagli altri tools.

18 Esempio di analisi a run-time 4) Il modulo Agent effettua un report dei risultati che vengono visualizzati su AcmeStudio. 5) Il modulo Tailor verifica se i parametri sono accettabili. In caso negativo vengono effettuati dei cambiamenti nel modello interno dell’architettura. 6) Il modulo Runtime Manager contiene una tabella che visualizza i cambiamenti dell’architettura nel tempo. 1)Il modulo Agent ordina al modulo Manager di creare i vari controllori e di entrare in funzione. 2)I controllori iniziano ad effettuare le misurazioni (num. richieste del Client, lunghezza coda delle richieste). 3)Tutte le informazioni prelevate dai misuratori vengono elaborate e poi trasferite nel bus.

19 Caso di studio: Filtro (1/2) Questa applicazione è un modulo che viene utilizzato nella compressione (audio e video). Component Package : Filter = new Filter extended with { Port output : outputT = new outputT extended with { Property protocol : string = "char output";... }; Port input : inputT = new inputT extended with { Property protocol : string = "char input";... };

20 Caso di studio: Filtro (2/2) AcmeStudio permette di dettagliare ogni componente Il tool grazie alla logica del predicato (linguaggio Armani) permette di avere un controllo sulle conformità del modello (porte non collegate o protocolli di comunicazione non definiti, etc).

21 Conclusioni ArchJava integra l’architettura nel codice Vantaggi: Consistenza tra il modello e l’implementazione Precisa definizione della comunicazione tra i componenti Verifica automatica della correttezza attraverso un’analisi statica del tipo. Svantaggi: Difficoltà nella modellazione di sistemi complessi Non permette un dettagliata definizione delle proprietà

22 Conclusioni AcmeStudio è un tool che permette la descrizione dell’architettura di sistemi a componenti Vantaggi: Struttura l’organizzazione di un sistema in parti. Possiede le informazioni del sistema o delle parti che permettono di verificare astrattamente il comportamento. Possesso di tipi e stili che permettono la definizione di classi e famiglie di architetture. Analisi del sistema a run-time. Cooperazione con gli altri tool (esempio ArchJava). Svantaggi: Possibile inconsistenza tra il modello e l’implementazione.


Scaricare ppt "ArchJava e AcmeStudio Studio delle tecnologie e case study Studente: Marco Di Sabatino Di Diodoro Esame: Analisi e Testing di sistemi a componenti Professore:"

Presentazioni simili


Annunci Google