Software Architecture References

Purpose

Quick-reference material for software architecture.

These references are intended for lookup rather than learning. For in-depth explanations, see the referenced guides and handbooks.

C4 Model Levels

LevelViewAudienceElements
1System ContextEveryoneUsers, system, external systems
2ContainerTechnical teamServices, databases, queues
3ComponentDevelopersModules, controllers, services
4CodeDevelopersClasses, interfaces, functions

Architectural Patterns Quick Comparison

PatternCouplingComplexityScaleKey Trade-off
LayeredTightLowSmall-MediumSimplicity vs flexibility
HexagonalLooseMediumMediumTestability vs indirection
Event-DrivenVeryHighMedium-LargeDecoupling vs debuggability
Loose
MicroservicesLooseVery HighLargeAutonomy vs operational cost
CQRSMediumHighMedium-LargeOptimization vs complexity

HTTP Status Codes

CodeMeaningWhen to Use
200OKSuccessful GET, PUT, PATCH.
201CreatedSuccessful POST.
204No ContentSuccessful DELETE.
400Bad RequestMalformed request, validation failure.
401UnauthorizedMissing or invalid authentication.
403ForbiddenNot authorized.
404Not FoundResource does not exist.
409ConflictState conflict (duplicate, stale).
422UnprocessableSemantic validation failure.
429Too Many RequestsRate limit exceeded.
500Internal ErrorUnexpected server error.
503UnavailableTemporary service unavailability.

Quality Attributes

AttributeDefinition
PerformanceResponse time, throughput, latency.
ScalabilityAbility to handle increased load.
AvailabilityUptime, fault tolerance, recovery.
SecurityAuthentication, authorization, data protection.
MaintainabilityEase of change, testing, debugging.
EvolvabilityAbility to adapt to new requirements.
OperabilityMonitoring, deployment, incident response.
TestabilityAbility to verify correctness at every level.

ADR Lifecycle States

StateMeaning
ProposedDecision under discussion.
AcceptedDecision agreed and implemented.
DeprecatedDecision is no longer relevant.
SupersededA newer ADR has replaced this decision.

Key Metrics

ConceptQuestion to Ask
CouplingCan this module change without affecting others?
CohesionDoes this module have one clear responsibility?
Technical DebtIs this intentional or accidental?
Architectural FitDoes this decision align with our principles?
Quality Attribute ImpactWhat trade-off does this decision introduce?

Recommended Reading

TitleAuthorFocus
Software Architecture: The Hard PartsFord, Richards,Trade-off analysis
Sadalage
Building Evolutionary ArchitecturesFord, ParsonsEvolvability and fitness
functions
Domain-Driven DesignEric EvansDomain modeling and DDD
Fundamentals of Software ArchitectureRichards, FordArchitecture fundamentals
Documenting Software ArchitecturesClements et al.Architecture documentation

Related Documents