How-To Software design practices 110HOWTO-110

Software design practices

Software design practices expressed through SpecDD. These guides show how to turn design intent into local, reviewable specs that preserve responsibility, boundaries, dependency direction, public contracts, and domain behavior while humans and agents change the code.

← All How-To categories

20 guides Software design practices
  1. Intermediate 5 min read
    How to maintain the Single Responsibility Principle with SpecDD

    Use Purpose, Owns, Must, Must not, and local tasks to keep each module, service, model, adapter, or component responsible for one coherent thing.

    Read guide
  2. Intermediate 5 min read
    How to separate concerns with local specs

    Use local specs to keep responsibilities distinct: one spec owns behavior, sibling specs reference each other intentionally, and non-goals prevent overlap.

    Read guide
  3. Intermediate 5 min read
    How to define and enforce module and architecture boundaries with specs

    Use SpecDD specs as architecture guardrails: module specs define responsibility, local specs narrow behavior, and Forbids and Must not keep changes inside the intended boundary.

    Read guide
  4. Intermediate 5 min read
    How to prevent cross-layer coupling

    Use Depends on, Forbids, Must not, and local ownership to stop UI, API, domain, and infrastructure layers from reaching past their boundaries.

    Read guide
  5. Intermediate 5 min read
    How to keep UI components focused

    Use component specs to keep UI code responsible for presentation and interaction while domain rules, persistence, and API behavior stay in their owning specs.

    Read guide
  6. Intermediate 5 min read
    How to avoid leaky abstractions

    Use SpecDD contracts to keep callers depending on stable behavior rather than storage details, vendor APIs, database shapes, or framework internals.

    Read guide
  7. Intermediate 5 min read
    How to design testable code with specs

    Use specs to shape code that is easier to test: local responsibilities, explicit dependencies, scenarios as inputs, and boundaries that keep setup small.

    Read guide
  8. Intermediate 5 min read
    How to define interfaces before implementation

    Use SpecDD interface contracts to agree on what callers can use before deciding how the implementation will work internally.

    Read guide
  9. Intermediate 5 min read
    How to avoid god objects and god modules

    Use local specs to prevent one object, service, module, or directory from accumulating unrelated behavior and becoming the place every change goes.

    Read guide
  10. Intermediate 5 min read
    How to split large features into small safe changes

    Use SpecDD to turn a large feature into bounded, reviewable changes: one local spec at a time, with clear ownership, dependencies, and Done when checks.

    Read guide
  11. Intermediate 5 min read
    How to design for low coupling and high cohesion

    Use SpecDD specs to keep related behavior together, dependencies intentional, and unrelated modules separated by clear contracts.

    Read guide
  12. Intermediate 5 min read
    How to write specs that prevent technical debt

    Use SpecDD to prevent recurring debt patterns: vague ownership, convenience dependencies, duplicated rules, hidden shortcuts, and unfinished local tasks.

    Read guide
  13. Beginner 5 min read
    How to use non-goals to prevent the wrong work

    Write non-goals as practical Must not rules that stop likely overreach while keeping specs short, local, and maintainable.

    Read guide
  14. Beginner 4 min read
    How to compare spec-driven development vs TDD

    SpecDD defines durable behavior, ownership, and boundaries; TDD drives implementation through tests. Used together, specs explain why and tests prove what works.

    Read guide
  15. Beginner 4 min read
    How to compare spec-driven development vs BDD

    BDD centers shared behavior examples; SpecDD can include scenarios but also defines source-adjacent ownership, authority, non-goals, dependencies, and tasks.

    Read guide
  16. Beginner 5 min read
    How to compare SpecDD specs vs architecture docs

    Architecture docs explain broad decisions; SpecDD specs place durable behavior, ownership, and boundaries beside the code that must follow them.

    Read guide
  17. Intermediate 5 min read
    How to keep business rules in the domain layer

    Use domain, model, policy, and service specs to own business rules while UI, API, jobs, and infrastructure delegate instead of duplicating decisions.

    Read guide
  18. Intermediate 5 min read
    How to prevent duplicate logic with specs

    Use SpecDD specs to make duplicated logic visible, choose the owning rule, block secondary implementations, and review callers against the owner.

    Read guide
  19. Intermediate 5 min read
    How to design stable public APIs with specs

    Use SpecDD API specs to make public contracts intentional and reviewable before implementation details become client-facing commitments.

    Read guide
  20. Intermediate 5 min read
    How to manage dependency direction with specs

    Use SpecDD specs to make dependency direction explicit so modules, layers, packages, services, and adapters do not depend on the wrong things.

    Read guide

More How-To categories