COMP 529 Fall 2007
Project 1 Description
Overview
The goal of project 1 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, to give you experience
with the design of software architectures, and to allow you to
discover and explore issues of architectural mismatch.
The term project will consist in the development of a simple software
application that integrates two large-scale components. The types of
allowable components and component models will be discussed in
class. However, consider that they should be large (e.g., more than
10,000LOC) and provide a sophisticated set of services. Examples
include CCFinder, the Mylyn Monitor plug-in, a complex GUI widget,
CheckStyle, Google Maps, etc. The application can be anything you like
that builds on existing components. You should discuss the project
with the TA and instructor prior to committing to your chosen
components.
Components and integration infrastructure will be discussed in detail
in class, and many concrete examples will be provided.
Teams
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.
Organization
There will consist of two deliverables. Please see the course schedule
for deadlines. All deadlines are firm. This is to ensure
fairness, a speedy feedback, and consistency with the course
schedule. Please plan ahead.
Deliverable 1: Project Overview
This first part will involve the following activities:
- Create you team.
- Choose the type of application you will implement.
- Choose the COTS you will reuse and the component model they follow.
The deliverable for this part of the project will be a 1-page email to
the TA that describes you team, application, and COTS. This part of
the project is worth 5% of the overall project 1 mark.
Deliverable 2: Application
In this part of the project you will test out your chosen COTS, and
implement your application.
The deliverable for this part of the project will include:
- A 6-page report (11pt font).
- All your project artifacts.
- A brief demo of you project to the TA.
The report should include:
- An overview of the application.
- A description of the COTS you chose and of the functionality they
were intended to provide to your application.
- A description of the strategy you used to ensure the COTS met
their requirements.
- An overview of the final architecture.
- A discussion of the architectural tradeoffs related to your
application.
- A discussion of the integration issues involved in your
application (with respect to the component model chosen).
This part of the project is worth 95% of the overall project 1 mark.
In evaluating your project, we will be looking for the following:
- A working application. Emphasis will be put on the integration code.
- A clear, succinct, and well-polished
overall presentation.
- A clear description of your architecture,
including the interface of your components.
- Insightful discussions that demonstrate in-depth reflection about
the issues encountered.
Avoid boilerplate, content-free text! (e.g., "we presented our
architecture, the element catalog, the list of interactions, and some
UML diagrams".
Academic Integrity
Except for the component reused and explicitly
documented as such in the project reports, each team must author the
entire code of their project.
McGill University values academic integrity. Therefore all students
must understand the meaning and consequences of cheating, plagiarism
and other academic offenses under the Code of Student Conduct and
Disciplinary Procedures (see http://www.mcgill.ca/integrity
for more information).
Resources
The project is an essential part of the course. It should be
assumed that completing the project will require readings (e.g.,
manuals, web resources, etc.) that go beyond the class readings listed
in the schedule. The Instructor and TAs will remain available
throughout the term to answer questions and provide suggestions about
the project. Some important topics related to the project will also be
covered in class.