Sprint Guidelines

Here’s how we would recommend that you structure your sprints.


Lectures will be presented in this order, so approaching your project this way may be the easiest in terms of staying on top of the course material. You are welcome to approach topics in a different order if you feel that is more appropriate for your project.

Sprint 1: Infrastructure & GUI

  1. Complete all of the Core Infrastructure requirements. These are critical and must be completed before you can start adding functionality.

  2. Complete your domain objects e.g. data class, specialized container classes. Making early design decisions on your data model will make other features much, much easier to implement.

  3. Complete the Console Application project. This could be a simple application, or a launcher for the GUI, depending on the project that you choose.

  4. Complete as many of the GUI Application features as you can schedule. Prioritize basic functionality that will help you test other functions (e.g. create a note, or create a document).

Sprint 2: Data Persistance

  1. Continue working on GUI features. You should be progressing past simple features into more complex ones. Undo/Redo, and Cut/Copy/Paste are good features to consider at this point because they rely on a completed data model.

  2. Implement your persistance layer in your shared project. You need to persist local data e.g. window size and position, as may need to save remote domain data e.g. notes, or shared settings. Decide if you are saving data in JSON files, XML, or a database.

  3. Make sure that you are saving all UI state that you want to restore as part of your local data.

Sprint 3: Web Service

  1. Finalize your GUI features. You should implement the more advanced features that build on the core functionality e.g. rich-text support, syntax highlighting for programming languages and so on.
  2. Implement a web service. Create a new project for this. Your web service should be able to handle HTTP requests and use HTTP methods to fetch/update data from your remote service.
  3. Expand your service to store data. This is required to support concurrent access, scalability etc.

Sprint 4: Wrapup

  1. Move your service to a cloud platform. This will likely mean containering it (Docker) and installing the service to run remotely (Microsoft Azure).
  2. Address synchronization. You need some way for multiple connected client applications to keep their data synchronized. e.g. how does client1 know that client2 has updated some data? Use web sockets to have your service notify connected clients when data is updated to avoid stale data.
  3. Build a better installer! Use JPackage to build an installation wizard.
  4. Complete any other remaining features. Everything should be done at this end of this sprint!