/software-engineering-quality-framework

🏎️ Shared best-practice guidance & tools to support software engineering teams

Primary LanguageShell

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:

  1. Describe a shared (across multiple teams) definition of "good" engineering
  2. Provide tools for teams to gain insight into their current engineering maturity levels and their level of technical debt
  3. Provide resources to support teams to increase their engineering maturity levels and manage their technical debt

Ecosystem

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:

Contents

The framework consists of:

Contributing

See our contributor's guide