Managing Software Development
Spring 2008
Karl Lieberherr  

Project 8: 
How an architectural style influences a software project

Out: March 17, 2008

Due date: March 24, 2008 

This project consists of two simple parts so that you have time to prepare
for the midterm. 

An important decision in managing
a software project is to choose
the architectural style for the system.

The purpose of this project is to illustrate
the effect of a change of the architectural style
from DemeterF to DJ. Both styles support structure-shy programming.

A quote from:
http://www.ibm.com/developerworks/rational/library/feb06/eeles/

Most architectures are derived from systems that share a similar set of concerns. 
This similarity can be described as an architectural style, 
which can be thought of as a particular kind of pattern, 
albeit an often complex and composite pattern 
(a number of patterns applied together). 
Like a pattern, an architectural style represents a codification of experience, 
and it is good practice for architects to look 
for opportunities to reuse such experience.

So far we used the architectural style
of normal oo and the architectural style
of AP-F implemented in DemeterF.
AP-F is a structure-shy architectural style.

For a description of the patterns behind this style:
http://www.ccs.neu.edu/research/demeter/adaptive-patterns/AOP/Structure-Shy-Traversal

In project 7, part 3, our project was tree processing
and we used the architectural style
of DemeterF.

In project 8 we use instead the
architectural style of visitor programming
as implemented by the DJ library.

PART 1:

Implement the functions Incr and Rev shown in the BST.pdf document using DJ.

PART 2:
Also implement the computation of the type of a raw material
(a CSP formula) using DJ (compute the fractions of the constraints that
use a particular relation).

Hint: consider using stacks as fields of your visitors.

http://www.ccs.neu.edu/research/demeter/DJ/
contains a link to the installation instructions.

DJ is like DemeterF a Java library.

What to turn in:
The program for parts 1 and 2
along with test cases etc.

Also include a brief discussion about which of
the architectural styles you prefer for each of the parts.