Software Engineering

Iteration 4: Core Implementation

Due on November 19th at 11:59 PM.

The master branches of your group’s repository and wiki will be pulled at that time and its contents will be graded. Be sure that all materials – documentation, code, build instructions, etc. – are available in that repository. If some materials cannot be placed in that repository, contact your instructor for instructions on how to compensate.

Please be sure to follow appropriate etiquette when interacting with your group.


The goal for this iteration is to have a working skeleton of your application. You’ll likely be missing a lot of features, but you should no longer be having difficulties with your development environment and your working features should be implemented just as they will be in the final version of your project.


This iteration should come with a robust set of tests for your application. To ensure that your unit tests are testing the bulk of your code (and not just some small corner of it), make sure you are using IntelliJ’s integrated code coverage analysis when you run your unit tests. This tool will identify which parts of your application aren’t being tested so you can consider how to write tests to cover them.

Testing is an important part of the development process. Up to 25% of your grade for this and future iterations will be based upon whether your tests are well-developed.

Build and Deployment

This iteration should also have a clean build process. As mentioned in Iteration 3, it should be possible to build your project with a single command. If you are using Maven or Gradle, this is already the case.

It should also be possible to deploy your project with a small and reliable series of steps. To this end, your project must include deployment instructions in its file. If you require external resources for your project (Heroku, Firebase, etc.), make sure to include appropriate instructions for acquiring and configuring those resources. You should not require a new deployer to use your existing resources.

A clean build and deployment process is necessary to ensure that development environments can be set up easily and helps to guarantee that your system is predictable and reliable. Up to 10% of this and future iteration grades will be based upon the cleanliness of this process.

Git Workflow

Don’t break the build! If your group’s members begin interfering with each other, consider using Git branches so that you can isolate your commits from those of your teammates. If you do this, make sure to merge your work back into the master branch on a regular basis!

If you’d like to know more about how to use Git, you can start with this Git tutorial by Leandro Facchinetti targeted toward sofware engineering students.


Store the above materials in your GitHub repository. The code you would like graded should be on the master branch of your repository as of the due date.

Iteration Review

You are also required to submit an iteration review which assesses the work you and your peers completed and whether things are going well for you in class. This review is private; its content will not be shared without your consent. Click here to submit your Iteration 4 review.

It is in your interest to provide honest feedback, even if that feedback isn’t the most generous or positive; if there’s a problem, your instructor needs to know!