CS 346 (W23)
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

Sprint Guidelines

Here’s how we would recommend that you structure your sprints. These guidelines are general, and apply equally to any project - see the project specifications for details.

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 the Console Application project. This could be a simple application, or a launcher for the GUI, depending on the project that you choose.

  3. 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).

  4. 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.

    • Projects included: console, client (gui), shared (domain objects).
    • Stretch goals: More advanced GUI features that interact with domain objects e.g. undo/redo.

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, so that it’s available to both client applications (e.g. console and client). You need to persist local data e.g. window size and position, as well as remote domain data e.g. notes, or shared settings. Implement saving local data in files (e.g. JSON) or a local database (e.g. SQLite or H2).

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

    • Projects included: console, client (gui), shared (domain objects).
    • Stretch goals: Missing functionality related to persistance e.g. exporting 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 in a database. This is required to support concurrent access, scalability etc.

    • Projects included: console, client (gui), service, shared (domain objects).
    • Stretch goals: work on synchronization now instead of sprint 4.

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. Complete any other remaining features! Everything should be done at this end of this sprint!