Last updated November 02, 2009 13:06, by Felipe Gaúcho

Arena PUJ - Project Specification (draft)

First, show me the code...

If you prefer to have some action before to read the specification, please visit the Arena Developers Page.


In a short sentence:

A PUJ competition is an academic competition orgnanized by JUGs (institutions) where teams formed by Professors and Students competes for the authorship of the best homework in town. These teams represent universitites (companies of type school) and local companies may support the competition as partners, main sponsors or other type of support. The final results comes from the average grade a homework received from IT Senior Professionals, Professors and Students.


  • Competition: a competition is an event where teams of students and professors compete for the authorship of the best homework in town.
  • Institution: an institution is a JUG organizing a competition, a Sponsor supporting a competition or a School participating of a competition. Other types of institutions can be part of a competition, like partners, media, etc.
  • Homework: a Java Program created by an under-graduated student.
  • Grade: a grade is a number associated to the homework. The average of the grades of a homework is its final score and the best homework score wins the competition.
  • Rules: every competition has a set of rules, configurable parameters on how the competition works and a calendar with the important dates of the competition. The application should provide features to allow the puj-ower to configure his competition. An example of configurable rule is the the way the average grades are calculated


  • sys-admin: the system administrator is the person responsible of hosting the Arena Application, eventually a third party company. The sys-admin has the most of the privileges of all other users, but it is not expected him to interfere in the management of the competitions. The main role of the sys-admin is to fix problems the other users couldn't solve through the application features.
  • puj-owner: is the creator/maintainer of a competition, usually a person representing a JUG or other institution. The main tasks of the owner of a PUJ is to register the data about institutions and also to confirm the requests from the competition participants.
  • puj-staff: is a supporter of a puj-owner, having almost all privileges of the owner of the competition except the writting operations. The main task of the staff is to update the competition data, without privileges of risky operations like delete the competition or remove users from competition.
  • Professor: a university professor is the only one able to submit homeworks for a competition. The professor is considered author of the homework he submitted to a competition.
  • Student: a university student is author of a homework in a competition.
  • Senior Professional: a senior professional has a unique task in a PUJ Competition: to grade the homeworks.
  • Observer: a visitor interested to use some features of the system. An observer endorses the Arena PUJ testing some functionalities under development in the system. For example, the evaluation process - a core feature in PUJ - may be tested in advance by some observers. An observer may have a profile in the system, usually a prospective competitor, geting familiar with the application features for a better chances in a next competition.
  • Anonymous: anyone using the application without any special role. An anonymous can use READ-ONLY features of the system.

User Stories

User Maintenance

A user with the sys-admin privileges always exist in an Arena PUJ application because this role is created during the installation of the application in a web server.

Registration of PUJ Owners

  • Actors: sys-admin

The sys-admin can add or remove PUJ Owners to the system. The request for the puj-owner role may be done externally to the system or can be an online feature. Since the number of PUJ Owners are very small compared to the other application users, we recommend the procedure of requesting a PUJ ownership to be done outside the application (by email for example).

Users Registration

  • Actors: anonymous

The application should provide a form where an anonymous user can request his registration in the Arena PUJ. Only after the registration confirmation the user will be able to request roles in competitions (professor, student or senior-professional).

Users Login/Logout

  • Actors: sys-admin, puj-owner, professor, student, senior-professional

Once registered in the system, an user can login and logout in the application. A feature to recover lost passwords should also be provided.

Users Profile Maintenance

  • Actors: puj-owner, professor, student, senior-professional

Once registered in the system, an user can login inthe application and maintain his profile, like his picture, name and other personal data.

Institution Maintenance

Create an Institution

  • Actors: sys-admin, puj-owner, puj-staff

The application should provide an option to add or remove institutions to the system. The data of an institution is shared by several competitions. If a same institution by any reason has different data in different competitions, a different institution registration should be done for each case (usually a company branch registered in the same system as the company headquarter). An institution can have different roles in different competitions, but the available roles are predefined as follow:

  1. SCHOOL: an university with students participating in a PUJ competition.
  2. PUJ_OWNER: the organizer of a PUJ, usually a JUG - Java User Group.
  3. SPONSOR: a company sponsoring the competition.
  4. PARTNER: a company providing resources to the competition, like t-shirts, etc.

