-
Notifications
You must be signed in to change notification settings - Fork 0
phase1
The Software Laboratory project is comprised by the analysis, design and implementation of an information system to manage checklists, tasks and checklists templates. Its development is divided into 4 phases, with incremental requirements published before the beginning of each phase.
-
A task represents some activity that must be performed (e.g "buy milk", "submit the LS project", "ensure gradlew build runs successfully", "create a tag"). A task is characterized by
- A short name (less than 80 characters) and a description.
- An optional due date.
- A completion state (completed or not completed).
-
A checklist represents a sequence of tasks and is characterized by
- The contained tasks.
- A short name (less than 80 characters) and a description.
- An optional due date, which can never be lower than the greatest due date of any contained task.
-
A checklist is completed when all its tasks are completed.
-
A template represents the format of a checklist. It is used to define checklists that will be instantiated multiple times. For instance, the checklist of verifications to perform before submitting a LS project phase will be similar to all four phases (e.g. "ensure project builds successfully", "check if last commit contains all changes", "create tag", ...).
On the first phase, the interaction with the information system is done via commands on a console application. Each application execution performs one and only one command, presenting the command result on the standard output.
Each command is defined using the following generic structure
{method} {path} {parameters}
where
- the
method
defines the type of action to perform (e.g.GET
orPOST
). - the
path
defines the resource on which the command is executed (e.g./checklists
or/checklists/123
). - the
parameters
is a sequence ofname=value
pairs, separated by&
(e.g.name=create+tag&description=create+git+tag+on+the+last+commit
). The same name can appear more than once in the sequence.
For phase 1, the management application must support the following commands.
-
POST /checklists
- creates a new checklist, given the following parameters-
name
- short name. -
description
- the checklist description. -
dueDate
- an optional due date for the completion of the checklist
This command returns the checklist unique identifier.
-
-
GET /checklists
- returns a list with all the checklists. -
POST /checklists/{cid}/tasks
- submits a new task for the checklistcid
, given the following parameters-
name
- the task's short name. -
description
- the description. -
dueDate
- an optional due date for the task completion.
Returns the task unique identifier
-
-
POST /checklists/{cid}/tasks/{lid}
- changes the state of the task identified bylid
, belonging to the checklist identified bycid
, given the following parameters-
isClosed
-true
orfalse
-
-
GET /checklists/{cid}
- returns the detailed information for the checklist identified bycid
, including its tasks and the template from which it was created (if any). -
POST /templates
- creates a new template, given the following parameters-
name
- short name. -
description
- the template description.
This command returns the template unique identifier.
-
-
POST /templates/{tid}/tasks
- submits a new task for the format of the templatetid
, given the following parameters-
name
- the task's short name. -
description
- the description.
-
-
POST /templates/{tid}/create
- creates a new checklist with the tasks of the templatetid
, given the following parameters-
name
- an optional checklist name. If absent, the checklist will have the template's name. -
description
- an optional checklist description. If absent, the checklist will have the template's description. -
dueDate
- an optional due date for the checklist completion.
-
-
GET /templates
- returns a list with all the templates. -
GET /templates/{tid}
- returns the details for the templatetid
, including its tasks and the checklists created from it. -
GET /checklists/closed
- returns a list with all completed checklists. -
GET /checklists/open/sorted/duedate
- returns a list with all uncompleted checklists, ordered by increasing completion date (if any). -
GET /checklists/open/sorted/noftasks
- returns a list with all uncompleted checklists, ordered by decreasing number of open tasks.
The following non-functional requirements will be highly valued.
- Readability.
- Testability, including on machines not belonging to the development team.
The project must be delivery until October 22 (end of week 5), via the creation of a 0.1.0 tag on the GitHub repository.