Blog / Technical / Software Engineering Principles

Software Engineering Principles

Software engineering principles are the foundational rules and heuristics that guide the design of code at all levels — from individual functions to entire system modules. Mastery of these principles separates...

large-scale-software-engineeringdocs

Software engineering principles are the foundational rules and heuristics that guide the design of code at all levels — from individual functions to entire system modules. Mastery of these principles separates software that is easy to change, test, and understand from code that accrues technical debt.

Overview

mindmap root((Engineering\nPrinciples)) SOLID Single Responsibility Open-Closed Liskov Substitution Interface Segregation Dependency Inversion DRY / KISS / YAGNI Don't Repeat Yourself Keep It Simple You Aren't Gonna Need It Domain-Driven Design Ubiquitous Language Bounded Contexts Aggregates Domain Events Repositories Package Design REP - Reuse CCP - Common Closure CRP - Common Reuse ADP - Acyclic Dependencies SDP - Stable Dependencies Coding Principles Separation of Concerns Law of Demeter Command-Query Separation Fail Fast Composition Over Inheritance

How Principles Relate

graph TD HLPrinciples[High-Level Design Principles] HLPrinciples --> DDD[Domain-Driven Design\nDefines system structure] HLPrinciples --> PKG[Package Design Principles\nDefines module boundaries] ModPrinciples[Module-Level Principles] ModPrinciples --> SOLID[SOLID\nDefines class/component design] ModPrinciples --> DRY[DRY / KISS / YAGNI\nDefines code quality heuristics] ImplPrinciples[Implementation Principles] ImplPrinciples --> Code[Coding Principles\nSoC, LoD, CQS, Fail Fast] DDD --> ModPrinciples PKG --> ModPrinciples SOLID --> ImplPrinciples DRY --> ImplPrinciples

Topics in This Section

File Topic Key Concepts
01_solid_principles.md SOLID SRP, OCP, LSP, ISP, DIP
02_dry_kiss_yagni.md DRY / KISS / YAGNI Code quality heuristics
03_domain_driven_design.md DDD Bounded contexts, aggregates, ubiquitous language
04_package_module_design.md Package Design REP, CCP, CRP, ADP, SDP, SAP
05_coding_design_principles.md Coding Principles SoC, LoD, CQS, fail fast, composition