서브시스템이 포함한 요소에서 기타 서브시스템이 포함하는 요소 동작을 사용하는 경우 엔클로징 서브시스템 간에 종속성이 작성됩니다. 재사용을 증대하고 유지보수 종속성을 줄이기 위해 서브시스템 자체 또는 서브시스템에
포함된 요소에 대해서가 아닌 서브시스템의 특정 인터페이스
종속성에 대해 표시합니다.
이유는 두 가지가 있습니다.
-
모델 요소가 동일한 동작을 제공하는 경우 하나의 모델 요소(서브시스템 포함)를 다른 요소로 대체할 수 있습니다. 인터페이스와 연관된 필수 동작을 지정하여 임의의 모델 요소에 있는 동작 요구사항이 인터페이스에
연관되어 표현되어야 합니다.
-
디자이너가 서브시스템의 내부 동작을 디자인할 때 올바른 외부 동작을 제공하기만 하면 디자이너가 원하는 방식으로 디자인하도록 허용합니다. 임의의 서브시스템 모델 요소가 다른 서브시스템의 모델
요소를 참조하는 경우 디자이너는 해당 모델 요소를 임의로 제거하거나 모델 요소의 동작을 다른 요소로 재분배할 수 없습니다. 결과적으로 시스템이 손상되기 쉬워집니다.
종속성을 작성할 때 서브시스템에 포함된 모델 요소와 기타 서브시스템에 포함된 모델 요소 간에 직접적인 종속성이나 연관이 없도록 하십시오. 서브시스템과 인터페이스에 순환되는 종속성이 없는지도 확인하십시오.
서브시스템이 인터페이스를 실현하지도 못하고 의존할 수도 없는 상태가 되면 안됩니다.
서브시스템 간의 종속성 및 서브시스템과 패키지 간의 종속성은 아래와 같이 직접적으로 그릴 수 있습니다. 이 방식으로 표시되면 종속성은 임의의 서브시스템(예: 송장 관리)이 다른 서브시스템(예: 지불 스케줄 관리)에
직접 의존하게 됩니다.
직접 종속성을 사용하는 서브시스템 계층화 예제
임의의 서브시스템에서 다른 서브시스템으로 잠재적인 대체가 있는 경우(동일한 인터페이스 포함) 종속성은 서브시스템 자체가 아닌 서브시스템에서 실현되는 인터페이스로 표시됩니다. 이를 통해 사용되는 동일한 인터페이스를 실현하는 다른 모든 모델 요소(서브시스템 또는
클래스)가 허용됩니다. 인터페이스 종속성을 사용하면 교체 가능한 디자인 요소를 사용하여 디자인되는 융통성있는 프레임워크를 사용할 수 있습니다.
인터페이스 종속성을 사용하는 서브시스템 계층화 예제
|