Independent Variation Principle의 새로운 기여
Source: Dev.to
번역을 진행하려면 번역이 필요한 전체 텍스트를 제공해 주시겠어요? 텍스트를 주시면 요청하신 대로 한국어로 번역해 드리겠습니다.
독립 변동 원리 (IVP)
구조적 정의
다른 변화 동인 할당을 가진 개별 요소들을 별개의 단위로 구분하고, 동일한 변화 동인 할당을 가진 요소들을 하나의 단위로 통합합니다.
새로운 기여
기초
이 계층은 현실을 인식합니다: 의사결정 권한에 기반한 Partition Property.
1. Partition Property
이전 원칙들은 “관심사를 분리하라”고 말하지만, 관심사들이 서로 어떻게 관계되는지는 명시하지 않습니다. IVP는 독립적인 변화 동인들이 도메인 지식을 분할한다는 것을 규정합니다: 이들은 서로 겹치지 않으며 (중복 없음), 전체를 포괄합니다 (빈틈 없음). 모든 지식 조각은 정확히 하나의 동인에 속합니다; 두 개에 속하는 것처럼 보인다면, 동인들이 실제로 독립적이지 않거나 지식을 분할해야 함을 의미합니다.
2. Decisional Authority에 기반
이전 원칙들은 분리를 기술적 기준(정보 은닉), 예측된 변화(변하는 것을 캡슐화), 혹은 모호한 “책임”(SRP)에 기반을 두었습니다. IVP는 분리를 관찰 가능한 조직 현실에 기반합니다: 누가 변경을 요청할 권한을 가지고 있는가? 이는 미래 기술 진화에 대한 추측에서 기존 의사결정 구조를 매핑하는 것으로 전환됩니다—이는 이해관계자 인터뷰를 통해 발견될 수 있으며, 기술적 직관으로 예측되는 것이 아닙니다.
논리
이 레이어는 규칙을 제공합니다: 양조건, 1/n 순도 스케일, 그리고 구조적 관계보다 인과 관계에 초점을 맞춥니다.
3. 양조건 (IVP‑1 + IVP‑2)
대부분의 원칙은 분리에 초점을 맞춥니다: “다른 것을 함께 넣지 말라.” IVP는 동등하게 중요한 통합 지시를 추가합니다: “같은 것을 함께 넣어라.” 양조건—요소들이 변화 동인을 공유할 때에만 같은 모듈을 공유한다—는 각각의 지시보다 강합니다. 이는 과도한 분리(산재된 관심사)와 부족한 분리(혼합된 관심사)를 모두 금지합니다.
4. 인과 결합 vs. 구조적 결합
전통적인 결합 지표는 구조적입니다: 이 요소들이 같은 데이터를 접근합니까? 같은 함수를 호출합니까? IVP는 인과 결합을 도입합니다: 이 요소들이 같은 이유로 변합니까? 구조적 특성이 동일한 두 요소가 완전히 다른 인과 관계를 가질 수 있습니다. 이 구분은 정적 분석으로는 보이지 않지만 유지보수성에 근본적입니다.
5. 순도의 이산적 특성
IVP는 결합이 연속적이지 않음을 밝힙니다. 변화 동인이 하나인 모듈은 순도 1; 동인이 두 개이면 순도가 1/2로 떨어지고, 세 개이면 1/3이 됩니다. 아주 작은 오염(예: 1 % 외부 지식)도 구조적 순도를 절반으로 줄입니다. 이러한 이산성은 건축 부채가 복리로 증가하는 이유를 설명합니다: 첫 번째 위반이 비례적으로 큰 비용을 초래합니다.
행동
이 레이어의 기능은 구성입니다: 지식으로부터 요소를 도출하고 필요함과 우연한 불순성을 구분합니다.
6. 필요함 vs. 우연한 불순성
IVP는 모든 모듈이 정확히 하나의 변화 드라이버를 가져야 한다고 요구하지 않습니다. 어댑터, 브리지, 코디네이터는 정당하게 여러 드라이버를 지원할 수 있습니다. 여기서 질문은 각 드라이버가 모듈의 목적에 필요한가 여부입니다. 이 구분—필요에 의해 불순한 모듈과 우연에 의해 불순한 모듈 사이—은 단일 책임 원칙에 대한 겉보이는 반례들을 해결합니다.
7. 지식으로부터 요소 도출
요소는 임의로 발명되는 것이 아니라 도메인 지식의 파티션 구조에서 도출됩니다. 각 변화 드라이버의 지식 파티션마다 해당 파티션의 모든 지식을 구현하는 요소를 생성합니다. 이는 소프트웨어 구조를 도메인 구조에 기반하게 합니다.
평가
이 레이어의 기능은 최적화: 목표 함수(Objective Function)입니다. 부채를 우선순위화하고 지식 위생을 측정합니다.
8. 우선순위 지정의 여섯 차원
IVP는 어떤 분리가 가장 중요한지 결정하기 위한 프레임워크를 제공합니다:
- 빈도
- 규모
- 예측 가능성
- 제어
- 범위
- 권한 거리
모든 IVP 위반이 동일하게 긴급한 것은 아닙니다. 이는 IVP를 이진 판단(“준수 여부”)에서 우선순위가 매겨진 개선 로드맵으로 변환합니다.
9. 지식 정리
IVP는 지식 조직과 아키텍처 품질 사이의 공식적인 연결을 설정합니다:
- Cohesion(응집도) 은 모듈이 해당 관심사의 지식을 얼마나 완전하게 구현하고 있는지를 측정합니다.
- Coupling(결합도) 은 외부 지식이 얼마나 많이 유입되었는지를 측정합니다.
따라서 “좋은 아키텍처”는 미적 선호가 아니라 지식 위생의 문제로 변합니다.
Source:
결과
이 레이어는 모든 이전 원칙들(정보 은닉, SOLID, DDD 등)의 통합으로 마무리됩니다.
10. 이전 원칙들의 통합
IVP는 정보 은닉, SRP, OCP, ISP, DIP, 패키지‑아키텍처 원칙, DDD 경계 컨텍스트, GoF 패턴, EIP 패턴 등 모든 것이 단일 근본 원칙의 구현임을 보여줍니다. 이들은 서로 균형을 맞춰야 하는 독립적인 가이드라인이 아니라, 같은 진리에 대한 서로 다른 관점입니다. IVP를 적용하면 다른 원칙들은 자동으로 따르게 됩니다.
더 알아보기
이 기사에서는 다음의 Independent Variation Principle 프레임워크를 적용합니다:
Loth, Y. (2025). The Independent Variation Principle. Zenodo.
https://doi.org/10.5281/zenodo.17677316