SE-2800 Software Engineering Process
Adding subtasks to PBIs

Outcomes

Overview

In SE2030, we paid little or no attention to the planning aspects of the user stories you implemented in the project assignment. You are learning about this now in SE2800. Planning your tasks and estimating the time it will take to accomplish them are important activities in any software process - agile or not. In Scrum and other agile processes, you refine plans in increments, focusing only on the user stories you are likely to implement within the next few sprints. Estimating the effort and deciding upon exactly which user stories will go into the upcoming sprints is part of the grooming process.

In SE2030, you weren't required to give much thought to estimating the effort for the tasks you needed to do for each user story, or to estimate the amount of time and effort they would take. Since you now know what you did - and maybe recall about how much time you spent - we'll use that as an exercise to practice the activity of defining the tasks in Jira and adding them to user stories.

Tasks are specific work activities  - development tasks - that you do **individually** - with very few exceptions (e.g. group discussions of design). A general rule is: only one person works on any given task. For example, consider the task of writing use cases: While you and other members of your team may all have done this in SE2030, you were really working on different tasks. You may have written use case 1, while your teammate may have written use case 2. Similarly, when you were coding, you wrote specific classes, methods, or tests, while your teammates worked on others.

Assignment

Adding Development Tasks to PBI's

Look back at the phases you passed through in SE2030 as you developed the functionality described by the User Stories.

If you think about what you did, you'll probably find that the development tasks (aka subtasks) involved in implementing a User Story were something like this:

Requirements analysis discussion
Create Use Case N (for N=1...number of Use Cases) including time for review
Overall Design discussion
Create Preliminary UML Class diagram, including time for review
Create Preliminary UML Sequence diagram, including time for review
Implement app class N (for N=1...number of classes)
Implement JUnit test classes (for N=1...number of test classes) [Note: includes time spent on creating test data)
Integration (getting everyone's code to run)
Running unit tests (includes time for fixing detected errors - repeated as needed until errors have been eliminated)
Running high-level tests (includes time for fixing detected errors - repeated as needed)

Each user story typically consists of many such subtasks. In Jira, you add Development Tasks to User Stories in one of several ways; one way is by viewing the details of a user story (by selecting it from the backlog) and clicking the id (in this example SE2800A119-113) in the details pane shown below:

After you press the id, a new tab appears (below) where you can edit the details of the PBI. To enter subtasks, press the "Create subtask" button above the story description.

After you press the button, the screen will scroll to the place where you enter a short name of the subtask:

Note: There is a dropdown whose default value is "Development task".  There is also a "Non-development task" that you won't use yet.

You'll have to think of specific "names" for each task, so that you (as a team) don't end up with several tasks all named "implementation" - rather, you might have a task named "implement parser", while your teammate has a task named "implement user interface".

After entering the task name, press the "Create" button. You can immediately enter another subtask, or press "Cancel" to stop entering subtasks. Note that in the screen below, several Development tasks have been entered.

 Note that every subtask gets assigned a unique identifier - just like each user story.

Entering time estimates for subtasks

Once your team creates all the subtasks, you need to edit them in order to enter an estimated time that it will take you to complete each one. NOTE: NEVER enter estimated time for a User Story -time estimates should only be entered for subtasks. The total time for the User Story is automatically calculated from the sum of the subtask times. To enter estimated times, click the subtask and the screen changes to allow you to edit it:

The subtask screen contains a "Show 3 more fields" link (at right). Click this link to show the hidden fields - one of them will be "Original Estimate" containing "0m" (0 minutes). Enter your estimate in either minutes or hours (e.g. 90m or 1.5h).  Note that you can also use units of days (d) or weeks (w) - but subtasks should never take more than a few hours!

Note that you also have an opportunity here to enter a description of the subtask.



Remember to include tasks such as writing tests, as well as executing them - try to recollect and capture ALL activities you and your teammates did. The point is to capture ALL of the activities that you typically have to spend time on when developing an app.

After everyone finishes adding and estimating the subtasks, you'll be able to view the entire list of tasks (and total estimated time) that was required to complete the user story. To do this, click on the id of the User Story (in the screen above, the id right above the subtask name: SE2800A119-113). From within the User Story scrren, HOWEVER, you first have to select "See the old view" from the "..." menu.


In the future, you'll be doing this for stories you haven't implemented yet, as well as for defects that will need fixing.