|$ curl https://forge-ai.dev/api/markdown?path=docs/architecture/sdlc
$cat docs/software-development-lifecycle-(sdlc).md
updated Today·22-30 min read·published

Software Development Lifecycle (SDLC)

ArchitectureSDLCProcessBeginner🎯Free Tools
Introduction

The software development lifecycle (SDLC) is the structured set of activities that transform stakeholder needs into running, maintained software. Whether your calendar says Waterfall or Scrum, the same kinds of work must occur: understand the problem, design a solution, build it, verify it, release it, and keep it healthy.

This page explains each phase in depth — why it exists, what artifacts it produces, what gates protect quality, and how feedback loops connect phases. Process model pages (Waterfall, Agile, Kanban, DevOps) show how teams sequence and overlap this work.

info

Start requirements work with Requirements Engineering — weak requirements poison every later phase.
Why an Explicit Lifecycle Exists

Informal "just build it" works until complexity, compliance, or team size make invisible work dangerous. An explicit lifecycle:

  • Makes risk visible early (security, performance, integration) instead of at go-live.
  • Creates shared artifacts so knowledge is not trapped in one developer's head.
  • Defines gates — points where you decide proceed, iterate, or stop.
  • Enables auditability when regulation demands traceability from requirement to release.
  • Aligns architecture decisions with moments when evidence is available.
Without lifecycle disciplineWith lifecycle discipline
Scope discovered in productionScope negotiated with acceptance criteria
Architecture by accidentArchitecture with ADRs and review
Testing as leftover timeTesting planned with risk-based coverage
Deploy as heroicsDeploy as automated, reversible routine
Maintenance as firefightingMaintenance as product work with SLOs
Phase 1 — Requirements

Purpose: decide what problem to solve, for whom, and what "done" means — before committing expensive design and code.

Activities include elicitation (interviews, observation, analytics), analysis (conflict resolution, MoSCoW), specification (user stories, use cases, FRD/PRD), and validation (walkthroughs, prototypes, acceptance criteria review).

ArtifactContentsConsumer
Problem statementWho hurts, why now, success metricProduct + eng leadership
FR list / backlogBehaviors the system must supportDesign + implementation
NFR tableMeasurable quality attributesArchitecture + ops
Acceptance criteriaTestable conditions per itemQA + developers
Trace matrix (regulated)Req → design → test → releaseCompliance

Gate: requirements ready

Stakeholders agree priorities; NFRs are measurable; open questions listed; out-of-scope is explicit.

Why this phase exists

Building the wrong thing perfectly is still failure. Cheap clarification beats expensive rework.

best practice

Treat NFRs as first-class requirements with owners and verification methods — not a footnote on a slide.
Phase 2 — Design

Purpose: translate requirements into a structure that can be built, tested, operated, and evolved.

Design spans product UX, API contracts, data models, threat models, and software architecture. Architecture work here selects styles (monolith, hexagonal, services…), consistency models, and integration patterns — recorded in ADRs.

  • High-level design: C4 Context/Container, major data stores, trust boundaries.
  • Detailed design: module APIs, sequence flows for critical paths, schema drafts.
  • Spikes: time-boxed experiments for unknown tech or performance risks.
  • Reviews: architecture review board or lightweight peer ADR review.
ArtifactPurpose
ADR setRecord irreversible or contested decisions
C4 diagramsShared mental model of structure
API contractsEnable parallel frontend/backend work
Threat modelDrive security controls into design
Test strategyMap risks to test types early
📝

note

Design is not a one-time phase in Agile — but the kinds of thinking still happen every iteration. Skip the thinking and you get accidental architecture.
Phase 3 — Implementation

Purpose: realize the design as working software in vertical slices that prove value and architecture together.

Prefer thin end-to-end slices over horizontal layer completion. Keep architecture fitness checks in CI so illegal dependencies fail the build. Pair implementation with contract tests when multiple teams share APIs.

  • Coding standards, reviews, and trunk-based or short-lived branches.
  • Feature flags for incomplete work on main.
  • Continuous integration on every change.
  • Documentation as code: OpenAPI, ADRs, runbooks updated in the same PR.
