가이드라인: J2EE 응용프로그램의 서브시스템 디자인
이 가이드라인은 J2EE 응용프로그램의 서브시스템을 디자인하는 방법에 대해 설명합니다.
관계
기본 설명

소개

이 가이드라인은 J2EE 응용프로그램 개발에만 적용되는 안내로 가이드라인: 디자인 서브시스템을 보완합니다. 이 J2EE 특정 가이드라인을 읽기 전에 가이드라인: 디자인 서브시스템을 읽는 것이 좋습니다. 이 가이드라인은 각 EJB보다 더 세부적인 디자인 서브시스템에 적용됩니다. EJB에 대한 가이드라인은 가이드라인: EJB(Enterprise JavaBean)를 참조하십시오.

또한 응용프로그램 클라이언트가 특수화된 디자인 서브시스템으로 간주됨에 주의하십시오. 가이드라인: J2EE 응용프로그램 클라이언트를 참조하십시오.

디자인 서브시스템 전개

서브시스템이 처음 식별되면, 초기에는 기술적으로 중립적일 수 있습니다. 즉, 예상되는 오퍼레이션의 동작을 설명하는 일부 상태 머신, 텍스트로 된 설명, 인터페이스에 의해 지정될 수 있습니다. 그러나 이러한 기술적으로 중립적인 서브시스템은 보통 기술 특정 표시로 전개됩니다.

다음에서는 기술에 중립적인 디자인 서브시스템이 기술 특정 서브시스템으로 전개되는 방식의 예를 제공합니다.

서브시스템 스펙(서브시스템의 블랙박스 보기)

서브시스템 스펙은 초기에 추상 UML 인터페이스를 가지는 것으로 모델링될 수 있습니다.

그림 1에 표시된 고객 서브시스템의 예비적 디자인을 고려하십시오. 

함께 표시된 텍스트에서 설명되는 다이어그램.

그림 1: 예비적 디자인-고객 서브시스템

ICustomerMgt는 "getCustomerDetails" 및 "setCustomerDetails"와 같은 오퍼레이션을 갖도록 보다 세부적으로 정의됩니다.

디자인이 세부화될수록(타스크: subsystem_design_real-time_design) 이러한 추상 인터페이스는 언어 및 기술 특정 요소로 대체됩니다. (보다 추상적인 서브시스템 모델을 유지보수하도록 선택할 수 있습니다. 예를 들어, 둘 이상의 언어나 기술로 동일한 디자인을 구현할 필요가 있습니다. 이 옵션에 대한 설명은 개념: 디자인에서 코드로 맵핑을 참조하십시오. 해당 디자인 중간 산출물: 유스 케이스 실현(realization)은 인터페이스 변경사항과 일치하도록 갱신되었습니다.

이 예에서 그림 2는 고객 서브시스템의 블랙박스나 스펙 보기입니다. 향후 디자인에서는 고객 서브시스템이 엔티티 EJB이어야 함을 표시합니다. 예비적 디자인 서브시스템은 다음과 같이 EJB 인터페이스로 변환됩니다.

  • ICustomerMgt =>
    • CustomerHome ?EJBEntityHomeInterface?
  • ICustomer =>
    • Customer ?EJBRemoteInterface?

함께 표시된 텍스트에서 설명되는 다이어그램.

그림 2: 고객 디자인 서브시스템의 블랙 박스 보기

디자인 서브시스템으로 노출된 인터페이스는 일반 Java 인터페이스, EJB 인터페이스(예: Java 인터페이스), EJB 인터페이스(원격 및 홈) 또는 심지어 하나 이상의 EJB의 존재를 완전히 숨기는 하나 이상의 위임 또는 액세스 클래스를 포함할 수 있습니다. Java 인터페이스를 포함하여 이 모두는 UML 인터페이스가 아닌 UML 클래스로 모델링됩니다(가이드라인: J2EE 응용프로그램의 인터페이스 참조). 예를 들어, 세션 Bean은 밀접하게 관련된 엔티티 Bean 세트에 액세스하는 Facade로 자주 사용됩니다. 이 경우, 세션 Bean의 인터페이스만을 서브시스템에서 내보냅니다.

메시지 구동 Bean은 대상(또는 종료점)으로부터 비동기적으로 메시지를 이용합니다. 그러므로 목적지는 메시지 구동 Bean을 포함하는 디자인 서브시스템의 "인터페이스" 역할을 할 수 있습니다.

로컬 인터페이스는 동일한 디자인 서브시스템에서 밀접하게 결합된 다른 EJB에 의해 사용되므로, 서브시스템에서 노출된 가시적인 인터페이스에서 보다는 서브시스템 구현에서 더 자주 표시됨을 참고하십시오.

J2EE 응용프로그램의 인터페이스에 대한 자세한 정보는 가이드라인: J2EE 응용프로그램의 인터페이스를 참조하십시오. EJB 모델링에 대한 자세한 정보는 가이드라인: EJB(Enterprise JavaBean)를 참조하십시오.

서브시스템 구현(서브시스템의 화이트 박스 보기)

디자인 서브시스템은 클라이언트가 필요로 하는 내용만을 노출시켜야 합니다. 그러므로 EJB를 구현하는 클래스는 서브시스템에 속하며, 논리적으로 서브시스템 구현 파트입니다. 서브시스템 구현은 다음과 같을 수 있습니다.

  • 하나 이상의 가시적인 위임 또는 액세스 클래스에서 숨겨진 협업 EJB 및 클래스 세트
  • 다른 협업 클래스가 없는 단일 EJB

이전 고객 서브시스템 예에 이어, 서브시스템의 구현은 다음을 포함합니다.

  • CustomerEntityEJB (컴포넌트) ?EJBEntityBean?
  • CustomerBean ?EJBImplementation?
  • 추가 헬퍼 클래스

그림 3에서는 디자인 서브시스템의 화이트 박스 보기(서브시스템 내부)를 표시합니다. EJB 클래스는 가이드라인: EJB(Enterprise JavaBean)에서 설명한 대로 모델링됩니다. 이 서브시스템의 내부 보기는 서브시스템 구현으로 나타냅니다. 이 보기에서 클라이언트에게 표시되지 않는 결정사항이 표시됩니다. 예를 들어, 이 서브시스템 구현에서 DAO(Data Access Object) 클래스는 JDBC API를 사용하여 지속적 데이터에 액세스합니다. (다른 디자인에서 컨테이너 관리 지속성이 사용될 수 있습니다.) DAO 클래스에 대한 자세한 정보는 가이드라인: EJB(Enterprise JavaBean)를 참조하십시오.

함께 표시된 텍스트에서 설명되는 다이어그램.

그림 3: 고객 디자인 서브시스템의 화이트 박스 보기