 |
|
난이도 : 중급 Dmitry Gorelik, Software Developer, IBM Japan
2008 년 5 월 13 일 본 글은 IBM® Rational® Software Architect 7.0.0.2나 그 이상 버전에 포함된 UML-to-SOA 변환 도구를 사용해 소프트웨어 서비스를 UML 모델에서 서비스 지향 아키텍처(SOA) 모델로 바꾸는 과정을 설명합니다. 이 변환 과정은 특정 소프트웨어 구현을 위해 다르게 확장, 변환되는 것을 보호하는 역할을 합니다. UML-to-SOA 변환은 특히 UML 모델을 소스로 받아들이고 특정 도메인에 한정적인 SOA 구현을 가능하게 합니다. 변환 출력은 전적으로 선택된 변환 확장에 의존합니다. 보통 변환 확장은 도메인에 한정적인 소프트웨어 산출물을 생산하는데, 이는 런타인 머신이나 서버에 배치될 수 있습니다. 이러한 확장은 이후 개발 및 배치에 다른 도구를 입력 장치로 사용할 수 있게 해줍니다.
IBM® Rational® Software Architect의 UML-to-SOA 변환 도구에는 SOA 변환 도구가 포함되어 있다. 이는 SCA(Service Component Architecture)를 기반으로 하는데, SCA는 SCDL(Service Component Definition Language)을 사용해 메타데이터를 표현한다. UML-to-SOA 변환 도구는 향상된 개발, 테스팅, 배치를 위해 IBM® WebSphere® Integration Developer 6.0.2나 그 이상 버전으로 임포트된다. 일반적인 변환 구성 옵션에 더해 UML-to-SOA 변환 도구는 특정 구성 속성을 제공한다.
변환 구조와 확장성
그림 1은 UML-to-SOA 변환 구조를 보여준다.
그림 1. UML-to-SOA 변환 구조
UML-to-SOA 변환 도구는 SCDL 모듈과 라이브러리 프로젝트를 만드는 역할을 하는 UML-to-SCDL 변환으로 확장된다.
-
모듈 프로젝트에는 모듈, 컴포넌트, 익스포트, 임포트 같은 SCDL 산출물이 포함되어 있다.
-
라이브러리 프로젝트에는 다양한 SCDL 요소로 참조되는 도메인에 한정된 다른 산출물이 들어있다.
Rational Software Architect의 UML-to-SCDL 변환 도구는 두 그룹으로 이뤄진 네 가지 확장을 제공한다.
-
인터페이스 확장은 WSDL 포트 유형과 자바 인터페이스에서 참조되는 UML 인터페이스를 포함하는 소스 모델의 모든 인터페이스를 처리하는 데 사용된다. UML-to-WSDL 변환은 WSDL 인터페이스 확장에 의해 사용돼 SCDL 컴포넌트, 익스포트, 임포트로 참조되는 WSDL 포트 유형을 만든다. 자바(Java™) 인터페이스 확장은 참조된 자바 인터페이스를 가지는 자바 프로젝트를 타깃 프로젝트(target project)에 복사하는 데 쓰인다.
-
컴포넌트 구현 확장은 UML 활동을 처리하고 자바 클래스를 참조하는 데 사용된다. BPEL(Business Process Execution Language) 구현 확장은 UML-to-BPEL 변환을 사용해 SCDL로 참조되는 BPEL 프로세스를 만든다. 자바 구현 확장은 참조된 자바 클래스를 가지는 자바 프로젝트를 타깃 프로젝트에 복사하는 데 사용된다.
UML-to-BPEL 변환 도구는 UML-to-WSDL 변환과 UML-to-XSD 변환을 사용해 WSDL(Web Service Description Language) 포트 유형과 XSD 스키마 데이터 타입을 만든다. 비슷하게 UML-to-WSDL 변환은 UML-to-XSD 변환을 사용해 XSD 스키마 데이터 타입을 만든다.
변환 소스
UML-to-SOA 변환은 소프트웨어 서비스의 UML 모델을 처리하기 위해 만들어졌다.
UML-to-SOA 변환을 위해 의도된 소스는 전체 UML 모델 또는 소프트웨어 서비스를 적용하기 위한 UML 2.0 프로파일이다. 동시에, 변환은 하나 이상의 UML 패키지나 또는 해당 소스로, 서비스 프로바이더를 대표하는 개별 UML 컴포넌트를 받아들일 수 있다. UML 모델이나 패키지가 소스로 선택되면 UML-to-SOA 변환은 선택된 모델이나 패키지를 찾고 각 서비스 프로바이더를 위해 필요한 SCDL 산출물을 만든다. 다중 UML 요소를 변환의 소스로 선택하면 UML-to-SOA 변환으로 지원을 받는다.
그림 2는 UML 모델(왼쪽)의 한 부분으로 CreditManager 서비스 프로바이더를 보여주고 UML 클래스 다이어그램(오른쪽)과 CreditManager 서비스 프로바이더의 외부 뷰를 보여준다.
그림 2. UML 모델의 부분을 보여주는 스크린 뷰
변환 출력
UML-to-SOA 변환은 앞으로의 개발, 테스팅, 배치를 위해 IBM WebSphere Integration Developer 6.0.2나 그 이상 버전에 임포팅되는 출력을 산출한다. 변환은 하나의 타깃으로서, 작업공간의 어떤 프로젝트도 받아들일 수 있다.
팁:
필요하다면 Transformation Configuration 편집기의 Source and Target 페이지 상의 Create New Target Container를 클릭해 새 타깃 프로젝트를 만들 수 있다.
각 서비스 프로바이더를 위해 변환은 모듈 프로젝트를 만든다. manifest.mf, .project, .classpath, .runtime 같은 전형적인 프로젝트 파일에 더해 변환은 sca.module 파일과 SCDL 모듈의 다양한 요소를 대표하는 컴포넌트, 익스포트, 임포트의 확장 파일을 만든다. 모듈 프로젝트는 하나 이상의 라이브러리 프로젝트(인터페이스와 비즈니스 객체 정의를 포함하는)를 참조한다.
그림 3은 UML-to-SOA 변환 도구로 만들어진 모듈 프로젝트의 전형적 구조를 보여준다. 이는 UML-to-SOA 변환으로 만들어진 com.acme.creditmanagement.CreditManager 모듈 프로젝트를 보여주는 확장된 뷰다.
그림 3. UML-to-SOA 변환 도구로 만들어진 모듈 프로젝트의 전형적 구조
각 UML 인터페이스에 대해 변환은 나뉜 WSDL 파일을 만든다. UML 초기 유형과 빌트인 XSD 단순 유형을 제외한 각 UML 매개변수 유형(데이터 타입)에 대해 변환은 나뉜 XSD 파일을 만든다. WSDL과 XSD 리소스는 변환 소스의 구조에 따라 단일 라이브러리 프로젝트나 다중 라이브러리 프로젝트에서 만들어진다. 그림 4는 UML-to-SOA 변환으로 만들어진 CreditManagement 라이브러리 프로젝트를 보여준다.
그림 4. CreditManagement 라이브러리 프로젝트
소스에서 출력까지의 매핑
다음 표는 소스와 출력 객체 간의 매핑을 기술한다.
소스와 출력 객체 사이의 매핑
| 소스 | 출력 |
|---|
| UML 컴포넌트와 하나 이상의 제공된 인터페이스 | WID 모듈 프로젝트
SCDL 모듈 |
|---|
| UML 컴포넌트와 하나 이상의 제공된 인터페이스 및 UML Activity로서의 행위 | WID 모듈 프로젝트
SCDL 모듈
BPEL 구현이 있는 SCDL 컴포넌트 |
|---|
UML을 통해 노출되어 제공된 인터페이스
서비스 프로바이더를 나타내는 UML 컴포넌트의 포트 | SCDL 내보내기 |
|---|
| 소프트웨어 서비스를 나타내는 UML 컴포넌트의 UML 포트를 통해 노출되어 제공된 인터페이스 | SCDL 들여오기 |
|---|
| 소프트웨어 서비스를 나타내는 UML 컴포넌트의 UML 부분 | SCDL 컴포넌트 |
|---|
| 내부 또는 외부 포트로 참조되어 제공된 인터페이스 | SCDL 인터페이스 WSDL 인터페이스 |
|---|
| 내부 또는 외부 포트로 참조되는 필요 인터페이스 | SCDL 참조
WSDL 인터페이스 |
|---|
| 참조된 인터페이스의 UML 메서드 | SCDL 메서드 |
|---|
| UML 인터페이스나 WSDL PortType으로 참조된 데이터 타입 | XSD 데이터 타입 |
|---|
| UML 커넥터 | SCDL 와이어 |
|---|
UML 서비스 프로바이더 컴포넌트에서 SCDL 모듈로 변환하기
UML-to-SOA 변환은 특정 소프트웨어 서비스 디자인에 따라 SCDL 모듈의 다른 유형을 산출한다. UML에서 소프트웨어 서비스를 디자인하는 것에 관한 자세한 내용은 이전 글인 SOA 모델링을 읽어보기 바란다.
그림 5는 UML 컴포넌트로 나타나는 Customer Order Handling 서비스 프로바이더와 갖춘 행위(owned behavior)로 사용된 Customer Order Handling UML을 보여준다.
그림 5. UML 모델의 일부
이 서비스 프로바이더 디자인을 위해 변환은 단일 SCDL 컴포넌트와 BPEL 구현을 가진 SCDL 모듈 프로젝트를 만든다(그림 6 참조). UML 행동과 BPEL 프로세스 매핑에 관한 더 자세한 내용은 참고자료에 인용한 SOA 모델링 연재 중 "From UML to BPEL"를 참조하기 바란다.
그림 6. SCDL 모듈 프로젝트와 단일 SCDL 컴포넌트, BPEL 구현
그림 7은 Customer Order Handling 서비스 프로바이더의 분해를 보여주는 UML 컴포지트 구조 다이어그램을 보여준다.
그림 7. UML 컴포지트 구조 다이어그램
이 경우 변환은 서비스 프로바이더의 각 UML 부분마다 SCDL 컴포넌트를 만들고 이 컴포넌트들을 서비스 프로바이더를 나타내는 UML 컴포넌트의 내부 구조로 적절히 보낸다(그림 8 참조).
그림 8. UML 컴포넌트에 보낸 SCDL 컴포넌트
UML 컴포넌트로 UML 포트를 통해 제공되고, 서비스 프로바이더를 나타내는 모든 인터페이스는 SCDL 익스포트가 된다. UML 포트를 통해 노출된 모든 필요한 인터페이스는 SCDL 임포트가 된다. 이 예에서 myRole 포트를 통해 노출되어 제공된 CustomerOrderHandling 인터페이스는 myRoleExport.export 파일을 생성하기 위해 사용됐다. OrderVerification, PaymentHandling, CustomerServiceRepresentative, AccountManager 포트는 각각의 임포트 파일을 만들기 위해 사용됐다.
UML 모델과 레퍼런스를 도메인 한정적인 데이터 타입과 인터페이스로 변환하기
몇몇 데이터 타입 라이브러리는 특정 산업에서 추천 또는 공식 표준이 됐다. 이를테면 HL7(Health Level Seven)은 의료계의 ANSI 공인 표준 개발 조직 중 하나인데 XSD 형식으로 된 임상 및 경영 데이터 표준을 제공한다. 많은 경우에 산업에 특화된 타입과 데이터 세트를 사용하는 것은 소프트웨어의 핵심 요구사항 중 하나다.
기존 XSD 데이터 타입으로 레퍼런스 처리하기
이 요구사항을 만족시키려면 소프트웨어 서비스의 UML 모델은 레퍼런스를 기존 XSD 유형으로 사용해야 한다. 이 경우 UML-to-SCDL 변환은 라이브러리 프로젝트를 만들고 부모 프로젝트에서 참조된 XSD 데이터 타입을 가지는 XSD 리소스를 폴더 스트럭처 및 XSD include 또는 XSD import로 참조되는 모든 XSD 스키마를 포함하는 라이브러리 프로젝트에 복사한다. 만들어진 라이브러리 프로젝트의 이름은 원래 참조된 XSD 스키마를 포함하는 프로젝트의 이름과 같다. 포함되거나 임포트된 XSD 스키마가 다른 프로젝트에 있다면 변환은 관련 라이브러리 프로젝트를 만들고 프로젝트 의존성을 필요한 곳에 추가한다.
기존 WSDL 포트 유형으로 레퍼런스 처리하기
기존 XSD 데이터 유형과 같은 방식으로, 소프트웨어 서비스의 UML 모델도 레퍼런스를 기존 WSDL 포트 유형으로 사용한다. WSDL 포트 유형으로의 레퍼런스는 참조된 XSD 데이터 타입과 같은 방식으로 변환 처리된다. 이렇게 되면 UML 모델에서 참조된 WSDL 포트 유형을 위한 모든 필요한 라이브러리 프로젝트와 XSD include나 XSD import로 참조된 WSDL 임포트와 XSD 스키마를 사용해 참조된 모든 WSDL 파일을 만든다.
참조된 자바 인터페이스와 자바 클래스 처리하기
UML-to-SOA 변환은 소프트웨어 서비스의 UML 모델과 레퍼런스로 기존 자바 인터페이스와 클래스를 소스로 지원한다. 이를 통해 이미 자바 구현을 가진 기존 서비스 집합이나 구성으로 새 서비스를 설계할 수 있고 자바 인터페이스를 통해 노출될 수 있다. 소스 모듈을 파싱하는 동안 자바 인터페이스나 클래스에서 변환이 이뤄질 때 자바 프로젝트를 복사한다. 이 복사에는 자바 소스 코드와 의존하는 모든 자바 프로젝트가 포함되고 변환 타깃 컨테이너로 선택된 프로젝트로 이동된다.
변환 출력을 IBM WebSphere Integration Developer에 임포팅하기
웹 애플리케이션을 만들고 완성하고 테스트하려면 File > Import > Existing Projects into the Workspace를 선택해 변환 출력이 WebSphere Integration Developer로 임포트되어야 한다. 변환으로 만들어진 모든 프로젝트는 각각 WebSphere Integration Developer 작업공간에 임포트되어야 한다. 임포트된 프로젝트는 의존성을 갖는다. 프로젝트가 잘못 임포트되면 빌드는 오류를 가질 것이다. 이 경우 간단히 모든 임포트된 프로젝트를 제거하고 다시 만든다.
그리고 나서 WebSphere Integration Developer에서 다음 작업을 완성한다.
- 빈 구현(empty implementation)으로 컴포넌트에 구현을 추가한다.
- 모든 임포트를 보낸다.
요약
SOA 변환에 관한 더 자세한 정보는 본 연재의 마지막 글인 'SOA로 변환: Part 4. UML-to-BPEL'에서 찾을 수 있다. 또한 더 자세한 정보를 위해 참고자료의 인용과 링크를 확인하자.
참고자료 교육
제품 및 기술 얻기
토론
필자소개  | |  | Dmitry는 IBM Rational 소프트웨어 도구를 지원하는 소프트웨어 개발자다. |
기사에 대한 평가
 |
| 이 문서 북마킹 하기
|
|