COMP 529 Fall 2006
The goal of the project is to give you hands-on experience with
component technology, to give you a sense of the issues involved
with the reuse of large-scale components, and to give you experience
with the design of software architectures.
The term project will consist in the development of a software
application. The application can be anything you like that meets the
following minimum requirements:
Figure 1 depicts this basic architecture.
- It comprises a component (Module 1), which uses to
existing, common-of-the-shelf components (COST) (COTS 1 and
COTS 2). CTOS 1 can be a small component (e.g., widget, Java
Bean, or small library) and COTS 2 must be a larger component (e.g.,
Eclipse plug-in or executable application).
- Module 1 must itself be a component that will be integrated as a
black-box into your application (Module 2).
- Modules 1 and 2 must be integrated using an existing composition
infrastructure (the Eclipse platform is recommended).
Figure 1. Software architecture for the project
The project will be done in teams of two. Both team members
will be jointly responsible for the entire project, and for reaching
the learning objectives of the project. Students will be responsible
for forming their own team.
The project will be broken down into three
Deliverable 1: Project Architecture
This first part will involve the following activities:
The deliverable for this part of the project will be a 4-page report
on all the points above (details in class). This part of the project
is worth 20% of the overall project mark.
- Choose the type of application you will implement.
- Choose the COTS you will reuse.
- Create a testing plan for your two COTS and implement the
plan (details in class).
- Choose and test-drive your infrastructure of choice.
- Detail the exact decomposition of functionality between Modules 1
- Design the complete architecture of your system and the
architecture of Module 1.
Deliverable 2: Module 1
For this part of the project you will implement and test Module 1.
The deliverable for this part of the project will be an 8-page report
documenting your project so far (4 of the 8 pages will be your first
report!). This part of the project is worth 30% of the overall project
Your overall objective for Deliverable 2 will be to demonstrate,
through your paper, that you have implemented Module 1, and that you
have done so in a way that supports your architectural requirements.
In evaluating your deliverable 2, we will be looking for the follwing:
Avoid boilerplate, content-free text! (e.g., "we presented our
architecture, the element catalog, the list of interactions, and some
- A clear, succint, and well-polished presentation that takes into account the
feedback given on deliverable 1.
- Refinements to your overall architectural documentation taking
into account anything that you may have learned or discovered while
implementing module 1.
- A precise description of the interface of your components, and
especially Module 1.
- A description of the design of your module 1 (including at least 1
- A description of your testing strategy for Module 1.
- Rationale information that will help us understand your design and
the justification for your decisions.
- Pertinent comments on your experience.
Deliverable 3: Module 3
For this part of the project, you will extend Module 1 so that it can
be deployed as a component, and complete your application by
developing Module 2 and integrating it with Module 1.
The deliverable for this part of the project will be an 12-page report
documenting your project (most of which will be from your first 2
reports). You will also be required to perform a live demo of your
application in front of the instructor and TA, and answer questions
about the design, implementation, and testing of your application
(with the source code available for inspection and discussion). The
deliverable will also include the entire application (source and
binaries). This part of the project is worth 50% of the overall
Except for the component reused and explicitly
documented as such 