CS 586 -
CS 586 Aspect-Oriented Software Development
One of the most important principles in software engineering for coping with complexity and achieving quality software is the separation of concerns principle. This principle states that a given design problem involves different kinds of concerns, which should be identified and separated in different modules. The history of software development has experienced an evolution of different programming languages and design methods that have provided useful modularity mechanisms. However, as it is experienced in practice and generally acknowledged by researchers, it appears that these approaches are inherently unable to modularize all concerns of complex software systems. Some concerns like synchronization, recovery and logging tend to be more systemic, crosscut a broader set of modules and as such cannot be easily specified in single modules. This increases complexity and reduces several quality factors of software, such as adaptability, maintainability and reusability.
Aspect-oriented software development (AOSD) is an
advanced technology for separation of concerns (SOC), which provides explicit
concepts to modularize the crosscutting concerns and compose these with the
system components. This course will provide an in-depth analysis of this
advanced separation of concerns paradigm and teach the state-of-the-art AOSD
It is -highly- recommended that you have followed a course on object-oriented software development, know the fundamental object-oriented concepts, have sufficient knowledge on UML, and have sufficient programming skills in Java.