Skip to content

Issue Tracking

Jordan Padams edited this page Aug 3, 2023 · 11 revisions

User Story Development

The Agile equivalent for requirements, user stories are intended as a more user-friendly, user-focused method for describing the what, why, how, and who for system features and expected functionality.

What is a user story?

A concise, written description, of a piece of functionality that will be valuable to a user (or owner) of the software.

A good user story is:

  • Independent
  • Negotiable
  • Valuable to users or customers
  • Estimatable
  • Small
  • Testable

User Story Template

As a , I can so that

  • Role - the user role for the story. e.g. user, developer, node operator, systems administrator
  • Goal - what the user is trying to accomplish
  • Motivation - why the user wants to accomplish it

User Story Examples

  • As a user, I can backup my entire hard drive. (Epic)
  • As a power user, I can specify files or folders to backup based on file size, date created and date modified.
  • As a user, I can indicate folders not to backup so that my backup drive isn't filled up with things I don't need saved.

Acceptance Criteria

  • Provide the criteria to determine if the story has been correctly and fully implemented.
  • Developed before stories are implemented to provide guidance to developers

Why the user wants to accomplish it

For example: As a user, I want to be able to view my Order History **so that I can check on the status of previous purchases.

Acceptance Criteria Template

Given When I perform Then I expect

For example:

Given that I have previously created an account
When I attempt to create an account
Then I expect to receive a notification that I already have an account
Then I expect to be forwarded to a login screen

What Make Good Acceptance Criteria?

  • States intent “what” not solution “how”
    • ✅ The customer can choose the shipping method
    • ❌ The customer can select the shipping method from a drop‐down
  • Independent of implementation
  • Clear unambiguous language
  • Rather high level (not every detail is documented)

Issue Creation Best Practices

The PDS has used the article “Naming Guide For Task, Bug, and User Story Titles” for enhancement and bug issue creation best practices.

Here are some high-priority best practices we really want to try to follow:

  • In general, for enhancements and bugs, at minimum, start the title with a verb (e.g. Ingest some data from somewhere or Update this page with some change)
  • Title should be able to tell someone what was fixed or completed
    • We plan on using these issue titles for generating changelogs and report automatically
  • Use autolinked references wherever possible for traceability
    • Using references is a HUGE benefit in streamlining productivity, project management, provenance, and requirements/test traceability.

Pull Request Titles

We now use GitHub automated release notes, which use PR titles to generate. Since our Release Notes are "user-focused", let's try our best to make these titles "user-friendly", for example:

  • New utility to validate references using the registry
  • Fixed bug with handle members of a collection (/products/{lidvid}/members)
  • etc.

Bug Prioritization Policy

PDS follows a bug/defect prioritization policy that is similar to that used by flight projects, with a twist for the needs of issue tracking.

Consequence
1 2 3 4 5
5 LOW MEDIUM HIGH CRITICAL CRITICAL
4 LOW MEDIUM HIGH HIGH CRITICAL
Likelihood 3 LOW MEDIUM MEDIUM HIGH HIGH
2 LOW LOW LOW MEDIUM MEDIUM
1 LOW LOW LOW LOW MEDIUM
Level Description Consequence Definitions
5 Very High Mission Failure
4 High Significant reduction in mission return
3 Moderate Moderate reduction in mission return
2 Low Small reduction in mission return
1 Very low Minimal reduction in mission return
Level Description Level Definition Percentage (%)
5 Very High Almost certain 70% < X ≤ 100%
4 High More likely than not 50% < X ≤ 70%
3 Moderate Significant likelihood 10% < X ≤ 50%
2 Low Unlikely 1% < X ≤ 10%
1 Very Low Very unlikely X ≤ 1%

Tracking Issue Backlog with Zenhub

We use Zenhub to visualize all our tickets across all our NASA-PDS Github repos. Because of the large number of projects and issues, the issues are organized into several different Kanban boards for hopefully more clear understanding of priority.

Product Backlogs

The product backlog is a list of the new features, changes to existing features, bug fixes, infrastructure changes or other activities that a team may deliver in order to achieve a specific outcome.

These backlogs should be organized and prioritized so the team knows what should be considered heading into the next release planning effort.

Here are the product backlog boards for the currently active PDS projects:

Product / Project Name Workspace Applicable Repos
Registry Services Product Backlog - Registry + API pds-registry-app, archive-analytics, harvest, pds-registry-common, pds-registry-ingest, pds-registry-mgr-elastic, pds-registry-mgr-solr, registry-api-service, pds-api-service, pds-api-pythonlib, pds-api-javalib, pds-api-client, pds-api, api-search-query-lexer, pds-api-notebook, registry-ci, supplementer
DOI Service Product Backlog - DOI Service pds-doi-service, pds-doi-ui
PDS Web Modernization Product Backlog - PDS UX PDS.nasa.gov-UX, archive-viewer, pds-wds, pds-wds-react, pds-wds-web
DevOps Product Backlog - DevOps roundup-action, gh-action-pds4-ldd, git-ping, github-actions-base, pds-github-util, pdsen-corral, pdsen-operations
Data Stewardship Product Backlog - Data Stewardship validate, pds4-jparser, pds4-information-model, pds3-product-tools, PLAID
PDS Operations PDS Operations pdsen-operations
Everything else Product Backlog - The Rest (filter by individual repos) everything else
Portfolio Backlog (view only) Portfolio Backlog (view only) (filter by individual repos) All

Release Backlog

The release backlog is the subset of themes and/or specific tasks from the product backlog(s) that a team targets to deliver during a release. These are decided upon during the release planning effort, and can be found in the Release Backlog swimlane of the Product Backlogs.

Sprint Backlog

The sprint backlog is the subset of product backlog that a team targets to deliver during a sprint in order to accomplish the sprint goal and make progress toward a desired outcome.

Sprint Backlog Workspace : Team should use this board to provide status on current work and look for the next items to work on.

Help with Zenhub


References