Maturity Model
PRISM uses a 5-level maturity model to assess organizational capability across domains and lifecycle stages.
Maturity Levels
| Level | Name | Score | Description |
|---|---|---|---|
| 1 | Reactive | 0.2 | Ad-hoc processes, firefighting mode |
| 2 | Basic | 0.4 | Basic controls, some documentation |
| 3 | Defined | 0.6 | Standardized processes, consistent execution |
| 4 | Managed | 0.8 | Data-driven, measured and controlled |
| 5 | Optimizing | 1.0 | Continuous improvement, automated optimization |
Level Descriptions
Level 1: Reactive
- Processes are ad-hoc and chaotic
- Success depends on individual heroics
- No formal documentation
- Firefighting mode is common
- Results are unpredictable
Reliability Example: Incidents handled without runbooks Efficiency Example: No deployment automation, manual releases
Level 2: Basic
- Basic processes are documented
- Some repeatability exists
- Policies are defined but inconsistently applied
- Manual processes predominate
- Limited metrics collection
Reliability Example: Basic monitoring with manual alerting Efficiency Example: Basic CI/CD exists but inconsistent
Level 3: Defined
- Standardized processes across the organization
- Consistent execution of practices
- Documentation is maintained
- Roles and responsibilities are clear
- Metrics are collected systematically
Reliability Example: Standardized incident response procedures Efficiency Example: Consistent CI/CD pipelines across all services
Level 4: Managed
- Data-driven decision making
- Processes are measured and controlled
- Quantitative quality goals
- Variation is understood and addressed
- Predictable outcomes
Reliability Example: SLOs with error budgets and automated alerting Efficiency Example: DORA metrics tracked with quantitative targets
Level 5: Optimizing
- Continuous process improvement
- Innovation and optimization
- Automated remediation where possible
- Proactive risk management
- Industry-leading practices
Reliability Example: Self-healing systems, automated capacity management Efficiency Example: On-demand deployments, sub-hour lead time
Maturity Matrix
PRISM assesses maturity for each domain/stage combination:
| Design | Build | Test | Runtime | Response | |
|---|---|---|---|---|---|
| Reliability | L3 | L4 | L3 | L4 | L4 |
| Efficiency | L3 | L4 | L3 | L4 | L3 |
Maturity Model Structure
MaturityModel
{
"maturity": {
"levels": [
{"level": 1, "name": "Reactive", "description": "..."},
{"level": 2, "name": "Basic", "description": "..."},
{"level": 3, "name": "Defined", "description": "..."},
{"level": 4, "name": "Managed", "description": "..."},
{"level": 5, "name": "Optimizing", "description": "..."}
],
"cells": [...]
}
}
MaturityCell
Each cell represents a domain/stage intersection:
{
"domain": "operations",
"stage": "build",
"currentLevel": 4,
"targetLevel": 5,
"primaryKPI": "ops-deploy-frequency",
"kpiTarget": ">=10/day"
}
Maturity Score Calculation
The maturity score for a cell is:
| Level | Score |
|---|---|
| 1 | 0.2 |
| 2 | 0.4 |
| 3 | 0.6 |
| 4 | 0.8 |
| 5 | 1.0 |
Using Maturity in Go
// Create a maturity model
model := prism.NewMaturityModel()
// Get a specific cell
cell := model.GetCell("operations", "build")
cell.CurrentLevel = 4
// Calculate maturity score
score := cell.CalculateMaturityScore()
fmt.Printf("Maturity: %.1f%%\n", score*100) // 80%
// Create domain-filtered model
opsOnly := prism.NewMaturityModelForDomains([]string{"operations"})
Assessment Guidelines
Level 1 → 2 (Basic)
- Document existing processes
- Establish basic policies
- Implement foundational tools
Level 2 → 3 (Defined)
- Standardize across teams
- Create formal procedures
- Establish consistent metrics
Level 3 → 4 (Managed)
- Define quantitative goals
- Implement continuous monitoring
- Establish feedback loops
Level 4 → 5 (Optimizing)
- Automate optimization
- Implement predictive capabilities
- Drive continuous improvement
Maturity Weight in PRISM Score
By default, maturity contributes 40% to the PRISM score:
The cell score formula is: