Course Directory, contains lecture notes in PDF format, syllabus, reading material, homeworks, etc.
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).