Monday, November 9, 2009

Project 3

Due date: Mon, 7 Dec (firm)

Group project

Objectives

An understanding of
  • message-based service integration
  • patterns of (message-based) enterprise application integration
  • Java Messaging Service (JMS)
  • Apache ActiveMQ framework
Project Description and Background

In this project, you will develop a message-based model of a simple student-response system (classroom clickers).

Classroom clickers are a simple, inexpensive way to bring interactivity into the classroom. A clicker is a hardware device that resembles a remote control but includes a small (usually LCD) display in addition to several response keys. Each classroom has its own channel to which students in the room should set their clickers. To query the students, the instructor opens a poll on the instructor console and verbally or visually expresses a multiple-choice question; the students then press the key on their clicker that corresponds to their answer and receive confirmation that their response has been received; the instructor then closes the poll, and no further responses are accepted. This process can then be repeated with other questions as needed.

Further background information is available here:
Functional Requirements

The device you will model in this project is described here.

Your system will have a simple text-based interface (CLI) to control the instructor console and the clickers. Valid commands are
  • clicker N channel C - set the clicker with the given number to transmit on the specified channel
  • clicker N respond R - send the specified response from the clicker with the given number and (asynchronously) report whether or not the system has confirmed that it received the response
  • classroom C open R - open a poll in the specified classroom with the given number of possible answers (numbered from 0 to R - 1)
  • classroom C close - close the poll and print the number of responses for each possible answer
In any one classroom, there can be at most one open poll, but polls in different classrooms can overlap in time. Also assume all clickers have already been registered.

Your system should be configured to include three classrooms numbered 70 through 72 and five clickers numbered 500 through 504. Here is an example session with such a system; system responses are shown in italics.

clicker 500 channel 69
clicker 500 channel 70
registered on channel 69
clicker 500 respond 2
channel 70 not accepting answers
classroom 70 open 5
clicker 500 respond 7
channel 70 received invalid answer from clicker 500
clicker 500 respond 4
channel 70 received valid answer from clicker 500
clicker 501 channel 70
clicker 501 respond 2
channel 70 received valid answer from clicker 501
classroom 70 close
responses: {0=0, 1=0, 2=1, 3=0, 4=1}

Architectural and Other Nonfunctional Requirements

Please use the SoccerStadiumActiveMQ example from the repository as a starting point for all aspects of this project, including the text-based interface. Similarly to the example, your system should model classrooms and clickers as separate objects.

Furthermore, the following nonfunctional requirements apply:
  • The project is managed using Maven.
  • The system is configured using Spring.
  • Communication among components is provided using ActiveMQ (an embedded instance is recommended) through Spring's JMS support.
  • To increase reusability, the POJOs (components providing the logical functionality) should be architecturally separate from the wrappers that connect them with JMS and the CLI.
  • The system should include component-level unit tests of the POJOs as well as integration testing of the entire system. (The example above could be one integration test.) To facilitate integration testing, consider developing a console object with methods corresponding to the CLI commands and expected responses. The CLI itself would then become a thin layer on top of this console object.
Deliverables
  • Working code in the repository.
  • Also in the repository, detailed documentation of your architecture and implementation.
Please use the repository for your group for collaboration and notify me when your work is ready for me to review. No explicit submission will be required. Submission by email will not be accepted.

No comments: