Skip to content

Instantly share code, notes, and snippets.

@dougwaldron
Created January 19, 2022 21:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dougwaldron/2a093d364f7fcf4b28382ca33235802b to your computer and use it in GitHub Desktop.
Save dougwaldron/2a093d364f7fcf4b28382ca33235802b to your computer and use it in GitHub Desktop.
Application quality notes

Application Quality Goals

Overall application quality goes beyond implementing features and includes:

  • Accessibility
  • Usability
  • Performance
  • Security
  • Reliability
  • Maintainability

Processes

Here is a rough listing of some of the procedures and processes we could follow to encourage building higher quality applications.

Accessibility

In the broadest terms, accessibility can make it easier for anyone to find, access, and use a website successfully.
Laura Kalbag

  • Include accessibility requirements in application design/specification phase.
  • Use CSS/JS frameworks with accessibility built in.
  • Use automated accessibility scanners.
  • Include accessibility-related tests in design and QA.
  • Involve people with disabilities in design & UAT.

Usability

User experience (UX) focuses on having a deep understanding of users, what they need, what they value, their abilities, and also their limitations... UX best practices promote improving the quality of the user’s interaction with and perceptions of your product and any related services.
Usability.gov

  • Use cross-platform CSS/JS frameworks with usability built in.
  • Design iteratively with customers.
  • Re-use components to encourage consistency of design and to spread best practices.

Performance

Web performance is all about making web sites fast, including making slow processes seem fast.
Mozilla Developer Network

  • Use JS/CSS frameworks with performance built in.
  • Include performance requirements in application design/specification phase.
  • Mandate a performance budget.
  • Prefer modern technologies & frameworks.
  • Use automated performance scanners.
  • Use a CDN for common/static resources.
  • Employ code quality analyzers.
  • Enable compression where appropriate.

Security

The American people expect government websites to be secure and their interactions with those websites to be private.
Federal CIO Council

  • Enforce HTTPS and HSTS on all sites on all servers.
  • Use vetted, secure user authentication systems.
  • Use vetted technologies & frameworks.
  • Minimize dependencies.
  • Use automated security scanners.
  • Employ code quality analyzers.

Reliability

  • Automate the build, testing, and deployment process.
  • Use site monitoring tools.
  • Use crash reporting tools.
  • Use automated performance scanners.
  • Write unit tests, integration tests, and UI tests.
  • Use version control for all aspects of development and operations.

Maintainability

Maintainability is the absence (reduction) of technical debt. A maintainable application is one that increases technical debt at the slowest rate we can feasibly achieve.
Chris Fidao

  • Build loosely-coupled, testable applications.
  • Write unit tests, integration tests, and UI tests.
  • Track all source code in a version control system.
  • Use high-quality JS/CSS frameworks.
  • Use LTS versions of all libraries/frameworks.
  • Use crash reporting tools.
  • Automate the build, testing, and deployment process.
  • Implement code review.

Application Quality Resources

Tools and resources available to simplify and standardize application quality-related processes. This is just a rough list of some tools that are available, not a set of recommendations.

Automated site scanners

Performance/Accessibility

Security

Services

Crash reporting

Libraries

CSS frameworks

Authentication libraries

Testing

Code quality analyzers

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment