# Statecharts

> A conceptual representation of a state machine extended with nested states and parallel regions.

Record: `architecture:statecharts`
Kind: model
Layer: [Design Patterns Core](https://banes-lab.com/records/layer/design-patterns-core.md)
Severity: contextual
Scope: behavior, state modeling, hierarchy
Canonical: https://banes-lab.com/ontology#architecture-statecharts

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Finite State Machine](https://banes-lab.com/records/architecture/finite-state-machine.md) and before [Factory Pattern](https://banes-lab.com/records/architecture/factory-pattern.md).

## Repair

- Refactored by: Introduce nested and parallel statechart regions
- Detected by: combinatorial state growth from independent concerns modeled in one flat machine
- Violated by: a flat FSM duplicating shared transitions across many near-identical states
- Measured by: transition duplication across sibling states
- Enforced by: state model review

## Requires

- [Finite State Machine](https://banes-lab.com/records/architecture/finite-state-machine.md)

## Reinforces

- [Finite State Machine](https://banes-lab.com/records/architecture/finite-state-machine.md)
- [Separation of Concerns](https://banes-lab.com/records/architecture/separation-of-concerns.md)

## Enables

- [Hierarchical States](https://banes-lab.com/records/lexicon/hierarchical-states.md)
- [Parallel Regions](https://banes-lab.com/records/lexicon/parallel-regions.md)
- [Guarded Transitions](https://banes-lab.com/records/lexicon/guarded-transitions.md)

## Conflicts with

- [Flat State Explosion](https://banes-lab.com/records/lexicon/flat-state-explosion.md)

## In tension with

- [Tooling Complexity](https://banes-lab.com/records/lexicon/tooling-complexity.md)

## Tensions

- [Statecharts / Tooling Complexity](https://banes-lab.com/records/tension/statecharts-tooling-complexity.md)

## Contracts

- [Statecharts](https://banes-lab.com/records/algorithms/statecharts.md)

## Severity

- [contextual](https://banes-lab.com/records/vocabulary/severity-contextual.md)

## Category

- [Behavioral Patterns](https://banes-lab.com/records/architecture-category/behavioral-patterns.md)

## Linked from

- [Core Modular Design](https://banes-lab.com/ontology/principles/architecture-category-core-modular-design.md)
- [Behavioral Patterns](https://banes-lab.com/ontology/principles/architecture-category-behavioral-patterns.md)
- [Behavioral Patterns](https://banes-lab.com/ontology/lexicon/lexicon-category-behavioral-patterns.md)
- [Quality Attributes](https://banes-lab.com/ontology/lexicon/lexicon-category-quality-attributes.md)
- [Architecture](https://banes-lab.com/ontology/algorithms/algorithms-domain-architecture.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
