Thesis Proposals:

1. Reverse engineering of the interaction diagrams from Java code by means of a dynamic analysis based on Aspect Oriented Programming

The messages exchanged during the execution of a Java programs can be represented in the form of interaction diagrams. The objective of this thesis is the development of an Aspect Oriented Programming framework to intercept the messages exchanged among objects. Intercepted messages are then visualized in terms of interactions between objects (sequence diagrams).


2. Reverse engineering of Aspect Oriented code

Aspect Oriented Programming is an emerging programming paradigm with modularization mechanisms for the crosscutting concerns. While the separation of concerns contributes to simplifying code development and evolution, a high level view, showing the interactions between aspects and classes, is necessary for an overall system understanding. The objective of this thesis is to extract a high level view of an Aspect Oriented system, consisting of its classes and aspects and showing how these two modularization units interact with each other.


3. Extreme design: supporting XML code annotations for design recovery

By the term "extreme design" we mean the possibility to embed the design into the code, so that it can be automatically extracted from it when necessary. Extreme design fits into the Extreme Programming (XP) development process, which is centered around the source code and the techniques that improve its quality (regression testing, refactoring, coding standards, etc.). The objective of this thesis is to support the annotation of the source code in XML so that design views can be automatically extracted from it (e.g., by means of TXL).


4. Extreme design: using Aspect Oriented Programming to implement design recovery based on reflection

By the term "extreme design" we mean the possibility to embed the design into the code, so that it can be automatically extracted from it when necessary. Extreme design fits into the Extreme Programming (XP) development process, which is centered around the source code and the techniques that improve its quality (regression testing, refactoring, coding standards, etc.). The objective of this thesis is to develop an Aspect Oriented Programming framework for the addition of design information into the code. Such information is then retrieved by means of reflection and is exploited to build design views.


5. Web application testing: coverage testing and test case generation

Web applications involve a distributed, client-server architecture, usually with persistent data on the server and http-based communication between client and server. The participating components are written in a variety of programming languages, such as HTML, PHP, JavaScript, SQL, etc. Moreover, the user interaction consists of navigation through hyperlinks and form submission. Testing this kind of heterogeneous applications is a challenging task. The objective of this thesis is to develop a tool for the structural coverage of a Web application. Moreover, test data are automatically derived from the input values collected into the access log.


6. Smell detector for C++ code

Refactoring aims at improving the internal structure of an application while leaving its external behavior unchanged. So-called "bad smells" indicate the opportunity of refactoring interventions in existing code. The objective of this thesis is the development of a smell detector for the C++ language. Based upon a static code analysis, the smell detector identifies cases where refactoring could be applied to improve the design of the system.


7. State based testing implemented using Aspect Oriented Programming

Object-oriented systems can be tested by representing their evolution in terms of states and state transitions (state diagram) and by reaching a proper level of coverage of the state diagram. Traversal of the state transitions can be observed by means of Aspect Oriented Programming without any modification of the original code, which remains oblivious of the state observing aspect. The objective of this thesis is the development of an Aspect Oriented Programming framework for the state based testing of classes. Aspects trace the transitions from state to state, thus checking the level of coverage reached so far.


Contact: Paolo Tonella