Skip to content

Project requirements

Martin Šmíd edited this page Nov 9, 2017 · 2 revisions

1st Milestone Project Requirements

1st milestone project done: Mon 30. 10. 23:59
1st milestone evaluation submitted: Fri 3. 11. 23:59

Project Requirements:

  • create a project in a Github repository that is publicly accessible (for reading). Choose a short and descriptive name. Create some project wiki to publish other information for your project.
  • on the project wiki there will be a project description, a use case diagram and a class diagram for the entity classes. There will be at least two user roles in the use case diagram. Associations between entities will be present in the class diagram.  
  • create 4 entity classes for your project.
  • create a DAO layer interface (with proper javadoc).
  • create the JPA implementation of the DAO classes (CRUD operations are enough for the first checkpoint).
  • create unit tests for DAO classes (use in-memory database).
  • every team member should work with different entities on different parts of the project (e.g. member 1 will create implementation of DAO for entity A, but member 2 will create unit test for entity A). In every class there will  be javadoc @author with the name of the class author. Also you must commit into Git only the changes that you made yourself. If you commit on behalf of somebody else this will not be regarded as his work!
  • show that you have been using pull requests in this milestone. The team leader will be responsible of managing pull requests.
  • the project will be built using maven, and make sure you have all dependencies correctly configured, so it is possible to build it using just the command line.

Evaluation Checklist:

  • You can assign maximum 10 points to the project you are reviewing.
  • -3 points if it is not possible to compile the project using “mvn clean install”. You must either make this work or ask the team to fix this ASAP because it’s hard to check the code without this.
  • -1 point for each minor occurrence of a team member not contributing enough.
  • -1 points for incorrectly implementing equals/hash code.
  • -1 points for every minor occurrence of missing methods/tests (e.g. missing important method on a DAO object or a missing test for that method).
  • If a team member was not contributing at all, or very little, you should explicitly say this in your evaluation report. Tutor will follow up on this information.

Note:

  • From this milestone your tutor will also assign you maximum 5 points based on the quality of the review that was submitted.

2nd Milestone Project Requirements

project done: Mon 27.11.2017 23:59
evaluation submitted: Fri 01.12.2017 23:59

Project Requirements:

  • Implement Facade layer interfaces and implementations.
    • Everything that should happen in the system must be available through these interfaces (create entities, deleting them etc);
    • You must have at least 2 non-trivial business functions on Service Layer (the example project contains several of them). Service layer is not always just a place to delegate to DAO;
  • Other points about the Facade and Service layers:
    • All the classes must be wired via dependency injection. Your service objects should obtain an instance of the EntityManager that way;
    • All the facade interfaces must not reference entities, but Transfer Objects only;
    • All service interfaces must reference only entities, not Data Transfer Objects;
    • You can use Dozer framework to map entity instances to transfer objects. The mapping may be done on Facade Layer;
    • Facade layer is used to drive transactions;
  • Change layout of your project to Multimodule Maven project (tutorial here http://maven.apache.org/guides/getting-started/index.html) Your project should have 3 separate modules:
    • DAO layer
    • Service Layer and Facade Layer implementation
    • API layer - just DTOs and facade interfaces!
  • Facade layer will use Service layer and Service layer will use DAO layer;
  • Make sure that DataAccessException or its subclass is thrown in case of any exception on a the DAO layer;
  • Implement simple unit tests for facade layer. Just one simple test per method is enough. This is mainly so that it’s easy to verify the Facade layer works;
  • There must be extensive unit tests for the service layer (particularly for your 2 business functions) and all the tests of service layer must use Mock DAO objects;

Evaluation Checklist:

  • Maximum number of points for this milestone is 10 points;
  • -2 points if it is not possible to compile the project and run tests using “mvn clean install”;
  • -2 points if there are test failures;
  • minimally -1 point for each of the unmet project requirements;
  • -1 point for each occurrence of a team member not contributing enough;
  • If a team member was not contributing at all, or very little, you should explicitly say this in your evaluation report. Tutor will follow up on this information;