ip

Developer Guide

Design

Architecture

ArchitectureDiagram

The Architecture Diagram above explains the high-level design of the app.

Interaction Between Architecture Components

The Sequence Diagram below shows how the components interact with each other for scenario when the user issues command todo borrow book.

ArchitectureSequenceDiagram

Note: The lifeline for c:Command should end at destroy marker (X), but due to a limitation of PlantUML, the lifeline reaches the end of diagram.

Command Component

Commands are implemented via an abstract Command class, with concrete Commands inheriting from it.

CommandClassDiagram

CommandResult

The run() function of abstract Command class returns a CommandResult data type, which contains below 2 variables.

CommandDataHistory

The undo command is implemented with help of a CommandDataHistory class.

Appendix: Requirements

User Stories

As a I want to So that
forgetful user add task I can action on them later
user see all tasks I can plan my execution strategy
user mask a task as done I am more productive
user delete a task I can declutter task that are no longer valid
user filter tasks by keyword I can quickly find a task
new user undo previous command I can quickly rollback a mistake

Non-Functional Requirements

  1. Should work on Windows, Mac and Ubuntu with Java 11 installed.
  2. Each command should execute within 5 seconds.
  3. Should be able to hold up to 1000 tasks without noticeable degrade in performance.