Sign of potentially problematic code design.

Desired or necessary system capability.

Diagram showing movement of data.

Improving code structure without changing behavior.

Requirement describing what software must do.

Diagram representing process steps.

Restructuring or rebuilding existing software.

Requirement describing qualities or constraints.

Tree representing choices and outcomes.

Updating legacy software to newer technologies.