The course aims to expose the student to techniques and technologies to increase reusability, maintenance and testing of software concerns. In particular, the teaching will focus on definining the concept of software concerns, including crosscutting concerns, and on their extrusion into independent computational units, simpler and easily composable. In this regard, the most recent and innovative software development techniques will be presented, such as, but not limited to, aspect-oriented programming, computational reflection, context-oriented programming, software product-line, bytecode and intermediate language engineering, etc.
Expected learning outcomes
The student will have to demonstrate the ability to develop and implement applications whose concerns are separate and subsequently composed using the techniques presented in class. The student will also have to be able to recognize a software concern within an existing application and to separate it from the rest of the code using one of the techniques/technologies seen in class. The student must also demonstrate that he has developed the ability to write better code (simpler, more reusable and more maintainable) by applying the techniques and concepts provided by the teaching.
Lesson period: First semester
(In case of multiple editions, please check the period, as it may vary)
- Computational Reflection - Meta-Object Protocol and Separation of Concerns - Java Reflection - Dynamic Proxy and Class Loading - Annotations - OpenJava, Javassist and BCEL - AOP and AspectJ - AOP and Refactoring
Prerequisites for admission
Knowing how to write and debug programs that use the basic constructs of programming. Knowing how to solve an algorithmic problem. Knowing at least one programming language.
It is strongly suggested to have passed at least one exam about programming in the bachelor degree.
Frontal lectures and some exercises in the exam preparation.
Books - Ira R. Forman and Nate B. Forman. Java Reflection in Action. Manning Publications. 2004. - Ramnivas Laddad. AspectJ in Action: Practical Aspect-Oriented Programming. Manning Publications Company. 2003.
Assessment methods and Criteria
The exam is written (at the computer) and it will last 4 hours. Each session proposes two exercises one for each of the two parts of the course. The exam will test the acquired programming skills taught in the course.