ci-fitness.example.yml
YAML
1# Illustrative — fail build on architecture rule breaches
2jobs:
3 fitness:
4 steps:
5 - run: npx depcruise --validate .dependency-cruiser.js src
6 - run: npm test -- --grep "architecture"
7 - run: npm run lint
Phase 4 — Testing

Purpose: reduce the risk that defects, regressions, or NFR breaches reach users.

LayerQuestions answeredTypical owner
UnitDoes this unit behave in isolation?Developer
IntegrationDo modules/DB/API collaborate?Developer
ContractDo provider/consumer stay compatible?Team boundary
E2EDoes the user journey work?QA + eng
PerformanceDo we meet latency/throughput NFRs?Perf eng / shared
SecurityAre known classes of vuln absent?Sec + eng

Gates: critical path tests green; NFR tests for release-blocking attributes green; known defects triaged with severity. Shift-left means running cheap tests early and expensive ones when risk warrants.

Phase 5 — Deployment

Purpose: move verified software into production safely and reversibly.

  • Automated pipelines: build → test → harden → deploy.
  • Progressive delivery: canaries, blue/green, ring deployments.
  • Feature flags and kill switches for rapid mitigation.
  • Runbooks and change records where compliance requires them.
  • Post-deploy verification: synthetic checks, SLO burn alerts.

warning

A deploy process that only works when a specific engineer is awake is not a deploy process — it is a key-person risk.
Phase 6 — Maintenance & Evolution

Purpose: keep the system valuable: fix defects, adapt to change, improve NFRs, and evolve architecture with evidence.

Maintenance is not "lesser" engineering. It includes incident response, dependency upgrades, cost optimization, accessibility remediation, and planned extractions of modules into services when requirements demand it.

Signal from opsLifecycle response
Repeated incidents in one moduleRedesign boundary; add tests; maybe extract
SLO burn on latencyPerf design spike; caching; query plan
Slow feature deliveryReduce coupling; revisit process WIP
Audit findingTraceability and control changes
Feedback Loops & Gates

Linear diagrams lie. Real lifecycles are loops:

  • Customer feedback → new/changed requirements.
  • Test failures → design or implementation changes.
  • Incidents → requirements for resilience and sometimes architecture changes.
  • Metrics → prioritization (what to build next).

Gates are intentional pause points: requirements sign-off, design review, release readiness, go/no-go. Agile shortens gates; regulated Waterfall lengthens and formalizes them. Either way, gates without criteria become rubber stamps.

release-gate-checklist.txt
TEXT
1[ ] Acceptance criteria met for in-scope items
2[ ] NFR verification attached (perf/security as required)
3[ ] Rollback plan tested or previously proven
4[ ] Observability: dashboards + alerts for new paths
5[ ] ADR updated if architecture changed
6[ ] On-call aware of change window
Artifacts Cheat Sheet
PhaseMust-have artifactsOptional / contextual
RequirementsBacklog + AC + NFR tableFRD, personas, trace matrix
DesignADR + API draft + data sketchFull C4, formal UML
ImplementationCode + tests + PR descriptionSpike reports
TestingResults + known issuesPerf reports, pen-test
DeploymentPipeline record + change logCAB approval
MaintenanceIncidents + SLO reportsDebt roadmap
How and Why — Decision Notes

How to apply: map your team's current work onto these phases even if you use Scrum — ensure each kind of work has an owner and a quality bar. Why each phase exists: it is cheaper to discover error in that phase than in a later one. Requirements mistakes are cheapest to fix in requirements; architecture mistakes are cheapest to fix in design spikes; etc.

🔥

pro tip

If a phase is "skipped," its work usually leaks into a later phase at higher cost. Name the leak and schedule the missing work.

Community

Get help on Slack, Discord or VIP

Stuck on a guide? Join the community and ask.