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