Il lavoro tratta un dialetto di Java orientato al riuso del codice. Esso consta di due parti: dapprima forniamo un calcolo formale (WBTJ) per il linguaggio in modo da poter dimostrare che gode delle proprietà standard e successivamente descriviamo la struttura di un processore, da includere in un plug-in per Eclipse, utile per tradurre il codice in Java. E' possibile distinguere due tipi di riuso: il riuso a grana fine e quello a grana grossa. Java e altri linguaggi object-oriented supportano l'ereditarietà multipla per incoraggiare il riuso del codice ma tale strumento ha delle limitazioni siccome una classe può riusare solo il codice ereditato dalle sue superclassi e deve ereditare tutto ciò che è scritto in esse anche se contengono metodi per essa inutili: ciò potrebbe essere un problema perchè una classe potrebbe non essere in grado di gestire alcuni metodi e potrebbe non avere bisogno di tutti i campi della sua superclasse. Questo problema è dovuto al duplice ruolo delle classi: generatori di istanze e unità di riuso. Per superare questo problema, il nostro calcolo offre i trait: pure unità di riuso composte da soli metodi. Inoltre, abbiamo sottolineato l'importanza della programmazione a componenti in uno scenario d'impresa: questo approccio dovrebbe permettere alle aziende di capitalizzare il loro lavoro sviluppando software separati in componenti, ognuno dei quali potrà essere riusato in futuro. Inoltre, tale modularizzazione aiuta nelle fasi di analisi e specifica, molto importanti durante lo sviluppo di applicazioni vaste. Siccome i linguaggi tradizionali non forniscono al programmatore dei mezzi specifici per trattare con i componenti, in letteratura apparvero i box. Poichè nei linguaggi object-oriented gli oggetti sono le unità responsabili dell'esecuzione dei metodi, un box sarà una collezione di oggetti. Il nostro calcolo è il primo ad includere sia i box che i trait sposando la semantica operazionale dei primi con un sistema di tipi che permette di costruire le classi mediante i trait. Il codice risultante potrà essere tradotto in Java standard ed eseguito su una virtual machine che tenga conto del partizionamento dell'heap dovuto alla presenza dei box

This work is about a java dialect oriented to software reuse. It is divided in two parts: fi?rst we give a formal calculus (WBTJ) for the language to prove that standard properties hold on it, then we develope a preprocessor, included in a plug-in for the Eclipse IDE, for translating code in plain java. We distinguish two di?erent levels of software reuse: ?ne-grained reuse and coarse-grained reuse. Java and others object-oriented languages, support single inheritance to encourage software reuse but this instrument is limitated because a class can only reuse the code inherited from its superclasses and has to inherit everything written in them even if it just needs one method: this might be a problem because a class could not be able to handle some methods and does not necessarily need all the superclass fi?elds. This problem is due to the double role of classes: instance generators and units of reuse. To overcome this problem, our calculus uses traits: pure units of reuse consisting only of methods. Moreover, we point out the importance of component-oriented programming in an enterprise scenario: this approach should allow the enterprise to capitalize its work by developing software separated in components each of whose can be reused in future works. Besides, this modularization helps modular analysis and speci?cation, very important features in developing wide applications. Since traditional languages do not give specifi?c means to the programmer to deal with components, boxes were introduced in literature. Because of in object-oriented languages objects are the units responsible for executing methods, a box is a collection of objects. Our calculus is the ?rst one including both boxes and traits by mar- ring a boxes operational semantics together with a type system that allows building classes from traits. The resulting code can be trans- lated in standard java and executed by a virtual machine that takes into account the heap partitioning due to the presence of boxes

Riuso a grana fine in ambiente component-oriented

DE LUCA, MARCO
2009/2010

Abstract

This work is about a java dialect oriented to software reuse. It is divided in two parts: fi?rst we give a formal calculus (WBTJ) for the language to prove that standard properties hold on it, then we develope a preprocessor, included in a plug-in for the Eclipse IDE, for translating code in plain java. We distinguish two di?erent levels of software reuse: ?ne-grained reuse and coarse-grained reuse. Java and others object-oriented languages, support single inheritance to encourage software reuse but this instrument is limitated because a class can only reuse the code inherited from its superclasses and has to inherit everything written in them even if it just needs one method: this might be a problem because a class could not be able to handle some methods and does not necessarily need all the superclass fi?elds. This problem is due to the double role of classes: instance generators and units of reuse. To overcome this problem, our calculus uses traits: pure units of reuse consisting only of methods. Moreover, we point out the importance of component-oriented programming in an enterprise scenario: this approach should allow the enterprise to capitalize its work by developing software separated in components each of whose can be reused in future works. Besides, this modularization helps modular analysis and speci?cation, very important features in developing wide applications. Since traditional languages do not give specifi?c means to the programmer to deal with components, boxes were introduced in literature. Because of in object-oriented languages objects are the units responsible for executing methods, a box is a collection of objects. Our calculus is the ?rst one including both boxes and traits by mar- ring a boxes operational semantics together with a type system that allows building classes from traits. The resulting code can be trans- lated in standard java and executed by a virtual machine that takes into account the heap partitioning due to the presence of boxes
ENG
Il lavoro tratta un dialetto di Java orientato al riuso del codice. Esso consta di due parti: dapprima forniamo un calcolo formale (WBTJ) per il linguaggio in modo da poter dimostrare che gode delle proprietà standard e successivamente descriviamo la struttura di un processore, da includere in un plug-in per Eclipse, utile per tradurre il codice in Java. E' possibile distinguere due tipi di riuso: il riuso a grana fine e quello a grana grossa. Java e altri linguaggi object-oriented supportano l'ereditarietà multipla per incoraggiare il riuso del codice ma tale strumento ha delle limitazioni siccome una classe può riusare solo il codice ereditato dalle sue superclassi e deve ereditare tutto ciò che è scritto in esse anche se contengono metodi per essa inutili: ciò potrebbe essere un problema perchè una classe potrebbe non essere in grado di gestire alcuni metodi e potrebbe non avere bisogno di tutti i campi della sua superclasse. Questo problema è dovuto al duplice ruolo delle classi: generatori di istanze e unità di riuso. Per superare questo problema, il nostro calcolo offre i trait: pure unità di riuso composte da soli metodi. Inoltre, abbiamo sottolineato l'importanza della programmazione a componenti in uno scenario d'impresa: questo approccio dovrebbe permettere alle aziende di capitalizzare il loro lavoro sviluppando software separati in componenti, ognuno dei quali potrà essere riusato in futuro. Inoltre, tale modularizzazione aiuta nelle fasi di analisi e specifica, molto importanti durante lo sviluppo di applicazioni vaste. Siccome i linguaggi tradizionali non forniscono al programmatore dei mezzi specifici per trattare con i componenti, in letteratura apparvero i box. Poichè nei linguaggi object-oriented gli oggetti sono le unità responsabili dell'esecuzione dei metodi, un box sarà una collezione di oggetti. Il nostro calcolo è il primo ad includere sia i box che i trait sposando la semantica operazionale dei primi con un sistema di tipi che permette di costruire le classi mediante i trait. Il codice risultante potrà essere tradotto in Java standard ed eseguito su una virtual machine che tenga conto del partizionamento dell'heap dovuto alla presenza dei box
IMPORT DA TESIONLINE
File in questo prodotto:
File Dimensione Formato  
285189_tesi.pdf

non disponibili

Tipologia: Altro materiale allegato
Dimensione 1.21 MB
Formato Adobe PDF
1.21 MB Adobe PDF

I documenti in UNITESI sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/20.500.14240/70915