<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software design practices | SpecDD</title><link>https://specdd.ai/how-to/software-design-practices/</link><description>Spec-driven development software design guides for preserving boundaries, reducing coupling, focusing components, protecting APIs, and keeping domain rules in the right layer.</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://specdd.ai/how-to/software-design-practices/index.xml" rel="self" type="application/rss+xml"/><item><title>How to maintain the Single Responsibility Principle with SpecDD</title><link>https://specdd.ai/how-to/software-design-practices/how-to-maintain-the-single-responsibility-principle-with-specdd/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-maintain-the-single-responsibility-principle-with-specdd/</guid><description>Maintain the Single Responsibility Principle with spec-driven development by writing local specs that define one purpose, owned files, required behavior, and explicit non-goals.</description></item><item><title>How to separate concerns with local specs</title><link>https://specdd.ai/how-to/software-design-practices/how-to-separate-concerns-with-local-specs/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-separate-concerns-with-local-specs/</guid><description>Separate concerns with local SpecDD specs in a spec-driven development workflow by assigning each responsibility to the nearest owning spec and preventing overlap between modules, services, adapters, and components.</description></item><item><title>How to define and enforce module and architecture boundaries with specs</title><link>https://specdd.ai/how-to/software-design-practices/how-to-define-and-enforce-module-and-architecture-boundaries-with-specs/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-define-and-enforce-module-and-architecture-boundaries-with-specs/</guid><description>Define and enforce module and architecture boundaries with spec-driven development by using ownership, allowed dependencies, forbidden access, inherited constraints, and review checks.</description></item><item><title>How to prevent cross-layer coupling</title><link>https://specdd.ai/how-to/software-design-practices/how-to-prevent-cross-layer-coupling/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-prevent-cross-layer-coupling/</guid><description>Prevent cross-layer coupling with spec-driven development by defining allowed dependency direction, blocked layer access, adapter boundaries, and review checks.</description></item><item><title>How to keep UI components focused</title><link>https://specdd.ai/how-to/software-design-practices/how-to-keep-ui-components-focused/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-keep-ui-components-focused/</guid><description>Keep UI components focused with SpecDD component specs for spec-driven development that define rendering, interaction, state, accessibility, and boundaries from domain and persistence logic.</description></item><item><title>How to avoid leaky abstractions</title><link>https://specdd.ai/how-to/software-design-practices/how-to-avoid-leaky-abstractions/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-avoid-leaky-abstractions/</guid><description>Avoid leaky abstractions with spec-driven development by defining public contracts, hiding implementation details, forbidding dependency leakage, and reviewing callers against the spec.</description></item><item><title>How to design testable code with specs</title><link>https://specdd.ai/how-to/software-design-practices/how-to-design-testable-code-with-specs/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-design-testable-code-with-specs/</guid><description>Design testable code with spec-driven development by writing specs with observable behavior, clear boundaries, scenarios, dependencies, and Done when checks.</description></item><item><title>How to define interfaces before implementation</title><link>https://specdd.ai/how-to/software-design-practices/how-to-define-interfaces-before-implementation/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-define-interfaces-before-implementation/</guid><description>Define interfaces before implementation with spec-driven development by specifying exposed entry points, accepted inputs, returned outputs, errors, examples, and boundaries.</description></item><item><title>How to avoid god objects and god modules</title><link>https://specdd.ai/how-to/software-design-practices/how-to-avoid-god-objects-and-god-modules/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-avoid-god-objects-and-god-modules/</guid><description>Avoid god objects and god modules with spec-driven development by limiting ownership, splitting responsibilities, adding non-goals, and keeping tasks local.</description></item><item><title>How to split large features into small safe changes</title><link>https://specdd.ai/how-to/software-design-practices/how-to-split-large-features-into-small-safe-changes/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-split-large-features-into-small-safe-changes/</guid><description>Split large features into small safe changes with spec-driven development by decomposing behavior into local specs, sequencing tasks, and verifying each boundary.</description></item><item><title>How to design for low coupling and high cohesion</title><link>https://specdd.ai/how-to/software-design-practices/how-to-design-for-low-coupling-and-high-cohesion/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-design-for-low-coupling-and-high-cohesion/</guid><description>Design for low coupling and high cohesion with spec-driven development by grouping related responsibilities, minimizing dependencies, and enforcing local boundaries.</description></item><item><title>How to write specs that prevent technical debt</title><link>https://specdd.ai/how-to/software-design-practices/how-to-write-specs-that-prevent-technical-debt/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-write-specs-that-prevent-technical-debt/</guid><description>Write SpecDD specs that prevent technical debt in a spec-driven development workflow by making boundaries, non-goals, dependencies, shortcuts, and completion criteria explicit.</description></item><item><title>How to use non-goals to prevent the wrong work</title><link>https://specdd.ai/how-to/software-design-practices/how-to-use-non-goals-to-prevent-the-wrong-work/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-use-non-goals-to-prevent-the-wrong-work/</guid><description>Use spec-driven development non-goals to prevent wrong work by writing focused Must not rules for plausible boundary mistakes, overreach, and responsibility leaks.</description></item><item><title>How to compare spec-driven development vs TDD</title><link>https://specdd.ai/how-to/software-design-practices/how-to-compare-spec-driven-development-vs-tdd/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-compare-spec-driven-development-vs-tdd/</guid><description>Compare Spec-driven development and test-driven development, understand where specs and tests differ, and learn how to combine SpecDD with TDD.</description></item><item><title>How to compare spec-driven development vs BDD</title><link>https://specdd.ai/how-to/software-design-practices/how-to-compare-spec-driven-development-vs-bdd/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-compare-spec-driven-development-vs-bdd/</guid><description>Compare Spec-driven development and behavior-driven development, understand how scenarios overlap, and learn how SpecDD adds ownership and boundaries.</description></item><item><title>How to compare SpecDD specs vs architecture docs</title><link>https://specdd.ai/how-to/software-design-practices/how-to-compare-specdd-specs-vs-architecture-docs/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-compare-specdd-specs-vs-architecture-docs/</guid><description>Compare SpecDD specs and architecture docs for spec-driven development, decide what belongs in each, and use source-adjacent specs to make architecture operational during code changes.</description></item><item><title>How to keep business rules in the domain layer</title><link>https://specdd.ai/how-to/software-design-practices/how-to-keep-business-rules-in-the-domain-layer/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-keep-business-rules-in-the-domain-layer/</guid><description>Keep business rules in the domain layer with spec-driven development by assigning rule ownership, forbidding leakage into UI, controllers, jobs, and adapters, and reviewing checks.</description></item><item><title>How to prevent duplicate logic with specs</title><link>https://specdd.ai/how-to/software-design-practices/how-to-prevent-duplicate-logic-with-specs/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-prevent-duplicate-logic-with-specs/</guid><description>Prevent duplicate logic with spec-driven development by assigning one owner for validation, business rules, formatting, API behavior, and shared decisions.</description></item><item><title>How to design stable public APIs with specs</title><link>https://specdd.ai/how-to/software-design-practices/how-to-design-stable-public-apis-with-specs/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-design-stable-public-apis-with-specs/</guid><description>Design stable public APIs with spec-driven development by defining exposed endpoints, inputs, outputs, errors, compatibility rules, examples, and deprecation expectations.</description></item><item><title>How to manage dependency direction with specs</title><link>https://specdd.ai/how-to/software-design-practices/how-to-manage-dependency-direction-with-specs/</link><guid>https://specdd.ai/how-to/software-design-practices/how-to-manage-dependency-direction-with-specs/</guid><description>Manage dependency direction with spec-driven development by defining allowed imports, forbidden reverse dependencies, layer rules, and review checks.</description></item></channel></rss>