Università degli studi di Napoli “Federico II” Facoltà di Ingegneria Corso di laurea in Ingegneria Informatica Capri Feb. 2004 Integrazione di meccanismi adattativi in un ORB CORBA utilizzando la programmazione orientata agli aspetti Relatore Ch.mo Prof. Domenico Cotroneo Candidato Luciano D’Andrea Matricola 41/2143 Correlatore Ing. Armando Migliaccio www.mobilab.unina.it [email protected] ::. Contesto Capri Feb. 2004 Sistemi di mobile computing: Ad hoc computing Contesto di esecuzione dinamico e non predicibile Nomadic computing Applicazioni in grado di modificare il loro comportamento www.mobilab.unina.it [email protected] ::. Contesto Environment dei middleware tradizionali: Nodi e reti fisse Contesto di elaborazione statico Features delle piattaforme middleware per supportare l’adattatività Analizzare il contesto Cambiare il comportamento di un sistema www.mobilab.unina.it [email protected] Capri Feb. 2004 ::. Obiettivo Integrazione di meccanismi adattativi su una piattaforma CORBA Fornire all’ambiente di sviluppo: Metodi in grado di definire specifiche e vincoli da rispettare Meccanismi adattativi in grado di variare dinamicamente il comportamento delle applicazioni Utilizzo dell’Aspect-Oriented Programming (AOP) www.mobilab.unina.it [email protected] Capri Feb. 2004 ::. Aspect-Oriented Programming Capri Feb. 2004 Paradigma di programmazione che si basa sulla Separation of Concerns (SoC) Decomposizione delle funzionalità di un sistema software in vari concerns (competenza o area di interesse): Core concern (ben modellati dall’ OOP) Crosscutting concern (logging, tracing, sicurezza,…) www.mobilab.unina.it [email protected] ::. AspectJ Capri Feb. 2004 AOP introduce una nuova unità modulare, detta aspect, che realizza in maniera separata un crosscutting concern AspectJ è l’estensione aspect-oriented di Java che introduce nuovi costrutti nel linguaggio: pointcut (join point) advice inter-type declaration www.mobilab.unina.it [email protected] ::. Adattatività mediante AOP Join point model: Il join point è un punto nell’esecuzione di un programma. codice programma Capri Feb. 2004 Aspect Il pointcut è un costrutto, all’interno di un aspect, che definisce un join point pointcut L’advice è un costrutto dell’aspect che definice il codice da inserire (before, after o around) Quando viene riscontrato un joinpoint definito da un pointcut, si inserisce l’advice associato. join point advice L’adattatività può essere vista come un concern separato e può essere implementata in un aspect www.mobilab.unina.it [email protected] ::. Approccio Capri Feb. 2004 Modifica dell’IDLCompiler per integrare gli aspect sulla piattaforma CORBA IDLCompiler _InterfaceNameStub.java FileName.idl ADACompiler InterfaceNamePOA.java + AdaStub.aj AdaSkeleton.aj Java Compiler + AspectJ Compiler _InterfaceNameStub.class www.mobilab.unina.it InterfaceNamePOA.class [email protected] ::. Scenario di studio Capri Feb. 2004 Fornire meccanismi in grado di modificare il comportamento delle applicazioni in base a vincoli e specifiche Sono stati affrontati due esempi concreti di specifiche: Delay Fault tolerance www.mobilab.unina.it [email protected] ::. Strategia di adattamento al delay Capri Feb. 2004 Definire il vincolo sul delay inter-type declaration Intercettare l’esecuzione ad servizio di un oggetto CORBA pointcut Valutare il valore di delay (T* e Tmonitor) e applicare una strategia in grado di ridurre il delay www.mobilab.unina.it advice [email protected] ::. Adaptive Stub Capri Feb. 2004 public void stubFile.setDelay(double T) {this.delay=T;} pointcut requestServiceNumDelay(stubFile stub, paramsType paramsName) : execution(retType srvName(ParamsType)) && args(paramsName) && target(stub); retType around(stubFile stub, paramsType paramsName) : requestServiceNumDelay(stub, paramsName) { ... } www.mobilab.unina.it [email protected] ::. Strategia di adattamento alla fault tolerance Definire il tipo di operation mode: Livello di ridondanza: 1MR, 2MR, 3MR Adjudication strategy: First Avalaible (FA), Major Voting (MV), Fail Silent (FS) 1MR FA 2MR 3MR MV FS www.mobilab.unina.it [email protected] Capri Feb. 2004 ::. Strategia di adattamento alla fault tolerance Intercettare l’esecuzione dell’operazione Inoltrare la richiesta alle repliche e creare la risposta in base al tipo di adjudication strategy www.mobilab.unina.it [email protected] Capri Feb. 2004 ::. Adaptive Skeleton public void skeletonFile.setOpMode(int num, String AdjStr) pointcut executionServiceNum(paramsType paramsName) : call(retType srvName(paramsType)) && within(skeletonFile) && args(parmasName); retType around(paramsType paramsName) : executionServiceNum(paramsName) { ... } www.mobilab.unina.it [email protected] Capri Feb. 2004 ::. Conclusioni e sviluppi futuri Capri Feb. 2004 L’AOP si è dimostrato uno strumento efficace per realizzare l’adattività dei middleware: Intervenendo sulle applicazioni e sul middleware in maniera trasparente Fornendo una logica flessibile a specifiche differenti I risultati dell’analisi condotta aprono scenari per nuovi sviluppi quali: Estensione delle casistiche di vincoli e specifiche Utilizzo dei meccanismi aspect-oriented a run-time www.mobilab.unina.it [email protected]