Assessing Quality Using a Checklist

Assessing Quality Using a Checklist

Checklists are useful for many things: packing for a trip, household chores and launching a rocket into space. A useful checklist for a software project is one that lists practices, processes and tools used to develop a product. This checklist can be used both internally and externally to assure and assess quality.

A quality checklist should certainly contain items that a team is addressing at the present time, but it should also include items that a team wants to address in the future.

Use this checklist as a starting point for your own assessment. We will use it for major product presentations. For each item you check, provide links to evidence that support your assertion.

Team Culture:

  • Build team culture through non-work activities.
  • Regularly recognize and complement team members for their contributions.
  • Respectfully provide coaching to improve team effectiveness and efficiency.

Communication:

  • Set up and use communication tools and processes for effective and rapid information exchange.
  • Use these tools and processes regularly.
  • Establish and use remote communication tools and processes for distributed team interactions.
  • Establish and use initiation and exit checklists.
  • Establish and use team policy statement.

Requirements and Analsys:

  • Create user stories to capture basic product requirements.
  • Analyze, refine, prioritize, select and convert user stories into tasks for development.
  • Organize tasks into Epic-story-task packages.
  • Experiment with Job Stories as an alternative to User Stories (see https://maherou.github.io/files/CS317/CS317-Links).

Design:

  • Create basic design documents such as class, interaction and use case.
  • Write lightweight design documents
  • Write throw-away prototype code to explore high-risk design elements.

Development:

  • Create GitHub Isses describing major design and development tasks.
  • Establish GitHub Project (Kanban) board.
  • Actively manage work by tracking issues on your Kanban board.
  • Conduct regular project meetings to assess progress and manage schedule.
  • Use code formatting tool to assure uniform source code.
  • Identify and use a coding convention.
  • Develop in-source documentation via Doxygen.

Testing:

  • Create basic test capabilities.
  • Create comprehensive test capabilities.
  • Create and regularly use unit testing.
  • Use a pull-request, code-review integration process for source changes.
  • Automatically monitor and report code coverage.
  • Use test-driven development.
  • Measure and track software performance.

Product Release:

  • Create a unique and traceable release of your software product.
  • Make a citable version (with DOI) of your code and make it available on Zenodo or Figshare.
  • Generate user and developer documentation.
  • Create product branding, e.g. logo family, catchphrase, product description.

Copy and paste the text below to create your own Markdown checklist:


**Team Culture:**
- [ ] Build team culture through non-work activities.
- [ ] Regularly recognize and complement team members for their contributions.
- [ ] Respectfully provide coaching to improve team effectiveness and efficiency.

**Communication:**
- [ ] Set up and use communication tools and processes for effective and rapid information exchange.
- [ ] Use these tools and processes regularly.
- [ ] Establish and use remote communication tools and processes for distributed team interactions.
- [ ] Establish and use initiation and exit checklists.
- [ ] Establish and use team policy statement.

**Requirements and Analsys:**
- [ ] Create user stories to capture basic product requirements.
- [ ] Analyze, refine, prioritize, select and convert user stories into tasks for development.
- [ ] Organize tasks into Epic-story-task packages.
- [ ] Experiment with Job Stories as an alternative to User Stories (see https://maherou.github.io/files/CS317/CS317-Links).

**Design:**
- [ ] Create basic design documents such as class, interaction and use case.
- [ ] Write lightweight design documents
- [ ] Write throw-away prototype code to explore high-risk design elements.

**Development:**
- [ ] Create GitHub Isses describing major design and development tasks.
- [ ] Establish GitHub Project (Kanban) board.
- [ ] Actively manage work by tracking issues on your Kanban board.
- [ ] Conduct regular project meetings to assess progress and manage schedule.
- [ ] Use code formatting tool to assure uniform source code.
- [ ] Identify and use a coding convention.
- [ ] Develop in-source documentation via Doxygen.

**Testing:**
- [ ] Create basic test capabilities.
- [ ] Create comprehensive test capabilities.
- [ ] Create and regularly use unit testing.
- [ ] Use a pull-request, code-review integration process for source changes.
- [ ] Automatically monitor and report code coverage.
- [ ] Use test-driven development.
- [ ] Measure and track software performance.

**Product Release:**
- [ ] Create a unique and traceable release of your software product.
- [ ] Make a citable version (with DOI) of your code and make it available on Zenodo or Figshare.
- [ ] Generate user and developer documentation.
- [ ] Create product branding, e.g. logo family, catchphrase, product description.