Course Directory, contains lecture notes in PDF format, syllabus, reading material, homeworks, etc.

Home page of COM 3362

COM 3362 Advanced Object-Oriented Systems (AOOS) 

AOOS in 1999 has the theme of Component-Based and Aspect-Oriented
Design and Programming (CAOP). AOP is a relatively new technology 
that is however already used in commercial systems that are
under development. Consider the IBM
Component Broker Connector (CBC) Overview (www.redbooks.ibm.com) that is 
an already commercially available (March 1999) tool considered as a 
precursor of a full-fledged Enterprise Java Beans (EJB) implementation.

Quote: 
Business objects do not directly address user-interface 
aspects of a particular usage scenario or application. Neither are they
concerned with data storage technology. Ideally, they are usage and technology 
independent, reusable software building blocks. This is in definite contrast
to procedural software, which was prone to intermingle all these aspects.
Many information system characteristics have come to be considered 
more of an inhibitor than a promoter of progress.

Business objects represent a promissing path for coping with this situation 
by offering a clean decoupling of the concerns of your business domain
from those of the information systems technology as such.
End of Quote

Parts of this quote reads like a piece of Crista Lopes Ph.D. thesis 
(Northeastern University 1997, www.ccs.neu.edu/home/lieber/theses-index.html)
supported by Xerox PARC (Gregor Kiczales and his team). This is the first thesis
going into some depths of AOP. An important issue
in CAOP is to cleanly decouple concerns that cross-cut each other
thereby avoiding intermingled code.

The above IBM quote hints at OO being an enabling technology for CAOP.
This is true, however, it must be stressed that it very easy to write tangled 
object-oriented programs. Therefore we need a systematic method to translate
use cases into CAOP designs and EJB programs.

This course will cover selected topics from:

Aspect-Oriented Design and Programming
Component-based Programming
Software Architecture
Enterprise Java Beans as a technology to practice CAOP
Mapping of frameworks into application structures
Methodologies to derive reusable components from domain and feature analysis
Advanced Design Patterns
Generic Programming

The course will involve a project related to the banking domain where we
practice the concepts. For implementation we will use Java technology
including Java and the libraries, EJB, DJ (a simple version of Demeter, 
www.ccs.neu.edu/research/demeter/DJ) and Demeter/Java
(www.ccs.neu.edu/research/demeter/DemeterJava) for those who
already know it.

We will use the following resources:
AspectJ tutorial from Xerox PARC
Adaptive Plug-and-Play Components(APPC) tutorial from 
  University of Siegen (Germany) and Northeastern University
Papers on component-based programming
EJB documentation and software
Subject-Oriented Programming 
Composition filters
Work at the Object Management Group (OMG) on 
  standard business objects
Thesis on Generative Programming by K. Czarnecki 
Personalities and frameworks (www.ccs.neu.edu/home/lblando/personalities)
Mapping of frameworks into application structures

We will use the following framework definition from CBC:

A framework is a group of collaborating classes that structure the essence
of a solution for a particular domain. A framework identifies the key
abstractions for a domain, relates the abstractions to each other
and handles the basic flow of execution. Normally you need to customize
and extend a framework to make it fully operational.

The course will consist of lectures on the core concepts of CAOP, 
optional presentations
by students on project progress and Java technology (for students who would
like to do this). 

The prerequisites for the course are: COM 3230 (Object-Oriented Design) 
_or_ COM 3360 (Adaptive Object-Oriented Software Development).