소프트웨어 설계에는 크게 네 가지 추상화 레벨이 존재한다.각 레벨마다 추상화 정도나 설계 범위가 달라지게 된다. 클래스 설계클래스 설계는 프로그램의 최소 단위가 되는 구성 요소를 설계하는 과정이다. 컴포넌트 설계컴포넌트 설계는 클래스 설계 보다 높은 추상화 레벨에서 컴포넌트의 구성 방식과 협력 방식을 결정하는 과정이다컴포넌트란특정 동작을 수행하는 책임을 가지며, 명확한 인터페이스로 정의된 소프트웨어의 구성 요소를 의미한다. 여러 클래스로 구성되기도 한다.여기서 OrderRepository라는 인터페이스를 구현한 OrderRepositoryImpl 클래스가 컴포넌트의 실체이다.하지만 이 클래스만으로 모든 처리를 수행하지 않고 일부 작업을 Helper 라는 다른 클래스들에게 위임하여 전체 작업을 완료하는데 ..