Software Design Lifecycle

Notes on the general software design lifecycle, the difference between design docs and implementation docs, and what a solid design doc should cont...

Notes on the general software design lifecycle, the difference between design docs and implementation docs, and what a solid design doc should contain.

General Design Lifecycle

  1. Problem clarification and requirement doc
    1. Background, context, and problem statement
    2. Goals and success criteria
    3. Out of scope and non-goals
  2. Strategy and architecture doc
    1. HLD
      1. Major components, data flow, APIs, storage, queues, and dependencies
    2. LLD if possible
      1. Core entities, class or service responsibilities, schema
    3. Alternatives considered and tradeoffs

Assumptions:

  • traffic will not exceed X QPS in v1
  • agents are idempotent
  • only single-region support is needed initially
  1. Design review, align and refine
    1. Share with peers or leadership
    2. Gather feedback on correctness, feasibility, and risks
    3. Update the doc
  2. Implementation
    1. Follow design
    2. Write tests
  3. Implementation doc for product, non-eng, and ops

Purpose:

  • explain what was actually built
  • explain how to use or run it

Typical content:

  • What we built: high-level summary of the system or feature
  • How it works: simplified flow, less engineering jargon, enough to explain behavior
  • Setup requirements: infra, dependencies, installation steps
  • Configuration and properties: env vars, feature flags, property controllers
  • Usage instructions: API endpoints, inputs and outputs, sample calls

Limitations and Known Issues:

  • What are the current limitations or known issues in this implementation
  1. Deployment strategy: rollout and rollback
    1. How it will be deployed, CI/CD, scripts
    2. Rollout plan, staged, canary, feature flag
    3. Rollback strategy, how to revert safely
    4. Backward compatibility notes
  2. Testing: unit, integration, load
    1. Unit and integration tests and automation
    2. Load and stress tests
    3. Failure and chaos testing for reliability

Design doc = requirements + planned solution. Implementation doc = what got built + how to run or use it.


Design Doc Overview

What - Why - How

Section Description Level of Detail
Overview, Problem Statement and Goals Core Product Requirements What the service does, key problems it solves, and primary users. Goals are explicit objectives. Non-goals are things intentionally not covered to avoid scope creep. 1-2 pages
High-Level Architecture (HLD) System-level architecture diagram, major components, and high-level request or data flow. No deep implementation details. Visual diagram + 1 page explanation
API Design Overview of REST or gRPC endpoints, high-level request or response shapes, versioning strategy, and how other services integrate. Sample requests for main APIs
Key Components (Light LLD) and Data Model (Optional) Description of important internal modules, adapter patterns, orchestrators, caching logic, rate limiting, routing, and so on. Not class-by-class LLD. Also includes high-level schema, key fields, storage choices, and data contracts when relevant. ER diagram or schema overview
Performance & Scalability Current traffic, latency SLAs, throughput, scaling strategy, performance expectations, and SLOs. Optional but small
Security, Compliance and Reliability Authentication, authorization, RBAC, secret management, PII redaction, data residency, audit requirements, failover strategies, retries, and circuit breakers. Security model overview
Deployment & Operations (Optional) How the service is deployed, for example Kubernetes, rollout strategy, environment setup, and multi-region structure. High-level process, no YAML or Helm values
Limitations and Future Scope Current constraints, technical debt, bottlenecks, and planned improvements or features in pipeline. Brief bullets
Appendix (Optional) Code references, extended diagrams, vendor matrix, glossary, and deep links to configs. Keeps the main doc clean. Supporting materials