---
id: [[P-Reinforce|P-Reinforce]]-AUTO-SWDP-001
category: "10_Wiki/💡 Topics/AI"
confidence_score: 0.98
tags: [auto-reinforced, software-engineering, design-[[Principles|Principles]], clean-code, [[Architecture|Architecture]]]
last_reinforced: 2026-04-20
---

# [[Software-Design-Principles|Software-Design-Principles]]

## 📌 한 줄 통찰 (The Karpathy Summary)
> "코드를 예술로 바꾸는 설계 철학: 시간이 지날수록 썩어가는 코드(Code Rot)를 방지하고, 변화에 유연하며 유지보수가 즐거워지는 견고한 아키텍처의 황금률."

## 📖 구조화된 지식 (Synthesized Content)
소프트웨어 설계 원칙(Software Design Principles)은 소프트웨어의 품질, 가독성, 유지보수성을 극대화하기 위해 개발자들이 지켜야 할 일련의 규칙과 지침입니다.

1.  **SOLID 원칙 (The Pillar)**:
    *   **SRP (단일 책임)**: 하나의 클래스는 하나의 책임만 가져야 함.
    *   **OCP (개방-폐쇄)**: 확정에는 열려 있고, 수정에는 닫혀 있어야 함.
    *   **LSP (리스코프 치환)**: 자식 클래스는 언제나 부모 클래스를 대체할 수 있어야 함.
    *   **ISP (인터페이스 분리)**: 명확한 목적의 작은 인터페이스들로 쪼개야 함.
    *   **DIP (의존 역전)**: 구체적인 것이 아니라 추상적인 것에 의존해야 함.
2.  **핵심 철학**:
    *   **DRY (Don't Repeat Yourself)**: 코드 중복 제거.
    *   **[[KISS (Keep It Simple, Stupid)|KISS (Keep It Simple, Stupid]]**: 단순함이 복잡함을 이긴다.
    *   **YAGNI (You Ain't Gonna Need It)**: 미리 예측해서 불필요한 기능 만들지 않기.
    *   **Encapsulation**: 내부 데이터와 로직을 숨겨 파급 효과 최소화.
3.  **효과**:
    *   기술 부채(Technical Debt) 감소, 팀 간 협업 효율 증대, 버그 발생률 급감.

## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
- **과거 데이터와의 충돌**: 과거에는 '완벽한 초기 설계'를 지향했으나, 현대 소프트웨어 정책은 빠른 배포 후 리팩토링(Refactoring)을 장려하는 '점진적 진화형 아키텍처' 정책으로 전환됨(RL Update).
- **정책 변화(RL Update)**: AI 코딩 어시스턴트의 보급에 따라, "AI가 쓴 코드가 설계 원칙을 준수했는가"를 자동으로 검증하는 'AI 코드 거버넌스 및 린팅 정책'이 필수 개발 인프라로 자리 잡음.

## 🔗 지식 연결 (Graph)
- [[Principles-of-Architecture|Principles-of-Architecture]], Reactive-Programming, Robustness, [[Safety & Reliability|Safety & Reliability]], [[Resource-Management|Resource-Management]]
- **Modern Tech/Tools**: [[SonarQube|SonarQube]], [[ESLint|ESLint]], Design Patterns (Gang of Four), Clean Code.
---
