Files
2nd/01_Archive/2026-04-20/응집도와 결합도.md
T

4.7 KiB

id, category, confidence_score, tags, last_reinforced, github_commit
id category confidence_score tags last_reinforced github_commit
P-REINFORCE-AUTO-6D470D 10_Wiki/💡 Topics/Programming & Language 0.90
auto-reinforced
2026-04-20 [P-Reinforce] Continuous Worker - 응집도와 결합도

응집도와 결합도

📌 한 줄 통찰 (The Karpathy Summary)

**응집도(Cohesion)**와 **결합도(Coupling)**는 소프트웨어 모듈과 컴포넌트가 얼마나 잘 설계되었는지를 평가하는 핵심적인 척도입니다 [1]. 응집도는 모듈 내부의 요소들이 하나의 명확한 목적을 위해 얼마나 밀접하게 관련되어 있는지를 나타내며, 결합도는 모듈 간의 상호 의존성 정도를 의미합니다 [2-4]. 성공적인 소프트웨어 설계와 관심사의 분리(SoC)를 효과적으로 적용하기 위해서는 **'높은 응집도'**와 **'낮은 결합도'**를 지향해야 합니다 [1, 2].

📖 구조화된 지식 (Synthesized Content)

1. 응집도 (Cohesion)

  • 개념: 모듈이나 클래스 내의 요소들이 얼마나 밀접하게 관련되어 있는지를 보여주는 척도입니다 [3]. 응집도가 높다는 것은 해당 모듈이 단일한 기능이나 역할에 집중하고 있음을 의미합니다 [3].
  • 유형: 응집도는 수준에 따라 기능적 응집(가장 이상적인 형태), 순차적 응집, 논리적 응집, 시간적 응집, 절차적 응집, 그리고 전혀 관련 없는 요소들이 모인 우발적 응집(가장 낮은 수준)으로 분류됩니다 [3].
  • 높은 응집도의 장점: 모듈 내의 코드가 같은 목표를 위해 존재하므로 가독성이 향상되고, 특정 기능을 수정할 때 코드의 다른 부분에 영향을 주지 않아 유지보수성과 재사용성이 증가합니다 [5]. 또한, 명확한 책임 덕분에 독립적인 테스트가 용이해집니다 [5].

2. 결합도 (Coupling)

  • 개념: 모듈 간의 의존성 정도를 나타냅니다 [4]. 결합도가 낮으면 각 모듈이 독립적으로 동작할 수 있지만, 높을 경우 한 모듈의 변경이 다른 모듈에 영향을 미치게 됩니다 [4].
  • 유형: 결합도는 단순한 데이터 값만 전달하는 자료 결합(가장 낮음)부터 스탬프 결합, 제어 결합, 외부 결합, 공통 결합, 그리고 내부 내용을 직접 참조하거나 수정하는 내용 결합(가장 강하고 바람직하지 않음)으로 나뉩니다 [4].
  • 결합도를 낮추기 위한 전략: 모듈 간 결합도를 줄이려면 인터페이스 사용, 외부에서 의존성을 주입받는 의존성 주입(Dependency Injection), 간접적으로 상호작용하는 이벤트 기반 아키텍처, 데이터 구조의 단순화캡슐화 기법을 적용할 수 있습니다 [6].

3. 설계 원칙과의 상호작용

  • 소프트웨어 개발의 근본 원칙인 **관심사의 분리(SoC)**를 적용하는 과정은 결국 결합을 감소시키고 응집력을 증가시키는 것을 목표로 합니다 [7, 8].
  • 느슨한 결합과 높은 응집도를 유지하면 코드의 명확성과 재사용성이 높아지고, 여러 명의 엔지니어가 서로 방해받지 않고 작업할 수 있어 동시(병렬) 개발의 효율성이 크게 향상됩니다 [9-12].

⚠️ 모순 및 업데이트 (Contradictions & RL Update)

  • 과거 데이터와의 충돌: 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
  • 정책 변화: Programming & Language 분야의 자동 자산화 수행.

🔗 지식 연결 (Graph)


Last updated: 2026-04-18

  • Raw Source: 00_Raw/2026-04-20/응집도와 결합도.md