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

Slides:



Advertisements
Presentazioni simili
XmlBlackBox La presentazione Alexander Crea 11 Aprile 2010 La presentazione Alexander Crea 11 Aprile 2010.
Advertisements

Survey su ADL XML-Based
UNIVERSITÀ DEGLI STUDI DI MODENA E REGGIO EMILIA
Oggetti Java.
Costruttori e Distruttori
Recupero debito quarto anno Primo incontro
Metodologia di analisi di una prova desame di informatica 1Analisi di una prova di maturità
Informatica Recupero debito quarto anno Terzo incontro.
Unità D2 Database nel web. Obiettivi Comprendere il concetto di interfaccia utente Comprendere la struttura e i livelli che compongono unapplicazione.
Introduzione alla programmazione A. Ferrari. Il linguaggio C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede.
PHP.
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
Analizzatori Sintattici con Cup Giuseppe Morelli.
Informatica 2 Lezione 4 Corso di laurea in matematica Informatica 2 Dott. Ing. Leonardo Vito Corso di laurea matematica indirizzo matematica per le applicazioni.
Metodologie di Programmazione = decomposizione basata su astrazioni
Università degli Studi di Modena e Reggio Emilia
Fondamenti di Informatica
XmlBlackBox La presentazione Alexander Crea 7 Giugno 2010 La presentazione Alexander Crea 7 Giugno 2010.
1 9: Progettazione Architetturale Obiettivo: stabilire la struttura globale di un sistema software Descriveremo diversi tipi di modello di architettura,
Gestione dei dati e della conoscenza (agenti intelligenti) M.T. PAZIENZA a.a
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
Calcolatori Elettronici III
Architettura Three Tier
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
Introduzione al linguaggio Java
Specifiche senza JML: uso delle asserzioni. 2 Asserzioni in Java Dal jdk 1.4 (da Febbraio 2002) cè meccanismo per gestire asserzioni Asserzione: espressione.
Derivazione tra classi
Perché.Net e non più COM/DCOM ? Superamento dei problemi di COM: Richiede una infrastruttura "non semplice" da ogni applicazione (ad esempio Class Factory.
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
INTRODUZIONE AD OMNET++
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
Argomenti della lezione
Introduzione alla modellazione di sistemi interattivi
ITIS LATTANZIO Unità Didattica Materia Informatica Funzioni in C++
SISTEMA DI TIPI PER JOLIE
U N INFRASTRUTTURA DI SUPPORTO PER SERVIZI DI FILE HOSTING Matteo Corvaro Matricola Corso di Reti di Calcolatori LS – Prof. A. Corradi A.A.
I Metodi in Java Il termine "metodo" è sinonimo di "azione". Quindi, affinché un programma esegua qualche istruzione, deve contenere metodi.
Gianfranco Zampolini Progetto per il corso di: Linguaggi e Modelli Computazionali LS EM Linguaggio per la Descrizione di un Evento Musicale.
Servizi Grid ed agenti mobili : un ambiente di sviluppo e delivering
Sistemi e Tecnologie Informatiche Requisiti per la realizzazione di un buon programma.
FASTVID RENTALS: CONCLUSIONI I PUNTI DI FORZA DEL PROGETTO, GLI SVILUPPI FUTURI 1.
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
Linguaggi e modelli computazionali LS Manni Tiziano
Programmazione ad oggetti
Survey sugli ADLs odierni Antonio Labella Matr Corso di Laurea Specialistica in Informatica Corso di Analisi e testing di sistemi basati su compomenti.
Analisi dettagliata e design
Ripasso su Java. Introduzione Per risolvere problemi complessi, i linguaggi di programmazione forniscono costrutti per realizzare nuove funzioni che trasformino.
Linguaggi e Modelli Computazionali LS Anno Accademico 2007/2008 Alessio Della Motta Un linguaggio per descrivere partite di Maraffone: il gioco più popolare.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 3 -Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 3 – Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
Sistemi basati su conoscenza (agenti intelligenti) Prof. M.T. PAZIENZA a.a
1 Laboratorio di Introduzione alla Programmazione §II MODULO §3 crediti §Esame e voto unico (su 6 crediti totali)
Corso di Analisi e Testing basato su componenti Acme e ArchJava: Studio e Integrazione Anna Lucia e Giuseppe Paoletti.
Sommario Oggetti immutabili e non Tipi Primitivi: String, Arrays.
Ingegneria del software Modulo 1 -Introduzione al processo software Unità didattica 3 -Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
Ingegneria del software Modulo 1 - Introduzione al processo software Unità didattica 3 -Modelli di fase d’analisi Ernesto Damiani Università degli Studi.
Progettare una classe 21 Febbraio La classe BankAccount Vogliamo realizzare una classe i cui oggetti sono dei semplici conti bancari. * Identifichiamo.
Muse2: MUSic Everywhere with WI-FI Progetto realizzato da: Bambini Stefano Bergamini Andrea Pierangeli Diego Bologna C.d.L.S. Ingegneria Informatica.
B IBLIO S ERVICE consultazione di articoli online Anna Riccioni Progetto per il corso di Reti di Calcolatori L-S Anno Accademico
SnippetSearch Database di snippet bilanciato e replicato di Gianluigi Salvi Reti di calcolatori LS – Prof. A.Corradi.
LIP: 4 Maggio 2007 Interfacce. Cos’e’ una Interfaccia una interfaccia e’ un particolare tipo di classe contiene solo la specifica non ha implementazione.
Protocolli di rete. Sommario  Introduzione ai protocolli di rete  Il protocollo NetBEUI  Il protocollo AppleTalk  Il protocollo DLC  Il protocollo.
1 Metodo I metodi sono uno strumento che i programmatori usano per strutturare i programmi, sia per renderli più facili da capire che per permettere il.
Introduzione all’Ereditarietà Pietro Palladino. Richiami UML Classe: descrizione di un insieme di oggetti software con caratteristiche simili Definisce.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

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

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

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.

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

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.

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.

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

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.

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

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? ?

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.

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

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

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

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:

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.

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.

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.

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";... };

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).

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à

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.