Competition Maintenance

Create Competition

  • Actors: puj-owner

A PUJ Owner can create a competition indicating the name of the competition and its calendar. The institution linked to the puj-owner is automatically set as competition owner. A competition has a set of rules, including the calendar with the dates where the competition should change its status. The status of a Competition are predefined as follow:

  1. NEW: a new competition. The competition remains in this status until the opening of the call for papers. During this phase, it is expected the staff to maintain the competition data, like teh registering of institutions and senior professionals.
  2. CALL FOR PAPERS: the period when the competition accept the homework submissions.
  3. EVALUATION: when the the call for papers is finished and the evaluators start to grade the homeworks.
  4. HISTORY: after unveiling the results, a competition becomes historic data and no other modifications can be done. The competition data becomes read-only.

Add or remove staff members to a Competition

  • Actors: puj-owner

A PUJ Owner can add or remove staff members to a competition. The puj-owner should select the staff people from a list of previously registered users of the Arena PUJ. The staff can help the owner to maintain the competition.

Request user roles in a Competition

  • Actors: professor, student, senior-professional

An user can request a role in a competition. This role should be approved by the competition owner or the competition staff.

Add, remove or confirm users roles to a Competition

  • Actors: puj-owner, puj-staff

The PUJ staff can add, remove or confirm the user roles in a competition. A list of pending confirmation should be available to the staff (or other confirmation mechanism like email notification) . Senior professional are invited to PUJ Competitions, so it is expected the puj-owner to register them instead of a personal request. Once registered, the senior professionals can change their private data like password , avatar, etc.

Add or remove institutions roles to a Competition

  • Actors: puj-owner, puj-staff

A PUJ Owner can map the institutions to competitions through the competition roles, like School's' or Sponsors. The institution roles supported by Arena PUJ should be previously registered by the sys-admin.

Homework Maintenance

Create Homework

  • Actors: professor

Only a professor can submit a homework to a PUJ Competition. While submitting the homework, the professor should indicates what student compose the team associated to the homework. If the students are already registered in the application, they will be notified about their participation. Otherwise, the student will be notified by email about the need of a registration in the system asap. The homework is registered with status NEW until a puj-owner confirm its validity.

Maintain the Homework data

  • Actors: professor, student

While the competition is in the CALL FOR PAPERS phase, the professors and students can modify their homework data, fixing submission problems or adding extra artifacts to enhance their chance of winning the PUJ. Once the competition gets into the EVALUATION phase, the homework maintenance is frozen and no other modifications allowed.

Confirming or rejecting a Homework

  • Actors: puj-owner

Once a homework is submitted to a competition, the competition owner has a chance to validate its information, confirming or not the participation of the homework in the competition. The system should provide a notification to the homework authors about the puj-owner decisions. It is expected that a rejection of a homework includes an explanation of the reason of the rejection. The application should force this explanation in case of a rejection.

Evaluation of the homeworks

Submit a grade to a homework

  • Actors: senior-professional, professor, student

By definition, all participants are also evaluators of a PUJ Competition (peer-to-peer review), but the weight of the grades are different to reflect the influence of a person in the IT local market and also the maturity of individuals opinions about the quality of the homeworks. Despite the different weight, the process of submitting grades to a homework should be done through the same features for all the three types of evaluators. All grades should be accompanied with a short explanation about the grade. This feature is expected to be a simple form where the evaluator can add a number and include the short text explaining the grade. The evaluations are only accepted during the EVALUATION phase of the competition. The grades and the average grade of a homework are hidden during the evaluation phase and should only be unveiled during the final moment of the competition, when the competition state becomes HISTORY.

Unveiling the final competition results

  • Actors: puj-owner

Only the competition owner can close a competition, unveiling the final results. Once the results are unveiled, the competition status is automatically changed to HISTORY.

PUJ Domain Model

The domain model of PUJ Competition implemented as a set of Java classes can be found here

Integration Diagram

  • Mysql
  • Glassfish
  • Jruby
  • Rails
  • Nblogo
Terms of Use; Privacy Policy;
© 2014, Oracle Corporation and/or its affiliates
(revision 20160708.bf2ac18)
Please Confirm