Aspect-Oriented Software Development ---------------------- Date: June 2005, 2 days Tuition: $800 (includes coffee breaks and lunch and a copy of the course notes) ---------------------- Background Aspect Oriented Software Development (AOSD) is an emerging new methodology which aims to provide further mechanisms for better code modularity, ease of software evolution and decrease in software complexity. The need to develop, manage and extend large software systems in the 80's gave birth to object-orientation (OO), changing the industry's view and practice of software development. AOSD and OO are not competing technologies, but rather cooperating. OO provides a wonderfull mechanism for modelling common behavior on a hierarchy of objects. Modelling behavior that spans across multiple, and otherwise unrelated object models of a hierarchy becomes problematic in OO systems. This kind of behavior "crosscuts" the existing object models. AOSD comes to address this need and complement OO techiniques. Within a new module, called an aspect, behavior that crosscuts can be defined as "advice". Furhermore, the points where the crosscut occurs can be expressed inside an aspect, defined as pointcuts. Combining advice with pointcuts results in common behavior being installed at the points of interest inside the object model. The recent technological advances of the AOSD community have produced an important pool of AOSD tools that are being used in the developement of industrial strength software. The ideas behind AOSD along with the overall benefits that they provide, will be discussed. Furthermore, real life example applications, deploying AOSD ideas, will be presented in order to provide hands-on experience in both the current AOSD tools available and the implementation of AOSD software systems. Course Material =============== Lectures will be accompanied by lecture notes. Participants are encouraged to study a basic text prior to attendance: Aspect-Oriented Software Development With Use Cases Jacobson/Ng Addison Wesley Who should attend ================= Anyone who develops or maintains complex software systems: software architects, managers, developers and testers. Familiarity with Java and Eclipse is desirable. Contents Motivation and Concepts What are the key concepts? Different instantiations of the key concepts through hands-on exercises. Aspect-Oriented Design You can do OO design and implementation in C and in a similar way, you can do aspect-oriented design and implementation in Java. Aspects for Debugging A gentle way of starting to use aspects Aspects for Prototyping Combining aspects and code generation gives a quick way to develop prototypes AOP Tools There are many tools available. We give our recommendations about these tools. How is the Field Developing How should you respond to challenges and opportunities Instructors/Course Developers ============================= Karl J. Lieberherr Professor Director Center for Software Sciences Jeffrey Palm PhD student and former AspectJ team member Therapon Skotiniotis PhD student Pengcheng Wu PhD student College of Computer and Information Science Northeastern University