CSG 260 Aspect-Oriented Software Development (Advanced Software Development)

Course Description:

A new programming technology is emerging, called Aspect-Oriented Programming (AOP) and more generally, Aspect-Oriented Software Development (AOSD, see aosd.net). This technology provides well-modularized implementations of crosscutting concerns leading to more flexible and simpler programs. Adaptive Object-Oriented Software Development is an interesting subfield of AOSD focussing on a very useful family of crosscutting concerns, called traversal-related concerns. Conversely, we consider aspect-oriented software development as a special case of a general notion of adaptive programming in that good aspect-oriented programs are adaptive.

This course provides state-of-the-art techniques and concepts for software development with a focus on proper separation of concerns. We will review the history of software development and encounter different techniques for separation of concerns like functions and objects. We will identify limitations in current software development practice that lead to bad separation of concerns. We will touch on general-purpose aspect-oriented techniques (AspectJ) that lead to better separation of concerns. Then we will identify limitations in those general-purpose techniques and point to special purpose aspect-oriented techniques. We will use the Demeter Method as an example of a special purpose aspect-oriented technique.

This course introduces both the aspect-oriented and adaptive approach to software development and compares them to other approaches in the context of Generative Programming. Loose coupling between software artifacts is a theme used throughout the course. Specifically, we will learn about loose coupling between structure and behavior which leads to adaptiveness. Adaptive programming views "structure" as an aspect which crosscuts behavior. We will also look at many other aspects such as synchronization and remote invocation. We will study the basic concepts of aspect-oriented programming (an AOP system has five key ingredients) and how they relate to the concepts of adaptive programming.

Course Objectives: Learn new skills in software development which allow you to develop significantly more flexible software. Acquire a working understanding of AOP through the use of AspectJ. Acquire a clear understanding of the adaptive object-oriented paradigm through five architectural patterns; Structure-Shy Traversal, Selective Visitor, Structure-Shy Object, Class Graph and Growth Plan. Apply the aspect-oriented paradigm and the adaptive object-oriented paradigm to problems solving, including the implementation of a project. Understand the connections between the adaptive object-oriented approach and the aspect-oriented approach and how they fit into generative programming.

Qualified students are encouraged to produce a publishable paper as part of this course. A good example is an OOPSLA 2003 publication in the 3D track produced by students in this course. You are encouraged to read this paper early in the course: XAspects: Winter 2003 Quarter OOPSLA 2003 Publication .

Course Information:

Thursday 6-9 pm 210 SH

Required text book:

@BOOK{CE00:gp,
AUTHOR = "Krysztof Czarnecki and Ulrich Eisenegger",
TITLE = "Generative Programming: Methods, Tools and Applications",
PUBLISHER = "Addison-Wesley",
YEAR = "2000",
}

Recommended text books:

``Adaptive Object-Oriented Software: The Demeter Method
with Propagation Patterns'' by
Karl J. Lieberherr, PWS Publishing Company, ISBN:           0-534-94602-X.
Also available from this page (CSG 260 Resources link) and
on the Demeter home page.
Selected chapters are available from Gnomon Copy
(see CSG 260 Resources link).

There are several books on AspectJ available. Choose one.
(e.g. at amazon.com)

Prerequisites: CSG 111 or CSG 711. 
Qualified students may take the class without this prerequisite.
Please talk to the instructor.

Course requirements:

The grade will be based on an open-book midterm (twenty per cent) and
an open-book final examination (twenty per cent),
and the homework solutions (twenty percent)
which are primarily programming exercises
and the project
(forty percent).
In some courses, there is no final exam and the weight is given
to the project.

Homework: Five homeworks, one project 

Office hours: see last few lines of my home page.

Teaching Assistant: To be announced.

Course URL: 
CSG 260 Home Page (this file: http://www.ccs.neu.edu/home/lieber/courses/csg260/f03/f03.html)

Earlier versions of the course:
http://www.ccs.neu.edu/home/lieber/com3360.html

Examinations: Midterm and final 

Computer Language: Java and AspectJ. 
AspectJ is learned in the course.

Computer Facilities: Any computer which runs Java. 
Internet access for downloading homeworks, 
handouts, software and documentation 
of DemeterJ, AspectJ, DAJ and DJ (tools for aspect-oriented programming 
available in Java source form).

Project: In the second half of the course you implement a project 
using adaptive and aspect-oriented techniques. 


Course Outline by Topical Areas (to be extended):

Thinking adaptively (Polya's Inventor Paradox) 

Separation of Concerns and Concern-shyness

Generative, Aspect-Oriented and Adaptive Programming

Domain Engineering and Feature Modeling

Adaptive software by example 

The architectural patterns behind Adaptive Programming 

Traversal specifications and strategies 

The Law of Demeter, Shyness and Aspects 

Data binding approaches (including XML data binding)

Class dictionaries, class graphs, strategy graphs 

Design patterns for adaptive object-oriented software 

Numerous case studies  

A new feature this fall will be an increased use of Aspect-Oriented Programming ideas. You are encouraged to use AspectJ in your project. AspectJ is a popular extension to Java and an early version was developed by Dr. Crista Lopes, a former Northeastern PhD student, while working at PARC.

The use of DJ has been very successful and we will continue to initially use DJ to write adaptive programs in plain Java. DJ: A simple tool for Java programmers. Read the DJ Fact Sheet first.

DAJ on Source Forge .

CSG 260 Resources

First assignment: answer a questionnaire, and send me your answers by noon on Monday of second week of classes.

UML information you find on the web: Rational, OMG. Look for UML 1.3, the latest version now. UML 2.0 is in preparation.
Archive of class messages .
Using Java compilers at CCS.
Course Directories .
Syllabus (Postscript).
Homeworks.
Links to individual project pages (under construction) .
Recent publications (they are sources for projects). Check the last few entries.
Project ideas.
Lecture Notes .
DemeterJ and AP-Studio Resources.
Course progress.
Old exams (Practice exams) .
FALL 97 TECHNOLOGY TRANSFER PROJECT (Luis Blando).


Instructor's Home page.