Software Engineering Quality Framework
How to get started
See the Quick Start Guide
Purpose
This framework is concerned with using "good" software engineering to support rapid and safe delivery of high-quality software, at scale
It aims to:
- Describe a shared (across multiple teams) definition of "good" engineering
- Provide tools for teams to gain insight into their current engineering maturity levels and their level of technical debt
- Provide resources to support teams to increase their engineering maturity levels and manage their technical debt
Philosophy
The philosophy underpinning this framework advocates:
- Engineering led by user needs and service outcomes
- Empowered delivery teams which are accountable for their products
- Products must be actively maintained for their entire lifecycle
- Rapid, iterative and incremental development: "Release early. Release often. And listen to your customers." (Eric S. Raymond in The Cathedral and the Bazaar)
- Robust and comprehensive automation supporting and enforcing quality
- Reliable & scalable services, remembering "Everything fails, all the time" (Werner Vogels), and treating operations as a software engineering challenge (as in Google's Site Reliability Engineering)
- Loosely-coupled & cloud-native composable components as the default mode of construction
- Continuous improvement, with prioritisation decisions based on data rather than sentiment
Context
The framework is a companion to:
- The NHS service standard, with cross-references in this format: SERVICE-RELIABILITY
- The NHS Digital architectural principles, with cross-references in this format: ARCHITECTURE-SECURITY
Contents
The framework consists of:
- Engineering principles
- Engineering quality review tool
- Communities of practice guidelines and active communities:
- Guidance on how to practice continuous improvement
Contributing
See our contributor's guide